CMS 3D CMS Logo

BTLDetId.h
Go to the documentation of this file.
1 #ifndef DataFormats_BTLDetId_BTLDetId_h
2 #define DataFormats_BTLDetId_BTLDetId_h
3 
5 #include <ostream>
6 
17 class BTLDetId : public MTDDetId {
18 
19  public:
20 
21  static constexpr uint32_t kBTLmoduleOffset = 10;
22  static constexpr uint32_t kBTLmoduleMask = 0x3F;
23  static constexpr uint32_t kBTLmodTypeOffset = 8;
24  static constexpr uint32_t kBTLmodTypeMask = 0x3;
25  static constexpr uint32_t kBTLCrystalOffset = 0;
26  static constexpr uint32_t kBTLCrystalMask = 0x3F;
27 
29  static constexpr int kModulesPerROD = 54;
30  static constexpr int kTypeBoundaries[4] = { 0, 18, 36, 54 };
31  static constexpr int kCrystalsInPhiTile = 16; // per module and ROD
32  static constexpr int kCrystalsInEtaTile = 4; // per module
33  static constexpr int kCrystalsInPhiBar = 4; // per module and ROD
34  static constexpr int kCrystalsInEtaBar = 16; // per module
35  static constexpr int kCrystalsPerROD = kModulesPerROD*kCrystalsInPhiTile*kCrystalsInEtaTile; // 64 crystals per module x 54 modules per rod, independent on geometry scenario Tile or Bar
36  static constexpr int MIN_ROD = 1;
37  static constexpr int MAX_ROD = 72;
38  static constexpr int HALF_ROD = 36;
39  static constexpr int MIN_IETA = 1;
40  static constexpr int MIN_IPHI = 1;
41  static constexpr int MAX_IETA_TILE = kCrystalsInEtaTile*kModulesPerROD;
42  static constexpr int MAX_IPHI_TILE = kCrystalsInPhiTile*HALF_ROD;
43  static constexpr int MAX_IETA_BAR = kCrystalsInEtaBar*kModulesPerROD;
44  static constexpr int MAX_IPHI_BAR = kCrystalsInPhiBar*HALF_ROD;
45  static constexpr int MIN_HASH = 0; // always 0 ...
46  static constexpr int MAX_HASH = 2*MAX_IPHI_TILE*MAX_IETA_TILE-1; // the total amount is invariant per tile or bar)
47  static constexpr int kSizeForDenseIndexing = MAX_HASH + 1 ;
48 
49  enum class CrysLayout { tile = 1 , bar = 2 } ;
50 
51  // ---------- Constructors, enumerated types ----------
52 
55 
57  BTLDetId( const uint32_t& raw_id ) : MTDDetId( raw_id ) {;}
58 
60  BTLDetId( const DetId& det_id ) : MTDDetId( det_id.rawId() ) {;}
61 
63  BTLDetId( uint32_t zside,
64  uint32_t rod,
65  uint32_t module,
66  uint32_t modtyp,
68  id_ |= ( MTDType::BTL& kMTDsubdMask ) << kMTDsubdOffset |
69  ( zside& kZsideMask ) << kZsideOffset |
70  ( rod& kRodRingMask ) << kRodRingOffset |
71  ( module& kBTLmoduleMask ) << kBTLmoduleOffset |
72  ( modtyp& kBTLmodTypeMask ) << kBTLmodTypeOffset |
73  ( (crystal-1)& kBTLCrystalMask ) << kBTLCrystalOffset ;
74  }
75 
76  // ---------- Common methods ----------
77 
79  inline int module() const { return (id_>>kBTLmoduleOffset)&kBTLmoduleMask; }
80 
82  inline int modType() const { return (id_>>kBTLmodTypeOffset)&kBTLmodTypeMask; }
83 
85  inline int crystal() const { return ((id_>>kBTLCrystalOffset)&kBTLCrystalMask) + 1; }
86 
88  int iphi( CrysLayout lay ) const ;
89 
91  int ietaAbs( CrysLayout lay ) const ;
92 
93  int ieta( CrysLayout lay ) const { return zside()*ietaAbs( lay ); }
94 
96  int hashedIndex( CrysLayout lay ) const ;
97 
98  static bool validHashedIndex( uint32_t din ) { return ( din < kSizeForDenseIndexing ) ; }
99 
101  BTLDetId getUnhashedIndex( int hi, CrysLayout lay ) const ;
102 
103 };
104 
105 std::ostream& operator<< ( std::ostream&, const BTLDetId& );
106 
107 #endif // DataFormats_BTLDetId_BTLDetId_h
108 
static constexpr int MAX_IETA_BAR
Definition: BTLDetId.h:43
int ieta(CrysLayout lay) const
Definition: BTLDetId.h:93
static const uint32_t kRodRingOffset
Definition: MTDDetId.h:35
CrysLayout
Definition: BTLDetId.h:49
static constexpr int MIN_IPHI
Definition: BTLDetId.h:40
static constexpr int kSizeForDenseIndexing
Definition: BTLDetId.h:47
static bool validHashedIndex(uint32_t din)
Definition: BTLDetId.h:98
static constexpr int MIN_ROD
Definition: BTLDetId.h:36
int ietaAbs(CrysLayout lay) const
Definition: BTLDetId.cc:24
static constexpr int MIN_HASH
Definition: BTLDetId.h:45
static constexpr uint32_t kBTLmodTypeOffset
Definition: BTLDetId.h:23
static constexpr int kTypeBoundaries[4]
Definition: BTLDetId.h:30
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:47
static constexpr uint32_t kBTLmodTypeMask
Definition: BTLDetId.h:24
ForwardSubdetector
static const uint32_t kZsideOffset
Definition: MTDDetId.h:33
static const uint32_t kMTDsubdOffset
Definition: MTDDetId.h:31
#define constexpr
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
static constexpr int MAX_IPHI_BAR
Definition: BTLDetId.h:44
BTLDetId()
Definition: BTLDetId.h:54
static constexpr int kCrystalsPerROD
Definition: BTLDetId.h:35
static const uint32_t kRodRingMask
Definition: MTDDetId.h:36
static constexpr int HALF_ROD
Definition: BTLDetId.h:38
static constexpr uint32_t kBTLmoduleOffset
Definition: BTLDetId.h:21
static constexpr int MAX_IETA_TILE
Definition: BTLDetId.h:41
static const uint32_t kMTDsubdMask
Definition: MTDDetId.h:32
static const uint32_t kZsideMask
Definition: MTDDetId.h:34
static constexpr int MAX_IPHI_TILE
Definition: BTLDetId.h:42
static constexpr int MIN_IETA
Definition: BTLDetId.h:39
static constexpr int kCrystalsInPhiBar
Definition: BTLDetId.h:33
static constexpr int kModulesPerROD
range constants, need two sets for the time being (one for tiles and one for bars) ...
Definition: BTLDetId.h:29
BTLDetId(const DetId &det_id)
Definition: BTLDetId.h:60
int hashedIndex(CrysLayout lay) const
Definition: BTLDetId.cc:46
static constexpr int MAX_ROD
Definition: BTLDetId.h:37
BTLDetId(uint32_t zside, uint32_t rod, uint32_t module, uint32_t modtyp, uint32_t crystal)
Definition: BTLDetId.h:63
Definition: DetId.h:18
static constexpr int MAX_HASH
Definition: BTLDetId.h:46
static constexpr int kCrystalsInPhiTile
Definition: BTLDetId.h:31
int iphi(CrysLayout lay) const
Definition: BTLDetId.cc:4
BTLDetId getUnhashedIndex(int hi, CrysLayout lay) const
Definition: BTLDetId.cc:68
uint32_t id_
Definition: DetId.h:59
static constexpr int kCrystalsInEtaBar
Definition: BTLDetId.h:34
int module() const
Definition: BTLDetId.h:79
std::ostream & operator<<(std::ostream &, const BTLDetId &)
Definition: BTLDetId.cc:104
int zside() const
Definition: MTDDetId.h:63
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
Definition: BTLDetId.h:17
static constexpr int kCrystalsInEtaTile
Definition: BTLDetId.h:32
BTLDetId(const uint32_t &raw_id)
Definition: BTLDetId.h:57
static constexpr uint32_t kBTLCrystalOffset
Definition: BTLDetId.h:25
Definition: vlib.h:208
int modType() const
Definition: BTLDetId.h:82
static constexpr uint32_t kBTLmoduleMask
Definition: BTLDetId.h:22
int crystal() const
Definition: BTLDetId.h:85
static constexpr uint32_t kBTLCrystalMask
Definition: BTLDetId.h:26