CMS 3D CMS Logo

HGCScintillatorDetId.h
Go to the documentation of this file.
1 #ifndef DataFormats_ForwardDetId_HGCScintillatorDetId_H
2 #define DataFormats_ForwardDetId_HGCScintillatorDetId_H 1
3 
4 #include <iosfwd>
5 #include <vector>
8 
9 /* \brief description of the bit assigment
10  [0:8] iphi index wrt x-axis on +z side
11  [9:16] |ring| index (starting from a minimum radius depending on type)
12  [17:21] Layer #
13  [22] Trigger(1)/Detector(0) cell
14  [23] SiPM type (0 for 2mm: 1 for 4mm)
15  [24] Free
16  [25:25] z-side (0 for +z; 1 for -z)
17  [26:27] Tile granularity and type (0 fine divisions of scintillators;
18  1 coarse divisions of type "c";
19  2 coarse divisions of type "m")
20  [28:31] Detector type (HGCalHSc)
21 */
22 
23 class HGCScintillatorDetId : public DetId {
24 public:
28  HGCScintillatorDetId(uint32_t rawid);
30  HGCScintillatorDetId(int type, int layer, int ring, int iphi, bool trigger = false, int sipm = 0);
32  HGCScintillatorDetId(const DetId& id);
35 
38 
40  DetId::Detector subdet() const { return det(); }
41 
43  int type() const { return (id_ >> kHGCalTypeOffset) & kHGCalTypeMask; }
44  void setType(int type);
45 
47  int zside() const { return (((id_ >> kHGCalZsideOffset) & kHGCalZsideMask) ? -1 : 1); }
48 
50  int layer() const { return (id_ >> kHGCalLayerOffset) & kHGCalLayerMask; }
51 
53  int ring() const;
54  int iradiusAbs() const { return ring(); }
55  int iradius() const { return zside() * ring(); }
56  int ietaAbs() const { return ring(); }
57  int ieta() const { return zside() * ring(); }
58 
60  int iphi() const;
61  std::pair<int, int> ietaphi() const { return std::pair<int, int>(ieta(), iphi()); }
62  std::pair<int, int> ringphi() const { return std::pair<int, int>(iradius(), iphi()); }
63 
65  int sipm() const { return (id_ >> kHGCalSiPMOffset) & kHGCalSiPMMask; }
66  void setSiPM(int sipm);
67 
69  std::vector<HGCScintillatorDetId> detectorCells() const;
70  bool trigger() const { return (((id_ >> kHGCalTriggerOffset) & kHGCalTriggerMask) == 1); }
72 
74  bool isEE() const { return false; }
75  bool isHE() const { return true; }
76  bool isForward() const { return true; }
77 
79 
80 public:
81  static const int kHGCalPhiOffset = 0;
82  static const int kHGCalPhiMask = 0x1FF;
83  static const int kHGCalRadiusOffset = 9;
84  static const int kHGCalRadiusMask = 0xFF;
85  static const int kHGCalLayerOffset = 17;
86  static const int kHGCalLayerMask = 0x1F;
87  static const int kHGCalTriggerOffset = 22;
88  static const int kHGCalTriggerMask = 0x1;
89  static const int kHGCalSiPMOffset = 23;
90  static const int kHGCalSiPMMask = 0x1;
91  static const int kHGCalSiPMMask0 = 0xFF7FFFFF;
92  static const int kHGCalZsideOffset = 25;
93  static const int kHGCalZsideMask = 0x1;
94  static const int kHGCalTypeOffset = 26;
95  static const int kHGCalTypeMask = 0x3;
96  static const int kHGCalTypeMask0 = 0xF3FFFFFF;
97 
98  int iradiusTriggerAbs() const;
99  int iradiusTrigger() const { return zside() * iradiusTriggerAbs(); }
100  int iphiTrigger() const;
101 };
102 
103 std::ostream& operator<<(std::ostream&, const HGCScintillatorDetId& id);
104 
105 #endif
HGCScintillatorDetId::subdet
DetId::Detector subdet() const
get the subdetector
Definition: HGCScintillatorDetId.h:40
HGCScintillatorDetId::setType
void setType(int type)
Definition: HGCScintillatorDetId.cc:72
HGCScintillatorDetId::iradiusAbs
int iradiusAbs() const
Definition: HGCScintillatorDetId.h:54
HGCScintillatorDetId::iphi
int iphi() const
get the phi index
Definition: HGCScintillatorDetId.cc:58
HGCScintillatorDetId::isForward
bool isForward() const
Definition: HGCScintillatorDetId.h:76
HGCScintillatorDetId::ring
int ring() const
get the eta index
Definition: HGCScintillatorDetId.cc:44
operator<<
std::ostream & operator<<(std::ostream &, const HGCScintillatorDetId &id)
Definition: HGCScintillatorDetId.cc:113
HGCScintillatorDetId::ieta
int ieta() const
Definition: HGCScintillatorDetId.h:57
HGCScintillatorDetId::kHGCalTypeOffset
static const int kHGCalTypeOffset
Definition: HGCScintillatorDetId.h:94
HGCScintillatorDetId::kHGCalTriggerOffset
static const int kHGCalTriggerOffset
Definition: HGCScintillatorDetId.h:87
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
HGCScintillatorDetId::kHGCalTriggerMask
static const int kHGCalTriggerMask
Definition: HGCScintillatorDetId.h:88
HGCScintillatorDetId::iphiTrigger
int iphiTrigger() const
Definition: HGCScintillatorDetId.cc:65
HGCScintillatorDetId::kHGCalTypeMask
static const int kHGCalTypeMask
Definition: HGCScintillatorDetId.h:95
HGCScintillatorDetId::iradiusTrigger
int iradiusTrigger() const
Definition: HGCScintillatorDetId.h:99
HGCScintillatorDetId::geometryCell
HGCScintillatorDetId geometryCell() const
Definition: HGCScintillatorDetId.cc:98
HGCScintillatorDetId::isHE
bool isHE() const
Definition: HGCScintillatorDetId.h:75
HGCScintillatorDetId::detectorCells
std::vector< HGCScintillatorDetId > detectorCells() const
trigger or detector cell
Definition: HGCScintillatorDetId.cc:82
ForwardSubdetector.h
HGCScintillatorDetId::layer
int layer() const
get the layer #
Definition: HGCScintillatorDetId.h:50
HGCScintillatorDetId::iradiusTriggerAbs
int iradiusTriggerAbs() const
Definition: HGCScintillatorDetId.cc:51
DetId
Definition: DetId.h:17
HGCScintillatorDetId::ietaphi
std::pair< int, int > ietaphi() const
Definition: HGCScintillatorDetId.h:61
HGCScintillatorDetId::trigger
bool trigger() const
Definition: HGCScintillatorDetId.h:70
HGCScintillatorDetId::ietaAbs
int ietaAbs() const
Definition: HGCScintillatorDetId.h:56
HGCScintillatorDetId::kHGCalSiPMMask0
static const int kHGCalSiPMMask0
Definition: HGCScintillatorDetId.h:91
HGCScintillatorDetId::kHGCalLayerMask
static const int kHGCalLayerMask
Definition: HGCScintillatorDetId.h:86
HGCScintillatorDetId::zside
int zside() const
get the z-side of the cell (1/-1)
Definition: HGCScintillatorDetId.h:47
HGCScintillatorDetId::triggerCell
HGCScintillatorDetId triggerCell() const
Definition: HGCScintillatorDetId.cc:106
DetId::id_
uint32_t id_
Definition: DetId.h:69
HGCScintillatorDetId::Undefined
static const HGCScintillatorDetId Undefined
Definition: HGCScintillatorDetId.h:78
HGCScintillatorDetId::kHGCalRadiusOffset
static const int kHGCalRadiusOffset
Definition: HGCScintillatorDetId.h:83
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
HGCScintillatorDetId::iradius
int iradius() const
Definition: HGCScintillatorDetId.h:55
HGCScintillatorDetId::isEE
bool isEE() const
consistency check : no bits left => no overhead
Definition: HGCScintillatorDetId.h:74
HGCScintillatorDetId::kHGCalPhiOffset
static const int kHGCalPhiOffset
Definition: HGCScintillatorDetId.h:81
HGCScintillatorDetId::operator=
HGCScintillatorDetId & operator=(const DetId &id)
Definition: HGCScintillatorDetId.cc:33
HGCScintillatorDetId::kHGCalRadiusMask
static const int kHGCalRadiusMask
Definition: HGCScintillatorDetId.h:84
HGCScintillatorDetId::type
int type() const
get/set the type
Definition: HGCScintillatorDetId.h:43
DetId::Detector
Detector
Definition: DetId.h:24
HGCScintillatorDetId::kHGCalPhiMask
static const int kHGCalPhiMask
Definition: HGCScintillatorDetId.h:82
HGCScintillatorDetId::kHGCalSiPMOffset
static const int kHGCalSiPMOffset
Definition: HGCScintillatorDetId.h:89
HGCScintillatorDetId::HGCScintillatorDetId
HGCScintillatorDetId()
Definition: HGCScintillatorDetId.cc:8
HGCScintillatorDetId::kHGCalZsideMask
static const int kHGCalZsideMask
Definition: HGCScintillatorDetId.h:93
DetId.h
HGCScintillatorDetId
Definition: HGCScintillatorDetId.h:23
HGCScintillatorDetId::kHGCalZsideOffset
static const int kHGCalZsideOffset
Definition: HGCScintillatorDetId.h:92
HGCScintillatorDetId::ringphi
std::pair< int, int > ringphi() const
Definition: HGCScintillatorDetId.h:62
HGCScintillatorDetId::setSiPM
void setSiPM(int sipm)
Definition: HGCScintillatorDetId.cc:77
trigger
Definition: HLTPrescaleTableCond.h:8
HGCScintillatorDetId::kHGCalLayerOffset
static const int kHGCalLayerOffset
Definition: HGCScintillatorDetId.h:85
HGCScintillatorDetId::kHGCalTypeMask0
static const int kHGCalTypeMask0
Definition: HGCScintillatorDetId.h:96
HGCScintillatorDetId::sipm
int sipm() const
get/set the sipm size
Definition: HGCScintillatorDetId.h:65
HGCScintillatorDetId::kHGCalSiPMMask
static const int kHGCalSiPMMask
Definition: HGCScintillatorDetId.h:90