File indexing completed on 2024-04-06 12:04:17
0001 #ifndef HcalFrontEndId_h
0002 #define HcalFrontEndId_h
0003
0004 #include <string>
0005 #include <cstdint>
0006 #include <iosfwd>
0007
0008 class HcalFrontEndId {
0009 public:
0010 HcalFrontEndId() : hcalFrontEndId_(0) {}
0011 HcalFrontEndId(uint32_t id) { hcalFrontEndId_ = id; };
0012 HcalFrontEndId(const std::string& rbx, int rm, int pixel, int rmfiber, int fiberchannel, int qiecard, int adc);
0013 ~HcalFrontEndId();
0014 uint32_t rawId() const { return hcalFrontEndId_; }
0015
0016
0017 int rbxIndex() const { return (hcalFrontEndId_ >> 18); }
0018 static const int maxRbxIndex = 0xFF;
0019
0020 int rmIndex() const { return ((rm() - 1) & 0x3) + (rbxIndex() << 2); }
0021 static const int maxRmIndex = 0x3FF;
0022
0023 bool null() const { return hcalFrontEndId_ == 0; }
0024
0025 std::string rbx() const;
0026 int rm() const { return ((hcalFrontEndId_ >> 15) & 0x7) + 1; }
0027 int pixel() const { return (hcalFrontEndId_ >> 10) & 0x1F; }
0028 int rmFiber() const { return ((hcalFrontEndId_ >> 7) & 0x7) + 1; }
0029 int fiberChannel() const { return (hcalFrontEndId_ >> 5) & 0x3; }
0030 int qieCard() const { return ((hcalFrontEndId_ >> 3) & 0x3) + 1; }
0031 int adc() const { return (hcalFrontEndId_ & 0x7) - 1; }
0032
0033 int operator==(const HcalFrontEndId& id) const { return id.hcalFrontEndId_ == hcalFrontEndId_; }
0034 int operator!=(const HcalFrontEndId& id) const { return id.hcalFrontEndId_ != hcalFrontEndId_; }
0035 int operator<(const HcalFrontEndId& id) const { return hcalFrontEndId_ < id.hcalFrontEndId_; }
0036
0037 private:
0038 uint32_t hcalFrontEndId_;
0039 };
0040
0041 std::ostream& operator<<(std::ostream&, const HcalFrontEndId& id);
0042
0043 #endif