60 <<
"\nInput tag for the L1 GT emulator records: " << m_l1GtEmulInputTag
61 <<
"\nInput tag for the L1 GCT hardware record: " << m_l1GctDataInputTag
95 if (gtfeBlockData == gtfeBlockEmul) {
114 const uint16_t boardIdData = gtfeBlockData.
boardId();
115 const uint16_t boardIdEmul = gtfeBlockEmul.
boardId();
117 if (boardIdData == boardIdEmul) {
119 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
125 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
127 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
134 const uint16_t recordLengthData = gtfeBlockData.
recordLength();
135 const uint16_t recordLengthEmul = gtfeBlockEmul.
recordLength();
137 if (recordLengthData == recordLengthEmul) {
138 m_myCoutStream <<
"\nData and emulated GTFE recordLength identical.";
143 m_myCoutStream <<
"\nData and emulated GTFE recordLength different.";
144 m_myCoutStream <<
"\n Data: recordLength() = " << recordLengthData;
145 m_myCoutStream <<
"\n Emul: recordLength() = " << recordLengthEmul;
151 const uint16_t bxNrData = gtfeBlockData.
bxNr();
152 const uint16_t bxNrEmul = gtfeBlockEmul.
bxNr();
154 if (bxNrData == bxNrEmul) {
168 const uint32_t setupVersionData = gtfeBlockData.
setupVersion();
169 const uint32_t setupVersionEmul = gtfeBlockEmul.
setupVersion();
171 if (setupVersionData == setupVersionEmul) {
172 m_myCoutStream <<
"\nData and emulated GTFE setupVersion identical.";
177 m_myCoutStream <<
"\nData and emulated GTFE setupVersion different.";
178 m_myCoutStream <<
"\n Data: setupVersion() = " << setupVersionData;
179 m_myCoutStream <<
"\n Emul: setupVersion() = " << setupVersionEmul;
185 const uint16_t activeBoardsData = gtfeBlockData.
activeBoards();
186 const uint16_t activeBoardsEmul = gtfeBlockEmul.
activeBoards();
188 if (activeBoardsData == activeBoardsEmul) {
189 m_myCoutStream <<
"\nData and emulated GTFE activeBoards identical.";
190 m_myCoutStream <<
"\n activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
191 << activeBoardsData << std::setfill(
' ') <<
std::dec;
195 m_myCoutStream <<
"\nData and emulated GTFE activeBoards different.";
196 m_myCoutStream <<
"\n Data: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
197 << activeBoardsData << std::setfill(
' ') <<
std::dec;
198 m_myCoutStream <<
"\n Emul: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
199 << activeBoardsEmul << std::setfill(
' ') <<
std::dec;
205 const uint32_t totalTriggerNrData = gtfeBlockData.
totalTriggerNr();
206 const uint32_t totalTriggerNrEmul = gtfeBlockEmul.
totalTriggerNr();
208 if (totalTriggerNrData == totalTriggerNrEmul) {
209 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr identical.";
214 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr different.";
215 m_myCoutStream <<
"\n Data: totalTriggerNr() = " << totalTriggerNrData;
216 m_myCoutStream <<
"\n Emul: totalTriggerNr() = " << totalTriggerNrEmul;
233 int PhysicsPartition = 0;
243 if (fdlBlockData == fdlBlockEmul) {
244 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: identical.\n";
248 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: different.\n";
264 const int bxInEventData = fdlBlockData.
bxInEvent();
265 const int bxInEventEmul = fdlBlockEmul.
bxInEvent();
267 bool matchBxInEvent =
false;
269 if (bxInEventData == bxInEventEmul) {
270 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent identical.";
273 matchBxInEvent =
true;
276 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent different.";
289 bool validBxInEvent =
false;
292 validBxInEvent =
true;
340 for (
CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
342 const char* algName = aName.c_str();
343 int algBitNumber = (itAlgo->second).algoBitNumber();
356 const uint16_t boardIdData = fdlBlockData.
boardId();
357 const uint16_t boardIdEmul = fdlBlockEmul.
boardId();
359 if (boardIdData == boardIdEmul) {
360 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL boardId identical.";
361 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
366 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL boardId different.";
367 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
369 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
373 if (matchBxInEvent && validBxInEvent) {
385 const uint16_t bxNrData = fdlBlockData.
bxNr();
386 const uint16_t bxNrEmul = fdlBlockEmul.
bxNr();
388 if (bxNrData == bxNrEmul) {
389 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxNr identical.";
394 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxNr different.";
399 if (matchBxInEvent && validBxInEvent) {
411 const uint32_t eventNrData = fdlBlockData.
eventNr();
412 const uint32_t eventNrEmul = fdlBlockEmul.
eventNr();
414 if (eventNrData == eventNrEmul) {
415 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL eventNr identical.";
420 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL eventNr different.";
425 if (matchBxInEvent && validBxInEvent) {
440 int nTechBits = gtTechnicalTriggerWordData.size();
445 unsigned int triggerMask = 0;
446 unsigned int bitValue = 0;
448 if (matchBxInEvent && validBxInEvent) {
449 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
452 if (gtTechnicalTriggerWordData[iBit]) {
455 bitValue = (triggerMask) ? 0 : 1;
456 gtTechnicalTriggerWordDataMask[iBit] = bitValue;
462 if (gtTechnicalTriggerWordEmul.at(iBit)) {
465 bitValue = (triggerMask) ? 0 : 1;
466 gtTechnicalTriggerWordEmulMask[iBit] = bitValue;
473 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
474 if (gtTechnicalTriggerWordData[iBit]) {
478 if (gtTechnicalTriggerWordEmul.at(iBit)) {
484 if (gtTechnicalTriggerWordData == gtTechnicalTriggerWordEmul) {
485 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord identical.\n";
490 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord different.";
497 if (matchBxInEvent && validBxInEvent) {
503 if (matchBxInEvent && validBxInEvent) {
504 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
505 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
510 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
511 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
522 if (gtTechnicalTriggerWordDataMask == gtTechnicalTriggerWordEmulMask) {
523 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord after mask identical.\n";
527 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord after mask different.";
532 if (matchBxInEvent && validBxInEvent) {
538 if (matchBxInEvent && validBxInEvent) {
539 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
540 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
555 int nAlgoBits = gtDecisionWordData.size();
560 if (matchBxInEvent && validBxInEvent) {
561 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
564 if (gtDecisionWordData[iBit]) {
567 bitValue = (triggerMask) ? 0 : 1;
568 gtDecisionWordDataMask[iBit] = bitValue;
574 if (gtDecisionWordEmul.at(iBit)) {
577 bitValue = (triggerMask) ? 0 : 1;
578 gtDecisionWordEmulMask[iBit] = bitValue;
585 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
586 if (gtDecisionWordData[iBit]) {
591 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
592 if (gtDecisionWordEmul.at(iBit)) {
598 if (gtDecisionWordData == gtDecisionWordEmul) {
599 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord identical.";
604 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord different.";
611 if (matchBxInEvent && validBxInEvent) {
617 if (matchBxInEvent && validBxInEvent) {
618 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
619 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
624 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
625 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
632 if (gtDecisionWordDataMask == gtDecisionWordEmulMask) {
633 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord after mask identical.";
637 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord after mask different.";
642 if (matchBxInEvent && validBxInEvent) {
648 if (matchBxInEvent && validBxInEvent) {
649 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
650 if (gtDecisionWordDataMask[iBit] != gtDecisionWordEmulMask.at(iBit)) {
661 if (gtDecisionWordExtendedData == gtDecisionWordExtendedEmul) {
662 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWordExtended identical.\n";
667 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWordExtended different.\n";
674 if (matchBxInEvent && validBxInEvent) {
682 const uint16_t noAlgoData = fdlBlockData.
noAlgo();
683 const uint16_t noAlgoEmul = fdlBlockEmul.
noAlgo();
685 if (noAlgoData == noAlgoEmul) {
686 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL noAlgo identical.";
691 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL noAlgo different.";
696 if (matchBxInEvent && validBxInEvent) {
704 const uint16_t finalORData = fdlBlockData.
finalOR();
705 const uint16_t finalOREmul = fdlBlockEmul.
finalOR();
707 if (finalORData == finalOREmul) {
708 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR identical.";
709 m_myCoutStream <<
"\n finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalORData
714 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR different.";
715 m_myCoutStream <<
"\n Data: finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalORData
717 m_myCoutStream <<
"\n Emul: finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalOREmul
721 if (matchBxInEvent && validBxInEvent) {
729 const int finalORPhysData = finalORData & (1 << PhysicsPartition);
730 const int finalORPhysEmul = finalOREmul & (1 << PhysicsPartition);
732 if (finalORPhysData == finalORPhysEmul) {
733 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR for the physics partition identical.";
738 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR for the physics partition different.";
743 if (matchBxInEvent && validBxInEvent) {
751 const uint16_t localBxNrData = fdlBlockData.
localBxNr();
752 const uint16_t localBxNrEmul = fdlBlockEmul.
localBxNr();
754 if (localBxNrData == localBxNrEmul) {
755 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL localBxNr identical.";
760 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL localBxNr different.";
765 if (matchBxInEvent && validBxInEvent) {
782 if (psbBlockData == psbBlockEmul) {
802 const uint16_t boardIdData = psbBlockData.
boardId();
803 const uint16_t boardIdEmul = psbBlockEmul.
boardId();
805 if (boardIdData == boardIdEmul) {
807 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
813 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
815 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
821 const int bxInEventData = psbBlockData.
bxInEvent();
822 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
824 if (bxInEventData == bxInEventEmul) {
837 const uint16_t bxNrData = psbBlockData.
bxNr();
838 const uint16_t bxNrEmul = psbBlockEmul.
bxNr();
840 if (bxNrData == bxNrEmul) {
853 const uint32_t eventNrData = psbBlockData.
eventNr();
854 const uint32_t eventNrEmul = psbBlockEmul.
eventNr();
856 if (eventNrData == eventNrEmul) {
872 for (
int iA = 0; iA < psbBlockData.
NumberAData; ++iA) {
873 valData = psbBlockData.
aData(iA);
874 valEmul = psbBlockEmul.
aData(iA);
876 if (valData == valEmul) {
877 m_myCoutStream <<
"\nData and emulated PSB aData(" << iA <<
") identical.";
878 m_myCoutStream <<
"\n aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
883 m_myCoutStream <<
"\nData and emulated PSB aData(" << iA <<
") different.";
884 m_myCoutStream <<
"\n Data: aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
886 m_myCoutStream <<
"\n Emul: aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valEmul
893 for (
int iB = 0; iB < psbBlockData.
NumberBData; ++iB) {
894 valData = psbBlockData.
bData(iB);
895 valEmul = psbBlockEmul.
bData(iB);
897 if (valData == valEmul) {
898 m_myCoutStream <<
"\nData and emulated PSB bData(" << iB <<
") identical.";
899 m_myCoutStream <<
"\n bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
904 m_myCoutStream <<
"\nData and emulated PSB bData(" << iB <<
") different.";
905 m_myCoutStream <<
"\n Data: bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
907 m_myCoutStream <<
"\n Emul: bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valEmul
914 const uint16_t localBxNrData = psbBlockData.
localBxNr();
915 const uint16_t localBxNrEmul = psbBlockEmul.
localBxNr();
917 if (localBxNrData == localBxNrEmul) {
951 bool validData =
false;
953 if (!gtReadoutRecordData.
isValid()) {
963 bool validEmul =
false;
965 if (!gtReadoutRecordEmul.
isValid()) {
971 if ((!validData) || (!validEmul)) {
973 <<
"\n Valid data:" << validData <<
"\n Valid emulator:" << validEmul << std::endl;
977 const L1GtfeWord& gtfeBlockData = gtReadoutRecordData->gtfeWord();
978 const L1GtfeWord& gtfeBlockEmul = gtReadoutRecordEmul->gtfeWord();
980 compareGTFE(iEvent, evSetup, gtfeBlockData, gtfeBlockEmul);
983 const std::vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->gtFdlVector();
984 const std::vector<L1GtFdlWord>& gtFdlVectorEmul = gtReadoutRecordEmul->gtFdlVector();
986 int gtFdlVectorDataSize = gtFdlVectorData.size();
987 int gtFdlVectorEmulSize = gtFdlVectorEmul.size();
989 if (gtFdlVectorDataSize == gtFdlVectorEmulSize) {
990 m_myCoutStream <<
"\nData and emulated FDL vector size: identical.\n";
993 for (
int iFdl = 0; iFdl < gtFdlVectorDataSize; ++iFdl) {
994 const L1GtFdlWord& fdlBlockData = gtFdlVectorData[iFdl];
995 const L1GtFdlWord& fdlBlockEmul = gtFdlVectorEmul[iFdl];
997 compareFDL(iEvent, evSetup, fdlBlockData, fdlBlockEmul, iRec);
1000 m_myCoutStream <<
"\nData and emulated FDL vector size: different.\n";
1001 m_myCoutStream <<
" Data: size = " << gtFdlVectorDataSize << std::endl;
1002 m_myCoutStream <<
" Emul: size = " << gtFdlVectorEmulSize << std::endl;
1011 const std::vector<L1GtPsbWord>& gtPsbVectorData = gtReadoutRecordData->gtPsbVector();
1012 const std::vector<L1GtPsbWord>& gtPsbVectorEmul = gtReadoutRecordEmul->gtPsbVector();
1014 int gtPsbVectorDataSize = gtPsbVectorData.size();
1015 int gtPsbVectorEmulSize = gtPsbVectorEmul.size();
1017 if (gtPsbVectorDataSize == gtPsbVectorEmulSize) {
1018 m_myCoutStream <<
"\nData and emulated PSB vector size: identical.\n";
1021 m_myCoutStream <<
"\nData and emulated PSB vector size: different.\n";
1022 m_myCoutStream <<
" Data: size = " << gtPsbVectorDataSize << std::endl;
1023 m_myCoutStream <<
" Emul: size = " << gtPsbVectorEmulSize << std::endl;
1029 for (
int iPsb = 0; iPsb < gtPsbVectorDataSize; ++iPsb) {
1030 const L1GtPsbWord& psbBlockData = gtPsbVectorData[iPsb];
1031 const uint16_t boardIdData = psbBlockData.
boardId();
1032 const int bxInEventData = psbBlockData.
bxInEvent();
1037 bool foundPSB =
false;
1039 for (
int iPsbF = 0; iPsbF < gtPsbVectorEmulSize; ++iPsbF) {
1040 const L1GtPsbWord& psbBlockEmul = gtPsbVectorEmul[iPsbF];
1041 const uint16_t boardIdEmul = psbBlockEmul.
boardId();
1042 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
1044 if ((boardIdEmul == boardIdData) && (bxInEventData == bxInEventEmul)) {
1048 comparePSB(iEvent, evSetup, psbBlockData, psbBlockEmul);
1053 m_myCoutStream <<
"\nNo emulated PSB with boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
1054 << boardIdData << std::setfill(
' ') <<
std::dec <<
" and BxInEvent = " << bxInEventData
1097 m_gtfeDataEmul = gtfeHist.
make<TH1F>(
"gtfeDataEmul",
"GTFE data vs emul", 6, 0., 6.);
1113 for (
int iRec = 0; iRec < 2; ++iRec) {
1122 const char* histName;
1126 int iIndex = iHist - ((TotalBxInEvent + 1) / 2 - 1);
1127 int hIndex = (iIndex + 16) % 16;
1129 std::stringstream
ss;
1131 ss << std::uppercase << std::hex << hIndex;
1134 hName = recString +
"FdlDataEmul_" +
str;
1135 histName = hName.c_str();
1137 std::string hTitle =
"FDL data vs emul mismatch for BxInEvent = " +
str;
1138 const char* histTitle = hTitle.c_str();
1142 m_fdlDataEmul[iHist][iRec] = fdlHist.
make<TH1F>(histName, histTitle, 13, 0., 13.);
1143 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(1,
"BoardId");
1144 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(2,
"BxInEvent");
1145 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(3,
"BxNr");
1146 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(4,
"EventNr");
1147 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(5,
"TechTrigger");
1148 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(6,
"TechTriggerMask");
1149 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(7,
"AlgoTrigger");
1150 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(8,
"AlgoTriggerMask");
1151 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(9,
"AlgoExtend");
1152 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(10,
"NoAlgo");
1153 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(11,
"FinalORAllParts");
1154 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(12,
"FinalORPhysPart");
1155 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(13,
"LocalBxNr");
1159 hName = recString +
"FdlDataAlgoDecision_" +
str;
1160 histName = hName.c_str();
1162 hTitle =
"Data: algorithm decision word for BxInEvent = " +
str;
1163 histTitle = hTitle.c_str();
1166 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1169 hName = recString +
"FdlEmulAlgoDecision_" +
str;
1170 histName = hName.c_str();
1172 hTitle =
"Emul: algorithm decision word for BxInEvent = " +
str;
1173 histTitle = hTitle.c_str();
1176 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1180 hName = recString +
"FdlDataAlgoDecisionMask_" +
str;
1181 histName = hName.c_str();
1183 hTitle =
"Data, physics partition: algorithm decision word after mask for BxInEvent = " +
str;
1184 histTitle = hTitle.c_str();
1187 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1190 hName = recString +
"FdlEmulAlgoDecisionMask_" +
str;
1191 histName = hName.c_str();
1193 hTitle =
"Emul, physics partition: algorithm decision word after mask for BxInEvent = " +
str;
1194 histTitle = hTitle.c_str();
1197 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1200 hName = recString +
"FdlDataEmulAlgoDecision_" +
str;
1201 histName = hName.c_str();
1203 hTitle =
"Data vs emul: non-matching algorithm decision word for BxInEvent = " +
str;
1204 histTitle = hTitle.c_str();
1207 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1210 hName = recString +
"FdlDataEmulAlgoDecisionMask_" +
str;
1211 histName = hName.c_str();
1214 "Data vs emul, physics partition: non-matching algorithm decision word after mask for BxInEvent = " +
str;
1215 histTitle = hTitle.c_str();
1218 fdlHist.
make<TH1F>(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1222 hName = recString +
"FdlDataTechDecision_" +
str;
1223 histName = hName.c_str();
1225 hTitle =
"Data technical trigger decision word for BxInEvent = " +
str;
1226 histTitle = hTitle.c_str();
1229 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1232 hName = recString +
"FdlEmulTechDecision_" +
str;
1233 histName = hName.c_str();
1235 hTitle =
"Emul: technical trigger decision word for BxInEvent = " +
str;
1236 histTitle = hTitle.c_str();
1239 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1242 hName = recString +
"FdlDataTechDecisionMask_" +
str;
1243 histName = hName.c_str();
1245 hTitle =
"Data technical trigger decision word after mask for BxInEvent = " +
str;
1246 histTitle = hTitle.c_str();
1249 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1252 hName = recString +
"FdlEmulTechDecisionMask_" +
str;
1253 histName = hName.c_str();
1255 hTitle =
"Emul: technical trigger decision word after mask for BxInEvent = " +
str;
1256 histTitle = hTitle.c_str();
1259 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1262 hName = recString +
"FdlDataEmulTechDecision_" +
str;
1263 histName = hName.c_str();
1265 hTitle =
"Data vs emul: non-matching technical trigger decision word for BxInEvent = " +
str;
1266 histTitle = hTitle.c_str();
1269 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1271 hName = recString +
"FdlDataEmulTechDecisionMask_" +
str;
1272 histName = hName.c_str();
1274 hTitle =
"Data vs emul: non-matching technical trigger decision word after mask for BxInEvent = " +
str;
1275 histTitle = hTitle.c_str();
1278 fdlHist.
make<TH1F>(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
1281 hName = recString +
"FdlDataEmul_Err";
1282 histName = hName.c_str();
1284 m_fdlDataEmul_Err[iRec] = fdlHist.
make<TH1F>(histName,
"FDL data vs emul: non-matching BxInEvent", 13, 0., 13.);
1299 hName = recString +
"FdlDataAlgoDecision_Err";
1300 histName = hName.c_str();
1303 fdlHist.
make<TH1F>(histName,
1304 "Data: algorithm trigger decision word, non-matching BxInEvent",
1307 numberAlgoTriggers);
1310 hName = recString +
"FdlEmulAlgoDecision_Err";
1311 histName = hName.c_str();
1314 fdlHist.
make<TH1F>(histName,
1315 "Emul: algorithm trigger decision word, non-matching BxInEvent",
1318 numberAlgoTriggers);
1320 hName = recString +
"FdlDataEmulAlgoDecision_Err";
1321 histName = hName.c_str();
1324 fdlHist.
make<TH1F>(histName,
1325 "Data vs emul: algorithm trigger decision word, non-matching BxInEvent",
1328 numberAlgoTriggers);
1331 hName = recString +
"FdlDataTechDecision_Err";
1332 histName = hName.c_str();
1335 fdlHist.
make<TH1F>(histName,
1336 "Data: technical trigger decision word, non-matching BxInEvent",
1339 numberTechTriggers);
1341 hName = recString +
"FdlEmulTechDecision_Err";
1342 histName = hName.c_str();
1345 fdlHist.
make<TH1F>(histName,
1346 "Emul: technical trigger decision word, non-matching BxInEvent",
1349 numberTechTriggers);
1351 hName = recString +
"FdlDataEmulTechDecision_Err";
1352 histName = hName.c_str();
1355 fdlHist.
make<TH1F>(histName,
1356 "Data vs emul: technical trigger decision word, non-matching BxInEvent",
1359 numberTechTriggers);
const cms_uint16_t bData(int iB) const
get/set B_DATA_CH_IB
TH1F * m_gtfeDataEmul
histograms
const cms_uint16_t bxNr() const
get/set bunch cross number of the actual bx
const TechnicalTriggerWord & gtTechnicalTriggerWord() const
get/set technical trigger bits
const cms_uint16_t boardId() const
get/set board ID
const cms_uint16_t noAlgo() const
get/set NoAlgo
TH1F * m_fdlEmulTechDecision[TotalBxInEvent][2]
virtual void compareTCS(const edm::Event &, const edm::EventSetup &, const L1TcsWord &, const L1TcsWord &)
compare the TCS board
TH1F * m_fdlDataEmul[TotalBxInEvent][2]
FDL (0 for DAQ, 1 for EVM record)
TH1F * m_fdlDataTechDecision_Err[2]
virtual void print(std::ostream &myCout) const
pretty print the content of a L1GtfeWord
TH1F * m_fdlEmulAlgoDecision[TotalBxInEvent][2]
std::vector< unsigned int > m_triggerMaskTechTrig
TH1F * m_fdlEmulAlgoDecision_Err[2]
static const unsigned int NumberTechnicalTriggers
virtual void compareDaqRecord(const edm::Event &, const edm::EventSetup &)
L1 GT DAQ record comparison.
TH1F * m_fdlDataEmulAlgoDecisionMask[TotalBxInEvent][2]
unsigned long long m_l1GtTmTechCacheID
virtual void compareGTFE(const edm::Event &, const edm::EventSetup &, const L1GtfeWord &, const L1GtfeWord &)
compare the GTFE board
void analyze(const edm::Event &, const edm::EventSetup &) override
analyze each event
~L1GtDataEmulAnalyzer() override
L1GtDataEmulAnalyzer(const edm::ParameterSet &)
TH1F * m_fdlEmulAlgoDecisionMask[TotalBxInEvent][2]
int m_nrDataEventError
counters
const cms_uint16_t bxNr() const
get/set BxNr - bunch cross number of the actual bx
const cms_uint16_t boardId() const
get/set board ID
void printGtDecisionWord(std::ostream &myCout) const
const cms_uint16_t recordLength() const
get/set record length for alternative 0
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in FDL
TH1F * m_fdlDataEmulTechDecision_Err[2]
std::vector< bool > DecisionWordExtended
const cms_uint16_t aData(int iA) const
get/set A_DATA_CH_IA
const std::vector< unsigned int > & gtTriggerMask() const
get the trigger mask
std::vector< bool > DecisionWord
typedefs
TH1F * m_fdlDataEmulTechDecisionMask[TotalBxInEvent][2]
const int bxInEvent() const
get/set bunch cross in the GT event record
const cms_uint32_t totalTriggerNr() const
get/set total number of L1A sent since start of run
void printGtDecisionWordExtended(std::ostream &myCout) const
edm::InputTag m_l1GtEmulInputTag
input tag for the L1 GT emulator DAQ/EVM record
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
static const unsigned int NumberPhysTriggers
T * make(const Args &...args) const
make new ROOT object
void bookHistograms()
book all histograms for the module
std::ostringstream m_myCoutStream
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
TH1F * m_fdlDataAlgoDecisionMask[TotalBxInEvent][2]
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
TH1F * m_fdlEmulTechDecisionMask[TotalBxInEvent][2]
const L1GtTriggerMenu * m_l1GtMenu
trigger menu
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
std::vector< unsigned int > m_triggerMaskAlgoTrig
TH1F * m_fdlDataEmulTechDecision[TotalBxInEvent][2]
void print(std::ostream &myCout) const
pretty print the content of a L1GtFdlWord
void print(std::ostream &myCout) const
pretty print
const L1GtTriggerMask * m_l1GtTmAlgo
trigger masks
Log< level::Info, false > LogInfo
const cms_uint16_t boardId() const
get/set board ID
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in PSB
TH1F * m_fdlDataAlgoDecision[TotalBxInEvent][2]
TH1F * m_fdlEmulTechDecision_Err[2]
void endJob() override
end of job
static const int TotalBxInEvent
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
static const int NumberBData
T const * product() const
T getParameter(std::string const &) const
TH1F * m_fdlDataEmulAlgoDecision[TotalBxInEvent][2]
const int bxInEvent() const
get/set bunch cross in the GT event record
const DecisionWord & gtDecisionWord() const
get/set/print algorithms bits (decision word)
virtual void compareGt_Gct(const edm::Event &, const edm::EventSetup &)
edm::InputTag m_l1GtDataInputTag
input tag for the L1 GT hardware DAQ/EVM record
static const int NumberAData
unsigned long long m_l1GtMenuCacheID
TH1F * m_fdlDataTechDecisionMask[TotalBxInEvent][2]
void printGtTechnicalTriggerWord(std::ostream &myCout) const
virtual void compareFDL(const edm::Event &, const edm::EventSetup &, const L1GtFdlWord &, const L1GtFdlWord &, const int)
compare the FDL board
const cms_uint32_t setupVersion() const
get/set setup version
virtual void compareEvmRecord(const edm::Event &, const edm::EventSetup &)
L1 GT EVM record comparison.
TH1F * m_fdlDataEmulAlgoDecision_Err[2]
Log< level::Warning, false > LogWarning
const DecisionWordExtended & gtDecisionWordExtended() const
get/set extended algorithms bits (extended decision word)
TH1F * m_fdlDataEmul_Err[2]
const L1GtTriggerMask * m_l1GtTmTech
TH1F * m_fdlDataTechDecision[TotalBxInEvent][2]
unsigned long long m_l1GtTmAlgoCacheID
TH1F * m_fdlDataAlgoDecision_Err[2]
edm::InputTag m_l1GctDataInputTag
input tag for the L1 GCT hardware record
virtual void comparePSB(const edm::Event &, const edm::EventSetup &, const L1GtPsbWord &, const L1GtPsbWord &)
compare the PSB board
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
const cms_uint16_t finalOR() const
get/set "Final OR" bits