CMS 3D CMS Logo

EcalTrigPrimCompactColl.h
Go to the documentation of this file.
1 #ifndef ECALTRIGPRIMCOMPACTCOLL_H
2 #define ECALTRIGPRIMCOMPACTCOLL_H
3 
4 #include <vector>
5 #include <inttypes.h>
7 
11 
28 
29 private:
30  static const int nPhiBins = 72;
31  static const int nEtaBins = 56;
32  static const int nBins = nPhiBins*nEtaBins;
33 
34 private:
35  static size_t index(int ieta, int iphi){
36  size_t r = unsigned(((ieta<0) ? (ieta+28) : (ieta+27))*nPhiBins + (iphi -1));
37  if(r >= (unsigned)nBins) throw cms::Exception("Invalid argument") << "Trigger tower index (" << ieta << "," << iphi << ") are out of range";
38  return r;
39  }
40 
41 public:
43 
45  void setValue(int ieta, int iphi, uint16_t sample){ data_[index(ieta, iphi)] = sample;}
46 
48  uint16_t raw(int ieta, int iphi) const { return data_[index(ieta, iphi)]; }
50  uint16_t raw(const EcalTrigTowerDetId& ttId) const { return raw(ttId.ieta(), ttId.iphi()); }
52 
54  int compressedEt(int ieta, int iphi) const { return raw(ieta, iphi)&0xFF; }
56  int compressedEt(const EcalTrigTowerDetId& ttId) const { return compressedEt(ttId.ieta(), ttId.iphi()); }
58 
60  bool fineGrain(int ieta, int iphi) const { return (raw(ieta, iphi)&0x100)!=0; }
62  bool fineGrain(const EcalTrigTowerDetId& ttId) const { return fineGrain(ttId.ieta(), ttId.iphi()); }
64 
66  int ttFlag(int ieta, int iphi) const { return (raw(ieta, iphi)>>9)&0x7; }
68  int ttFlag(const EcalTrigTowerDetId& ttId) const { return ttFlag(ttId.ieta(), ttId.iphi()); }
70 
72  int sFGVB(int ieta, int iphi) const { return (raw(ieta, iphi) >>12) & 0x1; }
76  int sFGVB(const EcalTrigTowerDetId& ttId) const { return sFGVB(ttId.ieta(), ttId.iphi()); }
78 
80  int l1aSpike(int ieta, int iphi) const { return sFGVB(ieta, iphi); }
86  int l1aSpike(const EcalTrigTowerDetId& ttId) const { return sFGVB(ttId); }
88 
90 
91  private:
92  int16_t formatVers_;
93  std::vector<uint16_t> data_;
94 };
95 
96 #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 &)
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