File indexing completed on 2024-04-06 12:04:08
0001 #ifndef DataFormats_MTDDetId_MTDDetId_h
0002 #define DataFormats_MTDDetId_MTDDetId_h
0003
0004 #include "DataFormats/DetId/interface/DetId.h"
0005 #include "DataFormats/ForwardDetId/interface/ForwardSubdetector.h"
0006 #include <ostream>
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 class MTDDetId : public DetId {
0022 public:
0023
0024 enum SubDetector { subUNKNOWN = 0, FastTime = 1 };
0025
0026
0027 enum MTDType { typeUNKNOWN = 0, BTL = 1, ETL = 2 };
0028
0029 static const uint32_t kMTDsubdOffset = 23;
0030 static const uint32_t kMTDsubdMask = 0x3;
0031 static const uint32_t kZsideOffset = 22;
0032 static const uint32_t kZsideMask = 0x1;
0033 static const uint32_t kRodRingOffset = 16;
0034 static const uint32_t kRodRingMask = 0x3F;
0035
0036
0037
0038
0039 MTDDetId() : DetId() { ; }
0040
0041
0042 MTDDetId(const uint32_t& raw_id) : DetId(raw_id) { ; }
0043
0044
0045 MTDDetId(const DetId& det_id) : DetId(det_id.rawId()) { ; }
0046
0047
0048 MTDDetId(Detector det, int subdet) : DetId(det, subdet) { ; }
0049
0050
0051
0052
0053 inline SubDetector subDetector() const { return static_cast<MTDDetId::SubDetector>(subdetId()); }
0054
0055
0056 inline int mtdSubDetector() const { return (id_ >> kMTDsubdOffset) & kMTDsubdMask; }
0057
0058
0059 inline int mtdSide() const { return (id_ >> kZsideOffset) & kZsideMask; }
0060
0061 inline int zside() const { return (mtdSide() == 1 ? (1) : (-1)); }
0062
0063
0064 inline int mtdRR() const { return (id_ >> kRodRingOffset) & kRodRingMask; }
0065 };
0066
0067 std::ostream& operator<<(std::ostream&, const MTDDetId&);
0068
0069 #endif