@@ -26,13 +26,18 @@ class MTDDetId : public DetId {
2626 /* * Enumerated type for MTD sub-deteector systems. */
2727 enum MTDType { typeUNKNOWN = 0 , BTL = 1 , ETL = 2 };
2828
29+ static const uint32_t kMTDOffset = 25 ;
2930 static const uint32_t kMTDsubdOffset = 23 ;
3031 static const uint32_t kMTDsubdMask = 0x3 ;
3132 static const uint32_t kZsideOffset = 22 ;
3233 static const uint32_t kZsideMask = 0x1 ;
3334 static const uint32_t kRodRingOffset = 16 ;
3435 static const uint32_t kRodRingMask = 0x3F ;
3536
37+ static constexpr uint32_t kMTDMask = 0x31 ; // DetId::Detector::Forward && MTDDetId::SubDetector::FastTime
38+ static constexpr uint32_t kBTLMask = 0xc5 ; // isMTD && MTDDetId::MTDType::BTL
39+ static constexpr uint32_t kETLMask = 0xc6 ; // isMTD && MTDDetId::MTDType::ETL
40+
3641 // ---------- Constructors, enumerated types ----------
3742
3843 /* * Construct a null id */
@@ -55,6 +60,16 @@ class MTDDetId : public DetId {
5560 /* * Returns enumerated type specifying MTD sub-detector, i.e. BTL or ETL. */
5661 inline int mtdSubDetector () const { return (id_ >> kMTDsubdOffset ) & kMTDsubdMask ; }
5762
63+ static inline bool const testForMTD (const DetId& id ) {
64+ return (id .rawId () >> MTDDetId::kMTDOffset ) == MTDDetId::kMTDMask ;
65+ }
66+ static inline bool const testForBTL (const DetId& id ) {
67+ return (id .rawId () >> MTDDetId::kMTDsubdOffset ) == MTDDetId::kBTLMask ;
68+ }
69+ static inline bool const testForETL (const DetId& id ) {
70+ return (id .rawId () >> MTDDetId::kMTDsubdOffset ) == MTDDetId::kETLMask ;
71+ }
72+
5873 /* * Returns MTD side, i.e. Z-=0 or Z+=1. */
5974 inline int mtdSide () const { return (id_ >> kZsideOffset ) & kZsideMask ; }
6075 /* * Return MTD side, i.e. Z-=-1 or Z+=1. */
0 commit comments