55 m_l1GtDataDaqInputTag(paramSet.getParameter<
edm::
InputTag>(
"L1GtDataDaqInputTag")),
57 m_l1GtDataEvmInputTag(paramSet.getParameter<
edm::
InputTag>(
"L1GtDataEvmInputTag")),
59 m_l1GtEmulDaqInputTag(paramSet.getParameter<
edm::
InputTag>(
"L1GtEmulDaqInputTag")),
61 m_l1GtEmulEvmInputTag(paramSet.getParameter<
edm::
InputTag>(
"L1GtEmulEvmInputTag")),
63 m_l1GctDataInputTag(paramSet.getParameter<
edm::
InputTag>(
"L1GctDataInputTag")),
65 m_dirName(paramSet.getUntrackedParameter(
"DirName",
std::
string(
"L1TEMU/GTexpert"))),
67 m_excludeCondCategTypeObject(
70 m_excludeAlgoTrigByName(paramSet.getParameter<
std::vector<
std::
string> >(
"ExcludeAlgoTrigByName")),
72 m_excludeAlgoTrigByBit(paramSet.getParameter<
std::vector<
int> >(
"ExcludeAlgoTrigByBit")),
75 m_nrDataEventError(0),
76 m_nrEmulEventError(0),
78 m_l1GtMenuCacheID(0ULL),
79 m_l1GtPfAlgoCacheID(0ULL),
80 m_l1GtPfTechCacheID(0ULL),
81 m_l1GtTmAlgoCacheID(0ULL),
82 m_l1GtTmTechCacheID(0ULL),
87 m_dataOnlyMask(
false),
88 m_emulOnlyMask(
false),
95 if (!(itExclud->getParameter<
std::string>(
"ExcludedCondCategory")).empty()) {
103 if (!(itExclud->getParameter<
std::string>(
"ExcludedCondType")).empty()) {
111 if (!(itExclud->getParameter<
std::string>(
"ExcludedL1GtObject")).empty()) {
171 const char* histName;
173 hName = recString +
"gtfeDataEmul";
174 histName = hName.c_str();
191 int iIndex = iHist - ((TotalBxInEvent + 1) / 2 - 1);
192 int hIndex = (iIndex + 16) % 16;
194 std::stringstream
ss;
196 ss << std::uppercase << std::hex << hIndex;
206 hName = recString +
"FdlDataEmul_" +
str;
207 histName = hName.c_str();
209 std::string hTitle =
"FDL data vs emul mismatch for BxInEvent = " +
str;
231 hName = recString +
"Data_AlgoDecision_" +
str;
232 histName = hName.c_str();
234 hTitle =
"Data: algorithm decision word for BxInEvent = " +
str;
235 histTitle = hTitle.c_str();
238 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
241 hName = recString +
"Emul_AlgoDecision_" +
str;
242 histName = hName.c_str();
244 hTitle =
"Emul: algorithm decision word for BxInEvent = " +
str;
245 histTitle = hTitle.c_str();
248 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
252 hName = recString +
"Data_AlgoDecision_Prescaled_" +
str;
253 histName = hName.c_str();
255 hTitle =
"Data: prescaled algorithms: algorithm decision for BxInEvent = " +
str;
256 histTitle = hTitle.c_str();
259 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
262 hName = recString +
"Emul_AlgoDecision_Prescaled_" +
str;
263 histName = hName.c_str();
265 hTitle =
"Emul: prescaled algorithms: algorithm decision for BxInEvent = " +
str;
266 histTitle = hTitle.c_str();
269 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
273 hName = recString +
"Data_AlgoDecision_Unprescaled_" +
str;
274 histName = hName.c_str();
276 hTitle =
"Data: unprescaled algorithms: algorithm decision for BxInEvent = " +
str;
277 histTitle = hTitle.c_str();
280 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
283 hName = recString +
"Emul_AlgoDecision_Unprescaled_" +
str;
284 histName = hName.c_str();
286 hTitle =
"Emul: unprescaled algorithms: algorithm decision for BxInEvent = " +
str;
287 histTitle = hTitle.c_str();
290 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
294 hName = recString +
"Data_AlgoDecisionAfterMask_" +
str;
295 histName = hName.c_str();
297 hTitle =
"Data, physics partition: algorithm decision word after mask for BxInEvent = " +
str;
298 histTitle = hTitle.c_str();
301 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
304 hName = recString +
"Emul_AlgoDecisionAfterMask_" +
str;
305 histName = hName.c_str();
307 hTitle =
"Emul, physics partition: algorithm decision word after mask for BxInEvent = " +
str;
308 histTitle = hTitle.c_str();
311 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
314 hName = recString +
"DataEmul_AlgoDecision_" +
str;
315 histName = hName.c_str();
317 hTitle =
"Data vs emul: non-matching algorithm decision word for BxInEvent = " +
str;
318 histTitle = hTitle.c_str();
321 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
324 hName = recString +
"DataEmul_AlgoDecision_Prescaled_" +
str;
325 histName = hName.c_str();
327 hTitle =
"Data vs emul: prescaled algorithms with non-matching decision for BxInEvent = " +
str;
328 histTitle = hTitle.c_str();
331 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
334 hName = recString +
"DataEmul_AlgoDecision_Unprescaled_" +
str;
335 histName = hName.c_str();
337 hTitle =
"Data vs emul: unprescaled algorithms with non-matching decision for BxInEvent = " +
str;
338 histTitle = hTitle.c_str();
341 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
344 hName = recString +
"DataEmul_AlgoDecision_Unprescaled_Allowed_" +
str;
345 histName = hName.c_str();
347 hTitle =
"Data vs emul: unprescaled algorithms not excluded with non-matching decision for BxInEvent = " +
str;
348 histTitle = hTitle.c_str();
351 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
354 hName = recString +
"Data_AlgoDecision_NoMatch_" +
str;
355 histName = hName.c_str();
357 hTitle =
"Data: algorithm decision for non-matching cases for BxInEvent = " +
str;
358 histTitle = hTitle.c_str();
361 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
364 hName = recString +
"Emul_AlgoDecision_NoMatch_" +
str;
365 histName = hName.c_str();
367 hTitle =
"Emul: algorithm decision for non-matching cases for BxInEvent = " +
str;
368 histTitle = hTitle.c_str();
371 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
374 hName = recString +
"Data_AlgoDecision_Prescaled_NoMatch_" +
str;
375 histName = hName.c_str();
377 hTitle =
"Data: prescaled algorithms: non-matching algorithm decision for BxInEvent = " +
str;
378 histTitle = hTitle.c_str();
381 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
384 hName = recString +
"Emul_AlgoDecision_Prescaled_NoMatch_" +
str;
385 histName = hName.c_str();
387 hTitle =
"Emul: prescaled algorithms: non-matching algorithm decision for BxInEvent = " +
str;
388 histTitle = hTitle.c_str();
391 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
394 hName = recString +
"Data_AlgoDecision_Unprescaled_NoMatch_" +
str;
395 histName = hName.c_str();
397 hTitle =
"Data: unprescaled algorithms: non-matching algorithm decision for BxInEvent = " +
str;
398 histTitle = hTitle.c_str();
401 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
404 hName = recString +
"Emul_AlgoDecision_Unprescaled_NoMatch_" +
str;
405 histName = hName.c_str();
407 hTitle =
"Emul: unprescaled algorithms: non-matching algorithm decision for BxInEvent = " +
str;
408 histTitle = hTitle.c_str();
411 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
414 hName = recString +
"Data_AlgoDecisionMask_NoMatch_" +
str;
415 histName = hName.c_str();
417 hTitle =
"Data: algorithm decision for non-matching cases after mask for BxInEvent = " +
str;
418 histTitle = hTitle.c_str();
421 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
424 hName = recString +
"Emul_AlgoDecisionMask_NoMatch_" +
str;
425 histName = hName.c_str();
427 hTitle =
"Emul: algorithm decision for non-matching cases after mask for BxInEvent = " +
str;
428 histTitle = hTitle.c_str();
431 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
434 hName = recString +
"Data_AlgoDecisionMask_Prescaled_NoMatch_" +
str;
435 histName = hName.c_str();
437 hTitle =
"Data: prescaled algorithms: non-matching algorithm decision after mask for BxInEvent = " +
str;
438 histTitle = hTitle.c_str();
441 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
444 hName = recString +
"Emul_AlgoDecision_PrescaledMask_NoMatch_" +
str;
445 histName = hName.c_str();
447 hTitle =
"Emul: prescaled algorithms: non-matching algorithm decision after mask for BxInEvent = " +
str;
448 histTitle = hTitle.c_str();
451 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
454 hName = recString +
"Data_AlgoDecision_UnprescaledMask_NoMatch_" +
str;
455 histName = hName.c_str();
457 hTitle =
"Data: unprescaled algorithms: non-matching algorithm decision after mask for BxInEvent = " +
str;
458 histTitle = hTitle.c_str();
461 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
464 hName = recString +
"Emul_AlgoDecision_UnprescaledMask_NoMatch_" +
str;
465 histName = hName.c_str();
467 hTitle =
"Emul: unprescaled algorithms: non-matching algorithm decision after mask for BxInEvent = " +
str;
468 histTitle = hTitle.c_str();
471 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
474 hName = recString +
"DataEmul_AlgoDecisionAfterMask_" +
str;
475 histName = hName.c_str();
478 "Data vs emul, physics partition: non-matching algorithm decision word after mask for BxInEvent = " +
str;
479 histTitle = hTitle.c_str();
482 ibooker.
book1D(histName, histTitle, numberAlgoTriggers, 0., numberAlgoTriggers);
486 hName = recString +
"Data_TechDecision_" +
str;
487 histName = hName.c_str();
489 hTitle =
"Data technical trigger decision word for BxInEvent = " +
str;
490 histTitle = hTitle.c_str();
493 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
496 hName = recString +
"Emul_TechDecision_" +
str;
497 histName = hName.c_str();
499 hTitle =
"Emul: technical trigger decision word for BxInEvent = " +
str;
500 histTitle = hTitle.c_str();
503 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
506 hName = recString +
"Data_TechDecisionAfterMask_" +
str;
507 histName = hName.c_str();
509 hTitle =
"Data technical trigger decision word after mask for BxInEvent = " +
str;
510 histTitle = hTitle.c_str();
513 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
516 hName = recString +
"Emul_TechDecisionAfterMask_" +
str;
517 histName = hName.c_str();
519 hTitle =
"Emul: technical trigger decision word after mask for BxInEvent = " +
str;
520 histTitle = hTitle.c_str();
523 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
526 hName = recString +
"DataEmul_TechDecision_" +
str;
527 histName = hName.c_str();
529 hTitle =
"Data vs emul: non-matching technical trigger decision word for BxInEvent = " +
str;
530 histTitle = hTitle.c_str();
533 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
535 hName = recString +
"DataEmul_TechDecisionAfterMask_" +
str;
536 histName = hName.c_str();
538 hTitle =
"Data vs emul: non-matching technical trigger decision word after mask for BxInEvent = " +
str;
539 histTitle = hTitle.c_str();
542 ibooker.
book1D(histName, histTitle, numberTechTriggers, 0., numberTechTriggers);
552 hName = recString +
"FdlDataEmul_Err";
553 histName = hName.c_str();
556 ibooker.
book1D(histName,
"FDL data vs emul mismatch for non-matching BxInEvent in FDL payload", 13, 0., 13.);
571 hName = recString +
"FdlDataAlgoDecision_Err";
572 histName = hName.c_str();
575 "Data: algorithm trigger decision word, non-matching BxInEvent",
581 hName = recString +
"Emul_AlgoDecision_Err";
582 histName = hName.c_str();
585 "Emul: algorithm trigger decision word, non-matching BxInEvent",
590 hName = recString +
"DataEmul_AlgoDecision_Err";
591 histName = hName.c_str();
595 "Data vs emul: algorithm trigger decision word, non-matching BxInEvent",
601 hName = recString +
"Data_TechDecision_Err";
602 histName = hName.c_str();
605 "Data: technical trigger decision word, non-matching BxInEvent",
610 hName = recString +
"Emul_TechDecision_Err";
611 histName = hName.c_str();
614 "Emul: technical trigger decision word, non-matching BxInEvent",
619 hName = recString +
"DataEmul_TechDecision_Err";
620 histName = hName.c_str();
624 "Data vs emul: technical trigger decision word, non-matching BxInEvent",
634 "Algorithms excluded from data versus emulator agreement flag",
641 m_gtErrorFlag = ibooker.
book1D(
"GTErrorFlag",
"L1 GT error flag for data versus emulator comparison", 5, 0., 5);
676 for (
CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
677 const int algBitNumber = (itAlgo->second).algoBitNumber();
679 std::stringstream
ss;
681 ss << std::uppercase << algBitNumber;
684 const std::string& aName = algBitString +
" " + itAlgo->first;
685 const char* algName = aName.c_str();
688 for (
int iBxInEvent = 0; iBxInEvent <
TotalBxInEvent; ++iBxInEvent) {
690 int iIndex = iBxInEvent - ((TotalBxInEvent + 1) / 2 - 1);
691 int hIndex = (iIndex + 16) % 16;
693 std::stringstream
ss;
695 ss << std::uppercase << std::hex << hIndex;
745 if (algBitNumber == *itAlgo) {
813 if (gtfeBlockData == gtfeBlockEmul) {
814 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE blocks: identical.\n";
817 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE blocks: different.\n";
832 const uint16_t boardIdData = gtfeBlockData.
boardId();
833 const uint16_t boardIdEmul = gtfeBlockEmul.
boardId();
835 if (boardIdData == boardIdEmul) {
836 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE boardId identical.";
837 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
842 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE boardId different.";
843 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
845 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
852 const uint16_t recordLength1Data = gtfeBlockData.
recordLength1();
853 const uint16_t recordLength1Emul = gtfeBlockEmul.
recordLength1();
855 if (recordLength1Data == recordLength1Emul) {
856 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE recordLength for alternative 1 identical.";
861 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE recordLength for alternative 1 different.";
862 m_myCoutStream <<
"\n Data: recordLength1() = " << recordLength1Data;
863 m_myCoutStream <<
"\n Emul: recordLength1() = " << recordLength1Emul;
869 const uint16_t recordLengthData = gtfeBlockData.
recordLength();
870 const uint16_t recordLengthEmul = gtfeBlockEmul.
recordLength();
872 if (recordLengthData == recordLengthEmul) {
873 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE recordLength for alternative 0 identical.";
878 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE recordLength for alternative 1 different.";
879 m_myCoutStream <<
"\n Data: recordLength() = " << recordLengthData;
880 m_myCoutStream <<
"\n Emul: recordLength() = " << recordLengthEmul;
886 const uint16_t bxNrData = gtfeBlockData.
bxNr();
887 const uint16_t bxNrEmul = gtfeBlockEmul.
bxNr();
889 if (bxNrData == bxNrEmul) {
890 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE bxNr identical.";
895 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE bxNr different.";
903 const uint32_t setupVersionData = gtfeBlockData.
setupVersion();
904 const uint32_t setupVersionEmul = gtfeBlockEmul.
setupVersion();
906 if (setupVersionData == setupVersionEmul) {
907 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE setupVersion identical.";
912 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE setupVersion different.";
913 m_myCoutStream <<
"\n Data: setupVersion() = " << setupVersionData;
914 m_myCoutStream <<
"\n Emul: setupVersion() = " << setupVersionEmul;
920 const uint16_t activeBoardsData = gtfeBlockData.
activeBoards();
921 const uint16_t activeBoardsEmul = gtfeBlockEmul.
activeBoards();
923 if (activeBoardsData == activeBoardsEmul) {
924 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE activeBoards identical.";
925 m_myCoutStream <<
"\n activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
926 << activeBoardsData << std::setfill(
' ') <<
std::dec;
930 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE activeBoards different.";
931 m_myCoutStream <<
"\n Data: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
932 << activeBoardsData << std::setfill(
' ') <<
std::dec;
933 m_myCoutStream <<
"\n Emul: activeBoards() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
934 << activeBoardsEmul << std::setfill(
' ') <<
std::dec;
942 const uint16_t altNrBxBoardData = gtfeBlockData.
altNrBxBoard();
943 const uint16_t altNrBxBoardEmul = gtfeBlockEmul.
altNrBxBoard();
945 if (altNrBxBoardData == altNrBxBoardEmul) {
946 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE altNrBxBoard identical.";
951 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE altNrBxBoard different.";
952 m_myCoutStream <<
"\n Data: altNrBxBoard() = " << altNrBxBoardData;
953 m_myCoutStream <<
"\n Emul: altNrBxBoard() = " << altNrBxBoardEmul;
959 const uint32_t totalTriggerNrData = gtfeBlockData.
totalTriggerNr();
960 const uint32_t totalTriggerNrEmul = gtfeBlockEmul.
totalTriggerNr();
962 if (totalTriggerNrData == totalTriggerNrEmul) {
963 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE totalTriggerNr identical.";
968 m_myCoutStream <<
"\n" << recString <<
" Data and emulated GTFE totalTriggerNr different.";
969 m_myCoutStream <<
"\n Data: totalTriggerNr() = " << totalTriggerNrData;
970 m_myCoutStream <<
"\n Emul: totalTriggerNr() = " << totalTriggerNrEmul;
987 int PhysicsPartition = 0;
992 if (fdlBlockData == fdlBlockEmul) {
993 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: identical.\n";
997 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL blocks: different.\n";
1013 const int bxInEventData = fdlBlockData.
bxInEvent();
1014 const int bxInEventEmul = fdlBlockEmul.
bxInEvent();
1016 bool matchBxInEvent =
false;
1018 if (bxInEventData == bxInEventEmul) {
1019 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent identical.";
1022 matchBxInEvent =
true;
1025 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxInEvent different.";
1036 <<
"\n Data and emulated FDL bxInEvent different \n";
1045 bool validBxInEvent =
false;
1047 LogDebug(
"L1GtHwValidation") <<
"\n Convert bxInEvent = " << bxInEventData <<
" to histIndex = " << histIndex
1050 validBxInEvent =
true;
1056 const uint16_t boardIdData = fdlBlockData.
boardId();
1057 const uint16_t boardIdEmul = fdlBlockEmul.
boardId();
1059 if (boardIdData == boardIdEmul) {
1060 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL boardId identical.";
1061 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1066 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL boardId different.";
1067 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1069 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
1073 if (matchBxInEvent && validBxInEvent) {
1085 const uint16_t bxNrData = fdlBlockData.
bxNr();
1086 const uint16_t bxNrEmul = fdlBlockEmul.
bxNr();
1088 if (bxNrData == bxNrEmul) {
1089 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxNr identical.";
1094 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL bxNr different.";
1099 if (matchBxInEvent && validBxInEvent) {
1111 const uint32_t eventNrData = fdlBlockData.
eventNr();
1112 const uint32_t eventNrEmul = fdlBlockEmul.
eventNr();
1114 if (eventNrData == eventNrEmul) {
1115 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL eventNr identical.";
1120 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL eventNr different.";
1125 if (matchBxInEvent && validBxInEvent) {
1140 int nTechBits = gtTechnicalTriggerWordData.size();
1145 unsigned int bitValue = 0;
1147 if (matchBxInEvent && validBxInEvent) {
1148 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
1151 if (gtTechnicalTriggerWordData[iBit]) {
1154 bitValue = (triggerMask) ? 0 : 1;
1155 gtTechnicalTriggerWordDataMask[iBit] = bitValue;
1161 if (gtTechnicalTriggerWordEmul.at(iBit)) {
1164 bitValue = (triggerMask) ? 0 : 1;
1165 gtTechnicalTriggerWordEmulMask[iBit] = bitValue;
1172 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
1173 if (gtTechnicalTriggerWordData[iBit]) {
1177 if (gtTechnicalTriggerWordEmul.at(iBit)) {
1183 if (gtTechnicalTriggerWordData == gtTechnicalTriggerWordEmul) {
1184 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord identical.\n";
1189 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord different.";
1196 if (matchBxInEvent && validBxInEvent) {
1202 if (matchBxInEvent && validBxInEvent) {
1203 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
1204 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
1209 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
1210 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
1221 if (gtTechnicalTriggerWordDataMask == gtTechnicalTriggerWordEmulMask) {
1222 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord after mask identical.\n";
1226 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtTechnicalTriggerWord after mask different.";
1231 if (matchBxInEvent && validBxInEvent) {
1237 if (matchBxInEvent && validBxInEvent) {
1238 for (
int iBit = 0; iBit < nTechBits; ++iBit) {
1239 if (gtTechnicalTriggerWordData[iBit] != gtTechnicalTriggerWordEmul.at(iBit)) {
1254 int nAlgoBits = gtDecisionWordData.size();
1264 size_t pfSetsSize = (*m_prescaleFactorsAlgoTrig).size();
1267 LogDebug(
"L1GtHwValidation") <<
"\nError: index of prescale factor set retrieved from the data \n" 1268 <<
"less than zero." 1269 <<
"\n Value of index retrieved from data = " << iPfSet << std::endl;
1275 }
else if (iPfSet >= (static_cast<int>(pfSetsSize))) {
1276 LogDebug(
"L1GtHwValidation") <<
"\nError: index of prescale factor set retrieved from the data \n" 1277 <<
"greater than the size of the vector of prescale factor sets." 1278 <<
"\n Value of index retrieved from data = " << iPfSet
1279 <<
"\n Vector size = " << pfSetsSize << std::endl;
1286 const std::vector<int>& prescaleFactorsAlgoTrig = (*m_prescaleFactorsAlgoTrig).at(iPfSet);
1288 if (matchBxInEvent && validBxInEvent) {
1289 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1294 LogTrace(
"L1GtHwValidation") <<
"Bit " << iBit <<
": prescale factor = " << prescaleFactor
1295 <<
" trigger mask = " << triggerMask << std::endl;
1297 if (gtDecisionWordData[iBit]) {
1300 if (prescaleFactor == 1) {
1306 bitValue = (triggerMask) ? 0 : 1;
1307 gtDecisionWordDataMask[iBit] = bitValue;
1313 if (gtDecisionWordEmul.at(iBit)) {
1316 bitValue = (triggerMask) ? 0 : 1;
1317 gtDecisionWordEmulMask[iBit] = bitValue;
1324 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1325 if (gtDecisionWordData[iBit]) {
1330 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1331 if (gtDecisionWordEmul.at(iBit)) {
1340 <<
"\n matchBxInEvent && validBxInEvent false \n";
1344 if (gtDecisionWordData == gtDecisionWordEmul) {
1345 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord identical.";
1350 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord different.";
1357 if (matchBxInEvent && validBxInEvent) {
1363 if (matchBxInEvent && validBxInEvent) {
1364 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1367 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
1371 if (
excludedAlgo(iBit) && (bxInEventData == 0) && (iRec == 0)) {
1375 if (prescaleFactor == 1) {
1387 if (gtDecisionWordData[iBit]) {
1390 if (prescaleFactor == 1) {
1395 if ((!
excludedAlgo(iBit)) && (bxInEventData == 0) && (iRec == 0)) {
1400 <<
"result before mask for algorithm with bit number " << iBit
1401 <<
"\n Data: true, emulator: false \n";
1411 if (prescaleFactor == 1) {
1416 if ((!
excludedAlgo(iBit)) && (bxInEventData == 0) && (iRec == 0)) {
1421 <<
"result before mask for algorithm with bit number " << iBit
1422 <<
"\n Data: false, emulator: true \n";
1432 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1433 if (gtDecisionWordData[iBit] != gtDecisionWordEmul.at(iBit)) {
1442 <<
"\n matchBxInEvent && validBxInEvent false \n";
1447 if (gtDecisionWordDataMask == gtDecisionWordEmulMask) {
1448 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord after mask identical.";
1452 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWord after mask different.";
1457 if (matchBxInEvent && validBxInEvent) {
1463 if (matchBxInEvent && validBxInEvent) {
1464 for (
int iBit = 0; iBit < nAlgoBits; ++iBit) {
1465 if (gtDecisionWordDataMask[iBit] != gtDecisionWordEmulMask.at(iBit)) {
1470 if (gtDecisionWordDataMask[iBit]) {
1473 if (prescaleFactor == 1) {
1478 if ((!
excludedAlgo(iBit)) && (bxInEventData == 0) && (iRec == 0)) {
1483 <<
"result after mask for algorithm with bit number " << iBit
1484 <<
" different in data versus emulator " 1485 <<
"\n Data: true, emulator: false \n";
1495 if (prescaleFactor == 1) {
1500 if ((!
excludedAlgo(iBit)) && (bxInEventData == 0) && (iRec == 0)) {
1505 <<
"result after mask for algorithm with bit number " << iBit
1506 <<
" different in data versus emulator " 1507 <<
"\n Data: false, emulator: true \n";
1523 if (gtDecisionWordExtendedData == gtDecisionWordExtendedEmul) {
1524 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWordExtended identical.\n";
1529 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL gtDecisionWordExtended different.\n";
1536 if (matchBxInEvent && validBxInEvent) {
1544 const uint16_t noAlgoData = fdlBlockData.
noAlgo();
1545 const uint16_t noAlgoEmul = fdlBlockEmul.
noAlgo();
1547 if (noAlgoData == noAlgoEmul) {
1548 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL noAlgo identical.";
1553 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL noAlgo different.";
1558 if (matchBxInEvent && validBxInEvent) {
1566 const uint16_t finalORData = fdlBlockData.
finalOR();
1567 const uint16_t finalOREmul = fdlBlockEmul.
finalOR();
1569 if (finalORData == finalOREmul) {
1570 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR identical.";
1571 m_myCoutStream <<
"\n finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalORData
1576 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR different.";
1577 m_myCoutStream <<
"\n Data: finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalORData
1579 m_myCoutStream <<
"\n Emul: finalOR() = " << std::hex <<
"0x" << std::setw(2) << std::setfill(
'0') << finalOREmul
1583 if (matchBxInEvent && validBxInEvent) {
1591 const int finalORPhysData = finalORData & (1 << PhysicsPartition);
1592 const int finalORPhysEmul = finalOREmul & (1 << PhysicsPartition);
1594 if (finalORPhysData == finalORPhysEmul) {
1595 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR for the physics partition identical.";
1600 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL finalOR for the physics partition different.";
1605 if (matchBxInEvent && validBxInEvent) {
1613 const uint16_t localBxNrData = fdlBlockData.
localBxNr();
1614 const uint16_t localBxNrEmul = fdlBlockEmul.
localBxNr();
1616 if (localBxNrData == localBxNrEmul) {
1617 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL localBxNr identical.";
1622 m_myCoutStream <<
"\n" << recString <<
" Data and emulated FDL localBxNr different.";
1627 if (matchBxInEvent && validBxInEvent) {
1644 if (psbBlockData == psbBlockEmul) {
1645 m_myCoutStream <<
"\nData and emulated PSB blocks: identical.\n";
1649 m_myCoutStream <<
"\nData and emulated PSB blocks: different.\n";
1664 const uint16_t boardIdData = psbBlockData.
boardId();
1665 const uint16_t boardIdEmul = psbBlockEmul.
boardId();
1667 if (boardIdData == boardIdEmul) {
1669 m_myCoutStream <<
"\n boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1675 m_myCoutStream <<
"\n Data: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdData
1677 m_myCoutStream <<
"\n Emul: boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << boardIdEmul
1683 const int bxInEventData = psbBlockData.
bxInEvent();
1684 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
1686 if (bxInEventData == bxInEventEmul) {
1687 m_myCoutStream <<
"\nData and emulated PSB bxInEvent identical.";
1692 m_myCoutStream <<
"\nData and emulated PSB bxInEvent different.";
1699 const uint16_t bxNrData = psbBlockData.
bxNr();
1700 const uint16_t bxNrEmul = psbBlockEmul.
bxNr();
1702 if (bxNrData == bxNrEmul) {
1715 const uint32_t eventNrData = psbBlockData.
eventNr();
1716 const uint32_t eventNrEmul = psbBlockEmul.
eventNr();
1718 if (eventNrData == eventNrEmul) {
1734 for (
int iA = 0; iA < psbBlockData.
NumberAData; ++iA) {
1735 valData = psbBlockData.
aData(iA);
1736 valEmul = psbBlockEmul.
aData(iA);
1738 if (valData == valEmul) {
1739 m_myCoutStream <<
"\nData and emulated PSB aData(" << iA <<
") identical.";
1740 m_myCoutStream <<
"\n aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
1745 m_myCoutStream <<
"\nData and emulated PSB aData(" << iA <<
") different.";
1746 m_myCoutStream <<
"\n Data: aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
1748 m_myCoutStream <<
"\n Emul: aData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valEmul
1755 for (
int iB = 0; iB < psbBlockData.
NumberBData; ++iB) {
1756 valData = psbBlockData.
bData(iB);
1757 valEmul = psbBlockEmul.
bData(iB);
1759 if (valData == valEmul) {
1760 m_myCoutStream <<
"\nData and emulated PSB bData(" << iB <<
") identical.";
1761 m_myCoutStream <<
"\n bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
1766 m_myCoutStream <<
"\nData and emulated PSB bData(" << iB <<
") different.";
1767 m_myCoutStream <<
"\n Data: bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valData
1769 m_myCoutStream <<
"\n Emul: bData(iA) = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0') << valEmul
1776 const uint16_t localBxNrData = psbBlockData.
localBxNr();
1777 const uint16_t localBxNrEmul = psbBlockEmul.
localBxNr();
1779 if (localBxNrData == localBxNrEmul) {
1780 m_myCoutStream <<
"\nData and emulated PSB localBxNr identical.";
1785 m_myCoutStream <<
"\nData and emulated PSB localBxNr different.";
1820 bool validData =
false;
1822 if (!gtReadoutRecordData.
isValid()) {
1832 bool validEmul =
false;
1834 if (!gtReadoutRecordEmul.
isValid()) {
1840 if ((!validData) || (!validEmul)) {
1841 edm::LogWarning(
"L1GtHwValidation") <<
"\n No valid product found: DAQ L1GlobalTriggerReadoutRecord" 1842 <<
"\n Data validity [1 = true; 0 = false]: " << validData
1843 <<
"\n Emulator validity: [1 = true; 0 = false]: " << validEmul
1844 <<
"\n DAQ histograms will not be filled.\n" 1854 compareGTFE(iEvent, evSetup, gtfeBlockData, gtfeBlockEmul, iRec);
1857 const std::vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->
gtFdlVector();
1858 const std::vector<L1GtFdlWord>& gtFdlVectorEmul = gtReadoutRecordEmul->
gtFdlVector();
1860 int gtFdlVectorDataSize = gtFdlVectorData.size();
1861 int gtFdlVectorEmulSize = gtFdlVectorEmul.size();
1863 if (gtFdlVectorDataSize == gtFdlVectorEmulSize) {
1864 m_myCoutStream <<
"\nData and emulated FDL vector size: identical.\n";
1867 for (
int iFdl = 0; iFdl < gtFdlVectorDataSize; ++iFdl) {
1868 const L1GtFdlWord& fdlBlockData = gtFdlVectorData[iFdl];
1869 const L1GtFdlWord& fdlBlockEmul = gtFdlVectorEmul[iFdl];
1871 compareFDL(iEvent, evSetup, fdlBlockData, fdlBlockEmul, iRec);
1874 m_myCoutStream <<
"\nData and emulated FDL vector size: different.\n";
1875 m_myCoutStream <<
" Data: size = " << gtFdlVectorDataSize << std::endl;
1876 m_myCoutStream <<
" Emul: size = " << gtFdlVectorEmulSize << std::endl;
1885 const std::vector<L1GtPsbWord>& gtPsbVectorData = gtReadoutRecordData->
gtPsbVector();
1886 const std::vector<L1GtPsbWord>& gtPsbVectorEmul = gtReadoutRecordEmul->
gtPsbVector();
1888 int gtPsbVectorDataSize = gtPsbVectorData.size();
1889 int gtPsbVectorEmulSize = gtPsbVectorEmul.size();
1891 if (gtPsbVectorDataSize == gtPsbVectorEmulSize) {
1892 m_myCoutStream <<
"\nData and emulated PSB vector size: identical.\n";
1895 m_myCoutStream <<
"\nData and emulated PSB vector size: different.\n";
1896 m_myCoutStream <<
" Data: size = " << gtPsbVectorDataSize << std::endl;
1897 m_myCoutStream <<
" Emul: size = " << gtPsbVectorEmulSize << std::endl;
1903 for (
int iPsb = 0; iPsb < gtPsbVectorDataSize; ++iPsb) {
1904 const L1GtPsbWord& psbBlockData = gtPsbVectorData[iPsb];
1905 const uint16_t boardIdData = psbBlockData.
boardId();
1906 const int bxInEventData = psbBlockData.
bxInEvent();
1911 bool foundPSB =
false;
1913 for (
int iPsbF = 0; iPsbF < gtPsbVectorEmulSize; ++iPsbF) {
1914 const L1GtPsbWord& psbBlockEmul = gtPsbVectorEmul[iPsbF];
1915 const uint16_t boardIdEmul = psbBlockEmul.
boardId();
1916 const int bxInEventEmul = psbBlockEmul.
bxInEvent();
1918 if ((boardIdEmul == boardIdData) && (bxInEventData == bxInEventEmul)) {
1922 comparePSB(iEvent, evSetup, psbBlockData, psbBlockEmul);
1927 m_myCoutStream <<
"\nNo emulated PSB with boardId() = " << std::hex <<
"0x" << std::setw(4) << std::setfill(
'0')
1928 << boardIdData << std::setfill(
' ') <<
std::dec <<
" and BxInEvent = " << bxInEventData
1962 bool validData =
false;
1964 if (!gtReadoutRecordData.
isValid()) {
1974 bool validEmul =
false;
1976 if (!gtReadoutRecordEmul.
isValid()) {
1982 if ((!validData) || (!validEmul)) {
1983 edm::LogWarning(
"L1GtHwValidation") <<
"\n No valid product found: EVM L1GlobalTriggerEvmReadoutRecord" 1984 <<
"\n Data validity [1 = true; 0 = false]: " << validData
1985 <<
"\n Emulator validity: [1 = true; 0 = false]: " << validEmul
1986 <<
"\n EVM histograms will not be filled.\n" 1996 compareGTFE(iEvent, evSetup, gtfeBlockData, gtfeBlockEmul, iRec);
1999 const std::vector<L1GtFdlWord>& gtFdlVectorData = gtReadoutRecordData->
gtFdlVector();
2000 const std::vector<L1GtFdlWord>& gtFdlVectorEmul = gtReadoutRecordEmul->
gtFdlVector();
2002 int gtFdlVectorDataSize = gtFdlVectorData.size();
2003 int gtFdlVectorEmulSize = gtFdlVectorEmul.size();
2005 if (gtFdlVectorDataSize == gtFdlVectorEmulSize) {
2006 m_myCoutStream <<
"\nData and emulated FDL vector size: identical.\n";
2009 for (
int iFdl = 0; iFdl < gtFdlVectorDataSize; ++iFdl) {
2010 const L1GtFdlWord& fdlBlockData = gtFdlVectorData[iFdl];
2011 const L1GtFdlWord& fdlBlockEmul = gtFdlVectorEmul[iFdl];
2013 compareFDL(iEvent, evSetup, fdlBlockData, fdlBlockEmul, iRec);
2016 m_myCoutStream <<
"\nData and emulated FDL vector size: different.\n";
2017 m_myCoutStream <<
" Data: size = " << gtFdlVectorDataSize << std::endl;
2018 m_myCoutStream <<
" Emul: size = " << gtFdlVectorEmulSize << std::endl;
2057 bool matchValue =
false;
2059 if (excludedCategory ==
CondNull) {
2062 if (conditionCategory == excludedCategory) {
2071 bool matchValue =
false;
2076 if (conditionType == excludedType) {
2086 bool matchValue =
false;
2088 if (excludedObject ==
ObjNull) {
2092 for (std::vector<L1GtObject>::const_iterator itCondObj = condObjects.begin(); itCondObj != condObjects.end();
2094 if ((*itCondObj) == excludedObject) {
2106 for (
CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
2108 const int algBitNumber = (itAlgo->second).algoBitNumber();
2109 const int chipNr = (itAlgo->second).algoChipNumber();
2113 const std::vector<L1GtLogicParser::TokenRPN>& aRpnVector = (itAlgo->second).algoRpnVector();
2114 size_t aRpnVectorSize = aRpnVector.size();
2116 bool algWithExcludedCondition =
false;
2117 bool algWithConditionNotInMap =
false;
2120 for (
size_t opI = 0; opI < aRpnVectorSize; ++opI) {
2121 const std::string& cndName = (aRpnVector[opI]).operand;
2123 if (!cndName.empty()) {
2124 bool foundCond =
false;
2126 CItCond itCond = conditionMap.find(cndName);
2127 if (itCond != conditionMap.end()) {
2130 const std::vector<L1GtObject>&
objType = (itCond->second)->objectType();
2144 LogTrace(
"L1GtHwValidation") <<
"\n " 2145 <<
"Algorithm: " << algName <<
" Condition: " << cndName <<
"\n " 2150 <<
"Object excluded: " 2153 if (matchCondCategoryValue && matchCondTypeValue && matchCondL1GtObjectValue) {
2154 algWithExcludedCondition =
true;
2164 algWithConditionNotInMap =
true;
2166 LogTrace(
"L1GtHwValidation") <<
"\n Error: condition " << cndName <<
" not found in condition map!" 2167 <<
"\n Add algorithm " << algName <<
" (bit number " << algBitNumber <<
") " 2168 <<
"\n to list of algorithms excluded from comparison" 2169 <<
"\n data versus emulator." << std::endl;
2174 if (algWithConditionNotInMap) {
2179 LogTrace(
"L1GtHwValidation") <<
"\n Error: one or more conditions from algorithm " << algName <<
" (bit number " 2180 << algBitNumber <<
") " 2181 <<
" not found in condition map!" 2182 <<
"\n Add it to list of algorithms excluded from comparison" 2183 <<
"\n data versus emulator." << std::endl;
2186 if (algWithExcludedCondition) {
2189 LogTrace(
"L1GtHwValidation") <<
"\n Algorithm " << algName <<
" (bit number " << algBitNumber
2190 <<
") contains an excluded condition." 2191 <<
"\n Add it to list of algorithms excluded from comparison" 2192 <<
"\n data versus emulator." << std::endl;
2199 if ((*itExcl) == algName) {
2202 LogTrace(
"L1GtHwValidation") <<
"\n Algorithm " << algName <<
" (bit number " << algBitNumber
2203 <<
")\n added to list of algorithms excluded from comparison" 2204 <<
" \n data versus emulator by ExcludeAlgoTrigByName." << std::endl;
2212 if ((*itExcl) == algBitNumber) {
2215 LogTrace(
"L1GtHwValidation") <<
"\n Algorithm " << algName <<
" (bit number " << algBitNumber
2216 <<
")\n added to list of algorithms excluded from comparison" 2217 <<
" \n data versus emulator by ExcludeAlgoTrigByBit." << std::endl;
2226 if (iBit == *itAlgo) {
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
const cms_uint16_t bData(int iB) const
get/set B_DATA_CH_IB
MonitorElement * m_fdlDataEmulAlgoDecision[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlDataAlgoDecisionPrescaledMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const cms_uint16_t bxNr() const
get/set bunch cross number of the actual bx
const TechnicalTriggerWord & gtTechnicalTriggerWord() const
get/set technical trigger bits
MonitorElement * m_fdlEmulAlgoDecisionUnprescaled_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const L1GtTriggerMask * m_l1GtTmTech
const cms_uint16_t boardId() const
get/set board ID
~L1GtHwValidation() override
MonitorElement * m_fdlDataAlgoDecision_Err[NumberOfGtRecords]
const cms_uint16_t noAlgo() const
get/set NoAlgo
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > m_l1GtDataEvmInputToken_
virtual void compareGTFE(const edm::Event &, const edm::EventSetup &, const L1GtfeWord &, const L1GtfeWord &, const int)
compare the GTFE board
bool matchCondCategory(const L1GtConditionCategory &, const L1GtConditionCategory &)
book all histograms for the module
virtual void comparePSB(const edm::Event &, const edm::EventSetup &, const L1GtPsbWord &, const L1GtPsbWord &)
compare the PSB board
virtual void print(std::ostream &myCout) const
pretty print the content of a L1GtfeWord
const std::vector< std::vector< int > > * m_prescaleFactorsAlgoTrig
MonitorElement * m_gtErrorFlag
PSB.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void setCurrentFolder(std::string const &fullpath)
static const unsigned int NumberTechnicalTriggers
MonitorElement * m_fdlEmulTechDecision[TotalBxInEvent][NumberOfGtRecords]
std::vector< L1GtConditionType > m_excludedCondType
excluded condition types
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
const L1GtfeWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
MonitorElement * m_fdlDataEmulAlgoDecisionPrescaled[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlDataEmulAlgoDecisionUnprescaledAllowed[TotalBxInEvent][NumberOfGtRecords]
void excludedAlgoList()
exclude from comparison some bits with known disagreement - bit list
MonitorElement * m_fdlDataAlgoDecisionUnprescaledMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const std::vector< L1GtPsbWord > gtPsbVector() const
get the vector of L1GtPsbWord
std::string l1GtConditionCategoryEnumToString(const L1GtConditionCategory &)
edm::InputTag m_l1GtEmulEvmInputTag
input tag for the L1 GT emulator EVM record
MonitorElement * m_fdlEmulAlgoDecisionMask[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlDataAlgoDecisionUnprescaled[TotalBxInEvent][NumberOfGtRecords]
unsigned long long m_l1GtMenuCacheID
const L1GtPrescaleFactors * m_l1GtPfTech
std::string l1GtObjectEnumToString(const L1GtObject &)
MonitorElement * m_fdlEmulAlgoDecisionPrescaledMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
virtual void compareFDL(const edm::Event &, const edm::EventSetup &, const L1GtFdlWord &, const L1GtFdlWord &, const int)
compare the FDL board
const cms_uint16_t altNrBxBoard() const
get/set alternative for number of BX per board
bool matchCondL1GtObject(const std::vector< L1GtObject > &, const L1GtObject &)
std::vector< int > m_excludeAlgoTrigByBit
exclude algorithm triggers from comparison data - emulator by algorithm bit number ...
virtual void compareTCS(const edm::Event &, const edm::EventSetup &, const L1TcsWord &, const L1TcsWord &)
compare the TCS board
unsigned long long m_l1GtTmAlgoCacheID
MonitorElement * m_fdlEmulTechDecisionMask[TotalBxInEvent][NumberOfGtRecords]
const cms_uint16_t bxNr() const
get/set BxNr - bunch cross number of the actual bx
MonitorElement * m_fdlDataAlgoDecisionPrescaled[TotalBxInEvent][NumberOfGtRecords]
const cms_uint16_t boardId() const
get/set board ID
MonitorElement * m_fdlDataAlgoDecisionMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
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
MonitorElement * m_gtfeDataEmul[NumberOfGtRecords]
histograms
L1GtConditionType l1GtConditionTypeStringToEnum(const std::string &)
MonitorElement * m_fdlDataAlgoDecisionUnprescaled_NoMatch[TotalBxInEvent][NumberOfGtRecords]
std::vector< bool > DecisionWordExtended
std::vector< unsigned int > m_triggerMaskTechTrig
MonitorElement * m_fdlDataEmulAlgoDecisionMask[TotalBxInEvent][NumberOfGtRecords]
L1GtObject l1GtObjectStringToEnum(const std::string &)
const cms_uint16_t aData(int iA) const
get/set A_DATA_CH_IA
std::vector< L1GtObject > m_excludedL1GtObject
excluded L1 GT objects
MonitorElement * m_fdlDataAlgoDecisionPrescaled_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const std::vector< unsigned int > & gtTriggerMask() const
get the trigger mask
std::vector< std::string > m_excludeAlgoTrigByName
exclude algorithm triggers from comparison data - emulator by algorithm name
std::vector< bool > DecisionWord
typedefs
MonitorElement * m_excludedAlgorithmsAgreement
const L1GtTriggerMask * m_l1GtTmAlgo
trigger masks
bool m_agree
internal members
edm::InputTag m_l1GtEmulDaqInputTag
input tag for the L1 GT emulator DAQ record
MonitorElement * m_fdlDataEmulTechDecision[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlEmulAlgoDecisionUnprescaledMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
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
L1GtConditionCategory
condition categories
virtual void compareEvmRecord(const edm::Event &, const edm::EventSetup &)
L1 GT EVM record comparison.
MonitorElement * m_fdlDataTechDecision_Err[NumberOfGtRecords]
bool matchCondType(const L1GtConditionType &, const L1GtConditionType &)
MonitorElement * m_fdlDataAlgoDecision[TotalBxInEvent][NumberOfGtRecords]
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
L1GtHwValidation(const edm::ParameterSet &)
static const unsigned int NumberPhysTriggers
L1GtConditionCategory l1GtConditionCategoryStringToEnum(const std::string &)
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > m_l1GtDataDaqInputToken_
static const int TotalBxInEvent
MonitorElement * m_fdlEmulAlgoDecisionUnprescaled[TotalBxInEvent][NumberOfGtRecords]
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
const L1GtTriggerMenu * m_l1GtMenu
trigger menu
MonitorElement * m_fdlEmulAlgoDecision_Err[NumberOfGtRecords]
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > m_l1GtEmulEvmInputToken_
void print(std::ostream &myCout) const
pretty print the content of a L1GtFdlWord
void print(std::ostream &myCout) const
pretty print
std::string l1GtConditionTypeEnumToString(const L1GtConditionType &)
const cms_uint16_t boardId() const
get/set board ID
unsigned long long m_l1GtPfAlgoCacheID
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in PSB
MonitorElement * m_fdlDataTechDecisionMask[TotalBxInEvent][NumberOfGtRecords]
edm::InputTag m_l1GtDataDaqInputTag
input tag for the L1 GT hardware DAQ record
MonitorElement * m_fdlDataAlgoDecision_NoMatch[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlDataEmul[TotalBxInEvent][NumberOfGtRecords]
FDL (0 for DAQ, 1 for EVM record)
const cms_uint16_t gtPrescaleFactorIndexAlgo() const
MonitorElement * m_fdlDataEmul_Err[NumberOfGtRecords]
const std::vector< std::vector< int > > & gtPrescaleFactors() const
get the prescale factors by reference
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > m_l1GtEmulDaqInputToken_
std::vector< L1GtConditionCategory > m_excludedCondCategory
excluded condition categories
std::ostringstream m_myCoutStream
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &, const edm::EventSetup &) override
static const int NumberBData
int m_nrDataEventError
counters
MonitorElement * m_fdlEmulAlgoDecisionMask_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const int bxInEvent() const
get/set bunch cross in the GT event record
const DecisionWord & gtDecisionWord() const
get/set/print algorithms bits (decision word)
unsigned long long m_l1GtTmTechCacheID
virtual void compareGt_Gct(const edm::Event &, const edm::EventSetup &)
MonitorElement * m_fdlEmulTechDecision_Err[NumberOfGtRecords]
static const int NumberAData
edm::InputTag m_l1GctDataInputTag
input tag for the L1 GCT hardware record
std::vector< edm::ParameterSet > m_excludeCondCategTypeObject
void printGtTechnicalTriggerWord(std::ostream &myCout) const
MonitorElement * m_fdlDataEmulAlgoDecision_Err[NumberOfGtRecords]
const cms_uint32_t setupVersion() const
get/set setup version
static const int NumberOfGtRecords
MonitorElement * m_fdlDataTechDecision[TotalBxInEvent][NumberOfGtRecords]
MonitorElement * m_fdlEmulAlgoDecision[TotalBxInEvent][NumberOfGtRecords]
const std::vector< std::vector< int > > * m_prescaleFactorsTechTrig
MonitorElement * m_fdlEmulAlgoDecision_NoMatch[TotalBxInEvent][NumberOfGtRecords]
const DecisionWordExtended & gtDecisionWordExtended() const
get/set extended algorithms bits (extended decision word)
MonitorElement * m_fdlDataEmulTechDecisionMask[TotalBxInEvent][NumberOfGtRecords]
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
MonitorElement * m_fdlDataAlgoDecisionMask[TotalBxInEvent][NumberOfGtRecords]
virtual void compareDaqRecord(const edm::Event &, const edm::EventSetup &)
L1 GT DAQ record comparison.
const cms_uint16_t recordLength1() const
get/set record length for alternative 1
std::vector< unsigned int > m_triggerMaskAlgoTrig
T const * product() const
std::vector< int > m_excludedAlgoList
MonitorElement * m_fdlDataEmulTechDecision_Err[NumberOfGtRecords]
MonitorElement * m_fdlEmulAlgoDecisionPrescaled_NoMatch[TotalBxInEvent][NumberOfGtRecords]
void analyze(const edm::Event &, const edm::EventSetup &) override
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
const L1GtPrescaleFactors * m_l1GtPfAlgo
prescale factors
edm::InputTag m_l1GtDataEvmInputTag
input tag for the L1 GT hardware EVM record
const cms_uint16_t finalOR() const
get/set "Final OR" bits
unsigned long long m_l1GtPfTechCacheID
MonitorElement * m_fdlEmulAlgoDecisionPrescaled[TotalBxInEvent][NumberOfGtRecords]
bool excludedAlgo(const int &) const
exclusion status for algorithm with bit i
const std::vector< L1GtFdlWord > gtFdlVector() const
get the vector of L1GtFdlWord
std::string m_dirName
directory name for L1Extra plots
MonitorElement * m_fdlDataEmulAlgoDecisionUnprescaled[TotalBxInEvent][NumberOfGtRecords]