12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef UTIL_DETID_H
- #define UTIL_DETID_H
- #include <stdint.h>
- class DetId {
- public:
- static const int kDetOffset = 28;
- static const int kSubdetOffset = 25;
- enum Detector { Tracker=1,Muon=2,Ecal=3,Hcal=4,Calo=5,Forward=6,VeryForward=7 };
-
- DetId() : id_(0) { }
-
- DetId(uint32_t id) : id_(id) { }
-
- DetId(Detector det, int subdet) {
- id_=((det&0xF)<<28)|((subdet&0x7)<<25);
- }
-
- Detector det() const { return Detector((id_>>kDetOffset)&0xF); }
-
- int subdetId() const { return ((id_>>kSubdetOffset)&0x7); }
- uint32_t operator()() const { return id_; }
- operator uint32_t() const { return id_; }
-
- uint32_t rawId() const { return id_; }
-
- bool null() const { return id_==0; }
-
- bool operator==(DetId id) const { return id_==id.id_; }
-
- bool operator!=(DetId id) const { return id_!=id.id_; }
-
- bool operator<(DetId id) const { return id_<id.id_; }
- protected:
- uint32_t id_;
- };
- inline bool operator==(uint32_t i, DetId id) { return i==id(); }
- inline bool operator==(DetId id, uint32_t i) { return i==id(); }
- inline bool operator!=(uint32_t i, DetId id) { return i!=id(); }
- inline bool operator!=(DetId id, uint32_t i) { return i!=id(); }
- inline bool operator<(uint32_t i, DetId id) { return i<id(); }
- inline bool operator<(DetId id, uint32_t i) { return id()<i; }
- #endif
|