CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalHTRData.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef HcalHTRData_H
3 #define HcalHTRData_H
4 
5 #include <stdint.h>
6 
18 class HcalHTRData {
19  public:
20  static const int CHANNELS_PER_SPIGOT = 24;
21  static const int MAXIMUM_SAMPLES_PER_CHANNEL = 20;
22 
23  HcalHTRData();
24  ~HcalHTRData() { if (m_ownData!=0) delete [] m_ownData; }
25  HcalHTRData(int version_to_create);
26  HcalHTRData(const unsigned short* data, int length);
27  HcalHTRData(const HcalHTRData&);
28 
30  void allocate(int version_to_create=0);
31  void adoptData(const unsigned short* data, int length);
32 
34  inline int getFormatVersion() const { return m_formatVersion; }
35 
37  inline const unsigned short* getRawData() const { return m_rawConst; }
38 
40  inline const int getRawLength() const { return m_rawLength; }
41 
45  bool check() const;
46 
54  void dataPointers(const unsigned short** daq_first,
55  const unsigned short** daq_last,
56  const unsigned short** tp_first,
57  const unsigned short** tp_last) const;
58 
59 
67  void unpack(unsigned char* daq_lengths, unsigned short* daq_samples,
68  unsigned char* tp_lengths, unsigned short* tp_samples) const;
69 
77  bool unpackHistogram(int fiber, int fiberchan, int capid, unsigned
78  short* histogram) const;
79 
86  void pack(unsigned char* daq_lengths, unsigned short* daq_samples,
87  unsigned char* tp_lengths, unsigned short* tp_samples, bool
88  do_capid=false);
90  void packHeaderTrailer(int L1Anumber, int bcn, int submodule, int
91  orbitn, int pipeline, int ndd, int nps, int firmwareRev=0);
92 
94  void packUnsuppressed(const bool* mp);
95 
96 
98  inline unsigned int getL1ANumber() const {
99  return (m_rawConst[0]&0xFF)+(m_rawConst[1]<<8);
100  }
102  inline unsigned int getBunchNumber() const {
103  return (m_rawConst[4]&0xFFF);
104  }
106  unsigned int getOrbitNumber() const;
108  unsigned int getSubmodule() const;
110  // get the htr slot
111  unsigned int htrSlot() const;
113  // get the htr top/bottom (1=top/0=bottom)
114  unsigned int htrTopBottom() const;
116  // get the readout VME crate number
117  unsigned int readoutVMECrateId() const;
119  bool isCalibrationStream() const;
121  bool isUnsuppressed() const;
123  bool wasMarkAndPassZS(int fiber, int fiberchan) const;
125  bool wasMarkAndPassZSTP(int slb, int slbchan) const;
127  uint32_t zsBunchMask() const;
128 
130  bool isPatternRAMEvent() const;
133  bool isHistogramEvent() const;
136  void getHistogramFibers(int& a, int& b) const;
138  unsigned int getPipelineLength() const;
140  unsigned int getFirmwareRevision() const;
142  int getFirmwareFlavor() const;
144  inline unsigned int getErrorsWord() const {
145  return m_rawConst[2]&0xFFFF; }
147  int getNPrecisionWords() const;
149  int getNDD() const;
152  int getNTP() const;
154  int getNPS() const;
155 
157  inline unsigned int getDLLunlock() const {
158  return (m_rawConst[5]>>1)&0x3; }
159 
161  inline unsigned int getTTCready() const {
162  return m_rawConst[5]&0x1; }
163 
165  inline unsigned int getFibOrbMsgBCN(int fiber) const {
166  return (m_formatVersion==-1 || fiber<1 || fiber>8)?(0):(m_rawConst[m_rawLength-12+(fiber-1)]&0xFFF);
167  }
168 
170  inline unsigned int getFib1OrbMsgBCN() const {
171  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-12]&0xFFF);
172 }
173  inline unsigned int getFib2OrbMsgBCN() const {
174  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-11]&0xFFF);
175 }
176 
177  inline unsigned int getFib3OrbMsgBCN() const {
178  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-10]&0xFFF);
179 }
180 
181  inline unsigned int getFib4OrbMsgBCN() const {
182  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-9]&0xFFF);
183 }
184 
185  inline unsigned int getFib5OrbMsgBCN() const {
186  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-8]&0xFFF);
187 }
188 
189  inline unsigned int getFib6OrbMsgBCN() const {
190  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-7]&0xFFF);
191 }
192 
193  inline unsigned int getFib7OrbMsgBCN() const {
194  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-6]&0xFFF);
195 }
196 
197  inline unsigned int getFib8OrbMsgBCN() const {
198  return (m_formatVersion==-1)?(0):(m_rawConst[m_rawLength-5]&0xFFF);
199 }
200 
201 
202 
204  inline unsigned int getExtHdr1() const {
205  return (m_rawConst[0]);}
206  inline unsigned int getExtHdr2() const {
207  return (m_rawConst[1]); }
208  inline unsigned int getExtHdr3() const {
209  return (m_rawConst[2]);}
210  inline unsigned int getExtHdr4() const {
211  return (m_rawConst[3]); }
212  inline unsigned int getExtHdr5() const {
213  return (m_rawConst[4]);}
214  inline unsigned int getExtHdr6() const {
215  return (m_rawConst[5]);}
216  inline unsigned int getExtHdr7() const {
217  return (m_rawConst[6]);}
218  inline unsigned int getExtHdr8() const {
219  return (m_rawConst[7]);}
220 
221  /* unsigned int getFib1OrbMsgBCN() const;
222  unsigned int getFib2OrbMsgBCN() const;
223  unsigned int getFib3OrbMsgBCN() const;
224  unsigned int getFib4OrbMsgBCN() const;
225  unsigned int getFib5OrbMsgBCN() const;
226  unsigned int getFib6OrbMsgBCN() const;
227  unsigned int getFib7OrbMsgBCN() const;
228  unsigned int getFib8OrbMsgBCN() const;
229  */
230 
233  bool wasHistogramError(int ifiber) const;
234 
235 protected:
236  void determineSectionLengths(int& tpWords, int& daqWords, int&
237  headerWords, int& trailerWords) const;
238  void determineStaticLengths(int& headerWords, int& trailerWords) const;
241  const unsigned short* m_rawConst;
242  unsigned short* m_ownData;
243 };
244 
245 #endif
246 
unsigned short * m_ownData
Definition: HcalHTRData.h:242
unsigned int getFib6OrbMsgBCN() const
Definition: HcalHTRData.h:189
int getNDD() const
Get the number of daq data samples per channel when not zero-suppressed.
Definition: HcalHTRData.cc:363
unsigned int getFib1OrbMsgBCN() const
Get the BCN of the Fiber Orbit Messages.
Definition: HcalHTRData.h:170
unsigned int getTTCready() const
Get TTCready bit.
Definition: HcalHTRData.h:161
bool check() const
Check for a good event Requires a minimum length, matching wordcount and length, not an empty event...
Definition: HcalHTRData.cc:62
int m_formatVersion
Definition: HcalHTRData.h:239
unsigned int htrTopBottom() const
HcalElectronicsId-style HTR top/bottom (1=top/0=bottom)
Definition: HcalHTRData.cc:317
void packUnsuppressed(const bool *mp)
pack trailer with Mark and Pass bits
Definition: HcalHTRData.cc:283
unsigned int getExtHdr2() const
Definition: HcalHTRData.h:206
unsigned int getExtHdr5() const
Definition: HcalHTRData.h:212
unsigned int getExtHdr4() const
Definition: HcalHTRData.h:210
bool isPatternRAMEvent() const
Is this event a pattern-ram event?
Definition: HcalHTRData.cc:357
const unsigned short * m_rawConst
Definition: HcalHTRData.h:241
unsigned int getExtHdr6() const
Definition: HcalHTRData.h:214
unsigned int getFib8OrbMsgBCN() const
Definition: HcalHTRData.h:197
void determineStaticLengths(int &headerWords, int &trailerWords) const
Definition: HcalHTRData.cc:115
bool wasMarkAndPassZS(int fiber, int fiberchan) const
Was this channel passed as part of Mark&amp;Pass ZS?
Definition: HcalHTRData.cc:331
unsigned int getFibOrbMsgBCN(int fiber) const
Get the BCN of the Fiber Orbit Messages.
Definition: HcalHTRData.h:165
bool wasHistogramError(int ifiber) const
Was there an error on the given fiber for this event (only in histogram mode!)
Definition: HcalHTRData.cc:400
unsigned int getDLLunlock() const
Get DLLunlock bits.
Definition: HcalHTRData.h:157
static const int CHANNELS_PER_SPIGOT
Definition: HcalHTRData.h:20
static const int MAXIMUM_SAMPLES_PER_CHANNEL
Definition: HcalHTRData.h:21
void getHistogramFibers(int &a, int &b) const
Get the fiber numbers for the data present in this event (only in histogram mode!) ...
Definition: HcalHTRData.cc:388
unsigned int getOrbitNumber() const
Get the HTR orbit number.
Definition: HcalHTRData.cc:299
int getFormatVersion() const
Get the version number of this event.
Definition: HcalHTRData.h:34
HcalHTRData & operator=(const HcalHTRData &)
Definition: HcalHTRData.cc:38
int getNPrecisionWords() const
Get the total number of precision data 16-bit words.
Definition: HcalHTRData.cc:372
bool isCalibrationStream() const
Is this event a calibration-stream event?
Definition: HcalHTRData.cc:325
bool isUnsuppressed() const
Is this event an unsuppresed event?
Definition: HcalHTRData.cc:328
unsigned int getExtHdr1() const
Get the HTR Ext Header words.
Definition: HcalHTRData.h:204
void allocate(int version_to_create=0)
Definition: HcalHTRData.cc:28
unsigned int getPipelineLength() const
Get the pipeline length used for this event.
Definition: HcalHTRData.cc:378
unsigned int htrSlot() const
HcalElectronicsId-style HTR slot.
Definition: HcalHTRData.cc:313
void unpack(unsigned char *daq_lengths, unsigned short *daq_samples, unsigned char *tp_lengths, unsigned short *tp_samples) const
Unpack the HTR data into TP and DAQ data sorted by channel.
Definition: HcalHTRData.cc:147
bool unpackHistogram(int fiber, int fiberchan, int capid, unsigned short *histogram) const
Unpack special histogramming mode data.
Definition: HcalHTRData.cc:408
unsigned int getFib7OrbMsgBCN() const
Definition: HcalHTRData.h:193
unsigned int getExtHdr8() const
Definition: HcalHTRData.h:218
int getNTP() const
Get the number of trigger data samples when not zero-suppressed (not available after FW 4) ...
Definition: HcalHTRData.cc:366
const int getRawLength() const
Get the length of the raw data.
Definition: HcalHTRData.h:40
unsigned int getFib3OrbMsgBCN() const
Definition: HcalHTRData.h:177
void pack(unsigned char *daq_lengths, unsigned short *daq_samples, unsigned char *tp_lengths, unsigned short *tp_samples, bool do_capid=false)
Unpack the HTR data into TP and DAQ data sorted by channel.
Definition: HcalHTRData.cc:199
unsigned int getFib5OrbMsgBCN() const
Definition: HcalHTRData.h:185
const unsigned short * getRawData() const
Get a pointer to the raw data.
Definition: HcalHTRData.h:37
void dataPointers(const unsigned short **daq_first, const unsigned short **daq_last, const unsigned short **tp_first, const unsigned short **tp_last) const
Obtain the starting and ending pointers for external unpacking of the data.
Definition: HcalHTRData.cc:128
unsigned int getErrorsWord() const
Get the errors word.
Definition: HcalHTRData.h:144
unsigned int getExtHdr3() const
Definition: HcalHTRData.h:208
unsigned int getExtHdr7() const
Definition: HcalHTRData.h:216
double b
Definition: hdecay.h:120
int getNPS() const
Get the number of presamples in daq data.
Definition: HcalHTRData.cc:375
int getFirmwareFlavor() const
Get the HTR firmware flavor.
Definition: HcalHTRData.cc:384
unsigned int readoutVMECrateId() const
HcalElectronicsId-style VME crate number.
Definition: HcalHTRData.cc:321
unsigned int getFib4OrbMsgBCN() const
Definition: HcalHTRData.h:181
void adoptData(const unsigned short *data, int length)
Definition: HcalHTRData.cc:47
bool wasMarkAndPassZSTP(int slb, int slbchan) const
Was this channel passed as part of Mark&amp;Pass ZS?
Definition: HcalHTRData.cc:339
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)
Definition: HcalHTRData.cc:258
double a
Definition: hdecay.h:121
unsigned int getBunchNumber() const
Get the HTR bunch number.
Definition: HcalHTRData.h:102
unsigned int getFib2OrbMsgBCN() const
Definition: HcalHTRData.h:173
uint32_t zsBunchMask() const
ZS Bunch Mask (if available)
Definition: HcalHTRData.cc:348
unsigned int getSubmodule() const
Get the HTR submodule number.
Definition: HcalHTRData.cc:306
unsigned int getFirmwareRevision() const
Get the HTR firmware version.
Definition: HcalHTRData.cc:381
unsigned int getL1ANumber() const
Get the HTR event number.
Definition: HcalHTRData.h:98
bool isHistogramEvent() const
Is this event a histogram event? (do not call standard unpack in this case!!!!!)
Definition: HcalHTRData.cc:360
void determineSectionLengths(int &tpWords, int &daqWords, int &headerWords, int &trailerWords) const
Definition: HcalHTRData.cc:100