65 if((code&0x0000F000)>0)
67 if((0x00008000&code)>0)
68 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Critical Error, ** needs reset **";
69 if((0x00004000&code)>0)
70 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Single Error, bad event";
71 if((0x00002000&code)>0)
72 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Single Warning";
73 if((0x00001000&code)>0)
74 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Near Full Warning";
76 if((code&0x00000F00)>0)
78 if((0x00000800&code)>0)
79 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU 64-bit Alignment Error";
80 if((0x00000400&code)>0)
81 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Control DLL Error occured";
82 if((0x00000200&code)>0)
83 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DMB Error occurred";
84 if((0x00000100&code)>0)
85 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Lost In Event Error";
87 if((code&0x000000F0)>0)
89 if((0x00000080&code)>0)
90 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Lost In Data Error occurred";
91 if((0x00000040&code)>0)
92 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Timeout Error";
93 if((0x00000020&code)>0)
94 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" TMB or ALCT CRC Error";
95 if((0x00000010&code)>0)
96 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Multiple Transmit Errors";
98 if((code&0x0000000F)>0)
100 if((0x00000008&code)>0)
101 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Sync Lost or FIFO Full Error";
102 if((0x00000004&code)>0)
103 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Fiber/FIFO Connection Error";
104 if((0x00000002&code)>0)
105 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU L1A Match Error";
106 if((0x00000001&code)>0)
107 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DMB or CFEB CRC Error";
109 if((code&0xF0000000)>0)
112 if((0x80000000&code)>0)
113 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DMB LCT/DAV/Movlp Mismatch";
114 if((0x40000000&code)>0)
115 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU-CFEB L1 Mismatch";
116 if((0x20000000&code)>0)
117 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU saw no good DMB CRCs";
118 if((0x10000000&code)>0)
119 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU CFEB Count Error";
121 if((code&0x0F000000)>0)
123 if((0x08000000&code)>0)
124 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU FirstDat Error";
125 if((0x04000000&code)>0)
126 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU L1A-FIFO Full Error";
127 if((0x02000000&code)>0)
128 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Data Stuck in FIFO";
129 if((0x01000000&code)>0)
130 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU NoLiveFibers Error";
132 if((code&0x00F00000)>0)
134 if((0x00800000&code)>0)
135 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Spwd single-bit Warning";
136 if((0x00400000&code)>0)
137 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Input FPGA Error";
138 if((0x00200000&code)>0)
139 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DAQ Stop bit set";
140 if((0x00100000&code)>0)
141 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DAQ says Not Ready";
142 if((0x00300000&code)==0x00200000)
143 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU DAQ Applied Backpressure";
145 if((code&0x000F0000)>0)
147 if((0x00080000&code)>0)
148 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU TMB Error";
149 if((0x00040000&code)>0)
150 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU ALCT Error";
151 if((0x00020000&code)>0)
152 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Trigger Readout Wordcount Error";
153 if((0x00010000&code)>0)
154 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" DDU Trigger L1A Match Error";
162 uint16_t * inputBuf = buf;
163 uint16_t * inputBuf0 = buf;
165 if (
debug)
LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"CSCDDUEventData::unpack_data() is called";
167 for (
int i=0;
i<6;++
i)
169 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
i << std::hex << buf[4*
i+3] << buf[4*
i+2]
170 << buf[4*
i+1] << buf[4*
i];
171 std::cout <<
i <<
" " << std::hex << buf[4*
i+3] <<
" " << buf[4*
i+2] <<
" "
172 << buf[4*
i+1] <<
" " << buf[4*
i] << std::endl;
208 if (examiner!=
NULL) {
210 if (
debug)
LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"selective unpacking starting";
215 std::map<DDUIdType,std::map<CSCIdType,const uint16_t*> > ddus = examiner->
DMB_block();
216 std::map<DDUIdType,std::map<CSCIdType,const uint16_t*> >::iterator ddu_itr = ddus.find(dduID);
217 uint16_t* dduBlock = (uint16_t*)((examiner->
DDU_block())[dduID]);
218 uint32_t dduBufSize = (examiner->
DDU_size())[dduID];
220 if (ddu_itr != ddus.end() && dduBufSize!=0 && dduBlock==inputBuf) {
221 std::map<CSCIdType,const uint16_t*> &cscs = ddu_itr->second;
222 std::map<CSCIdType,const uint16_t*>::iterator csc_itr;
224 for (csc_itr=cscs.begin(); csc_itr != cscs.end(); ++csc_itr) {
225 short cscid = csc_itr->first;
229 uint16_t* pos = (uint16_t*)csc_itr->second;
235 LogTrace (
"CSCDDUEventData|CSCRawToDigi" )
236 <<
"skip unpacking of CSC " << cscid <<
" due format errors: 0x" << std::hex <<
errors << std::dec;
246 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"size of vector of cscData = " <<
theData.size();
259 <<
"+++ CSCDDUEventData warning: DDU Trailer errors = " << std::hex <<
errorstat <<
" +++ ";
265 <<
" Unpacking lost DDU trailer - check() failed and 8 8 ffff 8 was not found ";
270 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" Final errorstat " << std::hex <<
errorstat << std::dec ;
279 buf=inputBuf+dduBufSize;
284 while( (((buf[0]&0xf000) == 0x9000)||((buf[0]&0xf000) == 0xa000))
285 && (buf[3] != 0x8000)) {
287 if (
debug)
LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"unpack csc data loop started";
291 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"size of vector of cscData = " <<
theData.size();
296 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
"unpacking ddu trailer ";
297 LogTrace (
"CSCDDUEventData|CSCRawToDigi") << std::hex << buf[3]<<
" " << buf[2]
298 <<
" " << buf[1]<<
" " << buf[0];
310 <<
"+++ CSCDDUEventData warning: DDU Trailer errors = " << std::hex <<
errorstat <<
" +++ ";
316 <<
" Unpacking lost DDU trailer - check() failed and 8 8 ffff 8 was not found ";
321 LogTrace (
"CSCDDUEventData|CSCRawToDigi") <<
" Final errorstat " << std::hex <<
errorstat << std::dec ;
362 for(
unsigned int i = 0;
i <
theData.size(); ++
i)
void setEventInformation(int bxnum, int lvl1num)
CSCDDUEventData(const CSCDDUHeader &)
void unpack_data(unsigned short *buf, CSCDCCExaminer *examiner=NULL)
a good test routine would be to unpack data, then pack it again.
uint16_t theFormatVersion
CSCDDUHeader header() const
static unsigned sizeInWords()
CSCDDUHeader theDDUHeader
void setWordCount(unsigned wordcount)
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
unsigned errorstat() const
ExaminerStatusType errorsForChamber(CSCIdType chamber) const
std::map< DDUIdType, std::map< CSCIdType, const uint16_t * > > DMB_block(void) const
static unsigned int errMask
std::map< DDUIdType, uint32_t > DDU_size(void) const
std::map< DDUIdType, const uint16_t * > DDU_block(void) const
ExaminerMaskType getMask() const
void add(CSCEventData &, int dmbId, int dduInput, unsigned int format_version=2005)
for making events. Sets the bxnum and lvl1num inside the chamber event
std::vector< CSCEventData > theData
unsigned wordcount() const
boost::dynamic_bitset ushortToBitset(const unsigned int numberOfBits, unsigned short *buf)
this method takes numberOfBits bits from unsigned short * array and returns them in the bitset obj...
void decodeStatus() const
CSCDDUTrailer theDDUTrailer
const CSCDMBHeader * dmbHeader() const
the DAQ motherboard header. A good place for event and chamber info
static std::atomic< bool > debug
long unsigned int errorstat
trailer info
boost::dynamic_bitset pack()
Alex check this 16 or 64.