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();
25  if (m_ownData != nullptr)
26  delete[] m_ownData;
27  }
28  HcalUHTRData(int version_to_create);
29  HcalUHTRData(const uint64_t* data, int length_words);
30  HcalUHTRData(const HcalUHTRData&);
31 
33 
35  inline int getFormatVersion() const { return m_formatVersion; }
36 
38  inline const unsigned short* getRawData16() const { return m_raw16; }
39 
41  inline const int getRawLengthBytes() const { return m_rawLength64 * sizeof(uint64_t); }
42 
44  public:
45  const_iterator(const uint16_t* ptr, const uint16_t* limit = nullptr);
46 
47  bool isHeader() const { return ((*m_ptr) & 0x8000) != 0; }
48  int flavor() const { return ((*m_ptr) >> 12) & 0x7; }
49  int errFlags() const;
50  bool dataValid() const;
51  int capid0() const { return ((*m_ptr) >> 8) & 0x3; }
52  int channelid() const { return ((*m_ptr)) & 0xFF; }
53  int technicalDataType() const;
54 
55  uint16_t value() const { return *m_ptr; }
56 
57  uint8_t adc() const;
58  uint8_t le_tdc() const;
59  uint8_t te_tdc() const;
60  bool soi() const;
61  uint8_t capid() const;
62  bool ok() const;
63 
64  uint16_t operator*() const { return *m_ptr; }
65 
68 
69  bool operator==(const const_iterator& i) { return m_ptr == i.m_ptr; }
70  bool operator!=(const const_iterator& i) { return m_ptr != i.m_ptr; }
71  const uint16_t* raw() const { return m_ptr; }
72 
73  private:
74  void determineMode();
75  const uint16_t *m_ptr, *m_limit;
76  const uint16_t *m_header_ptr, *m_0th_data_ptr;
79  int m_flavor;
81  };
82 
83  const_iterator begin() const;
84  const_iterator end() const;
85 
87  inline uint32_t l1ANumber() const { return uint32_t(m_raw64[0] >> 32) & 0xFFFFFF; }
89  inline uint32_t bunchNumber() const { return uint32_t(m_raw64[0] >> 20) & 0xFFF; }
91  inline uint32_t orbitNumber() const { return uint32_t(m_raw64[1] >> 16) & 0xFFFF; }
93  int getEventType() const { return uint32_t(m_raw64[1] >> 40) & 0xF; }
95  inline uint32_t boardId() const { return uint32_t(m_raw64[1]) & 0xFFFF; }
97  inline uint32_t crateId() const { return uint32_t(m_raw64[1]) & 0xFF; }
99  inline uint32_t slot() const { return uint32_t(m_raw64[1] >> 8) & 0xF; }
101  inline uint32_t presamples() const { return uint32_t(m_raw64[1] >> 12) & 0xF; }
103  inline uint32_t length64_uhtr() const { return uint32_t(m_raw64[0]) & 0xFFFFF; }
105  bool wasMarkAndPassZS(int fiber, int fiberchan) const;
107  bool wasMarkAndPassZSTP(int slb, int slbchan) const;
108 
110  unsigned int getFirmwareRevision() const { return uint32_t(m_raw64[1] >> 48) & 0xFFFF; }
112  int getFirmwareFlavor() const { return uint32_t(m_raw64[1] >> 32) & 0xFF; }
113 
114 protected:
118  const uint16_t* m_raw16;
120 };
121 
122 #endif
const int getRawLengthBytes() const
Get the length of the raw data.
Definition: HcalUHTRData.h:41
const_iterator end() const
bool operator!=(const const_iterator &i)
Definition: HcalUHTRData.h:70
const uint16_t * m_limit
Definition: HcalUHTRData.h:75
static int slb(const HcalTriggerPrimitiveSample &theSample)
static const int CHANNELS_PER_FIBER_MAX
Definition: HcalUHTRData.h:21
uint32_t bunchNumber() const
Get the HTR bunch number.
Definition: HcalUHTRData.h:89
uint32_t boardId() const
Get the raw board id.
Definition: HcalUHTRData.h:95
const uint16_t * m_0th_data_ptr
Definition: HcalUHTRData.h:76
int getFirmwareFlavor() const
Get the HTR firmware flavor.
Definition: HcalUHTRData.h:112
bool wasMarkAndPassZS(int fiber, int fiberchan) const
Was this channel passed as part of Mark&Pass ZS?
const_iterator & operator++()
Definition: HcalUHTRData.cc:12
static const int CHANNELS_PER_FIBER_HF
Definition: HcalUHTRData.h:19
uint32_t length64_uhtr() const
Get the length from the uHTR header.
Definition: HcalUHTRData.h:103
const_iterator(const uint16_t *ptr, const uint16_t *limit=nullptr)
Definition: HcalUHTRData.cc:6
int getFormatVersion() const
Get the version number of this event.
Definition: HcalUHTRData.h:35
static const int CHANNELS_PER_FIBER_HBHE
Definition: HcalUHTRData.h:20
int getEventType() const
Get the event type.
Definition: HcalUHTRData.h:93
uint32_t orbitNumber() const
Get the HTR orbit number.
Definition: HcalUHTRData.h:91
const uint16_t * m_raw16
Definition: HcalUHTRData.h:118
static const int FIBERS_PER_UHTR
Definition: HcalUHTRData.h:18
HcalUHTRData & operator=(const HcalUHTRData &)
unsigned long long uint64_t
Definition: Time.h:13
unsigned int getFirmwareRevision() const
Get the HTR firmware version.
Definition: HcalUHTRData.h:110
bool operator==(const const_iterator &i)
Definition: HcalUHTRData.h:69
uint32_t crateId() const
Get the board crate.
Definition: HcalUHTRData.h:97
uint32_t l1ANumber() const
Get the HTR event number.
Definition: HcalUHTRData.h:87
uint32_t presamples() const
Get the presamples.
Definition: HcalUHTRData.h:101
const uint16_t * raw() const
Definition: HcalUHTRData.h:71
const unsigned short * getRawData16() const
Get a pointer to the raw data.
Definition: HcalUHTRData.h:38
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80
const uint16_t * m_header_ptr
Definition: HcalUHTRData.h:76
const uint64_t * m_raw64
Definition: HcalUHTRData.h:117
const_iterator begin() const
uint32_t slot() const
Get the board slot.
Definition: HcalUHTRData.h:99
uint64_t * m_ownData
Definition: HcalUHTRData.h:119
bool wasMarkAndPassZSTP(int slb, int slbchan) const
Was this channel passed as part of Mark&Pass ZS?
uint16_t operator*() const
Definition: HcalUHTRData.h:64