64 <<
"\nInput tag for the L1 GT hardware records: "
66 <<
"\nInput tag for the L1 GT emulator records: "
68 <<
"\nInput tag for the L1 GCT hardware record: "
69 << m_l1GctDataInputTag << std::endl;
104 if (gtfeBlockData == gtfeBlockEmul) {
105 m_myCoutStream <<
"\nData and emulated GTFE blocks: identical.\n";
109 m_myCoutStream <<
"\nData and emulated GTFE blocks: different.\n";
125 const boost::uint16_t boardIdData = gtfeBlockData.
boardId();
126 const boost::uint16_t boardIdEmul = gtfeBlockEmul.
boardId();
128 if (boardIdData == boardIdEmul) {
130 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
131 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
139 << std::setw(4) << std::setfill(
'0') << boardIdData
140 << std::setfill(
' ') << std::dec;
142 << std::setw(4) << std::setfill(
'0') << boardIdEmul
143 << std::setfill(
' ') << std::dec;
150 const boost::uint16_t recordLengthData = gtfeBlockData.
recordLength();
151 const boost::uint16_t recordLengthEmul = gtfeBlockEmul.
recordLength();
153 if (recordLengthData == recordLengthEmul) {
154 m_myCoutStream <<
"\nData and emulated GTFE recordLength identical.";
160 m_myCoutStream <<
"\nData and emulated GTFE recordLength different.";
161 m_myCoutStream <<
"\n Data: recordLength() = " << recordLengthData;
162 m_myCoutStream <<
"\n Emul: recordLength() = " << recordLengthEmul;
169 const boost::uint16_t bxNrData = gtfeBlockData.
bxNr();
170 const boost::uint16_t bxNrEmul = gtfeBlockEmul.
bxNr();
172 if (bxNrData == bxNrEmul) {
188 const boost::uint32_t setupVersionData = gtfeBlockData.
setupVersion();
189 const boost::uint32_t setupVersionEmul = gtfeBlockEmul.
setupVersion();
191 if (setupVersionData == setupVersionEmul) {
192 m_myCoutStream <<
"\nData and emulated GTFE setupVersion identical.";
198 m_myCoutStream <<
"\nData and emulated GTFE setupVersion different.";
199 m_myCoutStream <<
"\n Data: setupVersion() = " << setupVersionData;
200 m_myCoutStream <<
"\n Emul: setupVersion() = " << setupVersionEmul;
207 const boost::uint16_t activeBoardsData = gtfeBlockData.
activeBoards();
208 const boost::uint16_t activeBoardsEmul = gtfeBlockEmul.
activeBoards();
210 if (activeBoardsData == activeBoardsEmul) {
211 m_myCoutStream <<
"\nData and emulated GTFE activeBoards identical.";
213 << std::setw(4) << std::setfill(
'0') << activeBoardsData
214 << std::setfill(
' ') << std::dec;
219 m_myCoutStream <<
"\nData and emulated GTFE activeBoards different.";
220 m_myCoutStream <<
"\n Data: activeBoards() = " << std::hex <<
"0x"
221 << std::setw(4) << std::setfill(
'0') << activeBoardsData
222 << std::setfill(
' ') << std::dec;
223 m_myCoutStream <<
"\n Emul: activeBoards() = " << std::hex <<
"0x"
224 << std::setw(4) << std::setfill(
'0') << activeBoardsEmul
225 << std::setfill(
' ') << std::dec;
232 const boost::uint32_t totalTriggerNrData = gtfeBlockData.
totalTriggerNr();
233 const boost::uint32_t totalTriggerNrEmul = gtfeBlockEmul.
totalTriggerNr();
235 if (totalTriggerNrData == totalTriggerNrEmul) {
236 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr identical.";
242 m_myCoutStream <<
"\nData and emulated GTFE totalTriggerNr different.";
243 m_myCoutStream <<
"\n Data: totalTriggerNr() = " << totalTriggerNrData;
244 m_myCoutStream <<
"\n Emul: totalTriggerNr() = " << totalTriggerNrEmul;
262 int PhysicsPartition = 0;
273 if (fdlBlockData == fdlBlockEmul) {
275 <<
" Data and emulated FDL blocks: identical.\n";
281 <<
" Data and emulated FDL blocks: different.\n";
298 const int bxInEventData = fdlBlockData.
bxInEvent();
299 const int bxInEventEmul = fdlBlockEmul.
bxInEvent();
301 bool matchBxInEvent =
false;
303 if (bxInEventData == bxInEventEmul) {
305 <<
" Data and emulated FDL bxInEvent identical.";
308 matchBxInEvent =
true;
313 <<
" Data and emulated FDL bxInEvent different.";
326 bool validBxInEvent =
false;
329 validBxInEvent =
true;
349 unsigned long long l1GtTmAlgoCacheID =
365 unsigned long long l1GtTmTechCacheID =
387 for (
CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
390 const char* algName = aName.c_str();
391 int algBitNumber = (itAlgo->second).algoBitNumber();
405 const boost::uint16_t boardIdData = fdlBlockData.
boardId();
406 const boost::uint16_t boardIdEmul = fdlBlockEmul.
boardId();
408 if (boardIdData == boardIdEmul) {
410 <<
" Data and emulated FDL boardId identical.";
411 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
412 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
419 <<
" Data and emulated FDL boardId different.";
421 << std::setw(4) << std::setfill(
'0') << boardIdData
422 << std::setfill(
' ') << std::dec;
424 << std::setw(4) << std::setfill(
'0') << boardIdEmul
425 << std::setfill(
' ') << std::dec;
428 if (matchBxInEvent && validBxInEvent) {
442 const boost::uint16_t bxNrData = fdlBlockData.
bxNr();
443 const boost::uint16_t bxNrEmul = fdlBlockEmul.
bxNr();
445 if (bxNrData == bxNrEmul) {
447 <<
" Data and emulated FDL bxNr identical.";
454 <<
" Data and emulated FDL bxNr different.";
459 if (matchBxInEvent && validBxInEvent) {
472 const boost::uint32_t eventNrData = fdlBlockData.
eventNr();
473 const boost::uint32_t eventNrEmul = fdlBlockEmul.
eventNr();
475 if (eventNrData == eventNrEmul) {
477 <<
" Data and emulated FDL eventNr identical.";
484 <<
" Data and emulated FDL eventNr different.";
489 if (matchBxInEvent && validBxInEvent) {
508 int nTechBits = gtTechnicalTriggerWordData.size();
513 unsigned int triggerMask = 0;
514 unsigned int bitValue = 0;
516 if (matchBxInEvent && validBxInEvent) {
517 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
520 << PhysicsPartition);
522 if (gtTechnicalTriggerWordData[iBit]) {
525 bitValue = (triggerMask) ? 0 : 1;
526 gtTechnicalTriggerWordDataMask[iBit] = bitValue;
532 if (gtTechnicalTriggerWordEmul.at(iBit)) {
535 bitValue = (triggerMask) ? 0 : 1;
536 gtTechnicalTriggerWordEmulMask[iBit] = bitValue;
544 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
546 if (gtTechnicalTriggerWordData[iBit]) {
550 if (gtTechnicalTriggerWordEmul.at(iBit)) {
556 if (gtTechnicalTriggerWordData == gtTechnicalTriggerWordEmul) {
558 <<
" Data and emulated FDL gtTechnicalTriggerWord identical.\n";
565 <<
" Data and emulated FDL gtTechnicalTriggerWord different.";
572 if (matchBxInEvent && validBxInEvent) {
579 if (matchBxInEvent && validBxInEvent) {
580 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
581 if (gtTechnicalTriggerWordData[iBit]
582 != gtTechnicalTriggerWordEmul.at(iBit)) {
588 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
589 if (gtTechnicalTriggerWordData[iBit]
590 != gtTechnicalTriggerWordEmul.at(iBit)) {
601 if (gtTechnicalTriggerWordDataMask == gtTechnicalTriggerWordEmulMask) {
603 <<
" Data and emulated FDL gtTechnicalTriggerWord after mask identical.\n";
609 <<
" Data and emulated FDL gtTechnicalTriggerWord after mask different.";
614 if (matchBxInEvent && validBxInEvent) {
621 if (matchBxInEvent && validBxInEvent) {
622 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
623 if (gtTechnicalTriggerWordData[iBit]
624 != gtTechnicalTriggerWordEmul.at(iBit)) {
639 int nAlgoBits = gtDecisionWordData.size();
644 if (matchBxInEvent && validBxInEvent) {
646 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
649 & (1 << PhysicsPartition);
651 if (gtDecisionWordData[iBit]) {
654 bitValue = (triggerMask) ? 0 : 1;
655 gtDecisionWordDataMask[iBit] = bitValue;
661 if (gtDecisionWordEmul.at(iBit)) {
664 bitValue = (triggerMask) ? 0 : 1;
665 gtDecisionWordEmulMask[iBit] = bitValue;
673 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
674 if (gtDecisionWordData[iBit]) {
679 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
680 if (gtDecisionWordEmul.at(iBit)) {
686 if (gtDecisionWordData == gtDecisionWordEmul) {
688 <<
" Data and emulated FDL gtDecisionWord identical.";
695 <<
" Data and emulated FDL gtDecisionWord different.";
702 if (matchBxInEvent && validBxInEvent) {
709 if (matchBxInEvent && validBxInEvent) {
710 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
711 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
717 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
718 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
726 if (gtDecisionWordDataMask == gtDecisionWordEmulMask) {
728 <<
" Data and emulated FDL gtDecisionWord after mask identical.";
734 <<
" Data and emulated FDL gtDecisionWord after mask different.";
739 if (matchBxInEvent && validBxInEvent) {
746 if (matchBxInEvent && validBxInEvent) {
747 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
748 if (gtDecisionWordDataMask[iBit] != gtDecisionWordEmulMask.at(iBit)) {
762 if (gtDecisionWordExtendedData == gtDecisionWordExtendedEmul) {
764 <<
" Data and emulated FDL gtDecisionWordExtended identical.\n";
771 <<
" Data and emulated FDL gtDecisionWordExtended different.\n";
778 if (matchBxInEvent && validBxInEvent) {
788 const boost::uint16_t noAlgoData = fdlBlockData.
noAlgo();
789 const boost::uint16_t noAlgoEmul = fdlBlockEmul.
noAlgo();
791 if (noAlgoData == noAlgoEmul) {
793 <<
" Data and emulated FDL noAlgo identical.";
800 <<
" Data and emulated FDL noAlgo different.";
805 if (matchBxInEvent && validBxInEvent) {
815 const boost::uint16_t finalORData = fdlBlockData.
finalOR();
816 const boost::uint16_t finalOREmul = fdlBlockEmul.
finalOR();
818 if (finalORData == finalOREmul) {
820 <<
" Data and emulated FDL finalOR identical.";
821 m_myCoutStream <<
"\n finalOR() = " << std::hex <<
"0x" << std::setw(2)
822 << std::setfill(
'0') << finalORData << std::setfill(
' ')
829 <<
" Data and emulated FDL finalOR different.";
831 << std::setw(2) << std::setfill(
'0') << finalORData
832 << std::setfill(
' ') << std::dec;
834 << std::setw(2) << std::setfill(
'0') << finalOREmul
835 << std::setfill(
' ') << std::dec;
838 if (matchBxInEvent && validBxInEvent) {
848 const int finalORPhysData = finalORData & (1 << PhysicsPartition);
849 const int finalORPhysEmul = finalOREmul & (1 << PhysicsPartition);
851 if (finalORPhysData == finalORPhysEmul) {
853 <<
" Data and emulated FDL finalOR for the physics partition identical.";
860 <<
" Data and emulated FDL finalOR for the physics partition different.";
865 if (matchBxInEvent && validBxInEvent) {
875 const boost::uint16_t localBxNrData = fdlBlockData.
localBxNr();
876 const boost::uint16_t localBxNrEmul = fdlBlockEmul.
localBxNr();
878 if (localBxNrData == localBxNrEmul) {
880 <<
" Data and emulated FDL localBxNr identical.";
887 <<
" Data and emulated FDL localBxNr different.";
892 if (matchBxInEvent && validBxInEvent) {
912 if (psbBlockData == psbBlockEmul) {
934 const boost::uint16_t boardIdData = psbBlockData.
boardId();
935 const boost::uint16_t boardIdEmul = psbBlockEmul.
boardId();
937 if (boardIdData == boardIdEmul) {
939 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4)
940 << std::setfill(
'0') << boardIdData << std::setfill(
' ')
948 << std::setw(4) << std::setfill(
'0') << boardIdData
949 << std::setfill(
' ') << std::dec;
951 << std::setw(4) << std::setfill(
'0') << boardIdEmul
952 << std::setfill(
' ') << std::dec;
958 const int bxInEventData = psbBlockData.
bxInEvent();
959 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
961 if (bxInEventData == bxInEventEmul) {
976 const boost::uint16_t bxNrData = psbBlockData.
bxNr();
977 const boost::uint16_t bxNrEmul = psbBlockEmul.
bxNr();
979 if (bxNrData == bxNrEmul) {
994 const boost::uint32_t eventNrData = psbBlockData.
eventNr();
995 const boost::uint32_t eventNrEmul = psbBlockEmul.
eventNr();
997 if (eventNrData == eventNrEmul) {
1012 boost::uint16_t valData;
1013 boost::uint16_t valEmul;
1015 for (
int iA = 0; iA < psbBlockData.
NumberAData; ++iA) {
1016 valData = psbBlockData.
aData(iA);
1017 valEmul = psbBlockEmul.
aData(iA);
1019 if (valData == valEmul) {
1023 << std::setw(4) << std::setfill(
'0') << valData
1024 << std::setfill(
' ') << std::dec;
1032 << std::setw(4) << std::setfill(
'0') << valData
1033 << std::setfill(
' ') << std::dec;
1035 << std::setw(4) << std::setfill(
'0') << valEmul
1036 << std::setfill(
' ') << std::dec;
1044 for (
int iB = 0; iB < psbBlockData.
NumberBData; ++iB) {
1045 valData = psbBlockData.
bData(iB);
1046 valEmul = psbBlockEmul.
bData(iB);
1048 if (valData == valEmul) {
1052 << std::setw(4) << std::setfill(
'0') << valData
1053 << std::setfill(
' ') << std::dec;
1061 << std::setw(4) << std::setfill(
'0') << valData
1062 << std::setfill(
' ') << std::dec;
1064 << std::setw(4) << std::setfill(
'0') << valEmul
1065 << std::setfill(
' ') << std::dec;
1073 const boost::uint16_t localBxNrData = psbBlockData.
localBxNr();
1074 const boost::uint16_t localBxNrEmul = psbBlockEmul.
localBxNr();
1076 if (localBxNrData == localBxNrEmul) {
1077 m_myCoutStream <<
"\nData and emulated PSB localBxNr identical.";
1083 m_myCoutStream <<
"\nData and emulated PSB localBxNr different.";
1113 bool validData =
false;
1115 if (!gtReadoutRecordData.
isValid()) {
1126 bool validEmul =
false;
1128 if (!gtReadoutRecordEmul.
isValid()) {
1135 if ((!validData) || (!validEmul)) {
1137 << validData <<
"\n Valid emulator:" << validEmul << std::endl;
1141 const L1GtfeWord& gtfeBlockData = gtReadoutRecordData->gtfeWord();
1142 const L1GtfeWord& gtfeBlockEmul = gtReadoutRecordEmul->gtfeWord();
1144 compareGTFE(iEvent, evSetup, gtfeBlockData, gtfeBlockEmul);
1147 const std::vector<L1GtFdlWord>& gtFdlVectorData =
1148 gtReadoutRecordData->gtFdlVector();
1149 const std::vector<L1GtFdlWord>& gtFdlVectorEmul =
1150 gtReadoutRecordEmul->gtFdlVector();
1152 int gtFdlVectorDataSize = gtFdlVectorData.size();
1153 int gtFdlVectorEmulSize = gtFdlVectorEmul.size();
1155 if (gtFdlVectorDataSize == gtFdlVectorEmulSize) {
1156 m_myCoutStream <<
"\nData and emulated FDL vector size: identical.\n";
1159 for (
int iFdl = 0; iFdl < gtFdlVectorDataSize; ++iFdl) {
1161 const L1GtFdlWord& fdlBlockData = gtFdlVectorData[iFdl];
1162 const L1GtFdlWord& fdlBlockEmul = gtFdlVectorEmul[iFdl];
1164 compareFDL(iEvent, evSetup, fdlBlockData, fdlBlockEmul, iRec);
1168 m_myCoutStream <<
"\nData and emulated FDL vector size: different.\n";
1169 m_myCoutStream <<
" Data: size = " << gtFdlVectorDataSize << std::endl;
1170 m_myCoutStream <<
" Emul: size = " << gtFdlVectorEmulSize << std::endl;
1180 const std::vector<L1GtPsbWord>& gtPsbVectorData =
1181 gtReadoutRecordData->gtPsbVector();
1182 const std::vector<L1GtPsbWord>& gtPsbVectorEmul =
1183 gtReadoutRecordEmul->gtPsbVector();
1185 int gtPsbVectorDataSize = gtPsbVectorData.size();
1186 int gtPsbVectorEmulSize = gtPsbVectorEmul.size();
1188 if (gtPsbVectorDataSize == gtPsbVectorEmulSize) {
1189 m_myCoutStream <<
"\nData and emulated PSB vector size: identical.\n";
1193 m_myCoutStream <<
"\nData and emulated PSB vector size: different.\n";
1194 m_myCoutStream <<
" Data: size = " << gtPsbVectorDataSize << std::endl;
1195 m_myCoutStream <<
" Emul: size = " << gtPsbVectorEmulSize << std::endl;
1202 for (
int iPsb = 0; iPsb < gtPsbVectorDataSize; ++iPsb) {
1204 const L1GtPsbWord& psbBlockData = gtPsbVectorData[iPsb];
1205 const boost::uint16_t boardIdData = psbBlockData.
boardId();
1206 const int bxInEventData = psbBlockData.
bxInEvent();
1211 bool foundPSB =
false;
1213 for (
int iPsbF = 0; iPsbF < gtPsbVectorEmulSize; ++iPsbF) {
1215 const L1GtPsbWord& psbBlockEmul = gtPsbVectorEmul[iPsbF];
1216 const boost::uint16_t boardIdEmul = psbBlockEmul.
boardId();
1217 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
1219 if ((boardIdEmul == boardIdData)
1220 && (bxInEventData == bxInEventEmul)) {
1225 comparePSB(iEvent, evSetup, psbBlockData, psbBlockEmul);
1231 m_myCoutStream <<
"\nNo emulated PSB with boardId() = " << std::hex
1232 <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1233 << std::setfill(
' ') << std::dec <<
" and BxInEvent = "
1234 << bxInEventData <<
" was found";
1301 const unsigned int numberTechTriggers =
1304 const unsigned int numberAlgoTriggers =
1307 for (
int iRec = 0; iRec < 2; ++iRec) {
1318 const char* histName;
1323 int iIndex = iHist - ((TotalBxInEvent + 1)/2 -1);
1324 int hIndex = (iIndex + 16)%16;
1326 std::stringstream ss;
1328 ss << std::uppercase << std::hex << hIndex;
1331 hName = recString +
"FdlDataEmul_" + str;
1332 histName = hName.c_str();
1334 std::string hTitle =
"FDL data vs emul mismatch for BxInEvent = "
1336 const char* histTitle = hTitle.c_str();
1342 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(1,
"BoardId");
1343 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(2,
"BxInEvent");
1344 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(3,
"BxNr");
1345 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(4,
"EventNr");
1346 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(5,
"TechTrigger");
1347 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(6,
"TechTriggerMask");
1348 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(7,
"AlgoTrigger");
1349 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(8,
"AlgoTriggerMask");
1350 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(9,
"AlgoExtend");
1351 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(10,
"NoAlgo");
1352 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(11,
"FinalORAllParts");
1353 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(12,
"FinalORPhysPart");
1354 m_fdlDataEmul[iHist][iRec]->GetXaxis()->SetBinLabel(13,
"LocalBxNr");
1358 hName = recString +
"FdlDataAlgoDecision_" + str;
1359 histName = hName.c_str();
1361 hTitle =
"Data: algorithm decision word for BxInEvent = " + str;
1362 histTitle = hTitle.c_str();
1365 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1368 hName = recString +
"FdlEmulAlgoDecision_" + str;
1369 histName = hName.c_str();
1371 hTitle =
"Emul: algorithm decision word for BxInEvent = " + str;
1372 histTitle = hTitle.c_str();
1375 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1379 hName = recString +
"FdlDataAlgoDecisionMask_" + str;
1380 histName = hName.c_str();
1383 =
"Data, physics partition: algorithm decision word after mask for BxInEvent = "
1385 histTitle = hTitle.c_str();
1388 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1391 hName = recString +
"FdlEmulAlgoDecisionMask_" + str;
1392 histName = hName.c_str();
1395 =
"Emul, physics partition: algorithm decision word after mask for BxInEvent = "
1397 histTitle = hTitle.c_str();
1400 histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
1403 hName = recString +
"FdlDataEmulAlgoDecision_" + str;
1404 histName = hName.c_str();
1407 =
"Data vs emul: non-matching algorithm decision word for BxInEvent = "
1409 histTitle = hTitle.c_str();
1412 histName, histTitle, numberAlgoTriggers, 0.,
1413 numberAlgoTriggers);
1416 hName = recString +
"FdlDataEmulAlgoDecisionMask_" + str;
1417 histName = hName.c_str();
1420 =
"Data vs emul, physics partition: non-matching algorithm decision word after mask for BxInEvent = "
1422 histTitle = hTitle.c_str();
1425 histName, histTitle, numberAlgoTriggers, 0.,
1426 numberAlgoTriggers);
1430 hName = recString +
"FdlDataTechDecision_" + str;
1431 histName = hName.c_str();
1433 hTitle =
"Data technical trigger decision word for BxInEvent = "
1435 histTitle = hTitle.c_str();
1438 histTitle, numberTechTriggers, 0., numberTechTriggers);
1441 hName = recString +
"FdlEmulTechDecision_" + str;
1442 histName = hName.c_str();
1444 hTitle =
"Emul: technical trigger decision word for BxInEvent = "
1446 histTitle = hTitle.c_str();
1449 histTitle, numberTechTriggers, 0., numberTechTriggers);
1452 hName = recString +
"FdlDataTechDecisionMask_" + str;
1453 histName = hName.c_str();
1456 =
"Data technical trigger decision word after mask for BxInEvent = "
1458 histTitle = hTitle.c_str();
1461 histTitle, numberTechTriggers, 0., numberTechTriggers);
1464 hName = recString +
"FdlEmulTechDecisionMask_" + str;
1465 histName = hName.c_str();
1468 =
"Emul: technical trigger decision word after mask for BxInEvent = "
1470 histTitle = hTitle.c_str();
1473 histTitle, numberTechTriggers, 0., numberTechTriggers);
1476 hName = recString +
"FdlDataEmulTechDecision_" + str;
1477 histName = hName.c_str();
1480 =
"Data vs emul: non-matching technical trigger decision word for BxInEvent = "
1482 histTitle = hTitle.c_str();
1485 histName, histTitle, numberTechTriggers, 0.,
1486 numberTechTriggers);
1488 hName = recString +
"FdlDataEmulTechDecisionMask_" + str;
1489 histName = hName.c_str();
1492 =
"Data vs emul: non-matching technical trigger decision word after mask for BxInEvent = "
1494 histTitle = hTitle.c_str();
1497 histName, histTitle, numberTechTriggers, 0.,
1498 numberTechTriggers);
1502 hName = recString +
"FdlDataEmul_Err";
1503 histName = hName.c_str();
1506 "FDL data vs emul: non-matching BxInEvent", 13, 0., 13.);
1521 hName = recString +
"FdlDataAlgoDecision_Err";
1522 histName = hName.c_str();
1525 = fdlHist.
make<TH1F>(
1527 "Data: algorithm trigger decision word, non-matching BxInEvent",
1528 numberAlgoTriggers, 0., numberAlgoTriggers);
1531 hName = recString +
"FdlEmulAlgoDecision_Err";
1532 histName = hName.c_str();
1535 = fdlHist.
make<TH1F>(
1537 "Emul: algorithm trigger decision word, non-matching BxInEvent",
1538 numberAlgoTriggers, 0., numberAlgoTriggers);
1540 hName = recString +
"FdlDataEmulAlgoDecision_Err";
1541 histName = hName.c_str();
1544 = fdlHist.
make<TH1F>(
1546 "Data vs emul: algorithm trigger decision word, non-matching BxInEvent",
1547 numberAlgoTriggers, 0., numberAlgoTriggers);
1550 hName = recString +
"FdlDataTechDecision_Err";
1551 histName = hName.c_str();
1554 = fdlHist.
make<TH1F>(
1556 "Data: technical trigger decision word, non-matching BxInEvent",
1557 numberTechTriggers, 0., numberTechTriggers);
1559 hName = recString +
"FdlEmulTechDecision_Err";
1560 histName = hName.c_str();
1563 = fdlHist.
make<TH1F>(
1565 "Emul: technical trigger decision word, non-matching BxInEvent",
1566 numberTechTriggers, 0., numberTechTriggers);
1568 hName = recString +
"FdlDataEmulTechDecision_Err";
1569 histName = hName.c_str();
1572 = fdlHist.
make<TH1F>(
1574 "Data vs emul: technical trigger decision word, non-matching BxInEvent",
1575 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
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
static const int NumberBData
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
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
T * make() const
make new ROOT object
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