CMS 3D CMS Logo

ESDetId.h
Go to the documentation of this file.
1 #ifndef ECALDETID_ESDETID_H
2 #define ECALDETID_ESDETID_H
3 
4 #include <iosfwd>
8 
15 class ESDetId : public DetId {
16 public:
17  enum { Subdet = EcalPreshower };
19  ESDetId() {}
21  ESDetId(uint32_t rawid) : DetId(rawid) {}
22 
24  ESDetId(int strip, int ixs, int iys, int plane, int iz, bool doverify = false) : DetId(Ecal, EcalPreshower) {
25  id_ |= (strip & 0x3F) | ((ixs & 0x3F) << 6) | ((iys & 0x3F) << 12) | (((plane - 1) & 0x1) << 18) |
26  ((iz > 0) ? (1 << 19) : (0));
27  if (doverify)
28  verify(strip, ixs, iys, plane, iz);
29  }
30 
32  ESDetId(const DetId& id);
34  ESDetId& operator=(const DetId& id);
35 
39  int zside() const { return (id_ & 0x80000) ? (1) : (-1); }
41  int plane() const { return ((id_ >> 18) & 0x1) + 1; }
43  int six() const { return (id_ >> 6) & 0x3F; }
45  int siy() const { return (id_ >> 12) & 0x3F; }
47  int strip() const { return (id_ & 0x3F); }
49  int hashedIndex() const;
50 
51  uint32_t denseIndex() const { return hashedIndex(); }
52 
53  static bool validDenseIndex(uint32_t din) { return validHashIndex(din); }
54 
55  static ESDetId detIdFromDenseIndex(uint32_t din) { return unhashIndex(din); }
56 
58  static ESDetId unhashIndex(int hi);
59  static bool validHashIndex(int hi) { return (hi < kSizeForDenseIndexing); }
61  static bool validDetId(int istrip, int ixs, int iys, int iplane, int iz);
62  static void verify(int istrip, int ixs, int iys, int iplane, int iz);
63 
64  static const int IX_MIN = 1;
65  static const int IY_MIN = 1;
66  static const int IX_MAX = 40;
67  static const int IY_MAX = 40;
68  static const int ISTRIP_MIN = 1;
69  static const int ISTRIP_MAX = 32;
70  static const int PLANE_MIN = 1;
71  static const int PLANE_MAX = 2;
72  static const int IZ_NUM = 2;
73 
74 private:
75  enum {
76  kXYMAX = 1072,
77  kXYMIN = 1,
78  kXMAX = 40,
79  kYMAX = 40,
80  kXMIN = 1,
81  kYMIN = 1,
82  // now normalize to A-D notation for ease of use
85  kNc = kXYMAX - kXYMIN + 1,
87  kLd = kNd,
88  kLc = kLd * kNc,
89  kLb = kLc * kNb,
90  kLa = kLb * kNa
91  };
92 
93  static const unsigned short hxy1[kXMAX][kYMAX];
94  static const unsigned short hx1[kXYMAX];
95  static const unsigned short hy1[kXYMAX];
96 
97  static const unsigned short hxy2[kXMAX][kYMAX];
98  static const unsigned short hx2[kXYMAX];
99  static const unsigned short hy2[kXYMAX];
100 
101 public:
103 };
104 
105 std::ostream& operator<<(std::ostream&, const ESDetId& id);
106 
107 inline ESDetId::ESDetId(const DetId& gen) : DetId(gen) {
108 #ifdef EDM_ML_DEBUG
109  if (!gen.null() && (gen.det() != Ecal || gen.subdetId() != EcalPreshower)) {
110  throw cms::Exception("InvalidDetId");
111  }
112 #endif
113 }
114 
116 #ifdef EDM_ML_DEBUG
117  if (!gen.null() && (gen.det() != Ecal || gen.subdetId() != EcalPreshower)) {
118  throw cms::Exception("InvalidDetId");
119  }
120 #endif
121  id_ = gen.rawId();
122  return *this;
123 }
124 
125 #endif
ESDetId::operator=
ESDetId & operator=(const DetId &id)
Definition: ESDetId.h:115
ESDetId::ISTRIP_MIN
static const int ISTRIP_MIN
Definition: ESDetId.h:68
ESDetId::subdet
EcalSubdetector subdet() const
get the subdetector
Definition: ESDetId.h:37
ESDetId::kLd
Definition: ESDetId.h:87
ESDetId::hxy1
static const unsigned short hxy1[kXMAX][kYMAX]
Definition: ESDetId.h:93
ESDetId::strip
int strip() const
Definition: ESDetId.h:47
ESDetId::kXMAX
Definition: ESDetId.h:78
ESDetId::ESDetId
ESDetId()
Definition: ESDetId.h:19
ESDetId::hashedIndex
int hashedIndex() const
get a compact index for arrays [TODO: NEEDS WORK]
Definition: ESDetId.cc:21
EcalSubdetector
EcalSubdetector
Definition: EcalSubdetector.h:10
ESDetId
Definition: ESDetId.h:15
ESDetId::kLa
Definition: ESDetId.h:90
ESDetId::kXYMIN
Definition: ESDetId.h:77
ESDetId::IY_MIN
static const int IY_MIN
Definition: ESDetId.h:65
DetId
Definition: DetId.h:17
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
ESDetId::hx2
static const unsigned short hx2[kXYMAX]
Definition: ESDetId.h:98
ESDetId::PLANE_MIN
static const int PLANE_MIN
Definition: ESDetId.h:70
gen
Definition: PythiaDecays.h:13
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
ESDetId::verify
static void verify(int istrip, int ixs, int iys, int iplane, int iz)
Definition: ESDetId.cc:6
ESDetId::kSizeForDenseIndexing
Definition: ESDetId.h:102
EcalSubdetector.h
operator<<
std::ostream & operator<<(std::ostream &, const ESDetId &id)
Definition: ESDetId.cc:62
ESDetId::PLANE_MAX
static const int PLANE_MAX
Definition: ESDetId.h:71
ESDetId::detIdFromDenseIndex
static ESDetId detIdFromDenseIndex(uint32_t din)
Definition: ESDetId.h:55
ESDetId::kYMIN
Definition: ESDetId.h:81
cropTnPTrees.din
din
Definition: cropTnPTrees.py:30
ESDetId::ISTRIP_MAX
static const int ISTRIP_MAX
Definition: ESDetId.h:69
DetId::id_
uint32_t id_
Definition: DetId.h:69
ESDetId::validDenseIndex
static bool validDenseIndex(uint32_t din)
Definition: ESDetId.h:53
ESDetId::kNc
Definition: ESDetId.h:85
ESDetId::hy2
static const unsigned short hy2[kXYMAX]
Definition: ESDetId.h:99
ESDetId::hy1
static const unsigned short hy1[kXYMAX]
Definition: ESDetId.h:95
ESDetId::kXMIN
Definition: ESDetId.h:80
DetId::Ecal
Definition: DetId.h:27
ESDetId::kLc
Definition: ESDetId.h:88
ESDetId::kNa
Definition: ESDetId.h:83
ESDetId::IY_MAX
static const int IY_MAX
Definition: ESDetId.h:67
ESDetId::denseIndex
uint32_t denseIndex() const
Definition: ESDetId.h:51
ESDetId::plane
int plane() const
Definition: ESDetId.h:41
EcalPreshower
Definition: EcalSubdetector.h:10
ESDetId::kNb
Definition: ESDetId.h:84
hi
Definition: EPCuts.h:4
ESDetId::six
int six() const
Definition: ESDetId.h:43
ESDetId::IZ_NUM
static const int IZ_NUM
Definition: ESDetId.h:72
ESDetId::unhashIndex
static ESDetId unhashIndex(int hi)
get a DetId from a compact index for arrays
Definition: ESDetId.cc:32
ESDetId::hxy2
static const unsigned short hxy2[kXMAX][kYMAX]
Definition: ESDetId.h:97
DetId.h
ESDetId::validDetId
static bool validDetId(int istrip, int ixs, int iys, int iplane, int iz)
check if a valid index combination
Definition: ESDetId.cc:15
Exception
Definition: hltDiff.cc:245
ESDetId::kLb
Definition: ESDetId.h:89
ESDetId::kNd
Definition: ESDetId.h:86
ESDetId::validHashIndex
static bool validHashIndex(int hi)
Definition: ESDetId.h:59
ESDetId::siy
int siy() const
Definition: ESDetId.h:45
ESDetId::kYMAX
Definition: ESDetId.h:79
ESDetId::hx1
static const unsigned short hx1[kXYMAX]
Definition: ESDetId.h:94
Exception.h
ESDetId::IX_MIN
static const int IX_MIN
Definition: ESDetId.h:64
ESDetId::IX_MAX
static const int IX_MAX
Definition: ESDetId.h:66
ESDetId::kXYMAX
Definition: ESDetId.h:76
ESDetId::zside
int zside() const
Definition: ESDetId.h:39
ESDetId::ESDetId
ESDetId(uint32_t rawid)
Definition: ESDetId.h:21
ESDetId::Subdet
Definition: ESDetId.h:17
ESDetId::ESDetId
ESDetId(int strip, int ixs, int iys, int plane, int iz, bool doverify=false)
constructor from strip, ix, iy, plane, and iz
Definition: ESDetId.h:24