CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
EcalTrigPrimCompactColl.h
Go to the documentation of this file.
1 #ifndef ECALTRIGPRIMCOMPACTCOLL_H
2 #define ECALTRIGPRIMCOMPACTCOLL_H
3 
4 #include <vector>
5 #include <cinttypes>
7 
11 
28 private:
29  static const int nPhiBins = 72;
30  static const int nEtaBins = 56;
31  static const int nBins = nPhiBins * nEtaBins;
32 
33 private:
34  static size_t index(int ieta, int iphi) {
35  size_t r = unsigned(((ieta < 0) ? (ieta + 28) : (ieta + 27)) * nPhiBins + (iphi - 1));
36  if (r >= (unsigned)nBins)
37  throw cms::Exception("Invalid argument")
38  << "Trigger tower index (" << ieta << "," << iphi << ") are out of range";
39  return r;
40  }
41 
42 public:
44 
46  void setValue(int ieta, int iphi, uint16_t sample) { data_[index(ieta, iphi)] = sample; }
47 
49  uint16_t raw(int ieta, int iphi) const { return data_[index(ieta, iphi)]; }
51  uint16_t raw(const EcalTrigTowerDetId& ttId) const { return raw(ttId.ieta(), ttId.iphi()); }
53 
55  int compressedEt(int ieta, int iphi) const { return raw(ieta, iphi) & 0xFF; }
57  int compressedEt(const EcalTrigTowerDetId& ttId) const { return compressedEt(ttId.ieta(), ttId.iphi()); }
59 
61  bool fineGrain(int ieta, int iphi) const { return (raw(ieta, iphi) & 0x100) != 0; }
63  bool fineGrain(const EcalTrigTowerDetId& ttId) const { return fineGrain(ttId.ieta(), ttId.iphi()); }
65 
67  int ttFlag(int ieta, int iphi) const { return (raw(ieta, iphi) >> 9) & 0x7; }
69  int ttFlag(const EcalTrigTowerDetId& ttId) const { return ttFlag(ttId.ieta(), ttId.iphi()); }
71 
73  int sFGVB(int ieta, int iphi) const { return (raw(ieta, iphi) >> 12) & 0x1; }
77  int sFGVB(const EcalTrigTowerDetId& ttId) const { return sFGVB(ttId.ieta(), ttId.iphi()); }
79 
81  int l1aSpike(int ieta, int iphi) const { return sFGVB(ieta, iphi); }
87  int l1aSpike(const EcalTrigTowerDetId& ttId) const { return sFGVB(ttId); }
89 
91 
92 private:
93  int16_t formatVers_;
94  std::vector<uint16_t> data_;
95 };
96 
97 #endif //ECALTRIGPRIMCOMPACTCOLL_H not defined
bool fineGrain(const EcalTrigTowerDetId &ttId) const
int ttFlag(int ieta, int iphi) const
get the Trigger tower Flag (3 bits)
void setValue(int ieta, int iphi, uint16_t sample)
Set data.
std::vector< uint16_t > data_
int sFGVB(int ieta, int iphi) const
unsigned ttId(DetId const &, EcalElectronicsMapping const *)
int ieta() const
get the tower ieta
int l1aSpike(const EcalTrigTowerDetId &ttId) const
int compressedEt(int ieta, int iphi) const
get the encoded/compressed Et (8 bits)
int l1aSpike(int ieta, int iphi) const
bool fineGrain(int ieta, int iphi) const
get the fine-grain bit (1 bit)
int iphi() const
get the tower iphi
edm::SortedCollection< EcalTriggerPrimitiveDigi > EcalTrigPrimDigiCollection
void toEcalTrigPrimDigiCollection(EcalTrigPrimDigiCollection &dest) const
int ttFlag(const EcalTrigTowerDetId &ttId) const
static size_t index(int ieta, int iphi)
uint16_t raw(int ieta, int iphi) const
get the raw word
uint16_t raw(const EcalTrigTowerDetId &ttId) const
int sFGVB(const EcalTrigTowerDetId &ttId) const
int compressedEt(const EcalTrigTowerDetId &ttId) const