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 
57  inline short getDCCDataFormatVersion() const { return (dcch0 & 0xFF); }
58  inline int getAcceptTimeTTS() const { return ((dcch0>>8)& 0x0000000F); }
59  inline int getByte1Zeroes() const { return ((dcch0>>12)& 0x00000003); }
60  inline int getHTRStatusBits () const { return ((dcch0>>14)& 0x00007FFF); }
61  inline int getByte3Zeroes() const { return ((dcch0>>29)& 0x00000007); }
62  inline int getDCCStatus() const {return (dcch1 & 0x000003FF);}
63  inline int getByte567Zeroes() const { return (dcch1 & 0xFF00FC00); }
64 
66  inline bool getSpigotErrorFlag(int nspigot) const {
67  return (( dcch0>>(14+nspigot) )&0x0001); }
68 
70  inline bool SawTTS_OFW() const { return ((getDCCStatus()>>0) & 0x00000001);}
71  inline bool SawTTS_BSY() const { return ((getDCCStatus()>>1) & 0x00000001);}
72  inline bool SawTTS_SYN() const { return ((getDCCStatus()>>2) & 0x00000001);}
73  inline bool SawL1A_EvN_MxMx() const { return ((getDCCStatus()>>3) & 0x00000001);}
74  inline bool SawL1A_BcN_MxMx() const { return ((getDCCStatus()>>4) & 0x00000001);}
75  inline bool SawCT_EvN_MxMx() const { return ((getDCCStatus()>>5) & 0x00000001);}
76  inline bool SawCT_BcN_MxMx() const { return ((getDCCStatus()>>6) & 0x00000001);}
77  inline bool SawOrbitLengthErr() const { return ((getDCCStatus()>>7) & 0x00000001);}
78  inline bool SawTTC_SingErr() const { return ((getDCCStatus()>>8) & 0x00000001);}
79  inline bool SawTTC_DoubErr() const { return ((getDCCStatus()>>9) & 0x00000001);}
80 
82  inline int getSpigotSummary(int nspigot) const { return spigotInfo[nspigot]; }
83 
88  int getSpigotData(int nspigot, HcalHTRData& decodeTool, int validSize) const;
89 
93  void getSpigotData(int nspigot, HcalHTRData& decodeTool) const;
94 
96  inline unsigned int getSpigotDataLength(int nspigot) const { return (nspigot>=15)?(0):(spigotInfo[nspigot]&0x3ff); }
97 
99  inline bool getSpigotEnabled(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x8000); }
101  inline bool getSpigotPresent(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x4000); }
103  inline bool getBxMismatchWithDCC(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x2000); }
105  inline bool getSpigotValid(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x1000); }
107  inline bool getSpigotDataTruncated(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x0800); }
109  inline bool getSpigotCRCError(unsigned int nspigot) const { return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x0400); }
111  inline unsigned char getSpigotErrorBits(unsigned int nspigot) const { return (nspigot>=15)?(0):((unsigned char)(spigotInfo[nspigot]>>24)); }
113  inline unsigned char getLRBErrorBits(unsigned int nspigot) const { return (nspigot>=15)?(0):((unsigned char)(spigotInfo[nspigot]>>16)); }
114 
115  /* (for packing only) */
122  void copySpigotData(unsigned int spigot_id, const HcalHTRData& data, bool valid=true, unsigned char LRB_error_word=0);
123 
125  void clear();
127  void setHeader(int sourceid, int bcn, int l1aN, int orbN);
128 
129  private:
130  // CURRENTLY VALID FOR LITTLE-ENDIAN (LINUX/x86) ONLY
135  uint32_t dcch0;
136  uint32_t dcch1;
137  uint32_t spigotInfo[18]; //The last three of these 32bit words should always be zero!
138 
139 };
140 
141 std::ostream& operator<<(std::ostream&, const HcalDCCHeader& head);
142 
143 #endif
int getSpigotSummary(int nspigot) const
Definition: HcalDCCHeader.h:82
int getDCCStatus() const
Definition: HcalDCCHeader.h:62
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:96
uint32_t spigotInfo[18]
int getAcceptTimeTTS() const
Definition: HcalDCCHeader.h:58
bool SawTTS_SYN() const
Definition: HcalDCCHeader.h:72
bool getSpigotCRCError(unsigned int nspigot) const
Read the "CRC-Mismatch" bit for this spigot.
int getByte567Zeroes() const
Definition: HcalDCCHeader.h:63
bool SawL1A_BcN_MxMx() const
Definition: HcalDCCHeader.h:74
HcalCalibrationEventType getCalibType() const
Definition: HcalDCCHeader.h:54
bool SawTTC_DoubErr() const
Definition: HcalDCCHeader.h:79
std::ostream & operator<<(std::ostream &, const HcalDCCHeader &head)
HcalCalibrationEventType
uint32_t dcch0
int getByte1Zeroes() const
Definition: HcalDCCHeader.h:59
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:60
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:76
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:75
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
bool SawTTS_OFW() const
Definition: HcalDCCHeader.h:70
unsigned short getCDFEventType() const
Definition: HcalDCCHeader.h:38
uint32_t dcch1
bool getSpigotEnabled(unsigned int nspigot) const
Read the "ENABLED" bit for this spigot.
Definition: HcalDCCHeader.h:99
int getSourceId() const
Definition: HcalDCCHeader.h:32
int getByte3Zeroes() const
Definition: HcalDCCHeader.h:61
bool getSpigotErrorFlag(int nspigot) const
Definition: HcalDCCHeader.h:66
bool SawTTC_SingErr() const
Definition: HcalDCCHeader.h:78
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:77
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
bool SawL1A_EvN_MxMx() const
Definition: HcalDCCHeader.h:73
uint32_t commondataformat1
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
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:57
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:71