MLT vector of up to 32 items: fill histo 1D total numbers fill histo 2D per LB fill histo 2D per (timeslice relative BCID)
2D eta/phi - fill when GoodMF (EF only) 2D eta/phi - fill when InnerCoin (EF only) 2D eta/phi - fill when BW23 (EF only) 2D eta/phi - fill when charge (EF only)
388{
390
391 auto errorPerLumiBlockX = Monitored::Scalar<int>("errorPerLumiBlockX",0);
392
393 auto errorSummaryMUCTPI = Monitored::Scalar<int>("errorSummaryMUCTPI",0);
394 auto errorSummaryPerLumiBlockMUCTPIX = Monitored::Scalar<int>("errorSummaryPerLumiBlockMUCTPIX",0);
395 auto errorSummaryPerLumiBlockMUCTPIY = Monitored::Scalar<int>("errorSummaryPerLumiBlockMUCTPIY",0);
396 auto statusDataWordMUCTPI = Monitored::Scalar<int>("statusDataWordMUCTPI",0);
397 auto statusDataWordPerLumiBlockMUCTPIX = Monitored::Scalar<int>("statusDataWordPerLumiBlockMUCTPIX",0);
398 auto statusDataWordPerLumiBlockMUCTPIY = Monitored::Scalar<int>("statusDataWordPerLumiBlockMUCTPIY",0);
399
400 auto candCount = Monitored::Scalar<int>("candCount",0);
401 auto candCountVsLBX = Monitored::Scalar<int>("candCountVsLBX",0);
402 auto candCountVsLBY = Monitored::Scalar<int>("candCountVsLBY",0);
403 auto candPtBAX = Monitored::Scalar<int>("candPtBAX",0);
404 auto candPtECX = Monitored::Scalar<int>("candPtECX",0);
405 auto candPtFWX = Monitored::Scalar<int>("candPtFWX",0);
406 auto candSLVsLBBAX = Monitored::Scalar<int>("candSLVsLBBAX",0);
407 auto candSLVsLBBAY = Monitored::Scalar<int>("candSLVsLBBAY",0);
408 auto candSLVsLBECX = Monitored::Scalar<int>("candSLVsLBECX",0);
409 auto candSLVsLBECY = Monitored::Scalar<int>("candSLVsLBECY",0);
410 auto candSLVsLBFWX = Monitored::Scalar<int>("candSLVsLBFWX",0);
411 auto candSLVsLBFWY = Monitored::Scalar<int>("candSLVsLBFWY",0);
412 auto candVetoFlag_RoiVsSLBAX = Monitored::Scalar<int>("candVetoFlag_RoiVsSLBAX",0);
413 auto candVetoFlag_RoiVsSLBAY = Monitored::Scalar<int>("candVetoFlag_RoiVsSLBAY",0);
414 auto candVetoFlag_RoiVsSLECX = Monitored::Scalar<int>("candVetoFlag_RoiVsSLECX",0);
415 auto candVetoFlag_RoiVsSLECY = Monitored::Scalar<int>("candVetoFlag_RoiVsSLECY",0);
416 auto candVetoFlag_RoiVsSLFWX = Monitored::Scalar<int>("candVetoFlag_RoiVsSLFWX",0);
417 auto candVetoFlag_RoiVsSLFWY = Monitored::Scalar<int>("candVetoFlag_RoiVsSLFWY",0);
418 auto candVetoFlag_EtaPhiBAX = Monitored::Scalar<float>("candVetoFlag_EtaPhiBAX",0.);
419 auto candVetoFlag_EtaPhiBAY = Monitored::Scalar<float>("candVetoFlag_EtaPhiBAY",0.);
420 auto candVetoFlag_EtaPhiECX = Monitored::Scalar<float>("candVetoFlag_EtaPhiECX",0.);
421 auto candVetoFlag_EtaPhiECY = Monitored::Scalar<float>("candVetoFlag_EtaPhiECY",0.);
422 auto candVetoFlag_EtaPhiFWX = Monitored::Scalar<float>("candVetoFlag_EtaPhiFWX",0.);
423 auto candVetoFlag_EtaPhiFWY = Monitored::Scalar<float>("candVetoFlag_EtaPhiFWY",0.);
424 auto candRoiVsSLBACentralSliceX = Monitored::Scalar<int>("candRoiVsSLBACentralSliceX",0);
425 auto candRoiVsSLBACentralSliceY = Monitored::Scalar<int>("candRoiVsSLBACentralSliceY",0);
426 auto candRoiVsSLECCentralSliceX = Monitored::Scalar<int>("candRoiVsSLECCentralSliceX",0);
427 auto candRoiVsSLECCentralSliceY = Monitored::Scalar<int>("candRoiVsSLECCentralSliceY",0);
428 auto candRoiVsSLFWCentralSliceX = Monitored::Scalar<int>("candRoiVsSLFWCentralSliceX",0);
429 auto candRoiVsSLFWCentralSliceY = Monitored::Scalar<int>("candRoiVsSLFWCentralSliceY",0);
430 auto candRoiVsSLBAOtherSliceX = Monitored::Scalar<int>("candRoiVsSLBAOtherSliceX",0);
431 auto candRoiVsSLBAOtherSliceY = Monitored::Scalar<int>("candRoiVsSLBAOtherSliceY",0);
432 auto candRoiVsSLECOtherSliceX = Monitored::Scalar<int>("candRoiVsSLECOtherSliceX",0);
433 auto candRoiVsSLECOtherSliceY = Monitored::Scalar<int>("candRoiVsSLECOtherSliceY",0);
434 auto candRoiVsSLFWOtherSliceX = Monitored::Scalar<int>("candRoiVsSLFWOtherSliceX",0);
435 auto candRoiVsSLFWOtherSliceY = Monitored::Scalar<int>("candRoiVsSLFWOtherSliceY",0);
436 auto candCandFlagsVsSLBACentralSliceX = Monitored::Scalar<int>("candCandFlagsVsSLBACentralSliceX",0);
437 auto candCandFlagsVsSLBACentralSliceY = Monitored::Scalar<int>("candCandFlagsVsSLBACentralSliceY",0);
438 auto candCandFlagsVsSLECCentralSliceX = Monitored::Scalar<int>("candCandFlagsVsSLECCentralSliceX",0);
439 auto candCandFlagsVsSLECCentralSliceY = Monitored::Scalar<int>("candCandFlagsVsSLECCentralSliceY",0);
440 auto candCandFlagsVsSLFWCentralSliceX = Monitored::Scalar<int>("candCandFlagsVsSLFWCentralSliceX",0);
441 auto candCandFlagsVsSLFWCentralSliceY = Monitored::Scalar<int>("candCandFlagsVsSLFWCentralSliceY",0);
442 auto candErrorFlagVsSLBACentralSlicePerLBX = Monitored::Scalar<int>("candErrorFlagVsSLBACentralSlicePerLBX",0);
443 auto candErrorFlagVsSLBACentralSlicePerLBY = Monitored::Scalar<int>("candErrorFlagVsSLBACentralSlicePerLBY",0);
444 auto candErrorFlagVsSLECCentralSlicePerLBX = Monitored::Scalar<int>("candErrorFlagVsSLECCentralSlicePerLBX",0);
445 auto candErrorFlagVsSLECCentralSlicePerLBY = Monitored::Scalar<int>("candErrorFlagVsSLECCentralSlicePerLBY",0);
446 auto candErrorFlagVsSLFWCentralSlicePerLBX = Monitored::Scalar<int>("candErrorFlagVsSLFWCentralSlicePerLBX",0);
447 auto candErrorFlagVsSLFWCentralSlicePerLBY = Monitored::Scalar<int>("candErrorFlagVsSLFWCentralSlicePerLBY",0);
448 auto candSliceVsSLBAX = Monitored::Scalar<int>("candSliceVsSLBAX",0);
449 auto candSliceVsSLBAY = Monitored::Scalar<int>("candSliceVsSLBAY",0);
450 auto candSliceVsSLECX = Monitored::Scalar<int>("candSliceVsSLECX",0);
451 auto candSliceVsSLECY = Monitored::Scalar<int>("candSliceVsSLECY",0);
452 auto candSliceVsSLFWX = Monitored::Scalar<int>("candSliceVsSLFWX",0);
453 auto candSliceVsSLFWY = Monitored::Scalar<int>("candSliceVsSLFWY",0);
454 auto candSliceCandTobDifferenceX = Monitored::Scalar<int>("candSliceCandTobDifferenceX");
455 auto candSliceCandTobDifferenceY = Monitored::Scalar<int>("candSliceCandTobDifferenceY");
456 auto candEtaPhi_NSWMonFlagX_EC = Monitored::Scalar<float>("candEtaPhi_NSWMonFlagX_EC",0);
457 auto candEtaPhi_NSWMonFlagY_EC = Monitored::Scalar<float>("candEtaPhi_NSWMonFlagY_EC",0);
458 auto candEtaPhi_NSWMonFlagX_FW = Monitored::Scalar<float>("candEtaPhi_NSWMonFlagX_FW",0);
459 auto candEtaPhi_NSWMonFlagY_FW = Monitored::Scalar<float>("candEtaPhi_NSWMonFlagY_FW",0);
460 auto candEtaPhi_Gt1CandRoiX_BA = Monitored::Scalar<float>("candEtaPhi_Gt1CandRoiX_BA",0);
461 auto candEtaPhi_Gt1CandRoiY_BA = Monitored::Scalar<float>("candEtaPhi_Gt1CandRoiY_BA",0);
462 auto candEtaPhi_PhiOverlapX_BA = Monitored::Scalar<float>("candEtaPhi_PhiOverlapX_BA",0);
463 auto candEtaPhi_PhiOverlapY_BA = Monitored::Scalar<float>("candEtaPhi_PhiOverlapY_BA",0);
464 auto candEtaPhi_SectorFlagGtNX_BA = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNX_BA",0);
465 auto candEtaPhi_SectorFlagGtNY_BA = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNY_BA",0);
466 auto candEtaPhi_SectorFlagGtNX_EC = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNX_EC",0);
467 auto candEtaPhi_SectorFlagGtNY_EC = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNY_EC",0);
468 auto candEtaPhi_SectorFlagGtNX_FW = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNX_FW",0);
469 auto candEtaPhi_SectorFlagGtNY_FW = Monitored::Scalar<float>("candEtaPhi_SectorFlagGtNY_FW",0);
470 auto candSliceVsSLBAFirstInTrainX = Monitored::Scalar<int>("candSliceVsSLBAFirstInTrainX",0);
471 auto candSliceVsSLBAFirstInTrainY = Monitored::Scalar<int>("candSliceVsSLBAFirstInTrainY",0);
472 auto candSliceVsSLECFirstInTrainX = Monitored::Scalar<int>("candSliceVsSLECFirstInTrainX",0);
473 auto candSliceVsSLECFirstInTrainY = Monitored::Scalar<int>("candSliceVsSLECFirstInTrainY",0);
474 auto candSliceVsSLFWFirstInTrainX = Monitored::Scalar<int>("candSliceVsSLFWFirstInTrainX",0);
475 auto candSliceVsSLFWFirstInTrainY = Monitored::Scalar<int>("candSliceVsSLFWFirstInTrainY",0);
476
477
478 auto tobEtaPhiAX = Monitored::Scalar<int>("tobEtaPhiAX",0);
479 auto tobEtaPhiAY = Monitored::Scalar<int>("tobEtaPhiAY",0);
480 auto tobEtaPhiA_GoodMFX = Monitored::Scalar<int>("tobEtaPhiA_GoodMFX",0);
481 auto tobEtaPhiA_GoodMFY = Monitored::Scalar<int>("tobEtaPhiA_GoodMFY",0);
482 auto tobEtaPhiA_InnerCoinX = Monitored::Scalar<int>("tobEtaPhiA_InnerCoinX",0);
483 auto tobEtaPhiA_InnerCoinY = Monitored::Scalar<int>("tobEtaPhiA_InnerCoinY",0);
484 auto tobEtaPhiA_BW23X = Monitored::Scalar<int>("tobEtaPhiA_BW23X",0);
485 auto tobEtaPhiA_BW23Y = Monitored::Scalar<int>("tobEtaPhiA_BW23Y",0);
486 auto tobEtaPhiA_ChargeX = Monitored::Scalar<int>("tobEtaPhiA_ChargeX",0);
487 auto tobEtaPhiA_ChargeY = Monitored::Scalar<int>("tobEtaPhiA_ChargeY",0);
488 auto tobEtaPhiCX = Monitored::Scalar<int>("tobEtaPhiCX",0);
489 auto tobEtaPhiCY = Monitored::Scalar<int>("tobEtaPhiCY",0);
490 auto tobEtaPhiC_GoodMFX = Monitored::Scalar<int>("tobEtaPhiC_GoodMFX",0);
491 auto tobEtaPhiC_GoodMFY = Monitored::Scalar<int>("tobEtaPhiC_GoodMFY",0);
492 auto tobEtaPhiC_InnerCoinX = Monitored::Scalar<int>("tobEtaPhiC_InnerCoinX",0);
493 auto tobEtaPhiC_InnerCoinY = Monitored::Scalar<int>("tobEtaPhiC_InnerCoinY",0);
494 auto tobEtaPhiC_BW23X = Monitored::Scalar<int>("tobEtaPhiC_BW23X",0);
495 auto tobEtaPhiC_BW23Y = Monitored::Scalar<int>("tobEtaPhiC_BW23Y",0);
496 auto tobEtaPhiC_ChargeX = Monitored::Scalar<int>("tobEtaPhiC_ChargeX",0);
497 auto tobEtaPhiC_ChargeY = Monitored::Scalar<int>("tobEtaPhiC_ChargeY",0);
498 auto tobPtVsEtaAX = Monitored::Scalar<int>("tobPtVsEtaAX",0);
499 auto tobPtVsEtaAY = Monitored::Scalar<int>("tobPtVsEtaAY",0);
500 auto tobPtVsPhiAX = Monitored::Scalar<int>("tobPtVsPhiAX",0);
501 auto tobPtVsPhiAY = Monitored::Scalar<int>("tobPtVsPhiAY",0);
502 auto tobPtVsEtaCX = Monitored::Scalar<int>("tobPtVsEtaCX",0);
503 auto tobPtVsEtaCY = Monitored::Scalar<int>("tobPtVsEtaCY",0);
504 auto tobPtVsPhiCX = Monitored::Scalar<int>("tobPtVsPhiCX",0);
505 auto tobPtVsPhiCY = Monitored::Scalar<int>("tobPtVsPhiCY",0);
506 auto tobEtaPhiXdecoded_BA = Monitored::Scalar<float>("tobEtaPhiXdecoded_BA",0.);
507 auto tobEtaPhiXdecoded_EC = Monitored::Scalar<float>("tobEtaPhiXdecoded_EC",0.);
508 auto tobEtaPhiXdecoded_FW = Monitored::Scalar<float>("tobEtaPhiXdecoded_FW",0.);
509 auto tobEtaPhiYdecoded_BA = Monitored::Scalar<float>("tobEtaPhiYdecoded_BA",0.);
510 auto tobEtaPhiYdecoded_EC = Monitored::Scalar<float>("tobEtaPhiYdecoded_EC",0.);
511 auto tobEtaPhiYdecoded_FW = Monitored::Scalar<float>("tobEtaPhiYdecoded_FW",0.);
512 auto tobEtaPhi_GoodMFXdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_GoodMFXdecoded_EC",0);
513 auto tobEtaPhi_GoodMFXdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_GoodMFXdecoded_FW",0);
514 auto tobEtaPhi_GoodMFYdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_GoodMFYdecoded_EC",0);
515 auto tobEtaPhi_GoodMFYdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_GoodMFYdecoded_FW",0);
516 auto tobEtaPhi_InnerCoinXdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_InnerCoinXdecoded_EC",0);
517 auto tobEtaPhi_InnerCoinXdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_InnerCoinXdecoded_FW",0);
518 auto tobEtaPhi_InnerCoinYdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_InnerCoinYdecoded_EC",0);
519 auto tobEtaPhi_InnerCoinYdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_InnerCoinYdecoded_FW",0);
520 auto tobEtaPhi_BW23Xdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_BW23Xdecoded_EC",0);
521 auto tobEtaPhi_BW23Xdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_BW23Xdecoded_FW",0);
522 auto tobEtaPhi_BW23Ydecoded_EC = Monitored::Scalar<float>("tobEtaPhi_BW23Ydecoded_EC",0);
523 auto tobEtaPhi_BW23Ydecoded_FW = Monitored::Scalar<float>("tobEtaPhi_BW23Ydecoded_FW",0);
524 auto tobEtaPhi_ChargeXdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_ChargeXdecoded_EC",0);
525 auto tobEtaPhi_ChargeXdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_ChargeXdecoded_FW",0);
526 auto tobEtaPhi_ChargeYdecoded_EC = Monitored::Scalar<float>("tobEtaPhi_ChargeYdecoded_EC",0);
527 auto tobEtaPhi_ChargeYdecoded_FW = Monitored::Scalar<float>("tobEtaPhi_ChargeYdecoded_FW",0);
528 auto tobPtVsEtaXdecoded_BA = Monitored::Scalar<float>("tobPtVsEtaXdecoded_BA",0);
529 auto tobPtVsEtaXdecoded_EC = Monitored::Scalar<float>("tobPtVsEtaXdecoded_EC",0);
530 auto tobPtVsEtaXdecoded_FW = Monitored::Scalar<float>("tobPtVsEtaXdecoded_FW",0);
531 auto tobPtVsEtaYdecoded_BA = Monitored::Scalar<float>("tobPtVsEtaYdecoded_BA",0);
532 auto tobPtVsEtaYdecoded_EC = Monitored::Scalar<float>("tobPtVsEtaYdecoded_EC",0);
533 auto tobPtVsEtaYdecoded_FW = Monitored::Scalar<float>("tobPtVsEtaYdecoded_FW",0);
534 auto tobPtVsPhiXdecoded_BA = Monitored::Scalar<float>("tobPtVsPhiXdecoded_BA",0);
535 auto tobPtVsPhiXdecoded_EC = Monitored::Scalar<float>("tobPtVsPhiXdecoded_EC",0);
536 auto tobPtVsPhiXdecoded_FW = Monitored::Scalar<float>("tobPtVsPhiXdecoded_FW",0);
537 auto tobPtVsPhiYdecoded_BA = Monitored::Scalar<float>("tobPtVsPhiYdecoded_BA",0);
538 auto tobPtVsPhiYdecoded_EC = Monitored::Scalar<float>("tobPtVsPhiYdecoded_EC",0);
539 auto tobPtVsPhiYdecoded_FW = Monitored::Scalar<float>("tobPtVsPhiYdecoded_FW",0);
540 auto tobCount = Monitored::Scalar<int>("tobCount");
541
542
543 auto multThrX = Monitored::Scalar<int>("multThrX",0);
544 auto multBitsX = Monitored::Scalar<int>("multBitsX",0);
545 auto multThrVsLBX = Monitored::Scalar<int>("multThrVsLBX",0);
546 auto multThrVsLBY = Monitored::Scalar<int>("multThrVsLBY",0);
547 auto multBitsVsLBX = Monitored::Scalar<int>("multBitsVsLBX",0);
548 auto multBitsVsLBY = Monitored::Scalar<int>("multBitsVsLBY",0);
549
550
552 uint32_t currentLumiBlock = eventInfo->lumiBlock();
553 uint32_t currentBCID = eventInfo->bcid();
554
555
556 const std::vector<LVL1::MuCTPIBits::Slice> &
slices = theMuCTPI_Phase1_RDO->
slices();
557
558
559 uint n_cand_veto,n_cand_A,n_cand_C;
560
561
562
563
564
565 uint nSlices=theMuCTPI_Phase1_RDO->
slices().size();
566 for(
uint iSlice=0;iSlice<nSlices;iSlice++)
567 {
568
570
571
572 bool isCentralSlice=false;
573 if(nSlices==1)
574 isCentralSlice=true;
575 else
576 isCentralSlice = (nSlices-1)/2 == iSlice;
577
578
579
580
581
584
586
587
588
589
590
591
596
597
598 for(
uint iThr=0;iThr<
slices[iSlice].mlt.cnt.size();iThr++)
599 {
601 if(thr)
602 {
603 multThrX = iThr;
605 multThrVsLBX = currentLumiBlock;
606 multThrVsLBY = iThr;
608 }
609 }
610
611
612 for(
uint iBit=0;iBit<64;iBit++)
613 {
614 bool bit = (
slices[iSlice].mlt.bits >> iBit ) & 0x1;
615 if(bit)
616 {
617 multBitsX = iBit;
619 multBitsVsLBX = currentLumiBlock;
620 multBitsVsLBY = iBit;
622 }
623 }
624
625
626
627
628
629 if(header_candCount != slices[iSlice].cand.size())
630 {
631 errorSummaryMUCTPI=2;
633 errorSummaryPerLumiBlockMUCTPIY=2;
634 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
635 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
636 }
637
638
639
640 if(isCentralSlice)
641 {
642 candCount = header_candCount;
644
645 candCountVsLBY = header_candCount;
646 candCountVsLBX = currentLumiBlock;
648 }
649
650 n_cand_veto=0;
651 n_cand_A=0;
652 n_cand_C=0;
653
654 for(
uint iCand=0;iCand<
slices[iSlice].cand.size();iCand++)
655 {
657
660
664
666
668
669 ATH_MSG_DEBUG(
"MUCTPI DQ DEBUG: iCand="<<iCand <<
" type="<<(
int)slices[iSlice].cand[iCand].type<<
" num="<<(
int)slices[iSlice].cand[iCand].num<<
" pt="<<slices[iSlice].cand[iCand].pt);
670
671 float candEta =
slices[iSlice].cand[iCand].eta;
672 float candPhi =
slices[iSlice].cand[iCand].phi;
673 bool vetoFlag =
slices[iSlice].cand[iCand].vetoFlag;
675 if(side) n_cand_A++; else n_cand_C++;
676
677 if(vetoFlag)
678 n_cand_veto++;
679
681 {
683 candPtBAX =
slices[iSlice].cand[iCand].pt;
685
686 candSLVsLBBAX = currentLumiBlock;
689
690 if(vetoFlag)
691 {
692 candVetoFlag_RoiVsSLBAX =
num;
693 candVetoFlag_RoiVsSLBAY =
slices[iSlice].cand[iCand].roi;
695
696 candVetoFlag_EtaPhiBAX = candEta;
697 candVetoFlag_EtaPhiBAY = candPhi;
699 }
700
701 if(slices[iSlice].cand[iCand].candFlag_phiOverlap)
702 {
703 candEtaPhi_PhiOverlapX_BA = candEta;
704 candEtaPhi_PhiOverlapY_BA = candPhi;
706 }
707
708 if(slices[iSlice].cand[iCand].candFlag_gt1CandRoi)
709 {
710 candEtaPhi_Gt1CandRoiX_BA = candEta;
711 candEtaPhi_Gt1CandRoiY_BA = candPhi;
713 }
714
715 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
716 {
717 candEtaPhi_SectorFlagGtNX_BA = candEta;
718 candEtaPhi_SectorFlagGtNY_BA = candPhi;
720 }
721
722 candSliceVsSLBAX =
num;
724 if(nSlices==7) sliceIndex = iSlice;
725 else if(nSlices==5) sliceIndex = iSlice+1;
726 else if(nSlices==3) sliceIndex = iSlice+2;
727 else sliceIndex = 3;
728 candSliceVsSLBAY=sliceIndex;
730
731
732
733 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
734 {
735 candSliceVsSLBAFirstInTrainX=
num;
736 candSliceVsSLBAFirstInTrainY=sliceIndex;
738 }
739
740 if(isCentralSlice)
741 {
742 candRoiVsSLBACentralSliceX =
num;
743 candRoiVsSLBACentralSliceY =
slices[iSlice].cand[iCand].roi;
745
746 candCandFlagsVsSLBACentralSliceX =
num;
747 candCandFlagsVsSLBACentralSliceY = 0;
748 if(slices[iSlice].cand[iCand].candFlag_gt1CandRoi)
749 fill(
m_packageName, candCandFlagsVsSLBACentralSliceX, candCandFlagsVsSLBACentralSliceY);
750
751 candCandFlagsVsSLBACentralSliceY = 1;
752 if(slices[iSlice].cand[iCand].candFlag_phiOverlap)
753 fill(
m_packageName, candCandFlagsVsSLBACentralSliceX, candCandFlagsVsSLBACentralSliceY);
754
755 candErrorFlagVsSLBACentralSlicePerLBX = currentLumiBlock;
756 candErrorFlagVsSLBACentralSlicePerLBY =
num;
757 if(slices[iSlice].cand[iCand].errorFlag)
758 fill(
m_packageName, candErrorFlagVsSLBACentralSlicePerLBX, candErrorFlagVsSLBACentralSlicePerLBY);
759 }
760 else
761 {
762 candRoiVsSLBAOtherSliceX =
slices[iSlice].cand[iCand].num + 32*(1-
slices[iSlice].cand[iCand].side);
763 candRoiVsSLBAOtherSliceY =
slices[iSlice].cand[iCand].roi;
765 }
766 }
768 {
770
771 candPtECX =
slices[iSlice].cand[iCand].pt;
773
774 candSLVsLBECX = currentLumiBlock;
777
778 bool vetoFlag =
slices[iSlice].cand[iCand].vetoFlag;
779 if(vetoFlag)
780 {
781 candVetoFlag_RoiVsSLECX =
num;
782 candVetoFlag_RoiVsSLECY =
slices[iSlice].cand[iCand].roi;
784
785 candVetoFlag_EtaPhiECX = candEta;
786 candVetoFlag_EtaPhiECY = candPhi;
788 }
789
790 if(slices[iSlice].cand[iCand].sectorFlag_nswMon)
791 {
792 candEtaPhi_NSWMonFlagX_EC = candEta;
793 candEtaPhi_NSWMonFlagY_EC = candPhi;
795 }
796
797 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
798 {
799 candEtaPhi_SectorFlagGtNX_EC = candEta;
800 candEtaPhi_SectorFlagGtNY_EC = candPhi;
802 }
803
804 candSliceVsSLECX =
num;
806 if(nSlices==7) sliceIndex = iSlice;
807 else if(nSlices==5) sliceIndex = iSlice+1;
808 else if(nSlices==3) sliceIndex = iSlice+2;
809 else sliceIndex = 3;
810 candSliceVsSLECY=sliceIndex;
812
813
814
815 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
816 {
817 candSliceVsSLECFirstInTrainX=
num;
818 candSliceVsSLECFirstInTrainY=sliceIndex;
820 }
821
822 if(isCentralSlice)
823 {
824 candRoiVsSLECCentralSliceX =
num;
825 candRoiVsSLECCentralSliceY =
slices[iSlice].cand[iCand].roi;
827
828 candCandFlagsVsSLECCentralSliceX =
num;
829 candCandFlagsVsSLECCentralSliceY = 0;
830 if(slices[iSlice].cand[iCand].candFlag_Charge)
831 fill(
m_packageName, candCandFlagsVsSLECCentralSliceX, candCandFlagsVsSLECCentralSliceY);
832
833 candCandFlagsVsSLECCentralSliceY = 1;
834 if(slices[iSlice].cand[iCand].candFlag_BW23)
835 fill(
m_packageName, candCandFlagsVsSLECCentralSliceX, candCandFlagsVsSLECCentralSliceY);
836
837 candCandFlagsVsSLECCentralSliceY = 2;
838 if(slices[iSlice].cand[iCand].candFlag_InnerCoin)
839 fill(
m_packageName, candCandFlagsVsSLECCentralSliceX, candCandFlagsVsSLECCentralSliceY);
840
841 candCandFlagsVsSLECCentralSliceY = 3;
842 if(slices[iSlice].cand[iCand].candFlag_GoodMF)
843 fill(
m_packageName, candCandFlagsVsSLECCentralSliceX, candCandFlagsVsSLECCentralSliceY);
844
845 candErrorFlagVsSLECCentralSlicePerLBX = currentLumiBlock;
846 candErrorFlagVsSLECCentralSlicePerLBY =
num;
847 if(slices[iSlice].cand[iCand].errorFlag)
848 fill(
m_packageName, candErrorFlagVsSLECCentralSlicePerLBX, candErrorFlagVsSLECCentralSlicePerLBY);
849 }
850 else
851 {
852 candRoiVsSLECOtherSliceX =
num;
853 candRoiVsSLECOtherSliceY =
slices[iSlice].cand[iCand].roi;
855 }
856 }
858 {
860 candPtFWX =
slices[iSlice].cand[iCand].pt;
862
863 candSLVsLBFWX = currentLumiBlock;
866
867 bool vetoFlag =
slices[iSlice].cand[iCand].vetoFlag;
868 if(vetoFlag)
869 {
870 candVetoFlag_RoiVsSLFWX =
num;
871 candVetoFlag_RoiVsSLFWY =
slices[iSlice].cand[iCand].roi;
873
874 candVetoFlag_EtaPhiFWX = candEta;
875 candVetoFlag_EtaPhiFWY = candPhi;
877 }
878
879 if(slices[iSlice].cand[iCand].sectorFlag_nswMon)
880 {
881 candEtaPhi_NSWMonFlagX_FW = candEta;
882 candEtaPhi_NSWMonFlagY_FW = candPhi;
884 }
885
886 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
887 {
888 candEtaPhi_SectorFlagGtNX_FW = candEta;
889 candEtaPhi_SectorFlagGtNY_FW = candPhi;
891 }
892
893 candSliceVsSLFWX =
num;
895 if(nSlices==7) sliceIndex = iSlice;
896 else if(nSlices==5) sliceIndex = iSlice+1;
897 else if(nSlices==3) sliceIndex = iSlice+2;
898 else sliceIndex = 3;
899 candSliceVsSLFWY=sliceIndex;
901
902
903
904 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
905 {
906 candSliceVsSLFWFirstInTrainX=
num;
907 candSliceVsSLFWFirstInTrainY=sliceIndex;
909 }
910
911 if(isCentralSlice)
912 {
913 candRoiVsSLFWCentralSliceX =
num;
914 candRoiVsSLFWCentralSliceY =
slices[iSlice].cand[iCand].roi;
916
917 candCandFlagsVsSLFWCentralSliceX =
num;
918 candCandFlagsVsSLFWCentralSliceY = 0;
919 if(slices[iSlice].cand[iCand].candFlag_Charge)
920 fill(
m_packageName, candCandFlagsVsSLFWCentralSliceX, candCandFlagsVsSLFWCentralSliceY);
921
922 candCandFlagsVsSLFWCentralSliceY = 1;
923 if(slices[iSlice].cand[iCand].candFlag_BW23)
924 fill(
m_packageName, candCandFlagsVsSLFWCentralSliceX, candCandFlagsVsSLFWCentralSliceY);
925
926 candCandFlagsVsSLFWCentralSliceY = 2;
927 if(slices[iSlice].cand[iCand].candFlag_InnerCoin)
928 fill(
m_packageName, candCandFlagsVsSLFWCentralSliceX, candCandFlagsVsSLFWCentralSliceY);
929
930 candCandFlagsVsSLFWCentralSliceY = 3;
931 if(slices[iSlice].cand[iCand].candFlag_GoodMF)
932 fill(
m_packageName, candCandFlagsVsSLFWCentralSliceX, candCandFlagsVsSLFWCentralSliceY);
933
934 candErrorFlagVsSLFWCentralSlicePerLBX = currentLumiBlock;
935 candErrorFlagVsSLFWCentralSlicePerLBY =
num;
936 if(slices[iSlice].cand[iCand].errorFlag)
937 fill(
m_packageName, candErrorFlagVsSLFWCentralSlicePerLBX, candErrorFlagVsSLFWCentralSlicePerLBY);
938 }
939 else
940 {
941 candRoiVsSLFWOtherSliceX =
slices[iSlice].cand[iCand].num + 24*(1-
slices[iSlice].cand[iCand].side);
942 candRoiVsSLFWOtherSliceY =
slices[iSlice].cand[iCand].roi;
944 }
945 }
946 }
947
948
949
950
951
955
960
963
965 if(header_tobCount != slices[iSlice].tob.size())
966 {
967 errorSummaryMUCTPI=3;
969 errorSummaryPerLumiBlockMUCTPIY=3;
970 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
971 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
972 }
973
974
975
976 if(isCentralSlice)
977 {
978 tobCount =
slices[iSlice].tob.size();
980
981 if(slices[iSlice].bcid != currentBCID)
982 {
983 errorSummaryMUCTPI=1;
985 errorSummaryPerLumiBlockMUCTPIY=1;
986 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
987 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
988 }
989 }
990
991 for(
uint iTOB=0;iTOB<
slices[iSlice].tob.size();iTOB++)
992 {
993
997 float etaDecoded =
slices[iSlice].tob[iTOB].etaDecoded;
998 float phiDecoded =
slices[iSlice].tob[iTOB].phiDecoded;
999
1000 if(slices[iSlice].tob[iTOB].side==1)
1001 {
1002
1006
1010
1014
1015 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1016 tobEtaPhiA_GoodMFX =
eta;
1017 tobEtaPhiA_GoodMFY =
phi;
1019 }
1020
1021 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1022 tobEtaPhiA_InnerCoinX =
eta;
1023 tobEtaPhiA_InnerCoinY =
phi;
1025 }
1026
1027 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1028 tobEtaPhiA_BW23X =
eta;
1029 tobEtaPhiA_BW23Y =
phi;
1031 }
1032
1033 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1034 tobEtaPhiA_ChargeX =
eta;
1035 tobEtaPhiA_ChargeY =
phi;
1037 }
1038
1039
1040 switch(slices[iSlice].tob[iTOB].det)
1041 {
1042 case 0:
1043 {
1044 tobEtaPhiXdecoded_BA = etaDecoded;
1045 tobEtaPhiYdecoded_BA = phiDecoded;
1047
1048 tobPtVsEtaXdecoded_BA = etaDecoded;
1049 tobPtVsEtaYdecoded_BA =
pt;
1051
1052 tobPtVsPhiXdecoded_BA = phiDecoded;
1053 tobPtVsPhiYdecoded_BA =
pt;
1055
1056 break;
1057 }
1058 case 1:
1059 {
1060 tobEtaPhiXdecoded_FW = etaDecoded;
1061 tobEtaPhiYdecoded_FW = phiDecoded;
1063
1064 tobPtVsEtaXdecoded_FW = etaDecoded;
1065 tobPtVsEtaYdecoded_FW =
pt;
1067
1068 tobPtVsPhiXdecoded_FW = phiDecoded;
1069 tobPtVsPhiYdecoded_FW =
pt;
1071
1072 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1073 tobEtaPhi_GoodMFXdecoded_FW = etaDecoded;
1074 tobEtaPhi_GoodMFYdecoded_FW = phiDecoded;
1076 }
1077
1078 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1079 tobEtaPhi_InnerCoinXdecoded_FW = etaDecoded;
1080 tobEtaPhi_InnerCoinYdecoded_FW = phiDecoded;
1081 fill(
m_packageName, tobEtaPhi_InnerCoinXdecoded_FW, tobEtaPhi_InnerCoinYdecoded_FW);
1082 }
1083
1084 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1085 tobEtaPhi_BW23Xdecoded_FW = etaDecoded;
1086 tobEtaPhi_BW23Ydecoded_FW = phiDecoded;
1088 }
1089
1090 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1091 tobEtaPhi_ChargeXdecoded_FW = etaDecoded;
1092 tobEtaPhi_ChargeYdecoded_FW = phiDecoded;
1094 }
1095
1096 break;
1097 }
1098 case 2:
1099 {
1100 tobEtaPhiXdecoded_EC = etaDecoded;
1101 tobEtaPhiYdecoded_EC = phiDecoded;
1103
1104 tobPtVsEtaXdecoded_EC = etaDecoded;
1105 tobPtVsEtaYdecoded_EC =
pt;
1107
1108 tobPtVsPhiXdecoded_EC = phiDecoded;
1109 tobPtVsPhiYdecoded_EC =
pt;
1111
1112 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1113 tobEtaPhi_GoodMFXdecoded_EC = etaDecoded;
1114 tobEtaPhi_GoodMFYdecoded_EC = phiDecoded;
1116 }
1117
1118 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1119 tobEtaPhi_InnerCoinXdecoded_EC = etaDecoded;
1120 tobEtaPhi_InnerCoinYdecoded_EC = phiDecoded;
1121 fill(
m_packageName, tobEtaPhi_InnerCoinXdecoded_EC, tobEtaPhi_InnerCoinYdecoded_EC);
1122 }
1123
1124 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1125 tobEtaPhi_BW23Xdecoded_EC = etaDecoded;
1126 tobEtaPhi_BW23Ydecoded_EC = phiDecoded;
1128 }
1129
1130 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1131 tobEtaPhi_ChargeXdecoded_EC = etaDecoded;
1132 tobEtaPhi_ChargeYdecoded_EC = phiDecoded;
1134 }
1135 break;
1136 }
1137 }
1138 }
1139 else
1140 {
1144
1148
1152
1153 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1154 tobEtaPhiC_GoodMFX =
eta;
1155 tobEtaPhiC_GoodMFY =
phi;
1157 }
1158
1159 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1160 tobEtaPhiC_InnerCoinX =
eta;
1161 tobEtaPhiC_InnerCoinY =
phi;
1163 }
1164
1165 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1166 tobEtaPhiC_BW23X =
eta;
1167 tobEtaPhiC_BW23Y =
phi;
1169 }
1170
1171 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1172 tobEtaPhiC_ChargeX =
eta;
1173 tobEtaPhiC_ChargeY =
phi;
1175 }
1176
1177
1178 switch(slices[iSlice].tob[iTOB].det)
1179 {
1180
1181 case 0:
1182 {
1183 tobEtaPhiXdecoded_BA = etaDecoded;
1184 tobEtaPhiYdecoded_BA = phiDecoded;
1186
1187 tobPtVsEtaXdecoded_BA = etaDecoded;
1188 tobPtVsEtaYdecoded_BA =
pt;
1190
1191 tobPtVsPhiXdecoded_BA = phiDecoded;
1192 tobPtVsPhiYdecoded_BA =
pt;
1194
1195 break;
1196 }
1197
1198
1199 case 1:
1200 {
1201 tobEtaPhiXdecoded_FW = etaDecoded;
1202 tobEtaPhiYdecoded_FW = phiDecoded;
1204
1205 tobPtVsEtaXdecoded_FW = etaDecoded;
1206 tobPtVsEtaYdecoded_FW =
pt;
1208
1209 tobPtVsPhiXdecoded_FW = phiDecoded;
1210 tobPtVsPhiYdecoded_FW =
pt;
1212
1213 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1214 tobEtaPhi_GoodMFXdecoded_FW = etaDecoded;
1215 tobEtaPhi_GoodMFYdecoded_FW = phiDecoded;
1217 }
1218
1219 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1220 tobEtaPhi_InnerCoinXdecoded_FW = etaDecoded;
1221 tobEtaPhi_InnerCoinYdecoded_FW = phiDecoded;
1222 fill(
m_packageName, tobEtaPhi_InnerCoinXdecoded_FW, tobEtaPhi_InnerCoinYdecoded_FW);
1223 }
1224
1225 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1226 tobEtaPhi_BW23Xdecoded_FW = etaDecoded;
1227 tobEtaPhi_BW23Ydecoded_FW = phiDecoded;
1229 }
1230
1231 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1232 tobEtaPhi_ChargeXdecoded_FW = etaDecoded;
1233 tobEtaPhi_ChargeYdecoded_FW = phiDecoded;
1235 }
1236
1237 break;
1238 }
1239
1240
1241 case 2:
1242 {
1243 tobEtaPhiXdecoded_EC = etaDecoded;
1244 tobEtaPhiYdecoded_EC = phiDecoded;
1246
1247 tobPtVsEtaXdecoded_EC = etaDecoded;
1248 tobPtVsEtaYdecoded_EC =
pt;
1250
1251 tobPtVsPhiXdecoded_EC = phiDecoded;
1252 tobPtVsPhiYdecoded_EC =
pt;
1254
1255 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1256 tobEtaPhi_GoodMFXdecoded_EC = etaDecoded;
1257 tobEtaPhi_GoodMFYdecoded_EC = phiDecoded;
1259 }
1260
1261 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1262 tobEtaPhi_InnerCoinXdecoded_EC = etaDecoded;
1263 tobEtaPhi_InnerCoinYdecoded_EC = phiDecoded;
1264 fill(
m_packageName, tobEtaPhi_InnerCoinXdecoded_EC, tobEtaPhi_InnerCoinYdecoded_EC);
1265 }
1266
1267 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1268 tobEtaPhi_BW23Xdecoded_EC = etaDecoded;
1269 tobEtaPhi_BW23Ydecoded_EC = phiDecoded;
1271 }
1272
1273 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1274 tobEtaPhi_ChargeXdecoded_EC = etaDecoded;
1275 tobEtaPhi_ChargeYdecoded_EC = phiDecoded;
1277 }
1278
1279 break;
1280 }
1281 }
1282 }
1283
1284 bool found_match{false};
1285
1286 for(
uint j=0; j<
slices[iSlice].cand.size(); ++j)
1287 {
1288
1289 if(slices[iSlice].cand[j].vetoFlag)
1290 continue;
1291
1292 if( slices[iSlice].tob[iTOB].side == slices[iSlice].cand[j].side &&
1293 slices[iSlice].tob[iTOB].subsystem == slices[iSlice].cand[j].subsystem &&
1294 slices[iSlice].tob[iTOB].sec == slices[iSlice].cand[j].num &&
1295 slices[iSlice].tob[iTOB].pt == slices[iSlice].cand[j].mappedPt &&
1296 slices[iSlice].tob[iTOB].etaDecoded == slices[iSlice].cand[j].
eta &&
1297 slices[iSlice].tob[iTOB].phiDecoded == slices[iSlice].cand[j].
phi )
1298 {
1299 found_match = true;
1300 ATH_MSG_DEBUG(
"Found the correspondence tob/cand in the same ROI");
1301 break;
1302 }
1303 }
1304
1305
1306
1307 if(n_cand_A<=16 && n_cand_C<=16)
1308 if(!found_match)
1309 {
1311 errorSummaryMUCTPI=5;
1313 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
1314 errorSummaryPerLumiBlockMUCTPIY=5;
1315 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
1316 }
1317 }
1318
1319
1320
1321
1322 if(n_cand_A<=16 && n_cand_C<=16)
1323 {
1324 if(slices[iSlice].cand.size()-n_cand_veto!=slices[iSlice].tob.size())
1325 {
1326 ATH_MSG_INFO(
"MUCTPI DQ INFO: Cand & TOB #words not equal. LB="
1327 <<std::dec<<currentLumiBlock
1328 <<". Cand.size="<<slices[iSlice].cand.size()
1329 <<" n_cand_veto="<<n_cand_veto
1330 <<" tob.size="<<slices[iSlice].tob.size());
1331 errorSummaryMUCTPI=4;
1333 errorSummaryPerLumiBlockMUCTPIY=4;
1334 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
1335 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
1336 }
1337 }
1338
1339
1340
1341
1342 if(slices[iSlice].nCand != slices[iSlice].cand.size())
1343 {
1344 errorSummaryMUCTPI = 2;
1346 errorSummaryPerLumiBlockMUCTPIY=2;
1347 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
1348 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
1349 }
1350
1351 if(slices[iSlice].nTOB != slices[iSlice].tob.size())
1352 {
1353 errorSummaryMUCTPI = 3;
1355 errorSummaryPerLumiBlockMUCTPIY=3;
1356 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
1357 fill(
m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
1358 }
1359
1360
1361 }
1362
1363
1364
1365
1366
1367
1370
1371
1372 const std::vector< size_t > &errorBits = theMuCTPI_Phase1_RDO->
errorBits();
1373
1374 for(
uint iBit=0;iBit<errorBits.size();iBit++)
1375 {
1376 if(errorBits[iBit])
1377 {
1378 statusDataWordMUCTPI=iBit;
1380 statusDataWordPerLumiBlockMUCTPIX=iBit;
1381 statusDataWordPerLumiBlockMUCTPIY=currentLumiBlock;
1382 fill(
m_packageName, statusDataWordPerLumiBlockMUCTPIX, statusDataWordPerLumiBlockMUCTPIY);
1383 }
1384 }
1385
1386}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
const std::vector< LVL1::MuCTPIBits::Slice > & slices() const
Function returning the timeslice data words.
const std::vector< size_t > & errorBits() const
Function returning the fragment error bits vector.