112 produces<CSCWireDigiCollection>(
"MuonCSCWireDigi");
113 produces<CSCStripDigiCollection>(
"MuonCSCStripDigi");
114 produces<CSCComparatorDigiCollection>(
"MuonCSCComparatorDigi");
115 produces<CSCALCTDigiCollection>(
"MuonCSCALCTDigi");
116 produces<CSCCLCTDigiCollection>(
"MuonCSCCLCTDigi");
117 produces<CSCRPCDigiCollection>(
"MuonCSCRPCDigi");
118 produces<CSCCorrelatedLCTDigiCollection>(
"MuonCSCCorrelatedLCTDigi");
120 if (unpackStatusDigis)
122 produces<CSCCFEBStatusDigiCollection>(
"MuonCSCCFEBStatusDigi");
123 produces<CSCTMBStatusDigiCollection>(
"MuonCSCTMBStatusDigi");
124 produces<CSCDMBStatusDigiCollection>(
"MuonCSCDMBStatusDigi");
125 produces<CSCALCTStatusDigiCollection>(
"MuonCSCALCTStatusDigi");
126 produces<CSCDDUStatusDigiCollection>(
"MuonCSCDDUStatusDigi");
127 produces<CSCDCCStatusDigiCollection>(
"MuonCSCDCCStatusDigi");
132 produces<CSCDCCFormatStatusDigiCollection>(
"MuonCSCDCCFormatStatusDigi");
155 desc.
add<
bool>(
"UseExaminer",
true)->setComment(
"# Use CSC examiner to check for corrupt or semi-corrupt data & avoid unpacker crashes");
156 desc.
add<
unsigned int>(
"ExaminerMask",535557110)->setComment(
"# This mask is needed by the examiner");
157 desc.
add<
bool>(
"UseSelectiveUnpacking",
true)->setComment(
"# Use Examiner to unpack good chambers and skip only bad ones");
158 desc.
add<
unsigned int>(
"ErrorMask",0)->setComment(
"# This mask simply reduces error reporting");
159 desc.
add<
bool>(
"UnpackStatusDigis",
false)->setComment(
"# Unpack general status digis?");
160 desc.
add<
bool>(
"UseFormatStatus",
true)->setComment(
"# Unpack FormatStatus digi?");
161 desc.
addUntracked<
bool>(
"Debug",
false)->setComment(
"# Turn on lots of output");
164 desc.
addUntracked<
bool>(
"VisualFEDInspect",
false)->setComment(
"# Visualization of raw data in corrupted events");
165 desc.
addUntracked<
bool>(
"VisualFEDShort",
false)->setComment(
"# Visualization of raw data in corrupted events");
168 descriptions.
add(
"muonCSCDCCUnpacker",desc);
169 descriptions.
setComment(
" This is the generic cfi file for CSC unpacking");
215 unsigned long dccBinCheckMask = 0x06080016;
218 const unsigned postLS1_map [] = { 841, 842, 843, 844, 845, 846, 847, 848, 849,
219 831, 832, 833, 834, 835, 836, 837, 838, 839,
220 861, 862, 863, 864, 865, 866, 867, 868, 869,
221 851, 852, 853, 854, 855, 856, 857, 858, 859 };
225 std::vector<unsigned int> cscFEDids;
230 cscFEDids.push_back(
id);
236 cscFEDids.push_back(
id);
239 for (
unsigned int i=0;
i<cscFEDids.size();
i++)
241 unsigned int id = cscFEDids[
i];
249 const FEDRawData& fedData = rawdata->FEDData(
id);
250 unsigned long length = fedData.
size();
272 const short unsigned int *
data = (
short unsigned int *)fedData.
data();
274 LogTrace(
"badData") <<
"Length: "<< length/2;
285 int res = examiner->
check(data,
long(fedData.
size()/2));
305 formatStatusProduct->insertDigi(
CSCDetId(1,1,1,1,1),
320 short unsigned * buf = (
short unsigned int *)fedData.
data();
336 std::vector<CSCDDUEventData> fed_Data;
337 std::vector<CSCDDUEventData>* ptr_fedData = &fed_Data;
346 fed_Data.push_back(single_dduData);
365 fed_Data = dccData.dduData();
372 short unsigned * bufForDcc = (
short unsigned int *)fedData.
data();
377 dccStatusProduct->insertDigi(layer,
CSCDCCStatusDigi(dccData.dccHeader().data(),
378 dccData.dccTrailer().data(),
380 bufForDcc[length/2-4]));
385 const std::vector<CSCDDUEventData> & dduData = *ptr_fedData;
388 for (
unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU)
394 if (dduData[iDDU].trailer().errorstat()&
errorMask)
396 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
"FED ID" <<
id <<
" DDU# " << iDDU <<
" has serious error - no digis unpacked! " <<
397 std::hex << dduData[iDDU].trailer().errorstat();
403 dduData[iDDU].trailer().
data(),
405 dduData[iDDU].trailer0()));
408 const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData();
412 for (
unsigned int iCSC=0; iCSC<cscData.size(); ++iCSC)
416 int vmecrate = cscData[iCSC].dmbHeader()->crateID();
417 int dmb = cscData[iCSC].dmbHeader()->dmbID();
423 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
"crate = " << vmecrate <<
"; dmb = " << dmb;
427 if ((vmecrate>=1)&&(vmecrate<=60) && (dmb>=1)&&(dmb<=10)&&(dmb!=6))
429 layer = pcrate->
detId(vmecrate, dmb,icfeb,ilayer );
433 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
" detID input out of range!!! ";
434 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi")
435 <<
" skipping chamber vme= " << vmecrate <<
" dmb= " << dmb;
443 unsigned int dduid = cscmapping->
ddu(layer);
444 if ((dduid>=1) && (dduid <= 36)) dduid = postLS1_map[dduid-1];
448 LogTrace (
"CSCDDUUnpacker|CSCRawToDigi") <<
" CSC->FED/DDU mapping inconsistency!!! ";
449 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi")
450 <<
"readout FED/DDU ID=" <<
id <<
" expected ID=" << dduid
451 <<
", skipping chamber " << layer <<
" vme= " << vmecrate <<
" dmb= " << dmb;
457 int nalct = cscData[iCSC].dmbHeader()->nalct();
460 if (nalct&&cscData[iCSC].alctHeader())
462 if (cscData[iCSC].alctHeader()->
check())
468 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
469 "not storing ALCT digis; alct is bad or not present";
474 if (
debug)
LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
"nALCT==0 !!!";
480 std::vector <CSCALCTDigi> alctDigis =
481 cscData[iCSC].alctHeader()->ALCTDigis();
484 std::vector<CSCALCTDigi> alctDigis_0;
485 for (
int unsigned i=0;
i<alctDigis.size(); ++
i)
487 if (alctDigis[
i].isValid())
488 alctDigis_0.push_back(alctDigis[
i]);
490 alctProduct->move(std::make_pair(alctDigis_0.begin(), alctDigis_0.end()),layer);
493 alctProduct->move(std::make_pair(alctDigis.begin(), alctDigis.end()),layer);
498 int nclct = cscData[iCSC].dmbHeader()->nclct();
501 if (nclct&&cscData[iCSC].tmbData())
503 if (cscData[iCSC].tmbHeader()->
check())
505 if (cscData[iCSC].clctData()->
check()) goodTMB=
true;
509 LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
510 "one of TMB checks failed! not storing TMB digis ";
515 if (
debug)
LogTrace (
"CSCDCCUnpacker|CSCRawToDigi") <<
"nCLCT==0 !!!";
521 std::vector <CSCCorrelatedLCTDigi> correlatedlctDigis =
522 cscData[iCSC].tmbHeader()->CorrelatedLCTDigis(layer.
rawId());
525 std::vector<CSCCorrelatedLCTDigi> correlatedlctDigis_0;
526 for (
int unsigned i=0;
i<correlatedlctDigis.size(); ++
i)
528 if (correlatedlctDigis[
i].isValid())
529 correlatedlctDigis_0.push_back(correlatedlctDigis[
i]);
531 corrlctProduct->move(std::make_pair(correlatedlctDigis_0.begin(),
532 correlatedlctDigis_0.end()),layer);
535 corrlctProduct->move(std::make_pair(correlatedlctDigis.begin(),
536 correlatedlctDigis.end()),layer);
538 std::vector <CSCCLCTDigi> clctDigis =
539 cscData[iCSC].tmbHeader()->CLCTDigis(layer.
rawId());
542 std::vector<CSCCLCTDigi> clctDigis_0;
543 for (
int unsigned i=0;
i<clctDigis.size(); ++
i)
545 if (clctDigis[
i].isValid())
546 clctDigis_0.push_back(clctDigis[
i]);
548 clctProduct->move(std::make_pair(clctDigis_0.begin(), clctDigis_0.end()),layer);
551 clctProduct->move(std::make_pair(clctDigis.begin(), clctDigis.end()),layer);
554 if (cscData[iCSC].tmbData()->checkSize())
556 if (cscData[iCSC].tmbData()->hasRPC())
558 std::vector <CSCRPCDigi> rpcDigis =
559 cscData[iCSC].tmbData()->rpcData()->digis();
560 rpcProduct->move(std::make_pair(rpcDigis.begin(), rpcDigis.end()),layer);
563 else LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
" TMBData check size failed!";
570 for ( icfeb = 0; icfeb < 7; ++icfeb )
572 if ( cscData[iCSC].cfebData(icfeb) !=
NULL )
574 insertDigi(layer, cscData[iCSC].cfebData(icfeb)->statusDigi());
578 cscData[iCSC].dmbTrailer()->
data()));
579 if (goodTMB) tmbStatusProduct->
581 cscData[iCSC].tmbData()->tmbTrailer()->
data()));
582 if (goodALCT) alctStatusProduct->
584 cscData[iCSC].alctTrailer()->
data()));
589 for (
int ilayer = 1; ilayer <= 6; ++ilayer)
595 layer = pcrate->
detId( vmecrate, dmb, 0, ilayer );
597 std::vector <CSCWireDigi> wireDigis = cscData[iCSC].wireDigis(ilayer);
598 wireProduct->move(std::make_pair(wireDigis.begin(), wireDigis.end()),layer);
601 for ( icfeb = 0; icfeb < 7; ++icfeb )
603 layer = pcrate->
detId( vmecrate, dmb, icfeb,ilayer );
604 if (cscData[iCSC].cfebData(icfeb) && cscData[iCSC].cfebData(icfeb)->
check())
606 std::vector<CSCStripDigi> stripDigis;
607 cscData[iCSC].cfebData(icfeb)->digis(layer.
rawId(),stripDigis);
608 stripProduct->move(std::make_pair(stripDigis.begin(),
609 stripDigis.end()),layer);
614 if (goodTMB && (cscData[iCSC].tmbHeader() !=
NULL))
616 int nCFEBs = cscData[iCSC].tmbHeader()->NCFEBs();
617 for ( icfeb = 0; icfeb < nCFEBs; ++icfeb )
619 layer = pcrate->
detId( vmecrate, dmb, icfeb,ilayer );
620 std::vector <CSCComparatorDigi> comparatorDigis =
621 cscData[iCSC].clctData()->comparatorDigis(layer.
rawId(), icfeb);
624 layer = pcrate->
detId( vmecrate, dmb, 0, ilayer );
625 comparatorProduct->move(std::make_pair(comparatorDigis.begin(),
626 comparatorDigis.end()),layer);
635 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
636 "ERROR! Examiner rejected FED #" << id;
646 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi")
647 <<
" Examiner errors:0x" << std::hex << examiner->
errors()
656 if (examiner!=
NULL)
delete examiner;
660 e.
put(wireProduct,
"MuonCSCWireDigi");
661 e.
put(stripProduct,
"MuonCSCStripDigi");
662 e.
put(alctProduct,
"MuonCSCALCTDigi");
663 e.
put(clctProduct,
"MuonCSCCLCTDigi");
664 e.
put(comparatorProduct,
"MuonCSCComparatorDigi");
665 e.
put(rpcProduct,
"MuonCSCRPCDigi");
666 e.
put(corrlctProduct,
"MuonCSCCorrelatedLCTDigi");
672 e.
put(cfebStatusProduct,
"MuonCSCCFEBStatusDigi");
673 e.
put(dmbStatusProduct,
"MuonCSCDMBStatusDigi");
674 e.
put(tmbStatusProduct,
"MuonCSCTMBStatusDigi");
675 e.
put(dduStatusProduct,
"MuonCSCDDUStatusDigi");
676 e.
put(dccStatusProduct,
"MuonCSCDCCStatusDigi");
677 e.
put(alctStatusProduct,
"MuonCSCALCTStatusDigi");
680 <<
"[CSCDCCUnpacker]: " <<
numOfEvents <<
" events processed ";
687 bool fDump,
short unsigned int *buf)
const
690 std::cout << std::endl << std::endl << std::endl;
691 std::cout <<
"Run: "<< run <<
" Event: " <<
event << std::endl;
694 std::cout <<
"FED-" <<
id <<
" " <<
"(scroll down to see summary)" << std::endl;
696 std::cout <<
"Problem seems in FED-" <<
id <<
" " <<
"(scroll down to see summary)" << std::endl;
697 std::cout <<
"********************************************************************************" << std::endl;
698 std::cout << hl <<
" words of data:" << std::endl;
702 std::vector<int> dcc_id;
705 for (
int i=750;
i<758;
i++)
708 for (
int i=830;
i<838;
i++)
711 char dcc_common[]=
"DCC-";
715 std::vector<int> ddu_id;
717 for (
int i=1;
i<37;
i++)
720 char ddu_common[]=
"DDU-";
721 char ddu_header1[]=
"Header 1";
722 char ddu_header2[]=
"Header 2";
723 char ddu_header3[]=
"Header 3";
724 char ddu_trail1[]=
"Trailer 1", ddu_trail2[]=
"Trailer 2", ddu_trail3[]=
"Trailer 3";
726 char ddu_trailer1_bit[]= {
'8',
'0',
'0',
'0',
'f',
'f',
'f',
'f',
'8',
'0',
'0',
'0',
'8',
'0',
'0',
'0'};
727 char ddu_trailer3_bit[]= {
'a'};
729 char ddu_tr1_err_common[]=
"Incomplet";
733 char dmb_common[]=
"DMB", dmb_header1[]=
"Header 1", dmb_header2[]=
"Header 2";
734 char dmb_common_crate[]=
"crate:", dmb_common_slot[]=
"slot:";
735 char dmb_common_l1a[]=
"L1A:";
736 char dmb_header1_bit[]= {
'9',
'9',
'9',
'9'};
737 char dmb_header2_bit[]= {
'a',
'a',
'a',
'a'};
738 char dmb_tr1[]=
"Trailer 1", dmb_tr2[]=
"Trailer 2";
739 char dmb_tr1_bit[]= {
'f',
'f',
'f',
'f'}, dmb_tr2_bit[]= {
'e',
'e',
'e',
'e'};
745 char alct_common[]=
"ALCT", alct_header1[]=
"Header 1", alct_header2[]=
"Header 2";
746 char alct_common_bxn[]=
"BXN:";
747 char alct_common_wcnt2[]=
"| Actual word count:";
748 char alct_common_wcnt1[]=
"Expected word count:";
749 char alct_header1_bit[]= {
'd',
'd',
'd',
'd',
'b',
'0',
'a'};
750 char alct_header2_bit[]= {
'0',
'0',
'0',
'0'};
751 char alct_tr1[]=
"Trailer 1";
756 char tmb_common[]=
"TMB", tmb_header1[]=
"Header", tmb_tr1[]=
"Trailer";
757 char tmb_header1_bit[]= {
'd',
'd',
'd',
'd',
'b',
'0',
'c'};
758 char tmb_tr1_bit[]= {
'd',
'd',
'd',
'd',
'e',
'0',
'f'};
763 char cfeb_common[]=
"CFEB", cfeb_tr1[]=
"Trailer", cfeb_b[]=
"B-word";
764 char cfeb_common_sample[]=
"sample:";
774 char tempbuf_short[17];
775 char sign1[]=
" --->| ";
778 int word_numbering=0;
779 int ddu_inst_i=0, ddu_inst_n=0, ddu_inst_l1a=0;
781 int dmb_inst_crate=0, dmb_inst_slot=0, dmb_inst_l1a=0;
785 int alct_inst_wcnt1=0;
786 int alct_inst_wcnt2=0;
790 int tmb_inst_wcnt1=0;
791 int tmb_inst_wcnt2=0;
802 bool dcc_check=
false;
803 bool ddu_h2_check[sz1]= {
false};
804 bool ddu_h1_check=
false;
805 bool dmb_h1_check[sz1]= {
false};
806 bool dmb_h2_check[sz1]= {
false};
807 bool ddu_h2_h1=
false;
808 bool ddu_tr1_check[sz1]= {
false};
809 bool alct_h1_check[sz1]= {
false};
810 bool alct_h2_check[sz1]= {
false};
811 bool alct_tr1_check[sz1]= {
false};
812 bool dmb_tr1_check[sz1]= {
false};
813 bool dmb_tr2_check[sz1]= {
false};
814 bool tmb_h1_check[sz1]= {
false};
815 bool tmb_tr1_check[sz1]= {
false};
816 bool cfeb_tr1_check[sz1]= {
false};
817 bool cfeb_b_check[sz1]= {
false};
818 bool ddu_tr1_bad_check[sz1]= {
false};
819 bool extraction=fedshort;
823 std::vector<int> ddu_h1_coll;
824 std::vector<int> ddu_h1_n_coll;
825 std::vector<int> ddu_h2_coll;
826 std::vector<int> ddu_h3_coll;
827 std::vector<int> ddu_t1_coll;
828 std::vector<int> ddu_t2_coll;
829 std::vector<int> ddu_t3_coll;
830 std::vector<int> ddu_l1a_coll;
831 std::vector<int> ddu_bxn_coll;
833 std::vector<int> dmb_h1_coll;
834 std::vector<int> dmb_h2_coll;
835 std::vector<int> dmb_t1_coll;
836 std::vector<int> dmb_t2_coll;
837 std::vector<int> dmb_crate_coll;
838 std::vector<int> dmb_slot_coll;
839 std::vector<int> dmb_l1a_coll;
841 std::vector<int> alct_h1_coll;
842 std::vector<int> alct_h2_coll;
843 std::vector<int> alct_t1_coll;
844 std::vector<int> alct_l1a_coll;
845 std::vector<int> alct_bxn_coll;
846 std::vector<int> alct_wcnt1_coll;
847 std::vector<int> alct_wcnt2_coll;
848 std::vector<int> alct_wcnt2_id_coll;
850 std::vector<int> tmb_h1_coll;
851 std::vector<int> tmb_t1_coll;
852 std::vector<int> tmb_l1a_coll;
853 std::vector<int> tmb_wcnt1_coll;
854 std::vector<int> tmb_wcnt2_coll;
856 std::vector<int> cfeb_t1_coll;
861 char dcc_header1[]=
"DCC Header 1";
862 char dcc_header2[]=
"DCC Header 2";
863 char dcc_trail1[]=
"DCC Trailer 1", dcc_trail1_bit[]= {
'e'};
864 char dcc_trail2[]=
"DCC Trailer 2", dcc_trail2_bit[]= {
'a'};
867 for (
int i=0;
i < hl;
i++)
870 for (
int j=-1;
j<4;
j++)
873 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)]);
879 ddu_h2_check[
j]=((buf[
i+4*(
j-1)+1]==0x8000)&&
880 (buf[
i+4*(
j-1)+2]==0x0001)&&(buf[
i+4*(
j-1)+3]==0x8000));
882 ddu_tr1_check[
j]=((tempbuf_short[0]==ddu_trailer1_bit[0])&&(tempbuf_short[1]==ddu_trailer1_bit[1])&&
883 (tempbuf_short[2]==ddu_trailer1_bit[2])&&(tempbuf_short[3]==ddu_trailer1_bit[3])&&
884 (tempbuf_short[4]==ddu_trailer1_bit[4])&&(tempbuf_short[5]==ddu_trailer1_bit[5])&&
885 (tempbuf_short[6]==ddu_trailer1_bit[6])&&(tempbuf_short[7]==ddu_trailer1_bit[7])&&
886 (tempbuf_short[8]==ddu_trailer1_bit[8])&&(tempbuf_short[9]==ddu_trailer1_bit[9])&&
887 (tempbuf_short[10]==ddu_trailer1_bit[10])&&(tempbuf_short[11]==ddu_trailer1_bit[11])&&
888 (tempbuf_short[12]==ddu_trailer1_bit[12])&&(tempbuf_short[13]==ddu_trailer1_bit[13])&&
889 (tempbuf_short[14]==ddu_trailer1_bit[14])&&(tempbuf_short[15]==ddu_trailer1_bit[15]));
891 dmb_h1_check[
j]=((tempbuf_short[0]==dmb_header1_bit[0])&&(tempbuf_short[4]==dmb_header1_bit[1])&&
892 (tempbuf_short[8]==dmb_header1_bit[2])&&(tempbuf_short[12]==dmb_header1_bit[3]));
894 dmb_h2_check[
j]=((tempbuf_short[0]==dmb_header2_bit[0])&&(tempbuf_short[4]==dmb_header2_bit[1])&&
895 (tempbuf_short[8]==dmb_header2_bit[2])&&(tempbuf_short[12]==dmb_header2_bit[3]));
896 alct_h1_check[
j]=((tempbuf_short[0]==alct_header1_bit[0])&&(tempbuf_short[4]==alct_header1_bit[1])&&
897 (tempbuf_short[8]==alct_header1_bit[2])&&(tempbuf_short[12]==alct_header1_bit[3])&&
898 (tempbuf_short[13]==alct_header1_bit[4])&&(tempbuf_short[14]==alct_header1_bit[5])&&
899 (tempbuf_short[15]==alct_header1_bit[6]));
900 alct_h2_check[
j]=(((tempbuf_short[0]==alct_header2_bit[0])&&(tempbuf_short[1]==alct_header2_bit[1])&&
901 (tempbuf_short[2]==alct_header2_bit[2])&&(tempbuf_short[3]==alct_header2_bit[3]))||
902 ((tempbuf_short[4]==alct_header2_bit[0])&&(tempbuf_short[5]==alct_header2_bit[1])&&
903 (tempbuf_short[6]==alct_header2_bit[2])&&(tempbuf_short[7]==alct_header2_bit[3]))||
904 ((tempbuf_short[8]==alct_header2_bit[0])&&(tempbuf_short[9]==alct_header2_bit[1])&&
905 (tempbuf_short[10]==alct_header2_bit[2])&&(tempbuf_short[11]==alct_header2_bit[3]))||
906 ((tempbuf_short[12]==alct_header2_bit[0])&&(tempbuf_short[13]==alct_header2_bit[1])&&
907 (tempbuf_short[14]==alct_header2_bit[2])&&(tempbuf_short[15]==alct_header2_bit[3]))
911 alct_tr1_check[
j]=(((buf[
i+4*(
j-1)]&0xFFFF)==0xDE0D)&&((buf[
i+4*(
j-1)+1]&0xF800)==0xD000)&&
912 ((buf[
i+4*(
j-1)+2]&0xF800)==0xD000)&&((buf[
i+4*(
j-1)+3]&0xF000)==0xD000));
914 dmb_tr1_check[
j]=((tempbuf_short[0]==dmb_tr1_bit[0])&&(tempbuf_short[4]==dmb_tr1_bit[1])&&
915 (tempbuf_short[8]==dmb_tr1_bit[2])&&(tempbuf_short[12]==dmb_tr1_bit[3]));
916 dmb_tr2_check[
j]=((tempbuf_short[0]==dmb_tr2_bit[0])&&(tempbuf_short[4]==dmb_tr2_bit[1])&&
917 (tempbuf_short[8]==dmb_tr2_bit[2])&&(tempbuf_short[12]==dmb_tr2_bit[3]));
919 tmb_h1_check[
j]=((tempbuf_short[0]==tmb_header1_bit[0])&&(tempbuf_short[4]==tmb_header1_bit[1])&&
920 (tempbuf_short[8]==tmb_header1_bit[2])&&(tempbuf_short[12]==tmb_header1_bit[3])&&
921 (tempbuf_short[13]==tmb_header1_bit[4])&&(tempbuf_short[14]==tmb_header1_bit[5])&&
922 (tempbuf_short[15]==tmb_header1_bit[6]));
923 tmb_tr1_check[
j]=((tempbuf_short[0]==tmb_tr1_bit[0])&&(tempbuf_short[4]==tmb_tr1_bit[1])&&
924 (tempbuf_short[8]==tmb_tr1_bit[2])&&(tempbuf_short[12]==tmb_tr1_bit[3])&&
925 (tempbuf_short[13]==tmb_tr1_bit[4])&&(tempbuf_short[14]==tmb_tr1_bit[5])&&
926 (tempbuf_short[15]==tmb_tr1_bit[6]));
928 cfeb_tr1_check[
j]=(((buf[
i+4*(
j-1)+1]&0xF000)==0x7000) &&
929 ((buf[
i+4*(
j-1)+2]&0xF000)==0x7000) &&
930 (( buf[
i+4*(
j-1)+1]!= 0x7FFF) || (buf[
i+4*(
j-1)+2] != 0x7FFF)) &&
931 ((buf[
i+4*(
j-1)+3] == 0x7FFF) ||
932 ((buf[
i+4*(
j-1)+3]&buf[
i+4*(
j-1)]) == 0x0&&(buf[
i+4*(
j-1)+3] + buf[
i+4*(
j-1)] == 0x7FFF ))) );
933 cfeb_b_check[
j]=(((buf[
i+4*(
j-1)+3]&0xF000)==0xB000)&&((buf[
i+4*(
j-1)+2]&0xF000)==0xB000) &&
934 ((buf[
i+4*(
j-1)+1]&0xF000)==0xB000)&&((buf[
i+4*(
j-1)]=3&0xF000)==0xB000) );
936 ddu_tr1_bad_check[
j]=((tempbuf_short[0]!=ddu_trailer1_bit[0])&&
939 (tempbuf_short[4]!=ddu_trailer1_bit[4])&&
942 (tempbuf_short[8]==ddu_trailer1_bit[8])&&(tempbuf_short[9]==ddu_trailer1_bit[9])&&
943 (tempbuf_short[10]==ddu_trailer1_bit[10])&&(tempbuf_short[11]==ddu_trailer1_bit[11])&&
944 (tempbuf_short[12]==ddu_trailer1_bit[12])&&(tempbuf_short[13]==ddu_trailer1_bit[13])&&
945 (tempbuf_short[14]==ddu_trailer1_bit[14])&&(tempbuf_short[15]==ddu_trailer1_bit[15]));
949 ddu_h2_h1=ddu_h2_check[2];
951 sprintf(tempbuf_short,
"%04x%04x%04x%04x",buf[
i+3],buf[
i+2],buf[
i+1],buf[
i]);
954 ddu_h1_12_13=(buf[
i]>>8);
955 for (
int kk=0;
kk<36;
kk++)
957 if (((buf[i+3]&0xF000)==0x5000)&&(ddu_h1_12_13==ddu_id[
kk])&&ddu_h2_h1)
959 ddu_h1_coll.push_back(word_numbering);
960 ddu_h1_n_coll.push_back(ddu_id[
kk]);
961 ddu_inst_l1a=((buf[i+2]&0xFFFF)+((buf[i+3]&0x00FF)<<16));
962 ddu_l1a_coll.push_back(ddu_inst_l1a);
963 ddu_inst_bxn=(buf[i+1]&0xFFF0)>>4;
964 ddu_bxn_coll.push_back(ddu_inst_bxn);
965 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s%s %s %i %s %i",
966 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
967 sign1,ddu_common,ddu_id[kk],ddu_header1,sign1,dmb_common_l1a,ddu_inst_l1a,alct_common_bxn,ddu_inst_bxn);
979 dcc_h1_id=(((buf[i+1]<<12)&0xF000)>>4)+(buf[i]>>8);
980 for (
int dcci=0; dcci<16; dcci++)
982 if ((dcc_id[dcci]==dcc_h1_id)&&(((buf[i+3]&0xF000)==0x5000)&&(!ddu_h1_check)))
984 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
985 sign1,dcc_common,dcc_h1_id,dcc_header1);
986 dcc_h1_check=word_numbering;
994 if (((word_numbering-1)==dcc_h1_check)&&((buf[i+3]&0xFF00)==0xD900))
996 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1001 else if ((word_numbering==word_lines-1)&&(tempbuf_short[0]==dcc_trail1_bit[0]))
1003 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1008 else if ((word_numbering==word_lines)&&(tempbuf_short[0]==dcc_trail2_bit[0]))
1010 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1017 else if (ddu_h2_check[1])
1019 ddu_inst_i = ddu_h1_n_coll.size();
1022 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1024 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",
1025 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,
1026 ddu_inst_n, ddu_header2);
1027 ddu_h2_coll.push_back(word_numbering);
1034 else if ((ddu_h2_check[0]&&dmb_h1_check[2])||(ddu_h2_check[0]&&ddu_tr1_check[2]))
1036 ddu_inst_i = ddu_h1_n_coll.size();
1039 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1041 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1042 sign1,ddu_common,ddu_inst_n,ddu_header3);
1043 ddu_h3_coll.push_back(word_numbering);
1051 else if (dmb_h1_check[1])
1056 dmb_inst_l1a=((buf[
i]&0x0FFF)+((buf[i+1]&0xFFF)<<12));
1057 dmb_l1a_coll.push_back(dmb_inst_l1a);
1058 if (dmb_h2_check[2])
1060 dmb_inst_crate=((buf[i+4+1]>>4)&0xFF);
1061 dmb_inst_slot=(buf[i+4+1]&0xF);
1062 dmb_crate_coll.push_back(dmb_inst_crate);
1063 dmb_slot_coll.push_back(dmb_inst_slot);
1065 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i %s %i",
1066 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1067 sign1,dmb_common,dmb_header1,sign1,dmb_common_crate,dmb_inst_crate,
1068 dmb_common_slot,dmb_inst_slot,dmb_common_l1a,dmb_inst_l1a);
1069 dmb_h1_coll.push_back(word_numbering);
1075 else if (dmb_h2_check[1])
1077 dmb_inst_crate=((buf[i+1]>>4)&0xFF);
1078 dmb_inst_slot=(buf[i+1]&0xF);
1079 dmb_h2_coll.push_back(word_numbering);
1080 if (dmb_h1_check[0])
1081 dmb_inst_l1a=((buf[i-4]&0x0FFF)+((buf[i-4+1]&0xFFF)<<12));
1082 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i %s %i",
1083 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1084 sign1,dmb_common,dmb_header2,sign1,dmb_common_crate,dmb_inst_crate,
1085 dmb_common_slot,dmb_inst_slot,dmb_common_l1a,dmb_inst_l1a);
1093 else if (ddu_tr1_check[1])
1095 ddu_inst_i = ddu_h1_n_coll.size();
1098 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1101 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",
1102 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail1);
1103 ddu_t1_coll.push_back(word_numbering);
1109 else if (alct_h1_check[1])
1111 alct_start=word_numbering;
1112 alct_inst_l1a=(buf[i+2]&0x0FFF);
1113 alct_l1a_coll.push_back(alct_inst_l1a);
1114 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s %s %i",
1115 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1116 sign1,alct_common,alct_header1,sign1,dmb_common_l1a,alct_inst_l1a);
1117 alct_h1_coll.push_back(word_numbering);
1123 else if ((alct_h1_check[0])&&(alct_h2_check[2]))
1125 alct_inst_bxn=(buf[
i]&0x0FFF);
1126 alct_bxn_coll.push_back(alct_inst_bxn);
1127 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i",
1128 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1129 sign1,alct_common,alct_header2,sign1,alct_common_bxn,alct_inst_bxn);
1130 alct_h2_coll.push_back(word_numbering);
1137 else if (alct_tr1_check[1])
1139 alct_stop=word_numbering;
1140 if ((alct_start!=0)&&(alct_stop!=0)&&(alct_stop>alct_start))
1142 alct_inst_wcnt2=4*(alct_stop-alct_start+1);
1143 alct_wcnt2_coll.push_back(alct_inst_wcnt2);
1144 alct_wcnt2_id_coll.push_back(alct_start);
1146 alct_inst_wcnt1=(buf[i+3]&0x7FF);
1147 alct_wcnt1_coll.push_back(alct_inst_wcnt1);
1148 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i",
1149 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1150 sign1,alct_common,alct_tr1,sign1,alct_common_wcnt1,alct_inst_wcnt1,
1151 alct_common_wcnt2,alct_inst_wcnt2);
1152 alct_t1_coll.push_back(word_numbering);
1162 else if((ddu_h2_h1)&&(tempbuf_short[0]==ddu_trailer3_bit[0])){
1164 ddu_inst_i = ddu_h1_n_coll.size();
1167 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1170 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",
1171 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail3);
1172 ddu_t3_coll.push_back(word_numbering);
1177 else if ((ddu_tr1_check[0])&&(tempbuf_short[0]!=ddu_trailer3_bit[0]))
1180 ddu_inst_i = ddu_h1_n_coll.size();
1183 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1186 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s",
1187 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,ddu_trail2);
1188 ddu_t2_coll.push_back(word_numbering);
1194 else if (dmb_tr1_check[1])
1196 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s",
1197 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,dmb_common,dmb_tr1);
1198 dmb_t1_coll.push_back(word_numbering);
1204 else if (dmb_tr2_check[1])
1206 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s",
1207 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,dmb_common,dmb_tr2);
1208 dmb_t2_coll.push_back(word_numbering);
1213 else if (tmb_h1_check[1])
1215 tmb_start=word_numbering;
1216 tmb_inst_l1a=(buf[i+2]&0x000F);
1217 tmb_l1a_coll.push_back(tmb_inst_l1a);
1218 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i",
1219 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,tmb_common,tmb_header1,
1220 sign1,dmb_common_l1a,tmb_inst_l1a);
1221 tmb_h1_coll.push_back(word_numbering);
1226 else if (tmb_tr1_check[1])
1228 tmb_stop=word_numbering;
1229 if ((tmb_start!=0)&&(tmb_stop!=0)&&(tmb_stop>tmb_start))
1231 tmb_inst_wcnt2=4*(tmb_stop-tmb_start+1);
1232 tmb_wcnt2_coll.push_back(tmb_inst_wcnt2);
1234 tmb_inst_wcnt1=(buf[i+3]&0x7FF);
1235 tmb_wcnt1_coll.push_back(tmb_inst_wcnt1);
1236 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s%s %i %s %i",
1237 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1238 sign1,tmb_common,tmb_tr1,sign1,alct_common_wcnt1,tmb_inst_wcnt1,
1239 alct_common_wcnt2,tmb_inst_wcnt2);
1240 tmb_t1_coll.push_back(word_numbering);
1246 else if (cfeb_tr1_check[1])
1249 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s%s %s %i",
1250 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],
1251 sign1,cfeb_common,cfeb_tr1,sign1,cfeb_common_sample,cfeb_sample);
1252 cfeb_t1_coll.push_back(word_numbering);
1257 else if (cfeb_b_check[1])
1259 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s %s",
1260 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,cfeb_common,cfeb_b);
1267 else if (ddu_tr1_bad_check[1])
1269 ddu_inst_i = ddu_h1_n_coll.size();
1270 ddu_inst_n=ddu_h1_n_coll[ddu_inst_i-1];
1271 sprintf(tempbuf1,
"%6i %04x %04x %04x %04x%s%s%i %s %s",
1272 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i],sign1,ddu_common,ddu_inst_n,
1273 ddu_trail1,ddu_tr1_err_common);
1278 else if (extraction&&(!ddu_h1_check)&&(!dcc_check))
1282 sprintf(tempbuf,
"%6i %04x %04x %04x %04x",
1283 word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i]);
1289 std::cout <<
"..................................................." << std::endl;
1294 else if ((!ddu_h1_check)&&(!dcc_check))
1296 sprintf(tempbuf,
"%6i %04x %04x %04x %04x",word_numbering,buf[i+3],buf[i+2],buf[i+1],buf[i]);
1305 std::cout <<
"********************************************************************************" <<
1306 std::endl << std::endl;
1308 std::cout <<
"For complete output turn off VisualFEDShort in muonCSCDigis configuration file." << std::endl;
1309 std::cout <<
"********************************************************************************" <<
1310 std::endl << std::endl;
1314 std::cout << ddu_h1_coll.size() <<
" "<< ddu_common <<
" "<<ddu_header1 <<
" "<<
"found" << std::endl;
1319 for (
unsigned int k=0;
k<ddu_h1_coll.size(); ++
k)
1326 std::cout <<
"Line: " <<
" " << ddu_h1_coll[
k] <<
" " << sign1 <<
" " <<
1327 ddu_common <<
" " << ddu_h1_n_coll[
k] <<
" " << dmb_common_l1a <<
" " << ddu_l1a_coll[
k] <<
" " <<
1328 alct_common_bxn <<
" " << ddu_bxn_coll[
k] << std::endl;
1333 std::cout <<
"||||||||||||||||||||" << std::endl;
1335 std::cout << ddu_h2_coll.size() <<
" "<< ddu_common <<
" "<<ddu_header2 <<
" "<<
"found" << std::endl;
1336 for (
unsigned int k=0;
k<ddu_h2_coll.size(); ++
k)
1337 std::cout <<
"Line: " << ddu_h2_coll[
k] << std::endl;
1339 std::cout <<
"||||||||||||||||||||" << std::endl;
1341 std::cout << ddu_h3_coll.size() <<
" "<< ddu_common <<
" "<<ddu_header3 <<
" "<<
"found" << std::endl;
1342 for (
unsigned int k=0;
k<ddu_h3_coll.size(); ++
k)
1343 std::cout <<
"Line: " << ddu_h3_coll[
k] << std::endl;
1345 std::cout <<
"||||||||||||||||||||" << std::endl;
1347 std::cout << ddu_t1_coll.size() <<
" "<< ddu_common <<
" "<<ddu_trail1 <<
" "<<
"found" << std::endl;
1348 for (
unsigned int k=0;
k<ddu_t1_coll.size(); ++
k)
1349 std::cout <<
"Line: " << ddu_t1_coll[
k] << std::endl;
1351 std::cout <<
"||||||||||||||||||||" << std::endl;
1353 std::cout << ddu_t2_coll.size() <<
" "<< ddu_common <<
" "<<ddu_trail2 <<
" "<<
"found" << std::endl;
1354 for (
unsigned int k=0;
k<ddu_t2_coll.size(); ++
k)
1355 std::cout <<
"Line: " << ddu_t2_coll[
k] << std::endl;
1357 std::cout <<
"||||||||||||||||||||" << std::endl;
1359 std::cout << ddu_t3_coll.size() <<
" "<< ddu_common <<
" "<<ddu_trail3 <<
" "<<
"found" << std::endl;
1360 for (
unsigned int k=0;
k<ddu_t3_coll.size(); ++
k)
1361 std::cout <<
"Line: " << ddu_t3_coll[
k] << std::endl;
1363 std::cout <<
"||||||||||||||||||||" << std::endl;
1365 std::cout << dmb_h1_coll.size() <<
" "<< dmb_common <<
" "<<dmb_header1 <<
" "<<
"found" << std::endl;
1367 for (
unsigned int k=0;
k<dmb_h1_coll.size(); ++
k)
1374 std::cout <<
"Line: " <<
" " << dmb_h1_coll[
k] <<
" " << sign1 << dmb_common
1375 <<
" " << dmb_common_crate <<
" " << dmb_crate_coll[
k] <<
" " << dmb_common_slot <<
" " <<
1376 dmb_slot_coll[
k] <<
" " << dmb_common_l1a <<
" " << dmb_l1a_coll[
k] << std::endl;
1379 std::cout <<
"||||||||||||||||||||" << std::endl;
1381 std::cout << dmb_h2_coll.size() <<
" "<< dmb_common <<
" "<<dmb_header2 <<
" "<<
"found" << std::endl;
1382 for (
unsigned int k=0;
k<dmb_h2_coll.size(); ++
k)
1383 std::cout <<
"Line: " << dmb_h2_coll[
k] << std::endl;
1385 std::cout <<
"||||||||||||||||||||" << std::endl;
1387 std::cout << dmb_t1_coll.size() <<
" "<< dmb_common <<
" "<<dmb_tr1 <<
" "<<
"found" << std::endl;
1388 for (
unsigned int k=0;
k<dmb_t1_coll.size(); ++
k)
1389 std::cout <<
"Line: " << dmb_t1_coll[
k] << std::endl;
1391 std::cout <<
"||||||||||||||||||||" << std::endl;
1393 std::cout << dmb_t2_coll.size() <<
" "<< dmb_common <<
" "<<dmb_tr2 <<
" "<<
"found" << std::endl;
1394 for (
unsigned int k=0;
k<dmb_t2_coll.size(); ++
k)
1395 std::cout <<
"Line: " << dmb_t2_coll[
k] << std::endl;
1397 std::cout <<
"||||||||||||||||||||" << std::endl;
1399 std::cout << alct_h1_coll.size() <<
" "<< alct_common <<
" "<<alct_header1 <<
" "<<
"found" << std::endl;
1400 for (
unsigned int k=0;
k<alct_h1_coll.size(); ++
k)
1409 alct_h1_coll[
k] <<
" " << sign1 <<
" " << alct_common <<
" " <<
1410 dmb_common_l1a <<
" " << alct_l1a_coll[
k] << std::endl;
1414 std::cout <<
"||||||||||||||||||||" << std::endl;
1416 std::cout << alct_h2_coll.size() <<
" "<< alct_common <<
" "<<alct_header2 <<
" "<<
"found" << std::endl;
1417 for (
unsigned int k=0;
k<alct_h2_coll.size(); ++
k)
1426 alct_h1_coll[
k] <<
" " << sign1 <<
" " << alct_common <<
" " <<
1427 alct_common_bxn <<
" " << alct_bxn_coll[
k] << std::endl;
1431 std::cout <<
"||||||||||||||||||||" << std::endl;
1433 std::cout << alct_t1_coll.size() <<
" "<< alct_common <<
" "<<alct_tr1 <<
" "<<
"found" << std::endl;
1434 for (
unsigned int k=0;
k<alct_t1_coll.size(); ++
k)
1442 std::cout <<
"Line: " <<
" " << alct_t1_coll[
k] <<
" " << sign1 <<
" " << alct_common <<
" " <<
1443 alct_common_wcnt1 <<
" " << alct_wcnt1_coll[
k] <<
" " << alct_common_wcnt2 <<
" ";
1444 if (alct_wcnt2_coll.size()>0)
1446 std::cout << alct_wcnt2_coll[
k] << std::endl;
1450 std::cout <<
"Undefined (ALCT Header is not found) " << std::endl;
1455 std::cout <<
"||||||||||||||||||||" << std::endl;
1457 std::cout << tmb_h1_coll.size() <<
" "<< tmb_common <<
" "<<tmb_header1 <<
" "<<
"found" << std::endl;
1458 for (
unsigned int k=0;
k<tmb_h1_coll.size(); ++
k)
1466 std::cout <<
"Line: " <<
" " << tmb_h1_coll[
k] <<
" " << sign1 <<
" " << tmb_common <<
" " <<
1467 dmb_common_l1a <<
" " << tmb_l1a_coll[
k] << std::endl;
1471 std::cout <<
"||||||||||||||||||||" << std::endl;
1473 std::cout << tmb_t1_coll.size() <<
" "<< tmb_common <<
" "<<tmb_tr1 <<
" "<<
"found" << std::endl;
1474 for (
unsigned int k=0;
k<tmb_t1_coll.size(); ++
k)
1482 std::cout <<
"Line: " <<
" " << tmb_t1_coll[
k] <<
" " << sign1 <<
" " << tmb_common <<
" " <<
1483 alct_common_wcnt1 <<
" " << tmb_wcnt1_coll[
k] <<
" " << alct_common_wcnt2 <<
" " << tmb_wcnt2_coll[
k]
1489 std::cout <<
"||||||||||||||||||||" << std::endl;
1491 std::cout << cfeb_t1_coll.size() <<
" "<< cfeb_common <<
" "<<cfeb_tr1 <<
" "<<
"found" << std::endl;
1492 for (
unsigned int k=0;
k<cfeb_t1_coll.size(); ++
k)
1493 std::cout <<
"Line: " << cfeb_t1_coll[
k] << std::endl;
1494 std::cout <<
"********************************************************************************" << std::endl;
T getParameter(std::string const &) const
EventNumber_t event() const
void crcCFEB(bool enable)
T getUntrackedParameter(std::string const &, T const &) const
bool SuppressZeroLCT
Suppress zeros LCTs.
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
static void setDebug(bool value)
void modeDDU(bool enable)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
CSCDetId detId(int vme, int dmb, int cfeb, int layer=0) const
int ddu(const CSCDetId &) const
ddu id for given DetId
CSCMonitorInterface * monitor
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.
void produce(edm::Event &e, const edm::EventSetup &c)
Produce digis out of raw data.
uint32_t rawId() const
get the raw id
virtual void process(CSCDCCExaminer *examiner, CSCDCCEventData *dccData)=0
static void setDebug(const bool value)
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.
static void setDebug(bool value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
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
static void setDebug(const bool value)
ExaminerMaskType getMask() const
void setComment(std::string const &value)
edm::EDGetTokenT< FEDRawDataCollection > i_token
Token for consumes interface & access to data.
unsigned int examinerMask
T const * product() const
bool useSelectiveUnpacking
void add(std::string const &label, ParameterSetDescription const &psetDescription)
int32_t check(const uint16_t *&buffer, int32_t length)
std::map< CSCIdType, ExaminerStatusType > payloadDetailed(void) const
char data[epos_bytes_allocation]
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
CSCDCCUnpacker(const edm::ParameterSet &pset)
Constructor.
std::map< DDUIdType, ExaminerStatusType > errorsDetailedDDU(void) const
virtual ~CSCDCCUnpacker()
Destructor.
void setMask(ExaminerMaskType mask)
static void setDebug(const bool value)
static void setDebug(bool debugValue)