62 <<
"\nInput tag for the L1 GT hardware records: "
64 <<
"\nInput tag for the L1 GT emulator records: "
66 <<
"\nInput tag for the L1 GCT hardware record: "
67 << m_l1GctDataInputTag << std::endl;
102 if (gtfeBlockData == gtfeBlockEmul) {
103 m_myCoutStream <<
"\nData and emulated GTFE blocks: identical.\n";
107 m_myCoutStream <<
"\nData and emulated GTFE blocks: different.\n";
123 const boost::uint16_t boardIdData = gtfeBlockData.
boardId();
124 const boost::uint16_t boardIdEmul = gtfeBlockEmul.
boardId();
126 if (boardIdData == boardIdEmul) {
128 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
129 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
137 << std::setw(4) << std::setfill(
'0') << boardIdData
138 << std::setfill(
' ') << std::dec;
140 << std::setw(4) << std::setfill(
'0') << boardIdEmul
141 << std::setfill(
' ') << std::dec;
148 const boost::uint16_t recordLengthData = gtfeBlockData.
recordLength();
149 const boost::uint16_t recordLengthEmul = gtfeBlockEmul.
recordLength();
151 if (recordLengthData == recordLengthEmul) {
152 m_myCoutStream <<
"\nData and emulated GTFE recordLength identical.";
158 m_myCoutStream <<
"\nData and emulated GTFE recordLength different.";
159 m_myCoutStream <<
"\n Data: recordLength() = " << recordLengthData;
160 m_myCoutStream <<
"\n Emul: recordLength() = " << recordLengthEmul;
167 const boost::uint16_t bxNrData = gtfeBlockData.
bxNr();
168 const boost::uint16_t bxNrEmul = gtfeBlockEmul.
bxNr();
170 if (bxNrData == bxNrEmul) {
186 const boost::uint32_t setupVersionData = gtfeBlockData.
setupVersion();
187 const boost::uint32_t setupVersionEmul = gtfeBlockEmul.
setupVersion();
189 if (setupVersionData == setupVersionEmul) {
190 m_myCoutStream <<
"\nData and emulated GTFE setupVersion identical.";
196 m_myCoutStream <<
"\nData and emulated GTFE setupVersion different.";
197 m_myCoutStream <<
"\n Data: setupVersion() = " << setupVersionData;
198 m_myCoutStream <<
"\n Emul: setupVersion() = " << setupVersionEmul;
205 const boost::uint16_t activeBoardsData = gtfeBlockData.
activeBoards();
206 const boost::uint16_t activeBoardsEmul = gtfeBlockEmul.
activeBoards();
208 if (activeBoardsData == activeBoardsEmul) {
209 m_myCoutStream <<
"\nData and emulated GTFE activeBoards identical.";
211 << std::setw(4) << std::setfill(
'0') << activeBoardsData
212 << std::setfill(
' ') << std::dec;
217 m_myCoutStream <<
"\nData and emulated GTFE activeBoards different.";
218 m_myCoutStream <<
"\n Data: activeBoards() = " << std::hex <<
"0x"
219 << std::setw(4) << std::setfill(
'0') << activeBoardsData
220 << std::setfill(
' ') << std::dec;
221 m_myCoutStream <<
"\n Emul: activeBoards() = " << std::hex <<
"0x"
222 << std::setw(4) << std::setfill(
'0') << activeBoardsEmul
223 << std::setfill(
' ') << std::dec;
230 const boost::uint32_t totalTriggerNrData = gtfeBlockData.
totalTriggerNr();
231 const boost::uint32_t totalTriggerNrEmul = gtfeBlockEmul.
totalTriggerNr();
233 if (totalTriggerNrData == totalTriggerNrEmul) {
234 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr identical.";
240 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr different.";
241 m_myCoutStream <<
"\n Data: totalTriggerNr() = " << totalTriggerNrData;
242 m_myCoutStream <<
"\n Emul: totalTriggerNr() = " << totalTriggerNrEmul;
260 int PhysicsPartition = 0;
271 if (fdlBlockData == fdlBlockEmul) {
273 <<
" Data and emulated FDL blocks: identical.\n";
279 <<
" Data and emulated FDL blocks: different.\n";
296 const int bxInEventData = fdlBlockData.
bxInEvent();
297 const int bxInEventEmul = fdlBlockEmul.
bxInEvent();
299 bool matchBxInEvent =
false;
301 if (bxInEventData == bxInEventEmul) {
303 <<
" Data and emulated FDL bxInEvent identical.";
306 matchBxInEvent =
true;
311 <<
" Data and emulated FDL bxInEvent different.";
324 bool validBxInEvent =
false;
327 validBxInEvent =
true;
347 unsigned long long l1GtTmAlgoCacheID =
363 unsigned long long l1GtTmTechCacheID =
385 for (
CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
388 const char* algName = aName.c_str();
389 int algBitNumber = (itAlgo->second).algoBitNumber();
403 const boost::uint16_t boardIdData = fdlBlockData.
boardId();
404 const boost::uint16_t boardIdEmul = fdlBlockEmul.
boardId();
406 if (boardIdData == boardIdEmul) {
408 <<
" Data and emulated FDL boardId identical.";
409 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
410 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
417 <<
" Data and emulated FDL boardId different.";
419 << std::setw(4) << std::setfill(
'0') << boardIdData
420 << std::setfill(
' ') << std::dec;
422 << std::setw(4) << std::setfill(
'0') << boardIdEmul
423 << std::setfill(
' ') << std::dec;
426 if (matchBxInEvent && validBxInEvent) {
440 const boost::uint16_t bxNrData = fdlBlockData.
bxNr();
441 const boost::uint16_t bxNrEmul = fdlBlockEmul.
bxNr();
443 if (bxNrData == bxNrEmul) {
445 <<
" Data and emulated FDL bxNr identical.";
452 <<
" Data and emulated FDL bxNr different.";
457 if (matchBxInEvent && validBxInEvent) {
470 const boost::uint32_t eventNrData = fdlBlockData.
eventNr();
471 const boost::uint32_t eventNrEmul = fdlBlockEmul.
eventNr();
473 if (eventNrData == eventNrEmul) {
475 <<
" Data and emulated FDL eventNr identical.";
482 <<
" Data and emulated FDL eventNr different.";
487 if (matchBxInEvent && validBxInEvent) {
506 int nTechBits = gtTechnicalTriggerWordData.size();
511 unsigned int triggerMask = 0;
512 unsigned int bitValue = 0;
514 if (matchBxInEvent && validBxInEvent) {
515 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
518 << PhysicsPartition);
520 if (gtTechnicalTriggerWordData[iBit]) {
523 bitValue = (triggerMask) ? 0 : 1;
524 gtTechnicalTriggerWordDataMask[iBit] = bitValue;
530 if (gtTechnicalTriggerWordEmul.at(iBit)) {
533 bitValue = (triggerMask) ? 0 : 1;
534 gtTechnicalTriggerWordEmulMask[iBit] = bitValue;
542 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
544 if (gtTechnicalTriggerWordData[iBit]) {
548 if (gtTechnicalTriggerWordEmul.at(iBit)) {
554 if (gtTechnicalTriggerWordData == gtTechnicalTriggerWordEmul) {
556 <<
" Data and emulated FDL gtTechnicalTriggerWord identical.\n";
563 <<
" Data and emulated FDL gtTechnicalTriggerWord different.";
570 if (matchBxInEvent && validBxInEvent) {
577 if (matchBxInEvent && validBxInEvent) {
578 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
579 if (gtTechnicalTriggerWordData[iBit]
580 != gtTechnicalTriggerWordEmul.at(iBit)) {
586 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
587 if (gtTechnicalTriggerWordData[iBit]
588 != gtTechnicalTriggerWordEmul.at(iBit)) {
599 if (gtTechnicalTriggerWordDataMask == gtTechnicalTriggerWordEmulMask) {
601 <<
" Data and emulated FDL gtTechnicalTriggerWord after mask identical.\n";
607 <<
" Data and emulated FDL gtTechnicalTriggerWord after mask different.";
612 if (matchBxInEvent && validBxInEvent) {
619 if (matchBxInEvent && validBxInEvent) {
620 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
621 if (gtTechnicalTriggerWordData[iBit]
622 != gtTechnicalTriggerWordEmul.at(iBit)) {
637 int nAlgoBits = gtDecisionWordData.size();
642 if (matchBxInEvent && validBxInEvent) {
644 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
647 & (1 << PhysicsPartition);
649 if (gtDecisionWordData[iBit]) {
652 bitValue = (triggerMask) ? 0 : 1;
653 gtDecisionWordDataMask[iBit] = bitValue;
659 if (gtDecisionWordEmul.at(iBit)) {
662 bitValue = (triggerMask) ? 0 : 1;
663 gtDecisionWordEmulMask[iBit] = bitValue;
671 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
672 if (gtDecisionWordData[iBit]) {
677 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
678 if (gtDecisionWordEmul.at(iBit)) {
684 if (gtDecisionWordData == gtDecisionWordEmul) {
686 <<
" Data and emulated FDL gtDecisionWord identical.";
693 <<
" Data and emulated FDL gtDecisionWord different.";
700 if (matchBxInEvent && validBxInEvent) {
707 if (matchBxInEvent && validBxInEvent) {
708 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
709 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
715 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
716 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
724 if (gtDecisionWordDataMask == gtDecisionWordEmulMask) {
726 <<
" Data and emulated FDL gtDecisionWord after mask identical.";
732 <<
" Data and emulated FDL gtDecisionWord after mask different.";
737 if (matchBxInEvent && validBxInEvent) {
744 if (matchBxInEvent && validBxInEvent) {
745 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
746 if (gtDecisionWordDataMask[iBit] != gtDecisionWordEmulMask.at(iBit)) {
760 if (gtDecisionWordExtendedData == gtDecisionWordExtendedEmul) {
762 <<
" Data and emulated FDL gtDecisionWordExtended identical.\n";
769 <<
" Data and emulated FDL gtDecisionWordExtended different.\n";
776 if (matchBxInEvent && validBxInEvent) {
786 const boost::uint16_t noAlgoData = fdlBlockData.
noAlgo();
787 const boost::uint16_t noAlgoEmul = fdlBlockEmul.
noAlgo();
789 if (noAlgoData == noAlgoEmul) {
791 <<
" Data and emulated FDL noAlgo identical.";
798 <<
" Data and emulated FDL noAlgo different.";
803 if (matchBxInEvent && validBxInEvent) {
813 const boost::uint16_t finalORData = fdlBlockData.
finalOR();
814 const boost::uint16_t finalOREmul = fdlBlockEmul.
finalOR();
816 if (finalORData == finalOREmul) {
818 <<
" Data and emulated FDL finalOR identical.";
819 m_myCoutStream <<
"\n finalOR() = " << std::hex <<
"0x" << std::setw(2)
820 << std::setfill(
'0') << finalORData << std::setfill(
' ')
827 <<
" Data and emulated FDL finalOR different.";
829 << std::setw(2) << std::setfill(
'0') << finalORData
830 << std::setfill(
' ') << std::dec;
832 << std::setw(2) << std::setfill(
'0') << finalOREmul
833 << std::setfill(
' ') << std::dec;
836 if (matchBxInEvent && validBxInEvent) {
846 const int finalORPhysData = finalORData & (1 << PhysicsPartition);
847 const int finalORPhysEmul = finalOREmul & (1 << PhysicsPartition);
849 if (finalORPhysData == finalORPhysEmul) {
851 <<
" Data and emulated FDL finalOR for the physics partition identical.";
858 <<
" Data and emulated FDL finalOR for the physics partition different.";
863 if (matchBxInEvent && validBxInEvent) {
873 const boost::uint16_t localBxNrData = fdlBlockData.
localBxNr();
874 const boost::uint16_t localBxNrEmul = fdlBlockEmul.
localBxNr();
876 if (localBxNrData == localBxNrEmul) {
878 <<
" Data and emulated FDL localBxNr identical.";
885 <<
" Data and emulated FDL localBxNr different.";
890 if (matchBxInEvent && validBxInEvent) {
910 if (psbBlockData == psbBlockEmul) {
932 const boost::uint16_t boardIdData = psbBlockData.
boardId();
933 const boost::uint16_t boardIdEmul = psbBlockEmul.
boardId();
935 if (boardIdData == boardIdEmul) {
937 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
938 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
946 << std::setw(4) << std::setfill(
'0') << boardIdData
947 << std::setfill(
' ') << std::dec;
949 << std::setw(4) << std::setfill(
'0') << boardIdEmul
950 << std::setfill(
' ') << std::dec;
956 const int bxInEventData = psbBlockData.
bxInEvent();
957 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
959 if (bxInEventData == bxInEventEmul) {
974 const boost::uint16_t bxNrData = psbBlockData.
bxNr();
975 const boost::uint16_t bxNrEmul = psbBlockEmul.
bxNr();
977 if (bxNrData == bxNrEmul) {
992 const boost::uint32_t eventNrData = psbBlockData.
eventNr();
993 const boost::uint32_t eventNrEmul = psbBlockEmul.
eventNr();
995 if (eventNrData == eventNrEmul) {
1010 boost::uint16_t valData;
1011 boost::uint16_t valEmul;
1013 for (
int iA = 0; iA < psbBlockData.
NumberAData; ++iA) {
1014 valData = psbBlockData.
aData(iA);
1015 valEmul = psbBlockEmul.
aData(iA);
1017 if (valData == valEmul) {
1021 << std::setw(4) << std::setfill(
'0') << valData
1022 << std::setfill(
' ') << std::dec;
1030 << std::setw(4) << std::setfill(
'0') << valData
1031 << std::setfill(
' ') << std::dec;
1033 << std::setw(4) << std::setfill(
'0') << valEmul
1034 << std::setfill(
' ') << std::dec;
1042 for (
int iB = 0; iB < psbBlockData.
NumberBData; ++iB) {
1043 valData = psbBlockData.
bData(iB);
1044 valEmul = psbBlockEmul.
bData(iB);
1046 if (valData == valEmul) {
1050 << std::setw(4) << std::setfill(
'0') << valData
1051 << std::setfill(
' ') << std::dec;
1059 << std::setw(4) << std::setfill(
'0') << valData
1060 << std::setfill(
' ') << std::dec;
1062 << std::setw(4) << std::setfill(
'0') << valEmul
1063 << std::setfill(
' ') << std::dec;
1071 const boost::uint16_t localBxNrData = psbBlockData.
localBxNr();
1072 const boost::uint16_t localBxNrEmul = psbBlockEmul.
localBxNr();
1074 if (localBxNrData == localBxNrEmul) {
1075 m_myCoutStream <<
"\nData and emulated PSB localBxNr identical.";
1081 m_myCoutStream <<
"\nData and emulated PSB localBxNr different.";
1111 bool validData =
false;
1113 if (!gtReadoutRecordData.
isValid()) {
1124 bool validEmul =
false;
1126 if (!gtReadoutRecordEmul.
isValid()) {
1133 if ((!validData) || (!validEmul)) {
1135 << validData <<
"\n Valid emulator:" << validEmul << std::endl;
1139 const L1GtfeWord& gtfeBlockData = gtReadoutRecordData->gtfeWord();
1140 const L1GtfeWord& gtfeBlockEmul = gtReadoutRecordEmul->gtfeWord();
1142 compareGTFE(iEvent, evSetup, gtfeBlockData, gtfeBlockEmul);
1145 const std::vector<L1GtFdlWord>& gtFdlVectorData =
1146 gtReadoutRecordData->gtFdlVector();
1147 const std::vector<L1GtFdlWord>& gtFdlVectorEmul =
1148 gtReadoutRecordEmul->gtFdlVector();
1150 int gtFdlVectorDataSize = gtFdlVectorData.size();
1151 int gtFdlVectorEmulSize = gtFdlVectorEmul.size();
1153 if (gtFdlVectorDataSize == gtFdlVectorEmulSize) {
1154 m_myCoutStream <<
"\nData and emulated FDL vector size: identical.\n";
1157 for (
int iFdl = 0; iFdl < gtFdlVectorDataSize; ++iFdl) {
1159 const L1GtFdlWord& fdlBlockData = gtFdlVectorData[iFdl];
1160 const L1GtFdlWord& fdlBlockEmul = gtFdlVectorEmul[iFdl];
1162 compareFDL(iEvent, evSetup, fdlBlockData, fdlBlockEmul, iRec);
1166 m_myCoutStream <<
"\nData and emulated FDL vector size: different.\n";
1167 m_myCoutStream <<
" Data: size = " << gtFdlVectorDataSize << std::endl;
1168 m_myCoutStream <<
" Emul: size = " << gtFdlVectorEmulSize << std::endl;
1178 const std::vector<L1GtPsbWord>& gtPsbVectorData =
1179 gtReadoutRecordData->gtPsbVector();
1180 const std::vector<L1GtPsbWord>& gtPsbVectorEmul =
1181 gtReadoutRecordEmul->gtPsbVector();
1183 int gtPsbVectorDataSize = gtPsbVectorData.size();
1184 int gtPsbVectorEmulSize = gtPsbVectorEmul.size();
1186 if (gtPsbVectorDataSize == gtPsbVectorEmulSize) {
1187 m_myCoutStream <<
"\nData and emulated PSB vector size: identical.\n";
1191 m_myCoutStream <<
"\nData and emulated PSB vector size: different.\n";
1192 m_myCoutStream <<
" Data: size = " << gtPsbVectorDataSize << std::endl;
1193 m_myCoutStream <<
" Emul: size = " << gtPsbVectorEmulSize << std::endl;
1200 for (
int iPsb = 0; iPsb < gtPsbVectorDataSize; ++iPsb) {
1202 const L1GtPsbWord& psbBlockData = gtPsbVectorData[iPsb];
1203 const boost::uint16_t boardIdData = psbBlockData.
boardId();
1204 const int bxInEventData = psbBlockData.
bxInEvent();
1209 bool foundPSB =
false;
1211 for (
int iPsbF = 0; iPsbF < gtPsbVectorEmulSize; ++iPsbF) {
1213 const L1GtPsbWord& psbBlockEmul = gtPsbVectorEmul[iPsbF];
1214 const boost::uint16_t boardIdEmul = psbBlockEmul.
boardId();
1215 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
1217 if ((boardIdEmul == boardIdData)
1218 && (bxInEventData == bxInEventEmul)) {
1223 comparePSB(iEvent, evSetup, psbBlockData, psbBlockEmul);
1229 m_myCoutStream <<
"\nNo emulated PSB with boardId() = " << std::hex
1230 <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1231 << std::setfill(
' ') << std::dec <<
" and BxInEvent = "
1232 << bxInEventData <<
" was found";
1299 const unsigned int numberTechTriggers =
1302 const unsigned int numberAlgoTriggers =
1305 for (
int iRec = 0; iRec < 2; ++iRec) {
1316 const char* histName;
1321 int iIndex = iHist - ((TotalBxInEvent + 1)/2 -1);
1322 int hIndex = (iIndex + 16)%16;
1324 std::stringstream
ss;
1326 ss << std::uppercase << std::hex << hIndex;
1329 hName = recString +
"FdlDataEmul_" + str;
1330 histName = hName.c_str();
1332 std::string hTitle =
"FDL data vs emul mismatch for BxInEvent = "
1334 const char* histTitle = hTitle.c_str();
1340 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(1,
"BoardId");
1341 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(2,
"BxInEvent");
1342 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(3,
"BxNr");
1343 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(4,
"EventNr");
1344 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(5,
"TechTrigger");
1345 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(6,
"TechTriggerMask");
1346 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(7,
"AlgoTrigger");
1347 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(8,
"AlgoTriggerMask");
1348 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(9,
"AlgoExtend");
1349 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(10,
"NoAlgo");
1350 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(11,
"FinalORAllParts");
1351 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(12,
"FinalORPhysPart");
1352 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(13,
"LocalBxNr");
1356 hName = recString +
"FdlDataAlgoDecision_" + str;
1357 histName = hName.c_str();
1359 hTitle =
"Data: algorithm decision word for BxInEvent = " + str;
1360 histTitle = hTitle.c_str();
1363 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1366 hName = recString +
"FdlEmulAlgoDecision_" + str;
1367 histName = hName.c_str();
1369 hTitle =
"Emul: algorithm decision word for BxInEvent = " + str;
1370 histTitle = hTitle.c_str();
1373 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1377 hName = recString +
"FdlDataAlgoDecisionMask_" + str;
1378 histName = hName.c_str();
1381 =
"Data, physics partition: algorithm decision word after mask for BxInEvent = "
1383 histTitle = hTitle.c_str();
1386 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1389 hName = recString +
"FdlEmulAlgoDecisionMask_" + str;
1390 histName = hName.c_str();
1393 =
"Emul, physics partition: algorithm decision word after mask for BxInEvent = "
1395 histTitle = hTitle.c_str();
1398 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1401 hName = recString +
"FdlDataEmulAlgoDecision_" + str;
1402 histName = hName.c_str();
1405 =
"Data vs emul: non-matching algorithm decision word for BxInEvent = "
1407 histTitle = hTitle.c_str();
1410 histName, histTitle, numberAlgoTriggers, 0.,
1411 numberAlgoTriggers);
1414 hName = recString +
"FdlDataEmulAlgoDecisionMask_" + str;
1415 histName = hName.c_str();
1418 =
"Data vs emul, physics partition: non-matching algorithm decision word after mask for BxInEvent = "
1420 histTitle = hTitle.c_str();
1423 histName, histTitle, numberAlgoTriggers, 0.,
1424 numberAlgoTriggers);
1428 hName = recString +
"FdlDataTechDecision_" + str;
1429 histName = hName.c_str();
1431 hTitle =
"Data technical trigger decision word for BxInEvent = "
1433 histTitle = hTitle.c_str();
1436 histTitle, numberTechTriggers, 0., numberTechTriggers);
1439 hName = recString +
"FdlEmulTechDecision_" + str;
1440 histName = hName.c_str();
1442 hTitle =
"Emul: technical trigger decision word for BxInEvent = "
1444 histTitle = hTitle.c_str();
1447 histTitle, numberTechTriggers, 0., numberTechTriggers);
1450 hName = recString +
"FdlDataTechDecisionMask_" + str;
1451 histName = hName.c_str();
1454 =
"Data technical trigger decision word after mask for BxInEvent = "
1456 histTitle = hTitle.c_str();
1459 histTitle, numberTechTriggers, 0., numberTechTriggers);
1462 hName = recString +
"FdlEmulTechDecisionMask_" + str;
1463 histName = hName.c_str();
1466 =
"Emul: technical trigger decision word after mask for BxInEvent = "
1468 histTitle = hTitle.c_str();
1471 histTitle, numberTechTriggers, 0., numberTechTriggers);
1474 hName = recString +
"FdlDataEmulTechDecision_" + str;
1475 histName = hName.c_str();
1478 =
"Data vs emul: non-matching technical trigger decision word for BxInEvent = "
1480 histTitle = hTitle.c_str();
1483 histName, histTitle, numberTechTriggers, 0.,
1484 numberTechTriggers);
1486 hName = recString +
"FdlDataEmulTechDecisionMask_" + str;
1487 histName = hName.c_str();
1490 =
"Data vs emul: non-matching technical trigger decision word after mask for BxInEvent = "
1492 histTitle = hTitle.c_str();
1495 histName, histTitle, numberTechTriggers, 0.,
1496 numberTechTriggers);
1500 hName = recString +
"FdlDataEmul_Err";
1501 histName = hName.c_str();
1504 "FDL data vs emul: non-matching BxInEvent", 13, 0., 13.);
1519 hName = recString +
"FdlDataAlgoDecision_Err";
1520 histName = hName.c_str();
1523 = fdlHist.
make<TH1F>(
1525 "Data: algorithm trigger decision word, non-matching BxInEvent",
1526 numberAlgoTriggers, 0., numberAlgoTriggers);
1529 hName = recString +
"FdlEmulAlgoDecision_Err";
1530 histName = hName.c_str();
1533 = fdlHist.
make<TH1F>(
1535 "Emul: algorithm trigger decision word, non-matching BxInEvent",
1536 numberAlgoTriggers, 0., numberAlgoTriggers);
1538 hName = recString +
"FdlDataEmulAlgoDecision_Err";
1539 histName = hName.c_str();
1542 = fdlHist.
make<TH1F>(
1544 "Data vs emul: algorithm trigger decision word, non-matching BxInEvent",
1545 numberAlgoTriggers, 0., numberAlgoTriggers);
1548 hName = recString +
"FdlDataTechDecision_Err";
1549 histName = hName.c_str();
1552 = fdlHist.
make<TH1F>(
1554 "Data: technical trigger decision word, non-matching BxInEvent",
1555 numberTechTriggers, 0., numberTechTriggers);
1557 hName = recString +
"FdlEmulTechDecision_Err";
1558 histName = hName.c_str();
1561 = fdlHist.
make<TH1F>(
1563 "Emul: technical trigger decision word, non-matching BxInEvent",
1564 numberTechTriggers, 0., numberTechTriggers);
1566 hName = recString +
"FdlDataEmulTechDecision_Err";
1567 histName = hName.c_str();
1570 = fdlHist.
make<TH1F>(
1572 "Data vs emul: technical trigger decision word, non-matching BxInEvent",
1573 numberTechTriggers, 0., numberTechTriggers);
T getParameter(std::string const &) const
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
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
virtual void analyze(const edm::Event &, const edm::EventSetup &)
analyze each event
virtual void endJob()
end of job
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
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]
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
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]
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