CMS 3D CMS Logo

HcalDCCHeader.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef HcalDCCHeader_H
3 #define HcalDCCHeader_H
4 
5 #include <iostream>
7 class HcalHTRData;
8 
18 public:
19  static const int SPIGOT_COUNT;
20 
21  HcalDCCHeader();
22 
24  unsigned int getTotalLengthBytes() const;
25 
27 
28  inline bool thereIsASecondCDFHeaderWord() const { return ((commondataformat0 >> 3) & 0x0001); }
30  inline short getCDFversionNumber() const { return ((commondataformat0 >> 4) & 0x0F); }
32  inline int getSourceId() const { return (commondataformat0 >> 8) & 0xFFF; }
34  inline int getBunchId() const { return (commondataformat0 >> 20) & 0xFFF; }
36  inline unsigned long getDCCEventNumber() const { return (commondataformat1 & 0x00FFFFFF); }
38  inline unsigned short getCDFEventType() const { return ((commondataformat1 >> 24) & 0x0F); }
40  inline unsigned short BOEshouldBe5Always() const { return ((commondataformat1 >> 28) & 0x0F); }
41 
43 
44  inline bool thereIsAThirdCDFHeaderWord() const { return ((commondataformat2 >> 3) & 0x0001); }
46  inline unsigned int getOrbitNumber() const { return (((commondataformat3 & 0xF) << 28) + (commondataformat2 >> 4)); }
48  inline unsigned int getSlink64ReservedBits() const { return ((commondataformat3 >> 4) & 0x00FFFFFF); }
50  inline short BOEshouldBeZeroAlways() const { return ((commondataformat3 >> 28) & 0x0F); }
51 
53  inline bool isCalibType() const { return (0 != getCalibType()); }
55  return HcalCalibrationEventType((commondataformat3 >> 24) & 0x0000000F);
56  }
57 
59  inline short getDCCDataFormatVersion() const { return (dcch0 & 0xFF); }
60  inline int getAcceptTimeTTS() const { return ((dcch0 >> 8) & 0x0000000F); }
61  inline int getByte1Zeroes() const { return ((dcch0 >> 12) & 0x00000003); }
62  inline int getHTRStatusBits() const { return ((dcch0 >> 14) & 0x00007FFF); }
63  inline int getByte3Zeroes() const { return ((dcch0 >> 29) & 0x00000007); }
64  inline int getDCCStatus() const { return (dcch1 & 0x000003FF); }
65  inline int getByte567Zeroes() const { return (dcch1 & 0xFF00FC00); }
66 
68  inline bool getSpigotErrorFlag(int nspigot) const { return ((dcch0 >> (14 + nspigot)) & 0x0001); }
69 
71  inline bool SawTTS_OFW() const { return ((getDCCStatus() >> 0) & 0x00000001); }
72  inline bool SawTTS_BSY() const { return ((getDCCStatus() >> 1) & 0x00000001); }
73  inline bool SawTTS_SYN() const { return ((getDCCStatus() >> 2) & 0x00000001); }
74  inline bool SawL1A_EvN_MxMx() const { return ((getDCCStatus() >> 3) & 0x00000001); }
75  inline bool SawL1A_BcN_MxMx() const { return ((getDCCStatus() >> 4) & 0x00000001); }
76  inline bool SawCT_EvN_MxMx() const { return ((getDCCStatus() >> 5) & 0x00000001); }
77  inline bool SawCT_BcN_MxMx() const { return ((getDCCStatus() >> 6) & 0x00000001); }
78  inline bool SawOrbitLengthErr() const { return ((getDCCStatus() >> 7) & 0x00000001); }
79  inline bool SawTTC_SingErr() const { return ((getDCCStatus() >> 8) & 0x00000001); }
80  inline bool SawTTC_DoubErr() const { return ((getDCCStatus() >> 9) & 0x00000001); }
81 
83  inline int getSpigotSummary(int nspigot) const { return spigotInfo[nspigot]; }
84 
89  int getSpigotData(int nspigot, HcalHTRData& decodeTool, int validSize) const;
90 
94  void getSpigotData(int nspigot, HcalHTRData& decodeTool) const;
95 
97  inline unsigned int getSpigotDataLength(int nspigot) const {
98  return (nspigot >= 15) ? (0) : (spigotInfo[nspigot] & 0x3ff);
99  }
100 
102  inline bool getSpigotEnabled(unsigned int nspigot) const {
103  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x8000);
104  }
106  inline bool getSpigotPresent(unsigned int nspigot) const {
107  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x4000);
108  }
110  inline bool getBxMismatchWithDCC(unsigned int nspigot) const {
111  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x2000);
112  }
114  inline bool getSpigotValid(unsigned int nspigot) const {
115  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x1000);
116  }
118  inline bool getSpigotDataTruncated(unsigned int nspigot) const {
119  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x0800);
120  }
122  inline bool getSpigotCRCError(unsigned int nspigot) const {
123  return (nspigot >= 15) ? (false) : (spigotInfo[nspigot] & 0x0400);
124  }
126  inline unsigned char getSpigotErrorBits(unsigned int nspigot) const {
127  return (nspigot >= 15) ? (0) : ((unsigned char)(spigotInfo[nspigot] >> 24));
128  }
130  inline unsigned char getLRBErrorBits(unsigned int nspigot) const {
131  return (nspigot >= 15) ? (0) : ((unsigned char)(spigotInfo[nspigot] >> 16));
132  }
133 
134  /* (for packing only) */
141  void copySpigotData(unsigned int spigot_id,
142  const HcalHTRData& data,
143  bool valid = true,
144  unsigned char LRB_error_word = 0);
145 
147  void clear();
149  void setHeader(int sourceid, int bcn, int l1aN, int orbN);
150 
151 private:
152  // CURRENTLY VALID FOR LITTLE-ENDIAN (LINUX/x86) ONLY
157  uint32_t dcch0;
158  uint32_t dcch1;
159  uint32_t spigotInfo[18]; //The last three of these 32bit words should always be zero!
160 };
161 
162 std::ostream& operator<<(std::ostream&, const HcalDCCHeader& head);
163 
164 #endif
int getSpigotSummary(int nspigot) const
Definition: HcalDCCHeader.h:83
int getDCCStatus() const
Definition: HcalDCCHeader.h:64
unsigned int getSlink64ReservedBits() const
Definition: HcalDCCHeader.h:48
unsigned char getSpigotErrorBits(unsigned int nspigot) const
Access the HTR error bits (decoding tbd)
unsigned int getSpigotDataLength(int nspigot) const
Definition: HcalDCCHeader.h:97
uint32_t spigotInfo[18]
int getAcceptTimeTTS() const
Definition: HcalDCCHeader.h:60
bool SawTTS_SYN() const
Definition: HcalDCCHeader.h:73
bool getSpigotCRCError(unsigned int nspigot) const
Read the "CRC-Mismatch" bit for this spigot.
int getByte567Zeroes() const
Definition: HcalDCCHeader.h:65
bool SawL1A_BcN_MxMx() const
Definition: HcalDCCHeader.h:75
HcalCalibrationEventType getCalibType() const
Definition: HcalDCCHeader.h:54
bool SawTTC_DoubErr() const
Definition: HcalDCCHeader.h:80
std::ostream & operator<<(std::ostream &, const HcalDCCHeader &head)
HcalCalibrationEventType
uint32_t dcch0
int getByte1Zeroes() const
Definition: HcalDCCHeader.h:61
bool thereIsAThirdCDFHeaderWord() const
Definition: HcalDCCHeader.h:44
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
unsigned char getLRBErrorBits(unsigned int nspigot) const
Access the Link Receiver Board error bits (decoding tbd)
unsigned int getTotalLengthBytes() const
int getHTRStatusBits() const
Definition: HcalDCCHeader.h:62
bool isCalibType() const
Definition: HcalDCCHeader.h:53
unsigned int getOrbitNumber() const
Definition: HcalDCCHeader.h:46
int getBunchId() const
Definition: HcalDCCHeader.h:34
bool SawCT_BcN_MxMx() const
Definition: HcalDCCHeader.h:77
void copySpigotData(unsigned int spigot_id, const HcalHTRData &data, bool valid=true, unsigned char LRB_error_word=0)
Add the given HcalHTRData as the given spigot&#39;s data. This should be done in increasing spigot order!...
uint32_t commondataformat0
bool getBxMismatchWithDCC(unsigned int nspigot) const
Read the "BxID FAILS TO MATCH WITH DCC" bit for this spigot.
uint32_t commondataformat3
void setHeader(int sourceid, int bcn, int l1aN, int orbN)
bool SawCT_EvN_MxMx() const
Definition: HcalDCCHeader.h:76
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
bool SawTTS_OFW() const
Definition: HcalDCCHeader.h:71
unsigned short getCDFEventType() const
Definition: HcalDCCHeader.h:38
uint32_t dcch1
bool getSpigotEnabled(unsigned int nspigot) const
Read the "ENABLED" bit for this spigot.
int getSourceId() const
Definition: HcalDCCHeader.h:32
int getByte3Zeroes() const
Definition: HcalDCCHeader.h:63
bool getSpigotErrorFlag(int nspigot) const
Definition: HcalDCCHeader.h:68
bool SawTTC_SingErr() const
Definition: HcalDCCHeader.h:79
uint32_t commondataformat2
short BOEshouldBeZeroAlways() const
Definition: HcalDCCHeader.h:50
bool getSpigotValid(unsigned int nspigot) const
Read the "VALID" bit for this spigot; TTC EvN matched HTR EvN.
bool SawOrbitLengthErr() const
Definition: HcalDCCHeader.h:78
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
bool SawL1A_EvN_MxMx() const
Definition: HcalDCCHeader.h:74
uint32_t commondataformat1
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
bool getSpigotDataTruncated(unsigned int nspigot) const
Read the "TRUNCATED" bit for this spigot; LRB truncated data (took too long)
short getCDFversionNumber() const
Definition: HcalDCCHeader.h:30
short getDCCDataFormatVersion() const
Definition: HcalDCCHeader.h:59
unsigned short BOEshouldBe5Always() const
Definition: HcalDCCHeader.h:40
bool thereIsASecondCDFHeaderWord() const
Definition: HcalDCCHeader.h:28
unsigned long getDCCEventNumber() const
Definition: HcalDCCHeader.h:36
bool SawTTS_BSY() const
Definition: HcalDCCHeader.h:72