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
HcalDCCHeader::isCalibType
bool isCalibType() const
Definition: HcalDCCHeader.h:53
HcalDCCHeader::clear
void clear()
Definition: HcalDCCHeader.cc:42
HcalDCCHeader::getBunchId
int getBunchId() const
Definition: HcalDCCHeader.h:34
HcalDCCHeader::commondataformat1
uint32_t commondataformat1
Definition: HcalDCCHeader.h:154
HcalCalibrationEventTypes.h
HcalDCCHeader::commondataformat0
uint32_t commondataformat0
Definition: HcalDCCHeader.h:153
HcalDCCHeader::getDCCDataFormatVersion
short getDCCDataFormatVersion() const
Definition: HcalDCCHeader.h:59
HcalDCCHeader::getBxMismatchWithDCC
bool getBxMismatchWithDCC(unsigned int nspigot) const
Read the "BxID FAILS TO MATCH WITH DCC" bit for this spigot.
Definition: HcalDCCHeader.h:110
HcalDCCHeader::getLRBErrorBits
unsigned char getLRBErrorBits(unsigned int nspigot) const
Access the Link Receiver Board error bits (decoding tbd)
Definition: HcalDCCHeader.h:130
HcalDCCHeader::SawTTC_DoubErr
bool SawTTC_DoubErr() const
Definition: HcalDCCHeader.h:80
HcalDCCHeader::commondataformat3
uint32_t commondataformat3
Definition: HcalDCCHeader.h:156
HcalDCCHeader::SawCT_BcN_MxMx
bool SawCT_BcN_MxMx() const
Definition: HcalDCCHeader.h:77
HcalDCCHeader::getHTRStatusBits
int getHTRStatusBits() const
Definition: HcalDCCHeader.h:62
HcalDCCHeader::getByte567Zeroes
int getByte567Zeroes() const
Definition: HcalDCCHeader.h:65
HcalDCCHeader::getDCCEventNumber
unsigned long getDCCEventNumber() const
Definition: HcalDCCHeader.h:36
HcalDCCHeader::getSpigotErrorBits
unsigned char getSpigotErrorBits(unsigned int nspigot) const
Access the HTR error bits (decoding tbd)
Definition: HcalDCCHeader.h:126
HcalDCCHeader::getSpigotDataLength
unsigned int getSpigotDataLength(int nspigot) const
Definition: HcalDCCHeader.h:97
HcalDCCHeader::SawL1A_EvN_MxMx
bool SawL1A_EvN_MxMx() const
Definition: HcalDCCHeader.h:74
HcalDCCHeader::SawL1A_BcN_MxMx
bool SawL1A_BcN_MxMx() const
Definition: HcalDCCHeader.h:75
HcalDCCHeader::getSpigotEnabled
bool getSpigotEnabled(unsigned int nspigot) const
Read the "ENABLED" bit for this spigot.
Definition: HcalDCCHeader.h:102
HcalDCCHeader::SPIGOT_COUNT
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
HcalDCCHeader::getSourceId
int getSourceId() const
Definition: HcalDCCHeader.h:32
HcalDCCHeader::getDCCStatus
int getDCCStatus() const
Definition: HcalDCCHeader.h:64
HcalDCCHeader::getSpigotCRCError
bool getSpigotCRCError(unsigned int nspigot) const
Read the "CRC-Mismatch" bit for this spigot.
Definition: HcalDCCHeader.h:122
HcalDCCHeader::getAcceptTimeTTS
int getAcceptTimeTTS() const
Definition: HcalDCCHeader.h:60
HcalDCCHeader::setHeader
void setHeader(int sourceid, int bcn, int l1aN, int orbN)
Definition: HcalDCCHeader.cc:53
HcalDCCHeader::getCalibType
HcalCalibrationEventType getCalibType() const
Definition: HcalDCCHeader.h:54
operator<<
std::ostream & operator<<(std::ostream &, const HcalDCCHeader &head)
Definition: HcalDCCHeader.cc:89
HcalCalibrationEventType
HcalCalibrationEventType
Definition: HcalCalibrationEventTypes.h:4
HcalDCCHeader::spigotInfo
uint32_t spigotInfo[18]
Definition: HcalDCCHeader.h:159
HcalDCCHeader::BOEshouldBeZeroAlways
short BOEshouldBeZeroAlways() const
Definition: HcalDCCHeader.h:50
HcalDCCHeader::thereIsAThirdCDFHeaderWord
bool thereIsAThirdCDFHeaderWord() const
Definition: HcalDCCHeader.h:44
HcalDCCHeader::getSpigotDataTruncated
bool getSpigotDataTruncated(unsigned int nspigot) const
Read the "TRUNCATED" bit for this spigot; LRB truncated data (took too long)
Definition: HcalDCCHeader.h:118
HcalDCCHeader::getOrbitNumber
unsigned int getOrbitNumber() const
Definition: HcalDCCHeader.h:46
HcalDCCHeader::BOEshouldBe5Always
unsigned short BOEshouldBe5Always() const
Definition: HcalDCCHeader.h:40
HcalDCCHeader::getSpigotSummary
int getSpigotSummary(int nspigot) const
Definition: HcalDCCHeader.h:83
HcalDCCHeader::getSlink64ReservedBits
unsigned int getSlink64ReservedBits() const
Definition: HcalDCCHeader.h:48
HcalDCCHeader::SawTTS_OFW
bool SawTTS_OFW() const
Definition: HcalDCCHeader.h:71
HcalDCCHeader::HcalDCCHeader
HcalDCCHeader()
Definition: HcalDCCHeader.cc:12
HcalDCCHeader::dcch0
uint32_t dcch0
Definition: HcalDCCHeader.h:157
HcalDCCHeader::SawTTS_BSY
bool SawTTS_BSY() const
Definition: HcalDCCHeader.h:72
HcalDCCHeader::commondataformat2
uint32_t commondataformat2
Definition: HcalDCCHeader.h:155
HcalDCCHeader::getCDFversionNumber
short getCDFversionNumber() const
Definition: HcalDCCHeader.h:30
HcalDCCHeader::SawCT_EvN_MxMx
bool SawCT_EvN_MxMx() const
Definition: HcalDCCHeader.h:76
HcalDCCHeader::getByte3Zeroes
int getByte3Zeroes() const
Definition: HcalDCCHeader.h:63
HcalDCCHeader::getSpigotPresent
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
Definition: HcalDCCHeader.h:106
HcalDCCHeader
Definition: HcalDCCHeader.h:17
HcalDCCHeader::getTotalLengthBytes
unsigned int getTotalLengthBytes() const
Definition: HcalDCCHeader.cc:14
HcalDCCHeader::getByte1Zeroes
int getByte1Zeroes() const
Definition: HcalDCCHeader.h:61
HcalDCCHeader::copySpigotData
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's data. This should be done in increasing spigot order!
Definition: HcalDCCHeader.cc:60
HcalDCCHeader::thereIsASecondCDFHeaderWord
bool thereIsASecondCDFHeaderWord() const
Definition: HcalDCCHeader.h:28
HcalDCCHeader::getSpigotErrorFlag
bool getSpigotErrorFlag(int nspigot) const
Definition: HcalDCCHeader.h:68
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
HcalDCCHeader::getSpigotValid
bool getSpigotValid(unsigned int nspigot) const
Read the "VALID" bit for this spigot; TTC EvN matched HTR EvN.
Definition: HcalDCCHeader.h:114
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
HcalDCCHeader::getCDFEventType
unsigned short getCDFEventType() const
Definition: HcalDCCHeader.h:38
HcalHTRData
Definition: HcalHTRData.h:16
HcalDCCHeader::SawTTS_SYN
bool SawTTS_SYN() const
Definition: HcalDCCHeader.h:73
HcalDCCHeader::dcch1
uint32_t dcch1
Definition: HcalDCCHeader.h:158
HcalDCCHeader::getSpigotData
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
Definition: HcalDCCHeader.cc:27
HcalDCCHeader::SawTTC_SingErr
bool SawTTC_SingErr() const
Definition: HcalDCCHeader.h:79
HcalDCCHeader::SawOrbitLengthErr
bool SawOrbitLengthErr() const
Definition: HcalDCCHeader.h:78