CMS 3D CMS Logo

EcalTrigTowerDetId.h
Go to the documentation of this file.
1 #ifndef ECALDETID_ECALTRIGTOWERDETID_H
2 #define ECALDETID_ECALTRIGTOWERDETID_H
3 
4 #include <iosfwd>
7 
14 class EcalTrigTowerDetId : public DetId {
15 public:
19  EcalTrigTowerDetId(uint32_t rawid);
22  EcalTrigTowerDetId(int zside, EcalSubdetector subdet, int i, int j, int mode = SUBDETIJMODE);
23 
25  EcalTrigTowerDetId(const DetId& id);
28 
30  int zside() const { return (id_ & 0x8000) ? (1) : (-1); }
31 
33  EcalSubdetector subDet() const { return (id_ & 0x4000) ? EcalBarrel : EcalEndcap; }
34 
36  int ietaAbs() const {
37  /* if ( subDet() == EcalBarrel) */
38  return (id_ >> 7) & 0x7f;
39  /* else */
40  /* throw(std::runtime_error("EcalTrigTowerDetId: ietaAbs not applicable for this subDetector.")); */
41  }
42 
44  int ieta() const {
45  /* if ( subDet() == EcalBarrel) */
46  return zside() * ietaAbs();
47  /* else */
48  /* throw(std::runtime_error("EcalTrigTowerDetId: ieta not applicable for this subDetector.")); */
49  }
50 
52  int iphi() const {
53  /* if ( subDet() == EcalBarrel) */
54  return id_ & 0x7F;
55  /* else */
56  /* throw(std::runtime_error("EcalTrigTowerDetId: iphi not applicable for this subDetector.")); */
57  }
58 
59  int iquadrant() const;
60 
62  int ix() const {
63  if (subDet() == EcalEndcap)
64  return (id_ >> 7) & 0x7f;
65  else
66  throw(std::runtime_error("EcalTrigTowerDetId: ix not applicable for this subDetector."));
67  }
68 
70  int iy() const {
71  if (subDet() == EcalEndcap)
72  return id_ & 0x7F;
73  else
74  throw(std::runtime_error("EcalTrigTowerDetId: ix not applicable for this subDetector."));
75  }
76 
78  int hashedIndex() const;
79 
80  uint32_t denseIndex() const { return hashedIndex(); }
81 
82  static bool validDenseIndex(uint32_t din) { return (din < kSizeForDenseIndexing); }
83 
84  static EcalTrigTowerDetId detIdFromDenseIndex(uint32_t di);
85 
87  static bool validDetId(int iz, EcalSubdetector sd, int i, int j);
88 
90  int iDCC() const;
91 
93  int iTT() const;
94 
95  static const int MIN_I = 1;
96  static const int MIN_J = 1;
97  static const int MAX_I = 127;
98  static const int MAX_J = 127;
99 
100  static const int kEBTowersInPhi = 4; // per SM (in the Barrel)
101  static const int kEBTowersPerSM = 68; // per SM (in the Barrel)
102  static const int kEBTowersInEta = 17; // per SM (in the Barrel)
103  // static const int kEETowersInEta = 11; // Endcap
104  static const int kEETowersInPhiPerQuadrant = 18; // per Quadrant (in the Endcap)
105 
106  // function modes for (int, int) constructor
107  static const int SUBDETIJMODE = 0;
108  static const int SUBDETDCCTTMODE = 1;
109 
110  enum {
120  };
121 };
122 
123 std::ostream& operator<<(std::ostream&, const EcalTrigTowerDetId& id);
124 
125 #endif
operator<<
std::ostream & operator<<(std::ostream &, const EcalTrigTowerDetId &id)
Definition: EcalTrigTowerDetId.cc:139
EcalTrigTowerDetId::MAX_I
static const int MAX_I
Definition: EcalTrigTowerDetId.h:97
EcalTrigTowerDetId::SUBDETIJMODE
static const int SUBDETIJMODE
Definition: EcalTrigTowerDetId.h:107
mps_fire.i
i
Definition: mps_fire.py:428
EcalTrigTowerDetId::iphi
int iphi() const
get the tower iphi
Definition: EcalTrigTowerDetId.h:52
EcalTrigTowerDetId::denseIndex
uint32_t denseIndex() const
Definition: EcalTrigTowerDetId.h:80
EcalTrigTowerDetId::ietaAbs
int ietaAbs() const
get the absolute value of the tower ieta
Definition: EcalTrigTowerDetId.h:36
EcalTrigTowerDetId::MAX_J
static const int MAX_J
Definition: EcalTrigTowerDetId.h:98
EcalTrigTowerDetId::iquadrant
int iquadrant() const
Definition: EcalTrigTowerDetId.cc:79
ALCARECOPromptCalibProdSiPixelAli0T_cff.mode
mode
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:96
EcalTrigTowerDetId::kEETowersInPhiPerEndcap
Definition: EcalTrigTowerDetId.h:111
EcalTrigTowerDetId::kEETotalTowers
Definition: EcalTrigTowerDetId.h:118
EcalTrigTowerDetId::SUBDETDCCTTMODE
static const int SUBDETDCCTTMODE
Definition: EcalTrigTowerDetId.h:108
EcalSubdetector
EcalSubdetector
Definition: EcalSubdetector.h:10
EcalTrigTowerDetId::kEBTotalTowers
Definition: EcalTrigTowerDetId.h:116
EcalTrigTowerDetId
Definition: EcalTrigTowerDetId.h:14
EcalTrigTowerDetId::iTT
int iTT() const
sequential index within one DCC
Definition: EcalTrigTowerDetId.cc:61
EcalTrigTowerDetId::zside
int zside() const
get the z-side of the tower (1/-1)
Definition: EcalTrigTowerDetId.h:30
EcalBarrel
Definition: EcalSubdetector.h:10
EcalTrigTowerDetId::EcalTrigTowerDetId
EcalTrigTowerDetId()
Definition: EcalTrigTowerDetId.cc:5
DetId
Definition: DetId.h:17
EcalTrigTowerDetId::ix
int ix() const
get the tower ix (Endcap case) *‍/
Definition: EcalTrigTowerDetId.h:62
EcalTrigTowerDetId::iy
int iy() const
get the tower iy (Endcap case) *‍/
Definition: EcalTrigTowerDetId.h:70
EcalTrigTowerDetId::kEBTowersInPhi
static const int kEBTowersInPhi
Definition: EcalTrigTowerDetId.h:100
EcalTrigTowerDetId::MIN_J
static const int MIN_J
Definition: EcalTrigTowerDetId.h:96
EcalSubdetector.h
EcalEndcap
Definition: EcalSubdetector.h:10
EcalTrigTowerDetId::kEEInnerEta
Definition: EcalTrigTowerDetId.h:113
cropTnPTrees.din
din
Definition: cropTnPTrees.py:30
DetId::id_
uint32_t id_
Definition: DetId.h:69
EcalTrigTowerDetId::validDetId
static bool validDetId(int iz, EcalSubdetector sd, int i, int j)
check if a valid index combination
Definition: EcalTrigTowerDetId.cc:86
EcalTrigTowerDetId::MIN_I
static const int MIN_I
Definition: EcalTrigTowerDetId.h:95
EcalTrigTowerDetId::iDCC
int iDCC() const
get the ECAL DCC id - in the barrrel ism == iDCC
Definition: EcalTrigTowerDetId.cc:47
EcalTrigTowerDetId::hashedIndex
int hashedIndex() const
get a compact index for arrays [TODO: NEEDS WORK]
Definition: EcalTrigTowerDetId.cc:93
EcalTrigTowerDetId::kEEOuterEta
Definition: EcalTrigTowerDetId.h:112
EcalTrigTowerDetId::kEBHalfTowers
Definition: EcalTrigTowerDetId.h:115
EcalTrigTowerDetId::subDet
EcalSubdetector subDet() const
get the subDetector associated to the Trigger Tower
Definition: EcalTrigTowerDetId.h:33
EcalTrigTowerDetId::ieta
int ieta() const
get the tower ieta
Definition: EcalTrigTowerDetId.h:44
EcalTrigTowerDetId::kEBTowersPerSM
static const int kEBTowersPerSM
Definition: EcalTrigTowerDetId.h:101
DetId.h
EcalTrigTowerDetId::kSizeForDenseIndexing
Definition: EcalTrigTowerDetId.h:119
EcalTrigTowerDetId::detIdFromDenseIndex
static EcalTrigTowerDetId detIdFromDenseIndex(uint32_t di)
Definition: EcalTrigTowerDetId.cc:104
sd
double sd
Definition: CascadeWrapper.h:113
EcalTrigTowerDetId::kEETowersInPhiPerQuadrant
static const int kEETowersInPhiPerQuadrant
Definition: EcalTrigTowerDetId.h:104
EcalTrigTowerDetId::kEETowersPerEndcap
Definition: EcalTrigTowerDetId.h:117
EcalTrigTowerDetId::operator=
EcalTrigTowerDetId & operator=(const DetId &id)
Definition: EcalTrigTowerDetId.cc:38
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
EcalTrigTowerDetId::validDenseIndex
static bool validDenseIndex(uint32_t din)
Definition: EcalTrigTowerDetId.h:82
EcalTrigTowerDetId::kEBTowersInEta
static const int kEBTowersInEta
Definition: EcalTrigTowerDetId.h:102
EcalTrigTowerDetId::kEETowersInEta
Definition: EcalTrigTowerDetId.h:114