CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalUHTRData.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef HcalUHTRData_H
3 #define HcalUHTRData_H
4 
5 #include <stdint.h>
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!=0) 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=0);
43 
44  bool isHeader() const { return ((*m_ptr)&0x8000)!=0; }
45  int flavor() const { return ((*m_ptr)>>12)&0x7; }
46  int errFlags() const { return ((*m_ptr)>>10)&0x3; }
47  int capid0() const { return ((*m_ptr)>>8)&0x3; }
48  int channelid() const { return ((*m_ptr))&0xFF; }
49 
50  uint16_t value() const { return *m_ptr; }
51 
52  uint8_t adc() const;
53  uint8_t re_tdc() const;
54  uint8_t fe_tdc() const;
55  bool soi() const;
56 
57  uint16_t operator*() const { return *m_ptr; }
58 
61 
62  bool operator==(const const_iterator& i) { return m_ptr==i.m_ptr; }
63  bool operator!=(const const_iterator& i) { return m_ptr!=i.m_ptr; }
64 
65  private:
66  void determineMode();
67  const uint16_t* m_ptr, *m_limit;
70  int m_flavor;
71  };
72 
73  const_iterator begin() const;
74  const_iterator end() const;
75 
76  class packer {
77  public:
78  packer(uint16_t* baseptr);
79  void addHeader(int flavor, int errf, int cap0, int channelid);
80  void addSample(int adc, bool soi=false, int retdc=0, int fetdc=0, int tdcstat=0);
81  void addTP(int tpword, bool soi=false);
82  private:
83  uint16_t* m_baseptr;
84  int m_ptr;
85  int m_flavor;
87  };
88 
89  packer pack();
90 
91 
93  void packHeaderTrailer(int L1Anumber, int bcn, int submodule, int
94  orbitn, int pipeline, int ndd, int nps, int firmwareRev=0);
95 
97  void packUnsuppressed(const bool* mp);
98 
100  inline uint32_t l1ANumber() const { return uint32_t(m_raw64[0]>>32)&0xFFFFFF; }
102  inline uint32_t bunchNumber() const { return uint32_t(m_raw64[0]>>20)&0xFFF; }
104  inline uint32_t orbitNumber() const { return uint32_t(m_raw64[1]>>16)&0xFFFF; }
106  inline uint32_t boardId() const { return uint32_t(m_raw64[1])&0xFFFF; }
108  inline uint32_t crateId() const { return uint32_t(m_raw64[1])&0xFF; }
110  inline uint32_t slot() const { return uint32_t(m_raw64[1]>>8)&0xF; }
111 
113  bool wasMarkAndPassZS(int fiber, int fiberchan) const;
115  bool wasMarkAndPassZSTP(int slb, int slbchan) const;
116 
118  unsigned int getFirmwareRevision() const { return uint32_t(m_raw64[1]>>48)&0xFFFF; }
120  int getFirmwareFlavor() const { return uint32_t(m_raw64[1]>>32)&0xFF; }
121 
122 
123 protected:
127  const uint16_t* m_raw16;
129 };
130 
131 #endif
132 
int adc(sample_type sample)
get the ADC sample (12 bits)
int getFirmwareFlavor() const
Get the HTR firmware flavor.
Definition: HcalUHTRData.h:120
bool operator!=(const const_iterator &i)
Definition: HcalUHTRData.h:63
void addTP(int tpword, bool soi=false)
Definition: HcalUHTRData.cc:94
int i
Definition: DBlmapReader.cc:9
const uint16_t * m_limit
Definition: HcalUHTRData.h:67
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:50
static const int CHANNELS_PER_FIBER_MAX
Definition: HcalUHTRData.h:21
uint32_t crateId() const
Get the board crate.
Definition: HcalUHTRData.h:108
int getFormatVersion() const
Get the version number of this event.
Definition: HcalUHTRData.h:32
void addHeader(int flavor, int errf, int cap0, int channelid)
Definition: HcalUHTRData.cc:65
packer(uint16_t *baseptr)
Definition: HcalUHTRData.cc:62
const_iterator & operator++()
Definition: HcalUHTRData.cc:10
static const int CHANNELS_PER_FIBER_HF
Definition: HcalUHTRData.h:19
uint32_t bunchNumber() const
Get the HTR bunch number.
Definition: HcalUHTRData.h:102
bool wasMarkAndPassZS(int fiber, int fiberchan) const
Was this channel passed as part of Mark&amp;Pass ZS?
void addSample(int adc, bool soi=false, int retdc=0, int fetdc=0, int tdcstat=0)
Definition: HcalUHTRData.cc:76
static const int CHANNELS_PER_FIBER_HBHE
Definition: HcalUHTRData.h:20
const_iterator begin() const
Definition: HcalUHTRData.cc:54
const uint16_t * m_raw16
Definition: HcalUHTRData.h:127
uint32_t orbitNumber() const
Get the HTR orbit number.
Definition: HcalUHTRData.h:104
static const int FIBERS_PER_UHTR
Definition: HcalUHTRData.h:18
const_iterator(const uint16_t *ptr, const uint16_t *limit=0)
Definition: HcalUHTRData.cc:6
uint32_t slot() const
Get the board slot.
Definition: HcalUHTRData.h:110
void packUnsuppressed(const bool *mp)
pack trailer with Mark and Pass bits
HcalUHTRData & operator=(const HcalUHTRData &)
unsigned long long uint64_t
Definition: Time.h:15
bool operator==(const const_iterator &i)
Definition: HcalUHTRData.h:62
uint32_t l1ANumber() const
Get the HTR event number.
Definition: HcalUHTRData.h:100
uint16_t operator*() const
Definition: HcalUHTRData.h:57
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&amp;Pass ZS?
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
packer pack()
unsigned int getFirmwareRevision() const
Get the HTR firmware version.
Definition: HcalUHTRData.h:118
const uint64_t * m_raw64
Definition: HcalUHTRData.h:126
const_iterator end() const
Definition: HcalUHTRData.cc:58
uint64_t * m_ownData
Definition: HcalUHTRData.h:128
uint32_t boardId() const
Get the raw board id.
Definition: HcalUHTRData.h:106
uint16_t * m_baseptr
Definition: HcalUHTRData.h:83
void packHeaderTrailer(int L1Anumber, int bcn, int submodule, int orbitn, int pipeline, int ndd, int nps, int firmwareRev=0)
pack header and trailer (call after pack)