CMS 3D CMS Logo

CastorCTDCHeader.h
Go to the documentation of this file.
1 /* -*- C++ -*- */
2 #ifndef CastorCTDCHeader_H
3 #define CastorCTDCHeader_H
4 
5 #include <iostream>
6 class CastorCORData;
7 class CastorMergerData;
8 
18 public:
19  static const int SPIGOT_COUNT;
20 
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 (commondataformat2 >> 4); }
48  inline unsigned int getSlink64ReservedBits() const { return ((commondataformat3 >> 4) & 0x00FFFFFF); }
50  inline short BOEshouldBeZeroAlways() const { return ((commondataformat3 >> 28) & 0x0F); }
51 
53  inline short getDCCDataFormatVersion() const { return (ctdch0 & 0xFF); }
54  inline int getAcceptTimeTTS() const { return ((ctdch0 >> 8) & 0x0000000F); }
55  inline int getByte1Zeroes() const { return ((ctdch0 >> 12) & 0x00000003); }
56  inline int getHTRStatusBits() const { return ((ctdch0 >> 14) & 0x00007FFF); }
57  inline int getByte3Zeroes() const { return ((ctdch0 >> 29) & 0x00000007); }
58  inline int getDCCStatus() const { return (ctdch1 & 0x000003FF); }
59  inline int getByte567Zeroes() const { return (ctdch1 & 0xFF00FC00); }
60 
62  inline bool getSpigotErrorFlag(int nspigot) const { return ((ctdch0 >> (14 + nspigot)) & 0x0001); }
63 
65  inline bool SawTTS_OFW() const { return ((getDCCStatus() >> 0) & 0x00000001); }
66  inline bool SawTTS_BSY() const { return ((getDCCStatus() >> 1) & 0x00000001); }
67  inline bool SawTTS_SYN() const { return ((getDCCStatus() >> 2) & 0x00000001); }
68  inline bool SawL1A_EvN_MxMx() const { return ((getDCCStatus() >> 3) & 0x00000001); }
69  inline bool SawL1A_BcN_MxMx() const { return ((getDCCStatus() >> 4) & 0x00000001); }
70  inline bool SawCT_EvN_MxMx() const { return ((getDCCStatus() >> 5) & 0x00000001); }
71  inline bool SawCT_BcN_MxMx() const { return ((getDCCStatus() >> 6) & 0x00000001); }
72  inline bool SawOrbitLengthErr() const { return ((getDCCStatus() >> 7) & 0x00000001); }
73  inline bool SawTTC_SingErr() const { return ((getDCCStatus() >> 8) & 0x00000001); }
74  inline bool SawTTC_DoubErr() const { return ((getDCCStatus() >> 9) & 0x00000001); }
75 
77  inline int getSpigotSummary(int nspigot) const { return spigotInfo[nspigot]; }
78 
83  int getSpigotData(int nspigot, CastorCORData& decodeTool, int validSize) const;
84 
86  inline unsigned int getSpigotDataLength(int nspigot) const {
87  return (nspigot >= 3) ? (0) : (spigotInfo[nspigot] & 0x3ff);
88  }
89 
91  inline bool getSpigotEnabled(unsigned int nspigot) const {
92  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x8000);
93  }
95  inline bool getSpigotPresent(unsigned int nspigot) const {
96  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x4000);
97  }
99  inline bool getBxMismatchWithDCC(unsigned int nspigot) const {
100  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x2000);
101  }
103  inline bool getSpigotValid(unsigned int nspigot) const {
104  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x1000);
105  }
107  inline bool getSpigotDataTruncated(unsigned int nspigot) const {
108  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x0800);
109  }
111  inline bool getSpigotCRCError(unsigned int nspigot) const {
112  return (nspigot >= 3) ? (false) : (spigotInfo[nspigot] & 0x0400);
113  }
115  inline unsigned char getSpigotErrorBits(unsigned int nspigot) const {
116  return (nspigot >= 3) ? (0) : ((unsigned char)(spigotInfo[nspigot] >> 24));
117  }
119  inline unsigned char getLRBErrorBits(unsigned int nspigot) const {
120  return (nspigot >= 3) ? (0) : ((unsigned char)(spigotInfo[nspigot] >> 16));
121  }
122 
123  /* (for packing only) */
130  void copySpigotData(unsigned int spigot_id,
131  const CastorCORData& data,
132  bool valid = true,
133  unsigned char LRB_error_word = 0);
134 
135  void copyMergerData(const CastorMergerData& data, bool valid);
136 
138  void clear();
140  void setHeader(int sourceid, int bcn, int l1aN, int orbN);
141 
142 private:
143  // CURRENTLY VALID FOR LITTLE-ENDIAN (LINUX/x86) ONLY
144  unsigned int commondataformat0;
145  unsigned int commondataformat1;
146  unsigned int commondataformat2;
147  unsigned int commondataformat3;
148  unsigned int ctdch0;
149  unsigned int ctdch1;
150  unsigned int spigotInfo[4]; //The last of these 32bit words should be "end header pattern"
151 };
152 
153 std::ostream& operator<<(std::ostream&, const CastorCTDCHeader& head);
154 
155 #endif
CastorMergerData
Definition: CastorMergerData.h:14
CastorCTDCHeader
Definition: CastorCTDCHeader.h:17
CastorCTDCHeader::getOrbitNumber
unsigned int getOrbitNumber() const
Definition: CastorCTDCHeader.h:46
CastorCTDCHeader::getByte567Zeroes
int getByte567Zeroes() const
Definition: CastorCTDCHeader.h:59
CastorCTDCHeader::getSourceId
int getSourceId() const
Definition: CastorCTDCHeader.h:32
CastorCTDCHeader::SawTTS_OFW
bool SawTTS_OFW() const
Definition: CastorCTDCHeader.h:65
CastorCTDCHeader::clear
void clear()
Definition: CastorCTDCHeader.cc:37
CastorCTDCHeader::getCDFversionNumber
short getCDFversionNumber() const
Definition: CastorCTDCHeader.h:30
CastorCTDCHeader::commondataformat1
unsigned int commondataformat1
Definition: CastorCTDCHeader.h:145
CastorCTDCHeader::SawL1A_EvN_MxMx
bool SawL1A_EvN_MxMx() const
Definition: CastorCTDCHeader.h:68
CastorCTDCHeader::getSlink64ReservedBits
unsigned int getSlink64ReservedBits() const
Definition: CastorCTDCHeader.h:48
CastorCTDCHeader::getByte1Zeroes
int getByte1Zeroes() const
Definition: CastorCTDCHeader.h:55
CastorCTDCHeader::SawTTC_DoubErr
bool SawTTC_DoubErr() const
Definition: CastorCTDCHeader.h:74
CastorCTDCHeader::getHTRStatusBits
int getHTRStatusBits() const
Definition: CastorCTDCHeader.h:56
CastorCTDCHeader::getSpigotErrorFlag
bool getSpigotErrorFlag(int nspigot) const
Definition: CastorCTDCHeader.h:62
CastorCTDCHeader::SawL1A_BcN_MxMx
bool SawL1A_BcN_MxMx() const
Definition: CastorCTDCHeader.h:69
CastorCTDCHeader::SawCT_BcN_MxMx
bool SawCT_BcN_MxMx() const
Definition: CastorCTDCHeader.h:71
CastorCTDCHeader::thereIsASecondCDFHeaderWord
bool thereIsASecondCDFHeaderWord() const
Definition: CastorCTDCHeader.h:28
CastorCTDCHeader::CastorCTDCHeader
CastorCTDCHeader()
Definition: CastorCTDCHeader.cc:13
CastorCTDCHeader::thereIsAThirdCDFHeaderWord
bool thereIsAThirdCDFHeaderWord() const
Definition: CastorCTDCHeader.h:44
CastorCTDCHeader::getBxMismatchWithDCC
bool getBxMismatchWithDCC(unsigned int nspigot) const
Read the "BxID FAILS TO MATCH WITH DCC" bit for this spigot.
Definition: CastorCTDCHeader.h:99
CastorCTDCHeader::getDCCStatus
int getDCCStatus() const
Definition: CastorCTDCHeader.h:58
CastorCTDCHeader::getSpigotEnabled
bool getSpigotEnabled(unsigned int nspigot) const
Read the "ENABLED" bit for this spigot.
Definition: CastorCTDCHeader.h:91
CastorCTDCHeader::getSpigotDataTruncated
bool getSpigotDataTruncated(unsigned int nspigot) const
Read the "TRUNCATED" bit for this spigot; LRB truncated data (took too long)
Definition: CastorCTDCHeader.h:107
CastorCORData
Definition: CastorCORData.h:14
CastorCTDCHeader::commondataformat0
unsigned int commondataformat0
Definition: CastorCTDCHeader.h:144
CastorCTDCHeader::getSpigotValid
bool getSpigotValid(unsigned int nspigot) const
Read the "VALID" bit for this spigot; TTC EvN matched HTR EvN.
Definition: CastorCTDCHeader.h:103
CastorCTDCHeader::getSpigotPresent
bool getSpigotPresent(unsigned int nspigot) const
Read the "PRESENT" bit for this spigot.
Definition: CastorCTDCHeader.h:95
CastorCTDCHeader::getBunchId
int getBunchId() const
Definition: CastorCTDCHeader.h:34
CastorCTDCHeader::SawTTS_BSY
bool SawTTS_BSY() const
Definition: CastorCTDCHeader.h:66
CastorCTDCHeader::ctdch1
unsigned int ctdch1
Definition: CastorCTDCHeader.h:149
CastorCTDCHeader::SawOrbitLengthErr
bool SawOrbitLengthErr() const
Definition: CastorCTDCHeader.h:72
CastorCTDCHeader::SawTTS_SYN
bool SawTTS_SYN() const
Definition: CastorCTDCHeader.h:67
CastorCTDCHeader::SPIGOT_COUNT
static const int SPIGOT_COUNT
Definition: CastorCTDCHeader.h:19
CastorCTDCHeader::getDCCEventNumber
unsigned long getDCCEventNumber() const
Definition: CastorCTDCHeader.h:36
CastorCTDCHeader::SawCT_EvN_MxMx
bool SawCT_EvN_MxMx() const
Definition: CastorCTDCHeader.h:70
CastorCTDCHeader::SawTTC_SingErr
bool SawTTC_SingErr() const
Definition: CastorCTDCHeader.h:73
CastorCTDCHeader::getLRBErrorBits
unsigned char getLRBErrorBits(unsigned int nspigot) const
Access the Link Receiver Board error bits (decoding tbd)
Definition: CastorCTDCHeader.h:119
operator<<
std::ostream & operator<<(std::ostream &, const CastorCTDCHeader &head)
Definition: CastorCTDCHeader.cc:108
CastorCTDCHeader::getDCCDataFormatVersion
short getDCCDataFormatVersion() const
Definition: CastorCTDCHeader.h:53
CastorCTDCHeader::commondataformat3
unsigned int commondataformat3
Definition: CastorCTDCHeader.h:147
CastorCTDCHeader::BOEshouldBeZeroAlways
short BOEshouldBeZeroAlways() const
Definition: CastorCTDCHeader.h:50
CastorCTDCHeader::getSpigotSummary
int getSpigotSummary(int nspigot) const
Definition: CastorCTDCHeader.h:77
CastorCTDCHeader::copyMergerData
void copyMergerData(const CastorMergerData &data, bool valid)
Definition: CastorCTDCHeader.cc:83
CastorCTDCHeader::getSpigotCRCError
bool getSpigotCRCError(unsigned int nspigot) const
Read the "CRC-Mismatch" bit for this spigot.
Definition: CastorCTDCHeader.h:111
CastorCTDCHeader::setHeader
void setHeader(int sourceid, int bcn, int l1aN, int orbN)
Definition: CastorCTDCHeader.cc:49
CastorCTDCHeader::ctdch0
unsigned int ctdch0
Definition: CastorCTDCHeader.h:148
CastorCTDCHeader::getSpigotData
int getSpigotData(int nspigot, CastorCORData &decodeTool, int validSize) const
Definition: CastorCTDCHeader.cc:22
CastorCTDCHeader::spigotInfo
unsigned int spigotInfo[4]
Definition: CastorCTDCHeader.h:150
CastorCTDCHeader::getCDFEventType
unsigned short getCDFEventType() const
Definition: CastorCTDCHeader.h:38
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
CastorCTDCHeader::getSpigotErrorBits
unsigned char getSpigotErrorBits(unsigned int nspigot) const
Access the HTR error bits (decoding tbd)
Definition: CastorCTDCHeader.h:115
CastorCTDCHeader::getAcceptTimeTTS
int getAcceptTimeTTS() const
Definition: CastorCTDCHeader.h:54
CastorCTDCHeader::BOEshouldBe5Always
unsigned short BOEshouldBe5Always() const
Definition: CastorCTDCHeader.h:40
CastorCTDCHeader::getSpigotDataLength
unsigned int getSpigotDataLength(int nspigot) const
Definition: CastorCTDCHeader.h:86
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
CastorCTDCHeader::copySpigotData
void copySpigotData(unsigned int spigot_id, const CastorCORData &data, bool valid=true, unsigned char LRB_error_word=0)
Add the given CastorCORData as the given spigot's data. This should be done in increasing spigot orde...
Definition: CastorCTDCHeader.cc:54
CastorCTDCHeader::commondataformat2
unsigned int commondataformat2
Definition: CastorCTDCHeader.h:146
CastorCTDCHeader::getByte3Zeroes
int getByte3Zeroes() const
Definition: CastorCTDCHeader.h:57
CastorCTDCHeader::getTotalLengthBytes
unsigned int getTotalLengthBytes() const
Definition: CastorCTDCHeader.cc:15