101 if (gtfeBlockData == gtfeBlockEmul) {
102 m_myCoutStream <<
"\nData and emulated GTFE blocks: identical.\n";
105 m_myCoutStream <<
"\nData and emulated GTFE blocks: different.\n";
120 const uint16_t boardIdData = gtfeBlockData.
boardId();
121 const uint16_t boardIdEmul = gtfeBlockEmul.
boardId();
123 if (boardIdData == boardIdEmul) {
125 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
131 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
133 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
140 const uint16_t recordLengthData = gtfeBlockData.
recordLength();
141 const uint16_t recordLengthEmul = gtfeBlockEmul.
recordLength();
143 if (recordLengthData == recordLengthEmul) {
144 m_myCoutStream <<
"\nData and emulated GTFE recordLength identical.";
149 m_myCoutStream <<
"\nData and emulated GTFE recordLength different.";
150 m_myCoutStream <<
"\n Data: recordLength() = " << recordLengthData;
151 m_myCoutStream <<
"\n Emul: recordLength() = " << recordLengthEmul;
157 const uint16_t bxNrData = gtfeBlockData.
bxNr();
158 const uint16_t bxNrEmul = gtfeBlockEmul.
bxNr();
160 if (bxNrData == bxNrEmul) {
174 const uint32_t setupVersionData = gtfeBlockData.
setupVersion();
175 const uint32_t setupVersionEmul = gtfeBlockEmul.
setupVersion();
177 if (setupVersionData == setupVersionEmul) {
178 m_myCoutStream <<
"\nData and emulated GTFE setupVersion identical.";
183 m_myCoutStream <<
"\nData and emulated GTFE setupVersion different.";
184 m_myCoutStream <<
"\n Data: setupVersion() = " << setupVersionData;
185 m_myCoutStream <<
"\n Emul: setupVersion() = " << setupVersionEmul;
191 const uint16_t activeBoardsData = gtfeBlockData.
activeBoards();
192 const uint16_t activeBoardsEmul = gtfeBlockEmul.
activeBoards();
194 if (activeBoardsData == activeBoardsEmul) {
195 m_myCoutStream <<
"\nData and emulated GTFE activeBoards identical.";
196 m_myCoutStream <<
"\n activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
197 << activeBoardsData << std::setfill(
' ') <<
std::dec;
201 m_myCoutStream <<
"\nData and emulated GTFE activeBoards different.";
202 m_myCoutStream <<
"\n Data: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
203 << activeBoardsData << std::setfill(
' ') <<
std::dec;
204 m_myCoutStream <<
"\n Emul: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
205 << activeBoardsEmul << std::setfill(
' ') <<
std::dec;
211 const uint32_t totalTriggerNrData = gtfeBlockData.
totalTriggerNr();
212 const uint32_t totalTriggerNrEmul = gtfeBlockEmul.
totalTriggerNr();
214 if (totalTriggerNrData == totalTriggerNrEmul) {
215 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr identical.";
220 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr different.";
221 m_myCoutStream <<
"\n Data: totalTriggerNr() = " << totalTriggerNrData;
222 m_myCoutStream <<
"\n Emul: totalTriggerNr() = " << totalTriggerNrEmul;
239 int PhysicsPartition = 0;
249 if (fdlBlockData == fdlBlockEmul) {
250 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: identical.\n";
254 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: different.\n";
270 const int bxInEventData = fdlBlockData.
bxInEvent();
271 const int bxInEventEmul = fdlBlockEmul.
bxInEvent();
273 bool matchBxInEvent =
false;
275 if (bxInEventData == bxInEventEmul) {
276 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent identical.";
279 matchBxInEvent =
true;
282 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent different.";
295 bool validBxInEvent =
false;
298 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;
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];
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)) {
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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);
static const std::string kSharedResource
edm::ESGetToken< L1GtTriggerMask, L1GtTriggerMaskTechTrigRcd > m_l1GtTmTechToken
const cms_uint16_t boardId() const
get/set board ID
const std::vector< unsigned int > & gtTriggerMask() const
get the trigger mask
TH1F * m_gtfeDataEmul
histograms
virtual void print(std::ostream &myCout) const
pretty print the content of a L1GtfeWord
void printGtDecisionWord(std::ostream &myCout) const
T getParameter(std::string const &) const
TH1F * m_fdlEmulTechDecision[TotalBxInEvent][2]
virtual void compareTCS(const edm::Event &, const edm::EventSetup &, const L1TcsWord &, const L1TcsWord &)
compare the TCS board
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
const int bxInEvent() const
get/set bunch cross in the GT event record
TH1F * m_fdlDataEmul[TotalBxInEvent][2]
FDL (0 for DAQ, 1 for EVM record)
const cms_uint16_t aData(int iA) const
get/set A_DATA_CH_IA
TH1F * m_fdlDataTechDecision_Err[2]
const DecisionWordExtended & gtDecisionWordExtended() const
get/set extended algorithms bits (extended decision word)
TH1F * m_fdlEmulAlgoDecision[TotalBxInEvent][2]
std::vector< unsigned int > m_triggerMaskTechTrig
TH1F * m_fdlEmulAlgoDecision_Err[2]
static const unsigned int NumberTechnicalTriggers
const cms_uint32_t setupVersion() const
get/set setup version
const cms_uint32_t totalTriggerNr() const
get/set total number of L1A sent since start of run
const cms_uint16_t noAlgo() const
get/set NoAlgo
virtual void compareDaqRecord(const edm::Event &, const edm::EventSetup &)
L1 GT DAQ record comparison.
const L1GtfeWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
const int bxInEvent() const
get/set bunch cross in the GT event record
TH1F * m_fdlDataEmulAlgoDecisionMask[TotalBxInEvent][2]
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
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]
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in FDL
const cms_uint16_t bData(int iB) const
get/set B_DATA_CH_IB
int m_nrDataEventError
counters
const cms_uint16_t bxNr() const
get/set bunch cross number of the actual bx
const cms_uint16_t recordLength() const
get/set record length for alternative 0
const cms_uint16_t boardId() const
get/set board ID
T * make(const Args &...args) const
make new ROOT object
TH1F * m_fdlDataEmulTechDecision_Err[2]
std::vector< bool > DecisionWordExtended
void print(std::ostream &myCout) const
pretty print
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
std::vector< bool > DecisionWord
typedefs
TH1F * m_fdlDataEmulTechDecisionMask[TotalBxInEvent][2]
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
void printGtDecisionWordExtended(std::ostream &myCout) const
void bookHistograms()
book all histograms for the module
std::ostringstream m_myCoutStream
TH1F * m_fdlDataAlgoDecisionMask[TotalBxInEvent][2]
const DecisionWord & gtDecisionWord() const
get/set/print algorithms bits (decision word)
TH1F * m_fdlEmulTechDecisionMask[TotalBxInEvent][2]
const L1GtTriggerMenu * m_l1GtMenu
trigger menu
std::vector< unsigned int > m_triggerMaskAlgoTrig
TH1F * m_fdlDataEmulTechDecision[TotalBxInEvent][2]
const L1GtTriggerMask * m_l1GtTmAlgo
trigger masks
static constexpr int TotalBxInEvent
Log< level::Info, false > LogInfo
edm::ESGetToken< L1GtTriggerMask, L1GtTriggerMaskAlgoTrigRcd > m_l1GtTmAlgoToken
TH1F * m_fdlDataAlgoDecision[TotalBxInEvent][2]
TH1F * m_fdlEmulTechDecision_Err[2]
void endJob() override
end of job
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in PSB
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
static const int NumberBData
const TechnicalTriggerWord & gtTechnicalTriggerWord() const
get/set technical trigger bits
TH1F * m_fdlDataEmulAlgoDecision[TotalBxInEvent][2]
const cms_uint16_t bxNr() const
get/set BxNr - bunch cross number of the actual bx
virtual void compareGt_Gct(const edm::Event &, const edm::EventSetup &)
edm::InputTag m_l1GtDataInputTag
input tag for the L1 GT hardware DAQ/EVM record
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
static const int NumberAData
const cms_uint16_t boardId() const
get/set board ID
unsigned long long m_l1GtMenuCacheID
TH1F * m_fdlDataTechDecisionMask[TotalBxInEvent][2]
virtual void compareFDL(const edm::Event &, const edm::EventSetup &, const L1GtFdlWord &, const L1GtFdlWord &, const int)
compare the FDL board
virtual void compareEvmRecord(const edm::Event &, const edm::EventSetup &)
L1 GT EVM record comparison.
void printGtTechnicalTriggerWord(std::ostream &myCout) const
const cms_uint16_t finalOR() const
get/set "Final OR" bits
void print(std::ostream &myCout) const
pretty print the content of a L1GtFdlWord
TH1F * m_fdlDataEmulAlgoDecision_Err[2]
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
Log< level::Warning, false > LogWarning
TH1F * m_fdlDataEmul_Err[2]
const L1GtTriggerMask * m_l1GtTmTech
TH1F * m_fdlDataTechDecision[TotalBxInEvent][2]
unsigned long long m_l1GtTmAlgoCacheID
TH1F * m_fdlDataAlgoDecision_Err[2]
const std::vector< L1GtPsbWord > gtPsbVector() const
get the vector of L1GtPsbWord
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
edm::ESGetToken< L1GtTriggerMenu, L1GtTriggerMenuRcd > m_l1GtMenuToken
PSB.