CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CSCDCCUnpacker.cc
Go to the documentation of this file.
2 
3 //Framework stuff
10 
11 //FEDRawData
14 
15 //Digi stuff
24 
46 
48 
64 
65 #include <iostream>
66 #include <sstream>
67 #include <string>
68 #include <iomanip>
69 #include <cstdio>
70 
72  numOfEvents(0)
73 {
74 
75  // Tracked
76  i_token = consumes<FEDRawDataCollection>( pset.getParameter<edm::InputTag>("InputObjects") );
77 
78  useExaminer = pset.getParameter<bool>("UseExaminer");
79  examinerMask = pset.getParameter<unsigned int>("ExaminerMask");
81  useSelectiveUnpacking = pset.getParameter<bool>("UseSelectiveUnpacking");
82  errorMask = pset.getParameter<unsigned int>("ErrorMask");
83  unpackStatusDigis = pset.getParameter<bool>("UnpackStatusDigis");
85  useFormatStatus = pset.getParameter<bool>("UseFormatStatus");
86 
87  // Untracked
88 
89  printEventNumber = pset.getUntrackedParameter<bool>("PrintEventNumber", true);
90  debug = pset.getUntrackedParameter<bool>("Debug", false);
91  instantiateDQM = pset.getUntrackedParameter<bool>("runDQM", false);
92 
94  visualFEDInspect = pset.getUntrackedParameter<bool>("VisualFEDInspect", false);
95  visualFEDShort = pset.getUntrackedParameter<bool>("VisualFEDShort", false);
96  formatedEventDump = pset.getUntrackedParameter<bool>("FormatedEventDump", false);
97 
99  SuppressZeroLCT = pset.getUntrackedParameter<bool>("SuppressZeroLCT", true);
100 
101 
102 
103  if (instantiateDQM)
104  {
106  }
107 
108  produces<CSCWireDigiCollection>("MuonCSCWireDigi");
109  produces<CSCStripDigiCollection>("MuonCSCStripDigi");
110  produces<CSCComparatorDigiCollection>("MuonCSCComparatorDigi");
111  produces<CSCALCTDigiCollection>("MuonCSCALCTDigi");
112  produces<CSCCLCTDigiCollection>("MuonCSCCLCTDigi");
113  produces<CSCRPCDigiCollection>("MuonCSCRPCDigi");
114  produces<CSCCorrelatedLCTDigiCollection>("MuonCSCCorrelatedLCTDigi");
115 
116  if (unpackStatusDigis)
117  {
118  produces<CSCCFEBStatusDigiCollection>("MuonCSCCFEBStatusDigi");
119  produces<CSCTMBStatusDigiCollection>("MuonCSCTMBStatusDigi");
120  produces<CSCDMBStatusDigiCollection>("MuonCSCDMBStatusDigi");
121  produces<CSCALCTStatusDigiCollection>("MuonCSCALCTStatusDigi");
122  produces<CSCDDUStatusDigiCollection>("MuonCSCDDUStatusDigi");
123  produces<CSCDCCStatusDigiCollection>("MuonCSCDCCStatusDigi");
124  }
125 
126  if (useFormatStatus)
127  {
128  produces<CSCDCCFormatStatusDigiCollection>("MuonCSCDCCFormatStatusDigi");
129  }
130  //CSCAnodeData::setDebug(debug);
132  CSCCLCTData::setDebug(debug);
133  CSCEventData::setDebug(debug);
134  CSCTMBData::setDebug(debug);
137  CSCTMBHeader::setDebug(debug);
138  CSCRPCData::setDebug(debug);
140 
141 }
142 
144 {
145  //fill destructor here
146 }
147 
148 
150 {
151 
153  // Do we really have to do this every event???
154  // ... Yes, because framework is more efficient than you are at caching :)
155  // (But if you want to actually DO something specific WHEN the mapping changes, check out ESWatcher)
157  c.get<CSCCrateMapRcd>().get(hcrate);
158  const CSCCrateMap* pcrate = hcrate.product();
159 
160 
162 
165  e.getByToken( i_token, rawdata);
166 
168  std::auto_ptr<CSCWireDigiCollection> wireProduct(new CSCWireDigiCollection);
169  std::auto_ptr<CSCStripDigiCollection> stripProduct(new CSCStripDigiCollection);
170  std::auto_ptr<CSCALCTDigiCollection> alctProduct(new CSCALCTDigiCollection);
171  std::auto_ptr<CSCCLCTDigiCollection> clctProduct(new CSCCLCTDigiCollection);
172  std::auto_ptr<CSCComparatorDigiCollection> comparatorProduct(new CSCComparatorDigiCollection);
173  std::auto_ptr<CSCRPCDigiCollection> rpcProduct(new CSCRPCDigiCollection);
174  std::auto_ptr<CSCCorrelatedLCTDigiCollection> corrlctProduct(new CSCCorrelatedLCTDigiCollection);
175  std::auto_ptr<CSCCFEBStatusDigiCollection> cfebStatusProduct(new CSCCFEBStatusDigiCollection);
176  std::auto_ptr<CSCDMBStatusDigiCollection> dmbStatusProduct(new CSCDMBStatusDigiCollection);
177  std::auto_ptr<CSCTMBStatusDigiCollection> tmbStatusProduct(new CSCTMBStatusDigiCollection);
178  std::auto_ptr<CSCDDUStatusDigiCollection> dduStatusProduct(new CSCDDUStatusDigiCollection);
179  std::auto_ptr<CSCDCCStatusDigiCollection> dccStatusProduct(new CSCDCCStatusDigiCollection);
180  std::auto_ptr<CSCALCTStatusDigiCollection> alctStatusProduct(new CSCALCTStatusDigiCollection);
181 
182  std::auto_ptr<CSCDCCFormatStatusDigiCollection> formatStatusProduct(new CSCDCCFormatStatusDigiCollection);
183 
184 
185  // If set selective unpacking mode
186  // hardcoded examiner mask below to check for DCC and DDU level errors will be used first
187  // then examinerMask for CSC level errors will be used during unpacking of each CSC block
188  unsigned long dccBinCheckMask = 0x06080016;
189 
190 
191  // For new CSC readout layout, which wont include DCCs need to loop over DDU FED IDs. DCC IDs are included for backward compatibility with old data
192  std::vector<unsigned int> cscFEDids;
193 
194  for (unsigned int id=FEDNumbering::MINCSCFEDID;
195  id<=FEDNumbering::MAXCSCFEDID; ++id) // loop over DCCs
196  {
197  cscFEDids.push_back(id);
198  }
199 
200  for (unsigned int id=FEDNumbering::MINCSCDDUFEDID;
201  id<=FEDNumbering::MAXCSCDDUFEDID; ++id) // loop over DDUs
202  {
203  cscFEDids.push_back(id);
204  }
205 
206  for (unsigned int i=0; i<cscFEDids.size(); i++) // loop over all CSC FEDs (DCCs and DDUs)
207  {
208  unsigned int id = cscFEDids[i];
209  bool isDDU_FED = ((id >= FEDNumbering::MINCSCDDUFEDID) && (id <= FEDNumbering::MAXCSCDDUFEDID))?true:false;
210 
211 
214 
216  const FEDRawData& fedData = rawdata->FEDData(id);
217  unsigned long length = fedData.size();
218 
219 
220  if (length>=32)
221  {
222  CSCDCCExaminer* examiner = NULL;
223  goodEvent = true;
224  if (useExaminer)
225  {
226  // CSCDCCExaminer examiner;
227  examiner = new CSCDCCExaminer();
228  if ( examinerMask&0x40000 ) examiner->crcCFEB(1);
229  if ( examinerMask&0x8000 ) examiner->crcTMB (1);
230  if ( examinerMask&0x0400 ) examiner->crcALCT(1);
231  examiner->setMask(examinerMask);
232 
234  if ( isDDU_FED )
235  {
236  if (examiner != NULL) examiner->modeDDU(true);
237  }
238 
239  const short unsigned int *data = (short unsigned int *)fedData.data();
240 
241  LogTrace("badData") << "Length: "<< length/2;
242  // Event data hex dump
243  /*
244  short unsigned * buf = (short unsigned int *)fedData.data();
245  std::cout <<std::endl<<length/2<<" words of data:"<<std::endl;
246  for (short unsigned int i=0;i<length/2;i++) {
247  printf("%04x %04x %04x %04x\n",buf[i+3],buf[i+2],buf[i+1],buf[i]);
248  i+=3;
249  }
250  */
251 
252  int res = examiner->check(data,long(fedData.size()/2));
253  if ( res < 0 )
254  {
255  goodEvent=false;
256  }
257  else
258  {
259  if (useSelectiveUnpacking) goodEvent=!(examiner->errors()&dccBinCheckMask);
260  else goodEvent=!(examiner->errors()&examinerMask);
261  }
262 
263  /*
264  std::cout << "FED" << id << " " << fedData.size() << " " << goodEvent << " "
265  << std::hex << examiner->errors() << std::dec << " " << status << std::endl;
266  */
267 
268  // Fill Format status digis per FED
269  // Remove examiner->errors() != 0 check if we need to put status digis for every event
270  if (useFormatStatus && (examiner->errors() !=0))
271  // formatStatusProduct->insertDigi(CSCDetId(1,1,1,1,1), CSCDCCFormatStatusDigi(id,examiner,dccBinCheckMask));
272  formatStatusProduct->insertDigi(CSCDetId(1,1,1,1,1),
273  CSCDCCFormatStatusDigi(id,dccBinCheckMask,
274  examiner->getMask(),
275  examiner->errors(),
276  examiner->errorsDetailedDDU(),
277  examiner->errorsDetailed(),
278  examiner->payloadDetailed(),
279  examiner->statusDetailed()));
280  }
281 
284  {
286  {
287  short unsigned * buf = (short unsigned int *)fedData.data();
288  visual_raw(length/2, id,(int)e.id().run(),(int)e.id().event(),
290  }
291  }
292 
293  if (goodEvent)
294  {
296 
297 
298  CSCDCCExaminer * ptrExaminer = examiner;
299  if (!useSelectiveUnpacking) ptrExaminer = NULL;
300 
301 
302 
303  std::vector<CSCDDUEventData> fed_Data;
304  std::vector<CSCDDUEventData>* ptr_fedData = &fed_Data;
305 
307  CSCDetId layer(1, 1, 1, 1, 1);
308 
309  if (isDDU_FED) // Use new DDU FED readout mode
310  {
311 
312  CSCDDUEventData single_dduData((short unsigned int *) fedData.data(), ptrExaminer);
313  fed_Data.push_back(single_dduData);
314 
315 
316  // if(instantiateDQM) monitor->process(examiner, &single_dduData);
317 
318 
319  }
320  else // Use old DCC FED readout mode
321  {
322 
323  CSCDCCEventData dccData((short unsigned int *) fedData.data(), ptrExaminer);
324 
325  //std::cout << " DCC Size [UNPK] " << dccData.sizeInWords() << std::endl;
326 
327  if (instantiateDQM) monitor->process(examiner, &dccData);
328 
330  // const std::vector<CSCDDUEventData> & dduData = dccData.dduData();
331  // ptr_fedData = &(dccData.dduData());
332  fed_Data = dccData.dduData();
333 
334 
335  if (unpackStatusDigis)
336  {
337 
339  short unsigned * bufForDcc = (short unsigned int *)fedData.data();
340 
341  //std::cout << "FED Length: " << std::dec << length/2 <<
342  //" Trailer 2: " << std::hex << bufForDcc[length/2-4] << std::endl;
343 
344  dccStatusProduct->insertDigi(layer, CSCDCCStatusDigi(dccData.dccHeader().data(),
345  dccData.dccTrailer().data(),
346  examiner->errors(),
347  bufForDcc[length/2-4]));
348 
349  }
350  }
351 
352  const std::vector<CSCDDUEventData> & dduData = *ptr_fedData;
353 
354 
355  for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) // loop over DDUs
356  {
357 
358 
361  if (dduData[iDDU].trailer().errorstat()&errorMask)
362  {
363  LogTrace("CSCDCCUnpacker|CSCRawToDigi") << "FED ID" << id << " DDU# " << iDDU << " has serious error - no digis unpacked! " <<
364  std::hex << dduData[iDDU].trailer().errorstat();
365  continue; // to next iteration of DDU loop
366  }
367 
368  if (unpackStatusDigis) dduStatusProduct->
369  insertDigi(layer, CSCDDUStatusDigi(dduData[iDDU].header().data(),
370  dduData[iDDU].trailer().data(),
372  dduData[iDDU].trailer0()));
373 
375  const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData();
376 
377  // if (cscData.size() != 0) std::cout << "FED" << id << " DDU Source ID: " << dduData[iDDU].header().source_id() << " firmware version: " << dduData[iDDU].header().format_version() << std::endl;
378 
379 
380  for (unsigned int iCSC=0; iCSC<cscData.size(); ++iCSC) // loop over CSCs
381  {
382 
384  int vmecrate = cscData[iCSC].dmbHeader()->crateID();
385  int dmb = cscData[iCSC].dmbHeader()->dmbID();
386 
387  int icfeb = 0;
388  int ilayer = 0;
389 
390  if (debug)
391  LogTrace ("CSCDCCUnpacker|CSCRawToDigi") << "crate = " << vmecrate << "; dmb = " << dmb;
392 
393 
394 
395  if ((vmecrate>=1)&&(vmecrate<=60) && (dmb>=1)&&(dmb<=10)&&(dmb!=6))
396  {
397  layer = pcrate->detId(vmecrate, dmb,icfeb,ilayer );
398  }
399  else
400  {
401  LogTrace ("CSCDCCUnpacker|CSCRawToDigi") << " detID input out of range!!! ";
402  LogTrace ("CSCDCCUnpacker|CSCRawToDigi")
403  << " skipping chamber vme= " << vmecrate << " dmb= " << dmb;
404  continue; // to next iteration of iCSC loop
405  }
406 
407 
408  // std::cout << "crate = " << vmecrate << "; dmb = " << dmb << " format version = " << cscData[iCSC].getFormatVersion() << std::endl;
409 
411  int nalct = cscData[iCSC].dmbHeader()->nalct();
412  bool goodALCT=false;
413  //if (nalct&&(cscData[iCSC].dataPresent>>6&0x1)==1) {
414  if (nalct&&cscData[iCSC].alctHeader())
415  {
416  if (cscData[iCSC].alctHeader()->check())
417  {
418  goodALCT=true;
419  }
420  else
421  {
422  LogTrace ("CSCDCCUnpacker|CSCRawToDigi") <<
423  "not storing ALCT digis; alct is bad or not present";
424  }
425  }
426  else
427  {
428  if (debug) LogTrace ("CSCDCCUnpacker|CSCRawToDigi") << "nALCT==0 !!!";
429  }
430 
432  if (goodALCT)
433  {
434  std::vector <CSCALCTDigi> alctDigis =
435  cscData[iCSC].alctHeader()->ALCTDigis();
436  if (SuppressZeroLCT)
437  {
438  std::vector<CSCALCTDigi> alctDigis_0;
439  for (int unsigned i=0; i<alctDigis.size(); ++i)
440  {
441  if (alctDigis[i].isValid())
442  alctDigis_0.push_back(alctDigis[i]);
443  }
444  alctProduct->move(std::make_pair(alctDigis_0.begin(), alctDigis_0.end()),layer);
445  }
446  else
447  alctProduct->move(std::make_pair(alctDigis.begin(), alctDigis.end()),layer);
448  }
449 
450 
452  int nclct = cscData[iCSC].dmbHeader()->nclct();
453  bool goodTMB=false;
454  // if (nclct&&(cscData[iCSC].dataPresent>>5&0x1)==1) {
455  if (nclct&&cscData[iCSC].tmbData())
456  {
457  if (cscData[iCSC].tmbHeader()->check())
458  {
459  if (cscData[iCSC].clctData()->check()) goodTMB=true;
460  }
461  else
462  {
463  LogTrace ("CSCDCCUnpacker|CSCRawToDigi") <<
464  "one of TMB checks failed! not storing TMB digis ";
465  }
466  }
467  else
468  {
469  if (debug) LogTrace ("CSCDCCUnpacker|CSCRawToDigi") << "nCLCT==0 !!!";
470  }
471 
473  if (goodTMB)
474  {
475  std::vector <CSCCorrelatedLCTDigi> correlatedlctDigis =
476  cscData[iCSC].tmbHeader()->CorrelatedLCTDigis(layer.rawId());
477  if (SuppressZeroLCT)
478  {
479  std::vector<CSCCorrelatedLCTDigi> correlatedlctDigis_0;
480  for (int unsigned i=0; i<correlatedlctDigis.size(); ++i)
481  {
482  if (correlatedlctDigis[i].isValid())
483  correlatedlctDigis_0.push_back(correlatedlctDigis[i]);
484  }
485  corrlctProduct->move(std::make_pair(correlatedlctDigis_0.begin(),
486  correlatedlctDigis_0.end()),layer);
487  }
488  else
489  corrlctProduct->move(std::make_pair(correlatedlctDigis.begin(),
490  correlatedlctDigis.end()),layer);
491 
492  std::vector <CSCCLCTDigi> clctDigis =
493  cscData[iCSC].tmbHeader()->CLCTDigis(layer.rawId());
494  if (SuppressZeroLCT)
495  {
496  std::vector<CSCCLCTDigi> clctDigis_0;
497  for (int unsigned i=0; i<clctDigis.size(); ++i)
498  {
499  if (clctDigis[i].isValid())
500  clctDigis_0.push_back(clctDigis[i]);
501  }
502  clctProduct->move(std::make_pair(clctDigis_0.begin(), clctDigis_0.end()),layer);
503  }
504  else
505  clctProduct->move(std::make_pair(clctDigis.begin(), clctDigis.end()),layer);
506 
508  if (cscData[iCSC].tmbData()->checkSize())
509  {
510  if (cscData[iCSC].tmbData()->hasRPC())
511  {
512  std::vector <CSCRPCDigi> rpcDigis =
513  cscData[iCSC].tmbData()->rpcData()->digis();
514  rpcProduct->move(std::make_pair(rpcDigis.begin(), rpcDigis.end()),layer);
515  }
516  }
517  else LogTrace("CSCDCCUnpacker|CSCRawToDigi") <<" TMBData check size failed!";
518  }
519 
520 
522  if (unpackStatusDigis)
523  {
524  for ( icfeb = 0; icfeb < 7; ++icfeb )
525  {
526  if ( cscData[iCSC].cfebData(icfeb) != NULL )
527  cfebStatusProduct->
528  insertDigi(layer, cscData[iCSC].cfebData(icfeb)->statusDigi());
529  }
531  dmbStatusProduct->insertDigi(layer, CSCDMBStatusDigi(cscData[iCSC].dmbHeader()->data(),
532  cscData[iCSC].dmbTrailer()->data()));
533  if (goodTMB) tmbStatusProduct->
534  insertDigi(layer, CSCTMBStatusDigi(cscData[iCSC].tmbHeader()->data(),
535  cscData[iCSC].tmbData()->tmbTrailer()->data()));
536  if (goodALCT) alctStatusProduct->
537  insertDigi(layer, CSCALCTStatusDigi(cscData[iCSC].alctHeader()->data(),
538  cscData[iCSC].alctTrailer()->data()));
539  }
540 
541 
543  for (int ilayer = 1; ilayer <= 6; ++ilayer)
544  {
546  // (You have to be kidding. Line 240 in whose universe?)
547 
548  // Allocate all ME1/1 wire digis to ring 1
549  layer = pcrate->detId( vmecrate, dmb, 0, ilayer );
550  {
551  std::vector <CSCWireDigi> wireDigis = cscData[iCSC].wireDigis(ilayer);
552  wireProduct->move(std::make_pair(wireDigis.begin(), wireDigis.end()),layer);
553  }
554 
555  for ( icfeb = 0; icfeb < 7; ++icfeb )
556  {
557  layer = pcrate->detId( vmecrate, dmb, icfeb,ilayer );
558  if (cscData[iCSC].cfebData(icfeb))
559  {
560  std::vector<CSCStripDigi> stripDigis;
561  cscData[iCSC].cfebData(icfeb)->digis(layer.rawId(),stripDigis);
562  stripProduct->move(std::make_pair(stripDigis.begin(),
563  stripDigis.end()),layer);
564  }
565  }
566 
567 
568  if (goodTMB && (cscData[iCSC].tmbHeader() != NULL))
569  {
570  int nCFEBs = cscData[iCSC].tmbHeader()->NCFEBs();
571  for ( icfeb = 0; icfeb < nCFEBs; ++icfeb )
572  {
573  layer = pcrate->detId( vmecrate, dmb, icfeb,ilayer );
574  std::vector <CSCComparatorDigi> comparatorDigis =
575  cscData[iCSC].clctData()->comparatorDigis(layer.rawId(), icfeb);
576  // Set cfeb=0, so that ME1/a and ME1/b comparators go to
577  // ring 1.
578  layer = pcrate->detId( vmecrate, dmb, 0, ilayer );
579  comparatorProduct->move(std::make_pair(comparatorDigis.begin(),
580  comparatorDigis.end()),layer);
581  }
582  } // end of loop over cfebs
583  } // end of loop over layers
584  } // end of loop over chambers
585  } // endof loop over DDUs
586  } // end of good event
587  else
588  {
589  LogTrace("CSCDCCUnpacker|CSCRawToDigi") <<
590  "ERROR! Examiner rejected FED #" << id;
591  if (examiner)
592  {
593  for (int i=0; i<examiner->nERRORS; ++i)
594  {
595  if (((examinerMask&examiner->errors())>>i)&0x1)
596  LogTrace("CSCDCCUnpacker|CSCRawToDigi")<<examiner->errName(i);
597  }
598  if (debug)
599  {
600  LogTrace("CSCDCCUnpacker|CSCRawToDigi")
601  << " Examiner errors:0x" << std::hex << examiner->errors()
602  << " & 0x" << examinerMask
603  << " = " << (examiner->errors()&examinerMask);
604  }
605  }
606 
607  // dccStatusProduct->insertDigi(CSCDetId(1,1,1,1,1), CSCDCCStatusDigi(examiner->errors()));
608  // if(instantiateDQM) monitor->process(examiner, NULL);
609  }
610  if (examiner!=NULL) delete examiner;
611  } // end of if fed has data
612  } // end of loop over DCCs
613  // put into the event
614  e.put(wireProduct, "MuonCSCWireDigi");
615  e.put(stripProduct, "MuonCSCStripDigi");
616  e.put(alctProduct, "MuonCSCALCTDigi");
617  e.put(clctProduct, "MuonCSCCLCTDigi");
618  e.put(comparatorProduct, "MuonCSCComparatorDigi");
619  e.put(rpcProduct, "MuonCSCRPCDigi");
620  e.put(corrlctProduct, "MuonCSCCorrelatedLCTDigi");
621 
622  if (useFormatStatus) e.put(formatStatusProduct, "MuonCSCDCCFormatStatusDigi");
623 
624  if (unpackStatusDigis)
625  {
626  e.put(cfebStatusProduct, "MuonCSCCFEBStatusDigi");
627  e.put(dmbStatusProduct, "MuonCSCDMBStatusDigi");
628  e.put(tmbStatusProduct, "MuonCSCTMBStatusDigi");
629  e.put(dduStatusProduct, "MuonCSCDDUStatusDigi");
630  e.put(dccStatusProduct, "MuonCSCDCCStatusDigi");
631  e.put(alctStatusProduct, "MuonCSCALCTStatusDigi");
632  }
633  if (printEventNumber) LogTrace("CSCDCCUnpacker|CSCRawToDigi")
634  <<"[CSCDCCUnpacker]: " << numOfEvents << " events processed ";
635 }
636 
637 
639 
640 void CSCDCCUnpacker::visual_raw(int hl,int id, int run, int event,bool fedshort,
641  bool fDump, short unsigned int *buf) const
642 {
643 
644  std::cout << std::endl << std::endl << std::endl;
645  std::cout << "Run: "<< run << " Event: " << event << std::endl;
646  std::cout << std::endl << std::endl;
647  if (formatedEventDump)
648  std::cout << "FED-" << id << " " << "(scroll down to see summary)" << std::endl;
649  else
650  std::cout << "Problem seems in FED-" << id << " " << "(scroll down to see summary)" << std::endl;
651  std::cout <<"********************************************************************************" << std::endl;
652  std::cout << hl <<" words of data:" << std::endl;
653 
654  //================================================
655  // FED codes in DCC
656  std::vector<int> dcc_id;
657  int dcc_h1_id=0;
658  // Current codes
659  for (int i=750; i<758; i++)
660  dcc_id.push_back(i);
661  // Codes for upgrade
662  for (int i=830; i<838; i++)
663  dcc_id.push_back(i);
664 
665  char dcc_common[]="DCC-";
666 
667  //================================================
668  // DDU codes per FED
669  std::vector<int> ddu_id;
670  int ddu_h1_12_13=0;
671  for (int i=1; i<37; i++)
672  ddu_id.push_back(i);
673  // For DDU Headers and tarailers
674  char ddu_common[]="DDU-";
675  char ddu_header1[]="Header 1";
676  char ddu_header2[]="Header 2";
677  char ddu_header3[]="Header 3";
678  char ddu_trail1[]="Trailer 1", ddu_trail2[]="Trailer 2", ddu_trail3[]="Trailer 3";
679  // For Header 2
680  char ddu_trailer1_bit[]= {'8','0','0','0','f','f','f','f','8','0','0','0','8','0','0','0'};
681  char ddu_trailer3_bit[]= {'a'};
682  // Corrupted Trailers
683  char ddu_tr1_err_common[]="Incomplet";
684  //====================================================
685 
686  //DMB
687  char dmb_common[]="DMB", dmb_header1[]="Header 1", dmb_header2[]="Header 2";
688  char dmb_common_crate[]="crate:", dmb_common_slot[]="slot:";
689  char dmb_common_l1a[]="L1A:";
690  char dmb_header1_bit[]= {'9','9','9','9'};
691  char dmb_header2_bit[]= {'a','a','a','a'};
692  char dmb_tr1[]="Trailer 1", dmb_tr2[]="Trailer 2";
693  char dmb_tr1_bit[]= {'f','f','f','f'}, dmb_tr2_bit[]= {'e','e','e','e'};
694 
695 
696  //=====================================================
697 
698  // ALCT
699  char alct_common[]="ALCT", alct_header1[]="Header 1", alct_header2[]="Header 2";
700  char alct_common_bxn[]="BXN:";
701  char alct_common_wcnt2[]="| Actual word count:";
702  char alct_common_wcnt1[]="Expected word count:";
703  char alct_header1_bit[]= {'d','d','d','d','b','0','a'};
704  char alct_header2_bit[]= {'0','0','0','0'};
705  char alct_tr1[]="Trailer 1";
706 
707  //======================================================
708 
709  //TMB
710  char tmb_common[]="TMB", tmb_header1[]="Header", tmb_tr1[]="Trailer";
711  char tmb_header1_bit[]= {'d','d','d','d','b','0','c'};
712  char tmb_tr1_bit[]= {'d','d','d','d','e','0','f'};
713 
714  //======================================================
715 
716  //CFEB
717  char cfeb_common[]="CFEB", cfeb_tr1[]="Trailer", cfeb_b[]="B-word";
718  char cfeb_common_sample[]="sample:";
719 
720  //======================================================
721 
722  //Auxiliary variables
723 
724  // Bufers
725  int word_lines=hl/4;
726  char tempbuf[80];
727  char tempbuf1[80];
728  char tempbuf_short[17];
729  char sign1[]=" --->| ";
730 
731  // Counters
732  int word_numbering=0;
733  int ddu_inst_i=0, ddu_inst_n=0, ddu_inst_l1a=0;
734  int ddu_inst_bxn=0;
735  int dmb_inst_crate=0, dmb_inst_slot=0, dmb_inst_l1a=0;
736  int cfeb_sample=0;
737  int alct_inst_l1a=0;
738  int alct_inst_bxn=0;
739  int alct_inst_wcnt1=0;
740  int alct_inst_wcnt2=0;
741  int alct_start=0;
742  int alct_stop=0;
743  int tmb_inst_l1a=0;
744  int tmb_inst_wcnt1=0;
745  int tmb_inst_wcnt2=0;
746  int tmb_start=0;
747  int tmb_stop=0;
748  int dcc_h1_check=0;
749 
750  //Flags
751  int ddu_h2_found=0; //DDU Header 2 found
752  int w=0;
753 
754  //Logic variables
755  const int sz1=5;
756  bool dcc_check=false;
757  bool ddu_h2_check[sz1]= {false};
758  bool ddu_h1_check=false;
759  bool dmb_h1_check[sz1]= {false};
760  bool dmb_h2_check[sz1]= {false};
761  bool ddu_h2_h1=false;
762  bool ddu_tr1_check[sz1]= {false};
763  bool alct_h1_check[sz1]= {false};
764  bool alct_h2_check[sz1]= {false};
765  bool alct_tr1_check[sz1]= {false};
766  bool dmb_tr1_check[sz1]= {false};
767  bool dmb_tr2_check[sz1]= {false};
768  bool tmb_h1_check[sz1]= {false};
769  bool tmb_tr1_check[sz1]= {false};
770  bool cfeb_tr1_check[sz1]= {false};
771  bool cfeb_b_check[sz1]= {false};
772  bool ddu_tr1_bad_check[sz1]= {false};
773  bool extraction=fedshort;
774 
775  //Summary vectors
776  //DDU
777  std::vector<int> ddu_h1_coll;
778  std::vector<int> ddu_h1_n_coll;
779  std::vector<int> ddu_h2_coll;
780  std::vector<int> ddu_h3_coll;
781  std::vector<int> ddu_t1_coll;
782  std::vector<int> ddu_t2_coll;
783  std::vector<int> ddu_t3_coll;
784  std::vector<int> ddu_l1a_coll;
785  std::vector<int> ddu_bxn_coll;
786  //DMB
787  std::vector<int> dmb_h1_coll;
788  std::vector<int> dmb_h2_coll;
789  std::vector<int> dmb_t1_coll;
790  std::vector<int> dmb_t2_coll;
791  std::vector<int> dmb_crate_coll;
792  std::vector<int> dmb_slot_coll;
793  std::vector<int> dmb_l1a_coll;
794  //ALCT
795  std::vector<int> alct_h1_coll;
796  std::vector<int> alct_h2_coll;
797  std::vector<int> alct_t1_coll;
798  std::vector<int> alct_l1a_coll;
799  std::vector<int> alct_bxn_coll;
800  std::vector<int> alct_wcnt1_coll;
801  std::vector<int> alct_wcnt2_coll;
802  std::vector<int> alct_wcnt2_id_coll;
803  //TMB
804  std::vector<int> tmb_h1_coll;
805  std::vector<int> tmb_t1_coll;
806  std::vector<int> tmb_l1a_coll;
807  std::vector<int> tmb_wcnt1_coll;
808  std::vector<int> tmb_wcnt2_coll;
809  //CFEB
810  std::vector<int> cfeb_t1_coll;
811 
812  //========================================================
813 
814  // DCC Header and Ttrailer information
815  char dcc_header1[]="DCC Header 1";
816  char dcc_header2[]="DCC Header 2";
817  char dcc_trail1[]="DCC Trailer 1", dcc_trail1_bit[]= {'e'};
818  char dcc_trail2[]="DCC Trailer 2", dcc_trail2_bit[]= {'a'};
819  //=========================================================
820 
821  for (int i=0; i < hl; i++)
822  {
823  ++word_numbering;
824  for (int j=-1; j<4; j++)
825  {
826 
827  sprintf(tempbuf_short,"%04x%04x%04x%04x",buf[i+4*(j-1)+3],buf[i+4*(j-1)+2],buf[i+4*(j-1)+1],buf[i+4*(j-1)]);
828 
829  // WARNING in 5_0_X for time being
830  ddu_h2_found++;
831  ddu_h2_found--;
832 
833  ddu_h2_check[j]=((buf[i+4*(j-1)+1]==0x8000)&&
834  (buf[i+4*(j-1)+2]==0x0001)&&(buf[i+4*(j-1)+3]==0x8000));
835 
836  ddu_tr1_check[j]=((tempbuf_short[0]==ddu_trailer1_bit[0])&&(tempbuf_short[1]==ddu_trailer1_bit[1])&&
837  (tempbuf_short[2]==ddu_trailer1_bit[2])&&(tempbuf_short[3]==ddu_trailer1_bit[3])&&
838  (tempbuf_short[4]==ddu_trailer1_bit[4])&&(tempbuf_short[5]==ddu_trailer1_bit[5])&&
839  (tempbuf_short[6]==ddu_trailer1_bit[6])&&(tempbuf_short[7]==ddu_trailer1_bit[7])&&
840  (tempbuf_short[8]==ddu_trailer1_bit[8])&&(tempbuf_short[9]==ddu_trailer1_bit[9])&&
841  (tempbuf_short[10]==ddu_trailer1_bit[10])&&(tempbuf_short[11]==ddu_trailer1_bit[11])&&
842  (tempbuf_short[12]==ddu_trailer1_bit[12])&&(tempbuf_short[13]==ddu_trailer1_bit[13])&&
843  (tempbuf_short[14]==ddu_trailer1_bit[14])&&(tempbuf_short[15]==ddu_trailer1_bit[15]));
844 
845  dmb_h1_check[j]=((tempbuf_short[0]==dmb_header1_bit[0])&&(tempbuf_short[4]==dmb_header1_bit[1])&&
846  (tempbuf_short[8]==dmb_header1_bit[2])&&(tempbuf_short[12]==dmb_header1_bit[3]));
847 
848  dmb_h2_check[j]=((tempbuf_short[0]==dmb_header2_bit[0])&&(tempbuf_short[4]==dmb_header2_bit[1])&&
849  (tempbuf_short[8]==dmb_header2_bit[2])&&(tempbuf_short[12]==dmb_header2_bit[3]));
850  alct_h1_check[j]=((tempbuf_short[0]==alct_header1_bit[0])&&(tempbuf_short[4]==alct_header1_bit[1])&&
851  (tempbuf_short[8]==alct_header1_bit[2])&&(tempbuf_short[12]==alct_header1_bit[3])&&
852  (tempbuf_short[13]==alct_header1_bit[4])&&(tempbuf_short[14]==alct_header1_bit[5])&&
853  (tempbuf_short[15]==alct_header1_bit[6]));
854  alct_h2_check[j]=(((tempbuf_short[0]==alct_header2_bit[0])&&(tempbuf_short[1]==alct_header2_bit[1])&&
855  (tempbuf_short[2]==alct_header2_bit[2])&&(tempbuf_short[3]==alct_header2_bit[3]))||
856  ((tempbuf_short[4]==alct_header2_bit[0])&&(tempbuf_short[5]==alct_header2_bit[1])&&
857  (tempbuf_short[6]==alct_header2_bit[2])&&(tempbuf_short[7]==alct_header2_bit[3]))||
858  ((tempbuf_short[8]==alct_header2_bit[0])&&(tempbuf_short[9]==alct_header2_bit[1])&&
859  (tempbuf_short[10]==alct_header2_bit[2])&&(tempbuf_short[11]==alct_header2_bit[3]))||
860  ((tempbuf_short[12]==alct_header2_bit[0])&&(tempbuf_short[13]==alct_header2_bit[1])&&
861  (tempbuf_short[14]==alct_header2_bit[2])&&(tempbuf_short[15]==alct_header2_bit[3]))
862  //(tempbuf_short[4]==alct_header2_bit[4])&&(tempbuf_short[5]==alct_header2_bit[5])
863  );
864  // ALCT Trailers
865  alct_tr1_check[j]=(((buf[i+4*(j-1)]&0xFFFF)==0xDE0D)&&((buf[i+4*(j-1)+1]&0xF800)==0xD000)&&
866  ((buf[i+4*(j-1)+2]&0xF800)==0xD000)&&((buf[i+4*(j-1)+3]&0xF000)==0xD000));
867  // DMB Trailers
868  dmb_tr1_check[j]=((tempbuf_short[0]==dmb_tr1_bit[0])&&(tempbuf_short[4]==dmb_tr1_bit[1])&&
869  (tempbuf_short[8]==dmb_tr1_bit[2])&&(tempbuf_short[12]==dmb_tr1_bit[3]));
870  dmb_tr2_check[j]=((tempbuf_short[0]==dmb_tr2_bit[0])&&(tempbuf_short[4]==dmb_tr2_bit[1])&&
871  (tempbuf_short[8]==dmb_tr2_bit[2])&&(tempbuf_short[12]==dmb_tr2_bit[3]));
872  // TMB
873  tmb_h1_check[j]=((tempbuf_short[0]==tmb_header1_bit[0])&&(tempbuf_short[4]==tmb_header1_bit[1])&&
874  (tempbuf_short[8]==tmb_header1_bit[2])&&(tempbuf_short[12]==tmb_header1_bit[3])&&
875  (tempbuf_short[13]==tmb_header1_bit[4])&&(tempbuf_short[14]==tmb_header1_bit[5])&&
876  (tempbuf_short[15]==tmb_header1_bit[6]));
877  tmb_tr1_check[j]=((tempbuf_short[0]==tmb_tr1_bit[0])&&(tempbuf_short[4]==tmb_tr1_bit[1])&&
878  (tempbuf_short[8]==tmb_tr1_bit[2])&&(tempbuf_short[12]==tmb_tr1_bit[3])&&
879  (tempbuf_short[13]==tmb_tr1_bit[4])&&(tempbuf_short[14]==tmb_tr1_bit[5])&&
880  (tempbuf_short[15]==tmb_tr1_bit[6]));
881  // CFEB
882  cfeb_tr1_check[j]=(((buf[i+4*(j-1)+1]&0xF000)==0x7000) &&
883  ((buf[i+4*(j-1)+2]&0xF000)==0x7000) &&
884  (( buf[i+4*(j-1)+1]!= 0x7FFF) || (buf[i+4*(j-1)+2] != 0x7FFF)) &&
885  ((buf[i+4*(j-1)+3] == 0x7FFF) ||
886  ((buf[i+4*(j-1)+3]&buf[i+4*(j-1)]) == 0x0&&(buf[i+4*(j-1)+3] + buf[i+4*(j-1)] == 0x7FFF ))) );
887  cfeb_b_check[j]=(((buf[i+4*(j-1)+3]&0xF000)==0xB000)&&((buf[i+4*(j-1)+2]&0xF000)==0xB000) &&
888  ((buf[i+4*(j-1)+1]&0xF000)==0xB000)&&((buf[i+4*(j-1)]=3&0xF000)==0xB000) );
889  // DDU Trailers with errors
890  ddu_tr1_bad_check[j]=((tempbuf_short[0]!=ddu_trailer1_bit[0])&&
891  //(tempbuf_short[1]!=ddu_trailer1_bit[1])&&(tempbuf_short[2]!=ddu_trailer1_bit[2])&&
892  //(tempbuf_short[3]==ddu_trailer1_bit[3])&&
893  (tempbuf_short[4]!=ddu_trailer1_bit[4])&&
894  //(tempbuf_short[5]==ddu_trailer1_bit[5])&&
895  //(tempbuf_short[6]==ddu_trailer1_bit[6])&&(tempbuf_short[7]==ddu_trailer1_bit[7])&&
896  (tempbuf_short[8]==ddu_trailer1_bit[8])&&(tempbuf_short[9]==ddu_trailer1_bit[9])&&
897  (tempbuf_short[10]==ddu_trailer1_bit[10])&&(tempbuf_short[11]==ddu_trailer1_bit[11])&&
898  (tempbuf_short[12]==ddu_trailer1_bit[12])&&(tempbuf_short[13]==ddu_trailer1_bit[13])&&
899  (tempbuf_short[14]==ddu_trailer1_bit[14])&&(tempbuf_short[15]==ddu_trailer1_bit[15]));
900  }
901 
902  // DDU Header 2 next to Header 1
903  ddu_h2_h1=ddu_h2_check[2];
904 
905  sprintf(tempbuf_short,"%04x%04x%04x%04x",buf[i+3],buf[i+2],buf[i+1],buf[i]);
906 
907  // Looking for DDU Header 1
908  ddu_h1_12_13=(buf[i]>>8);
909  for (int kk=0; kk<36; kk++)
910  {
911  if (((buf[i+3]&0xF000)==0x5000)&&(ddu_h1_12_13==ddu_id[kk])&&ddu_h2_h1)
912  {
913  ddu_h1_coll.push_back(word_numbering);
914  ddu_h1_n_coll.push_back(ddu_id[kk]);
915  ddu_inst_l1a=((buf[i+2]&0xFFFF)+((buf[i+3]&0x00FF)<<16));
916  ddu_l1a_coll.push_back(ddu_inst_l1a);
917  ddu_inst_bxn=(buf[i+1]&0xFFF0)>>4;
918  ddu_bxn_coll.push_back(ddu_inst_bxn);
919  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s%s %s %i %s %i",
920  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
921  sign1,ddu_common,ddu_id[kk],ddu_header1,sign1,dmb_common_l1a,ddu_inst_l1a,alct_common_bxn,ddu_inst_bxn);
922  std::cout << tempbuf1 << std::endl;
923  w=0;
924  ddu_h1_check=true;
925  ddu_inst_l1a=0;
926  cfeb_sample=0;
927  }
928  }
929 
930 
931 
932  // Looking for DCC Header 1
933  dcc_h1_id=(((buf[i+1]<<12)&0xF000)>>4)+(buf[i]>>8);
934  for (int dcci=0; dcci<16; dcci++)
935  {
936  if ((dcc_id[dcci]==dcc_h1_id)&&(((buf[i+3]&0xF000)==0x5000)&&(!ddu_h1_check)))
937  {
938  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
939  sign1,dcc_common,dcc_h1_id,dcc_header1);
940  dcc_h1_check=word_numbering;
941  w=0;
942  dcc_check=true;
943  std::cout << tempbuf1 << std::endl;
944  }
945  }
946 
947  // Looking for DCC Header 2 and trailers
948  if (((word_numbering-1)==dcc_h1_check)&&((buf[i+3]&0xFF00)==0xD900))
949  {
950  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
951  sign1,dcc_header2);
952  std::cout << tempbuf1 << std::endl;
953  w=0;
954  }
955  else if ((word_numbering==word_lines-1)&&(tempbuf_short[0]==dcc_trail1_bit[0]))
956  {
957  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
958  sign1,dcc_trail1);
959  std::cout << tempbuf1 << std::endl;
960  w=0;
961  }
962  else if ((word_numbering==word_lines)&&(tempbuf_short[0]==dcc_trail2_bit[0]))
963  {
964  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
965  sign1,dcc_trail2);
966  std::cout << tempbuf1 << std::endl;
967  w=0;
968  }
969 
970  // DDU Header 2
971  else if (ddu_h2_check[1])
972  {
973  ddu_inst_i = ddu_h1_n_coll.size(); //ddu_inst_n=ddu_h1_n_coll[0];
974  if (ddu_inst_i>0)
975  {
976  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
977  }
978  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",
979  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,
980  ddu_inst_n, ddu_header2);
981  ddu_h2_coll.push_back(word_numbering);
982  std::cout << tempbuf1 << std::endl;
983  w=0;
984  ddu_h2_found=1;
985  }
986 
987  // DDU Header 3 (either between DDU Header 2 DMB Header or DDU Header 2 DDU Trailer1)
988  else if ((ddu_h2_check[0]&&dmb_h1_check[2])||(ddu_h2_check[0]&&ddu_tr1_check[2]))
989  {
990  ddu_inst_i = ddu_h1_n_coll.size();
991  if (ddu_inst_i>0)
992  {
993  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
994  }
995  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
996  sign1,ddu_common,ddu_inst_n,ddu_header3);
997  ddu_h3_coll.push_back(word_numbering);
998  std::cout << tempbuf1 << std::endl;
999  w=0;
1000  ddu_h2_found=0;
1001  }
1002 
1003  // DMB Header 1,2
1004 
1005  else if (dmb_h1_check[1])
1006  {
1007  dmb_inst_crate=0;
1008  dmb_inst_slot=0;
1009  dmb_inst_l1a=0;
1010  dmb_inst_l1a=((buf[i]&0x0FFF)+((buf[i+1]&0xFFF)<<12));
1011  dmb_l1a_coll.push_back(dmb_inst_l1a);
1012  if (dmb_h2_check[2])
1013  {
1014  dmb_inst_crate=((buf[i+4+1]>>4)&0xFF);
1015  dmb_inst_slot=(buf[i+4+1]&0xF);
1016  dmb_crate_coll.push_back(dmb_inst_crate);
1017  dmb_slot_coll.push_back(dmb_inst_slot);
1018  }
1019  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i %s %i",
1020  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1021  sign1,dmb_common,dmb_header1,sign1,dmb_common_crate,dmb_inst_crate,
1022  dmb_common_slot,dmb_inst_slot,dmb_common_l1a,dmb_inst_l1a);
1023  dmb_h1_coll.push_back(word_numbering);
1024  std::cout << tempbuf1 << std::endl;
1025  w=0;
1026  ddu_h2_found=1;
1027  }
1028 
1029  else if (dmb_h2_check[1])
1030  {
1031  dmb_inst_crate=((buf[i+1]>>4)&0xFF);
1032  dmb_inst_slot=(buf[i+1]&0xF);
1033  dmb_h2_coll.push_back(word_numbering);
1034  if (dmb_h1_check[0])
1035  dmb_inst_l1a=((buf[i-4]&0x0FFF)+((buf[i-4+1]&0xFFF)<<12));
1036  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i %s %i",
1037  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1038  sign1,dmb_common,dmb_header2,sign1,dmb_common_crate,dmb_inst_crate,
1039  dmb_common_slot,dmb_inst_slot,dmb_common_l1a,dmb_inst_l1a);
1040  std::cout << tempbuf1 << std::endl;
1041  w=0;
1042  ddu_h2_found=1;
1043  }
1044 
1045  //DDU Trailer 1
1046 
1047  else if (ddu_tr1_check[1])
1048  {
1049  ddu_inst_i = ddu_h1_n_coll.size();
1050  if (ddu_inst_i>0)
1051  {
1052  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1053  }
1054  //ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1055  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",
1056  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail1);
1057  ddu_t1_coll.push_back(word_numbering);
1058  std::cout << tempbuf1 << std::endl;
1059  w=0;
1060  }
1061 
1063  else if (alct_h1_check[1])
1064  {
1065  alct_start=word_numbering;
1066  alct_inst_l1a=(buf[i+2]&0x0FFF);
1067  alct_l1a_coll.push_back(alct_inst_l1a);
1068  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s %s %i",
1069  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1070  sign1,alct_common,alct_header1,sign1,dmb_common_l1a,alct_inst_l1a);
1071  alct_h1_coll.push_back(word_numbering);
1072  std::cout << tempbuf1 << std::endl;
1073  w=0;
1074  alct_inst_l1a=0;
1075  }
1076 
1077  else if ((alct_h1_check[0])&&(alct_h2_check[2]))
1078  {
1079  alct_inst_bxn=(buf[i]&0x0FFF);
1080  alct_bxn_coll.push_back(alct_inst_bxn);
1081  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i",
1082  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1083  sign1,alct_common,alct_header2,sign1,alct_common_bxn,alct_inst_bxn);
1084  alct_h2_coll.push_back(word_numbering);
1085  std::cout << tempbuf1 << std::endl;
1086  w=0;
1087  alct_inst_bxn=0;
1088  }
1089 
1090  //ALCT Trailer 1
1091  else if (alct_tr1_check[1])
1092  {
1093  alct_stop=word_numbering;
1094  if ((alct_start!=0)&&(alct_stop!=0)&&(alct_stop>alct_start))
1095  {
1096  alct_inst_wcnt2=4*(alct_stop-alct_start+1);
1097  alct_wcnt2_coll.push_back(alct_inst_wcnt2);
1098  alct_wcnt2_id_coll.push_back(alct_start);
1099  }
1100  alct_inst_wcnt1=(buf[i+3]&0x7FF);
1101  alct_wcnt1_coll.push_back(alct_inst_wcnt1);
1102  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i",
1103  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1104  sign1,alct_common,alct_tr1,sign1,alct_common_wcnt1,alct_inst_wcnt1,
1105  alct_common_wcnt2,alct_inst_wcnt2);
1106  alct_t1_coll.push_back(word_numbering);
1107  std::cout << tempbuf1 << std::endl;
1108  w=0;
1109  alct_inst_wcnt1=0;
1110  alct_inst_wcnt2=0;
1111  }
1112 
1113  //DDU Trailer 3
1114 
1115 // else if ((ddu_tr1_check[-1])&&(tempbuf_short[0]==ddu_trailer3_bit[0])) { // !!! TO FIX: negative index
1116  else if((ddu_h2_h1)&&(tempbuf_short[0]==ddu_trailer3_bit[0])){
1117  //&&(tempbuf_short[0]==ddu_trailer3_bit[0])){
1118  ddu_inst_i = ddu_h1_n_coll.size();
1119  if (ddu_inst_i>0)
1120  {
1121  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1122  }
1123  //ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1124  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",
1125  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail3);
1126  ddu_t3_coll.push_back(word_numbering);
1127  std::cout << tempbuf1 << std::endl;
1128  w=0;
1129  }
1130  //DDU Trailer 2
1131  else if ((ddu_tr1_check[0])&&(tempbuf_short[0]!=ddu_trailer3_bit[0]))
1132  {
1133  //&&(tempbuf_short[0]==ddu_trailer3_bit[0])){
1134  ddu_inst_i = ddu_h1_n_coll.size();
1135  if (ddu_inst_i>0)
1136  {
1137  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1138  }
1139  //ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1140  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s",
1141  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail2);
1142  ddu_t2_coll.push_back(word_numbering);
1143  std::cout << tempbuf1 << std::endl;
1144  w=0;
1145  }
1146 
1147  //DMB Trailer 1,2
1148  else if (dmb_tr1_check[1])
1149  {
1150  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s",
1151  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,dmb_common,dmb_tr1);
1152  dmb_t1_coll.push_back(word_numbering);
1153  std::cout << tempbuf1 << std::endl;
1154  w=0;
1155  cfeb_sample=0;
1156  }
1157 
1158  else if (dmb_tr2_check[1])
1159  {
1160  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s",
1161  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,dmb_common,dmb_tr2);
1162  dmb_t2_coll.push_back(word_numbering);
1163  std::cout << tempbuf1 << std::endl;
1164  w=0;
1165  }
1166  // TMB
1167  else if (tmb_h1_check[1])
1168  {
1169  tmb_start=word_numbering;
1170  tmb_inst_l1a=(buf[i+2]&0x000F);
1171  tmb_l1a_coll.push_back(tmb_inst_l1a);
1172  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i",
1173  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,tmb_common,tmb_header1,
1174  sign1,dmb_common_l1a,tmb_inst_l1a);
1175  tmb_h1_coll.push_back(word_numbering);
1176  std::cout << tempbuf1 << std::endl;
1177  w=0;
1178  tmb_inst_l1a=0;
1179  }
1180  else if (tmb_tr1_check[1])
1181  {
1182  tmb_stop=word_numbering;
1183  if ((tmb_start!=0)&&(tmb_stop!=0)&&(tmb_stop>tmb_start))
1184  {
1185  tmb_inst_wcnt2=4*(tmb_stop-tmb_start+1);
1186  tmb_wcnt2_coll.push_back(tmb_inst_wcnt2);
1187  }
1188  tmb_inst_wcnt1=(buf[i+3]&0x7FF);
1189  tmb_wcnt1_coll.push_back(tmb_inst_wcnt1);
1190  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i",
1191  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1192  sign1,tmb_common,tmb_tr1,sign1,alct_common_wcnt1,tmb_inst_wcnt1,
1193  alct_common_wcnt2,tmb_inst_wcnt2);
1194  tmb_t1_coll.push_back(word_numbering);
1195  std::cout << tempbuf1 << std::endl;
1196  w=0;
1197  tmb_inst_wcnt2=0;
1198  }
1199  // CFEB
1200  else if (cfeb_tr1_check[1])
1201  {
1202  ++cfeb_sample;
1203  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s%s %s %i",
1204  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1205  sign1,cfeb_common,cfeb_tr1,sign1,cfeb_common_sample,cfeb_sample);
1206  cfeb_t1_coll.push_back(word_numbering);
1207  w=0;
1208  std::cout << tempbuf1 << std::endl;
1209  w=0;
1210  }
1211  else if (cfeb_b_check[1])
1212  {
1213  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s %s",
1214  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,cfeb_common,cfeb_b);
1215  std::cout << tempbuf1 << std::endl;
1216  w=0;
1217  }
1218 
1219  //ERRORS ddu_tr1_bad_check
1220 
1221  else if (ddu_tr1_bad_check[1])
1222  {
1223  ddu_inst_i = ddu_h1_n_coll.size();
1224  ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1225  sprintf(tempbuf1,"%6i %04x %04x %04x %04x%s%s%i %s %s",
1226  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,
1227  ddu_trail1,ddu_tr1_err_common);
1228  std::cout << tempbuf1 << std::endl;
1229  w=0;
1230  }
1231 
1232  else if (extraction&&(!ddu_h1_check)&&(!dcc_check))
1233  {
1234  if (w<3)
1235  {
1236  sprintf(tempbuf,"%6i %04x %04x %04x %04x",
1237  word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i]);
1238  std::cout << tempbuf << std::endl;
1239  w++;
1240  }
1241  if (w==3)
1242  {
1243  std::cout << "..................................................." << std::endl;
1244  w++;
1245  }
1246  }
1247 
1248  else if ((!ddu_h1_check)&&(!dcc_check))
1249  {
1250  sprintf(tempbuf,"%6i %04x %04x %04x %04x",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i]);
1251  std::cout << tempbuf << std::endl;
1252  }
1253 
1254  i+=3;
1255  ddu_h1_check=false;
1256  dcc_check=false;
1257  }
1258  //char sign[30]; //WARNING 5_0_X
1259  std::cout <<"********************************************************************************" <<
1260  std::endl << std::endl;
1261  if (fedshort)
1262  std::cout << "For complete output turn off VisualFEDShort in muonCSCDigis configuration file." << std::endl;
1263  std::cout <<"********************************************************************************" <<
1264  std::endl << std::endl;
1265  std::cout << std::endl << std::endl;
1266  std::cout <<" Summary " << std::endl;
1267  std::cout << std::endl << std::endl;
1268  std::cout << ddu_h1_coll.size() <<" "<< ddu_common << " "<<ddu_header1 << " "<< "found" << std::endl;
1269  /*
1270  std::cout << ddu_h1_coll.size() << " " << ddu_h1_n_coll.size() << " " << ddu_l1a_coll.size() <<
1271  " " << ddu_bxn_coll.size() << std::endl;
1272  */
1273  for (unsigned int k=0; k<ddu_h1_coll.size(); ++k)
1274  {
1275  /*
1276  sprintf(sign,"%s%6i%5s %s%i %s %i %s %i","Line: ",
1277  ddu_h1_coll[k],sign1,ddu_common,ddu_h1_n_coll[k],dmb_common_l1a,ddu_l1a_coll[k],
1278  alct_common_bxn,ddu_bxn_coll[k]);
1279  */
1280  std::cout << "Line: " << " " << ddu_h1_coll[k] << " " << sign1 << " " <<
1281  ddu_common << " " << ddu_h1_n_coll[k] << " " << dmb_common_l1a << " " << ddu_l1a_coll[k] << " " <<
1282  alct_common_bxn << " " << ddu_bxn_coll[k] << std::endl;
1283  }
1284 
1285 
1286  std::cout << std::endl << std::endl;
1287  std::cout << "||||||||||||||||||||" << std::endl;
1288  std::cout << std::endl << std::endl;
1289  std::cout << ddu_h2_coll.size() <<" "<< ddu_common << " "<<ddu_header2 << " "<< "found" << std::endl;
1290  for (unsigned int k=0; k<ddu_h2_coll.size(); ++k)
1291  std::cout << "Line: " << ddu_h2_coll[k] << std::endl;
1292  std::cout << std::endl << std::endl;
1293  std::cout << "||||||||||||||||||||" << std::endl;
1294  std::cout << std::endl << std::endl;
1295  std::cout << ddu_h3_coll.size() <<" "<< ddu_common << " "<<ddu_header3 << " "<< "found" << std::endl;
1296  for (unsigned int k=0; k<ddu_h3_coll.size(); ++k)
1297  std::cout << "Line: " << ddu_h3_coll[k] << std::endl;
1298  std::cout << std::endl << std::endl;
1299  std::cout << "||||||||||||||||||||" << std::endl;
1300  std::cout << std::endl << std::endl;
1301  std::cout << ddu_t1_coll.size() <<" "<< ddu_common << " "<<ddu_trail1 << " "<< "found" << std::endl;
1302  for (unsigned int k=0; k<ddu_t1_coll.size(); ++k)
1303  std::cout << "Line: " << ddu_t1_coll[k] << std::endl;
1304  std::cout << std::endl << std::endl;
1305  std::cout << "||||||||||||||||||||" << std::endl;
1306  std::cout << std::endl << std::endl;
1307  std::cout << ddu_t2_coll.size() <<" "<< ddu_common << " "<<ddu_trail2 << " "<< "found" << std::endl;
1308  for (unsigned int k=0; k<ddu_t2_coll.size(); ++k)
1309  std::cout << "Line: " << ddu_t2_coll[k] << std::endl;
1310  std::cout << std::endl << std::endl;
1311  std::cout << "||||||||||||||||||||" << std::endl;
1312  std::cout << std::endl << std::endl;
1313  std::cout << ddu_t3_coll.size() <<" "<< ddu_common << " "<<ddu_trail3 << " "<< "found" << std::endl;
1314  for (unsigned int k=0; k<ddu_t3_coll.size(); ++k)
1315  std::cout << "Line: " << ddu_t3_coll[k] << std::endl;
1316  std::cout << std::endl << std::endl;
1317  std::cout << "||||||||||||||||||||" << std::endl;
1318  std::cout << std::endl << std::endl;
1319  std::cout << dmb_h1_coll.size() <<" "<< dmb_common << " "<<dmb_header1 << " "<< "found" << std::endl;
1320 
1321  for (unsigned int k=0; k<dmb_h1_coll.size(); ++k)
1322  {
1323  /*
1324  sprintf(sign,"%s%6i%5s %s %s %i %s %i %s %i","Line: ",
1325  dmb_h1_coll[k],sign1,dmb_common,dmb_common_crate,dmb_crate_coll[k],dmb_common_slot,
1326  dmb_slot_coll[k],dmb_common_l1a,dmb_l1a_coll[k]);
1327  */
1328  std::cout << "Line: " << " " << dmb_h1_coll[k] << " " << sign1 << dmb_common
1329  << " " << dmb_common_crate << " " << dmb_crate_coll[k] << " " << dmb_common_slot << " " <<
1330  dmb_slot_coll[k] << " " << dmb_common_l1a << " " << dmb_l1a_coll[k] << std::endl;
1331  }
1332  std::cout << std::endl << std::endl;
1333  std::cout << "||||||||||||||||||||" << std::endl;
1334  std::cout << std::endl << std::endl;
1335  std::cout << dmb_h2_coll.size() <<" "<< dmb_common << " "<<dmb_header2 << " "<< "found" << std::endl;
1336  for (unsigned int k=0; k<dmb_h2_coll.size(); ++k)
1337  std::cout << "Line: " << dmb_h2_coll[k] << std::endl;
1338  std::cout << std::endl << std::endl;
1339  std::cout << "||||||||||||||||||||" << std::endl;
1340  std::cout << std::endl << std::endl;
1341  std::cout << dmb_t1_coll.size() <<" "<< dmb_common << " "<<dmb_tr1 << " "<< "found" << std::endl;
1342  for (unsigned int k=0; k<dmb_t1_coll.size(); ++k)
1343  std::cout << "Line: " << dmb_t1_coll[k] << std::endl;
1344  std::cout << std::endl << std::endl;
1345  std::cout << "||||||||||||||||||||" << std::endl;
1346  std::cout << std::endl << std::endl;
1347  std::cout << dmb_t2_coll.size() <<" "<< dmb_common << " "<<dmb_tr2 << " "<< "found" << std::endl;
1348  for (unsigned int k=0; k<dmb_t2_coll.size(); ++k)
1349  std::cout << "Line: " << dmb_t2_coll[k] << std::endl;
1350  std::cout << std::endl << std::endl;
1351  std::cout << "||||||||||||||||||||" << std::endl;
1352  std::cout << std::endl << std::endl;
1353  std::cout << alct_h1_coll.size() <<" "<< alct_common << " "<<alct_header1 << " "<< "found" << std::endl;
1354  for (unsigned int k=0; k<alct_h1_coll.size(); ++k)
1355  {
1356  /*
1357  sprintf(sign,"%s%6i%5s %s %s %i","Line: ",
1358  alct_h1_coll[k],sign1,alct_common,
1359  dmb_common_l1a,alct_l1a_coll[k]);
1360  std::cout << sign << std::endl;
1361  */
1362  std::cout << "Line: " << " " <<
1363  alct_h1_coll[k] << " " << sign1 << " " << alct_common << " " <<
1364  dmb_common_l1a << " " << alct_l1a_coll[k] << std::endl;
1365  }
1366 
1367  std::cout << std::endl << std::endl;
1368  std::cout << "||||||||||||||||||||" << std::endl;
1369  std::cout << std::endl << std::endl;
1370  std::cout << alct_h2_coll.size() <<" "<< alct_common << " "<<alct_header2 << " "<< "found" << std::endl;
1371  for (unsigned int k=0; k<alct_h2_coll.size(); ++k)
1372  {
1373  /*
1374  sprintf(sign,"%s%6i%5s %s %s %i","Line: ",
1375  alct_h1_coll[k],sign1,alct_common,
1376  alct_common_bxn,alct_bxn_coll[k]);
1377  std::cout << sign << std::endl;
1378  */
1379  std::cout << "Line: " << " " <<
1380  alct_h1_coll[k] << " " << sign1 << " " << alct_common << " " <<
1381  alct_common_bxn << " " << alct_bxn_coll[k] << std::endl;
1382  }
1383 
1384  std::cout << std::endl << std::endl;
1385  std::cout << "||||||||||||||||||||" << std::endl;
1386  std::cout << std::endl << std::endl;
1387  std::cout << alct_t1_coll.size() <<" "<< alct_common << " "<<alct_tr1 << " "<< "found" << std::endl;
1388  for (unsigned int k=0; k<alct_t1_coll.size(); ++k)
1389  {
1390  /*
1391  sprintf(sign,"%s%6i%5s %s %s %i %s %i","Line: ",
1392  alct_t1_coll[k],sign1,alct_common,
1393  alct_common_wcnt1,alct_wcnt1_coll[k],alct_common_wcnt2,alct_wcnt2_coll[k]);
1394  std::cout << sign << std::endl;
1395  */
1396  std::cout << "Line: " << " " << alct_t1_coll[k] << " " << sign1 << " " << alct_common << " " <<
1397  alct_common_wcnt1 << " " << alct_wcnt1_coll[k] << " " << alct_common_wcnt2 << " ";
1398  if (alct_wcnt2_coll.size()>0)
1399  {
1400  std::cout << alct_wcnt2_coll[k] << std::endl;
1401  }
1402  else
1403  {
1404  std::cout << "Undefined (ALCT Header is not found) " << std::endl;
1405  }
1406  }
1407 
1408  std::cout << std::endl << std::endl;
1409  std::cout << "||||||||||||||||||||" << std::endl;
1410  std::cout << std::endl << std::endl;
1411  std::cout << tmb_h1_coll.size() <<" "<< tmb_common << " "<<tmb_header1 << " "<< "found" << std::endl;
1412  for (unsigned int k=0; k<tmb_h1_coll.size(); ++k)
1413  {
1414  /*
1415  sprintf(sign,"%s%6i%5s %s %s %i","Line: ",
1416  tmb_h1_coll[k],sign1,tmb_common,
1417  dmb_common_l1a,tmb_l1a_coll[k]);
1418  std::cout << sign << std::endl;
1419  */
1420  std::cout << "Line: " << " " << tmb_h1_coll[k] << " " << sign1 << " " << tmb_common << " " <<
1421  dmb_common_l1a << " " << tmb_l1a_coll[k] << std::endl;
1422  }
1423 
1424  std::cout << std::endl << std::endl;
1425  std::cout << "||||||||||||||||||||" << std::endl;
1426  std::cout << std::endl << std::endl;
1427  std::cout << tmb_t1_coll.size() <<" "<< tmb_common << " "<<tmb_tr1 << " "<< "found" << std::endl;
1428  for (unsigned int k=0; k<tmb_t1_coll.size(); ++k)
1429  {
1430  /*
1431  sprintf(sign,"%s%6i%5s %s %s %i %s %i","Line: ",
1432  tmb_t1_coll[k],sign1,tmb_common,
1433  alct_common_wcnt1,tmb_wcnt1_coll[k],alct_common_wcnt2,tmb_wcnt2_coll[k]);
1434  std::cout << sign << std::endl;
1435  */
1436  std::cout << "Line: " << " " << tmb_t1_coll[k] << " " << sign1 << " " << tmb_common << " " <<
1437  alct_common_wcnt1 << " " << tmb_wcnt1_coll[k] << " " << alct_common_wcnt2 << " " << tmb_wcnt2_coll[k]
1438  << std::endl;
1439  }
1440 
1441 
1442  std::cout << std::endl << std::endl;
1443  std::cout << "||||||||||||||||||||" << std::endl;
1444  std::cout << std::endl << std::endl;
1445  std::cout << cfeb_t1_coll.size() <<" "<< cfeb_common << " "<<cfeb_tr1 << " "<< "found" << std::endl;
1446  for (unsigned int k=0; k<cfeb_t1_coll.size(); ++k)
1447  std::cout << "Line: " << cfeb_t1_coll[k] << std::endl;
1448  std::cout <<"********************************************************************************" << std::endl;
1449 
1450 }
RunNumber_t run() const
Definition: EventID.h:42
01/20/05 A.Tumanov
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:44
void crcCFEB(bool enable)
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
bool SuppressZeroLCT
Suppress zeros LCTs.
const double w
Definition: UKUtility.cc:23
static void setDebug(bool value)
void modeDDU(bool enable)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
CSCDetId detId(int vme, int dmb, int cfeb, int layer=0) const
Definition: CSCCrateMap.cc:11
const uint16_t nERRORS
CSCMonitorInterface * monitor
#define NULL
Definition: scimark2.h:8
ExaminerStatusType errors(void) const
void crcALCT(bool enable)
const char * errName(int num) const
bool visualFEDInspect
Visualization of raw data.
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void produce(edm::Event &e, const edm::EventSetup &c)
Produce digis out of raw data.
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
virtual void process(CSCDCCExaminer *examiner, CSCDCCEventData *dccData)=0
static void setDebug(const bool value)
Definition: CSCTMBHeader.h:111
static void setDebug(const bool value)
Definition: CSCTMBData.h:34
void visual_raw(int hl, int id, int run, int event, bool fedshort, bool fDump, short unsigned int *buf) const
Visualization of raw data in FED-less events (Robert Harr and Alexander Sakharov) ...
std::map< CSCIdType, ExaminerStatusType > errorsDetailed(void) const
static void setErrorMask(unsigned int value)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
bool check(const DataFrame &df, bool capcheck, bool dvercheck)
static void setDebug(bool value)
void crcTMB(bool enable)
int j
Definition: DBlmapReader.cc:9
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::map< CSCIdType, ExaminerStatusType > statusDetailed(void) const
#define LogTrace(id)
int k[5][pyjets_maxn]
static void setDebug(const bool value)
Definition: CSCCLCTData.h:35
ExaminerMaskType getMask() const
edm::EDGetTokenT< FEDRawDataCollection > i_token
Token for consumes interface &amp; access to data.
unsigned int errorMask
unsigned int examinerMask
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
static void setDebug(bool value)
to access data by via status digis
Definition: CSCALCTHeader.h:30
bool useSelectiveUnpacking
int32_t check(const uint16_t *&buffer, int32_t length)
std::map< CSCIdType, ExaminerStatusType > payloadDetailed(void) const
edm::EventID id() const
Definition: EventBase.h:56
CSC Format Status Object.
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
CSCDCCUnpacker(const edm::ParameterSet &pset)
Constructor.
tuple cout
Definition: gather_cfg.py:121
std::map< DDUIdType, ExaminerStatusType > errorsDetailedDDU(void) const
dictionary rawdata
Definition: lumiPlot.py:393
virtual ~CSCDCCUnpacker()
Destructor.
void setMask(ExaminerMaskType mask)
static void setDebug(const bool value)
Definition: CSCEventData.h:55
static void setDebug(bool debugValue)
Definition: CSCRPCData.h:24