CMS 3D CMS Logo

HcalUHTRData.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef HcalUHTRData_H
3 #define HcalUHTRData_H
4 
5 #include <cstdint>
6 
16 class HcalUHTRData {
17  public:
18  static const int FIBERS_PER_UHTR = 24;
19  static const int CHANNELS_PER_FIBER_HF = 4;
20  static const int CHANNELS_PER_FIBER_HBHE = 6;
21  static const int CHANNELS_PER_FIBER_MAX = 8;
22 
23  HcalUHTRData();
24  ~HcalUHTRData() { if (m_ownData!=nullptr) delete [] m_ownData; }
25  HcalUHTRData(int version_to_create);
26  HcalUHTRData(const uint64_t* data, int length_words);
27  HcalUHTRData(const HcalUHTRData&);
28 
30 
32  inline int getFormatVersion() const { return m_formatVersion; }
33 
35  inline const unsigned short* getRawData16() const { return m_raw16; }
36 
38  inline const int getRawLengthBytes() const { return m_rawLength64*sizeof(uint64_t); }
39 
41  public:
42  const_iterator(const uint16_t* ptr, const uint16_t* limit=nullptr);
43 
44  bool isHeader() const { return ((*m_ptr)&0x8000)!=0; }
45  int flavor() const { return ((*m_ptr)>>12)&0x7; }
46  int errFlags() const;
47  bool dataValid() const;
48  int capid0() const { return ((*m_ptr)>>8)&0x3; }
49  int channelid() const { return ((*m_ptr))&0xFF; }
50  int technicalDataType() const;
51 
52  uint16_t value() const { return *m_ptr; }
53 
54  uint8_t adc() const;
55  uint8_t le_tdc() const;
56  uint8_t te_tdc() const;
57  bool soi() const;
58  uint8_t capid() const;
59  bool ok() const;
60 
61  uint16_t operator*() const { return *m_ptr; }
62 
65 
66  bool operator==(const const_iterator& i) { return m_ptr==i.m_ptr; }
67  bool operator!=(const const_iterator& i) { return m_ptr!=i.m_ptr; }
68  const uint16_t* raw() const { return m_ptr; }
69 
70  private:
71  void determineMode();
72  const uint16_t* m_ptr, *m_limit;
73  const uint16_t* m_header_ptr, *m_0th_data_ptr;
76  int m_flavor;
78  };
79 
80  const_iterator begin() const;
81  const_iterator end() const;
82 
84  inline uint32_t l1ANumber() const { return uint32_t(m_raw64[0]>>32)&0xFFFFFF; }
86  inline uint32_t bunchNumber() const { return uint32_t(m_raw64[0]>>20)&0xFFF; }
88  inline uint32_t orbitNumber() const { return uint32_t(m_raw64[1]>>16)&0xFFFF; }
90  int getEventType() const { return uint32_t(m_raw64[1]>>40)&0xF; }
92  inline uint32_t boardId() const { return uint32_t(m_raw64[1])&0xFFFF; }
94  inline uint32_t crateId() const { return uint32_t(m_raw64[1])&0xFF; }
96  inline uint32_t slot() const { return uint32_t(m_raw64[1]>>8)&0xF; }
98  inline uint32_t presamples() const { return uint32_t(m_raw64[1]>>12)&0xF; }
99 
101  bool wasMarkAndPassZS(int fiber, int fiberchan) const;
103  bool wasMarkAndPassZSTP(int slb, int slbchan) const;
104 
106  unsigned int getFirmwareRevision() const { return uint32_t(m_raw64[1]>>48)&0xFFFF; }
108  int getFirmwareFlavor() const { return uint32_t(m_raw64[1]>>32)&0xFF; }
109 
110 
111 protected:
115  const uint16_t* m_raw16;
117 };
118 
119 #endif
120 
int getFirmwareFlavor() const
Get the HTR firmware flavor.
Definition: HcalUHTRData.h:108
bool operator!=(const const_iterator &i)
Definition: HcalUHTRData.h:67
const uint16_t * m_limit
Definition: HcalUHTRData.h:72
static int slb(const HcalTriggerPrimitiveSample &theSample)
const unsigned short * getRawData16() const
Get a pointer to the raw data.
Definition: HcalUHTRData.h:35
uint16_t value() const
Definition: HcalUHTRData.h:52
static const int CHANNELS_PER_FIBER_MAX
Definition: HcalUHTRData.h:21
const uint16_t * m_0th_data_ptr
Definition: HcalUHTRData.h:73
uint32_t crateId() const
Get the board crate.
Definition: HcalUHTRData.h:94
int getFormatVersion() const
Get the version number of this event.
Definition: HcalUHTRData.h:32
const_iterator & operator++()
Definition: HcalUHTRData.cc:12
static const int CHANNELS_PER_FIBER_HF
Definition: HcalUHTRData.h:19
uint32_t bunchNumber() const
Get the HTR bunch number.
Definition: HcalUHTRData.h:86
bool wasMarkAndPassZS(int fiber, int fiberchan) const
Was this channel passed as part of Mark&Pass ZS?
const_iterator(const uint16_t *ptr, const uint16_t *limit=nullptr)
Definition: HcalUHTRData.cc:6
int getEventType() const
Get the event type.
Definition: HcalUHTRData.h:90
static const int CHANNELS_PER_FIBER_HBHE
Definition: HcalUHTRData.h:20
const_iterator begin() const
Definition: HcalUHTRData.cc:99
const uint16_t * m_raw16
Definition: HcalUHTRData.h:115
uint32_t orbitNumber() const
Get the HTR orbit number.
Definition: HcalUHTRData.h:88
static const int FIBERS_PER_UHTR
Definition: HcalUHTRData.h:18
uint32_t slot() const
Get the board slot.
Definition: HcalUHTRData.h:96
HcalUHTRData & operator=(const HcalUHTRData &)
unsigned long long uint64_t
Definition: Time.h:15
bool operator==(const const_iterator &i)
Definition: HcalUHTRData.h:66
uint32_t l1ANumber() const
Get the HTR event number.
Definition: HcalUHTRData.h:84
uint16_t operator*() const
Definition: HcalUHTRData.h:61
const int getRawLengthBytes() const
Get the length of the raw data.
Definition: HcalUHTRData.h:38
bool wasMarkAndPassZSTP(int slb, int slbchan) const
Was this channel passed as part of Mark&Pass ZS?
uint32_t presamples() const
Get the presamples.
Definition: HcalUHTRData.h:98
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
unsigned int getFirmwareRevision() const
Get the HTR firmware version.
Definition: HcalUHTRData.h:106
const uint16_t * m_header_ptr
Definition: HcalUHTRData.h:73
const uint64_t * m_raw64
Definition: HcalUHTRData.h:114
const_iterator end() const
uint64_t * m_ownData
Definition: HcalUHTRData.h:116
uint32_t boardId() const
Get the raw board id.
Definition: HcalUHTRData.h:92
const uint16_t * raw() const
Definition: HcalUHTRData.h:68