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
392
399
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);
476
477
541
542
549
550
551 auto eventInfo = GetEventInfo(ctx);
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
582 uint header_tobCount = slices[iSlice].nTOB;
583 uint header_candCount = slices[iSlice].nCand;
584
586
587
588
589
590
591
596
597
598 for(
uint iThr=0;iThr<slices[iSlice].mlt.cnt.size();iThr++)
599 {
600 bool thr = slices[iSlice].mlt.cnt[iThr];
601 if(thr)
602 {
603 multThrX = iThr;
604 fill(m_packageName, multThrX);
605 multThrVsLBX = currentLumiBlock;
606 multThrVsLBY = iThr;
607 fill(m_packageName, multThrVsLBX, multThrVsLBY);
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;
618 fill(m_packageName, multBitsX);
619 multBitsVsLBX = currentLumiBlock;
620 multBitsVsLBY = iBit;
621 fill(m_packageName, multBitsVsLBX, multBitsVsLBY);
622 }
623 }
624
625
626
627
628
629 if(header_candCount != slices[iSlice].cand.size())
630 {
631 errorSummaryMUCTPI=2;
632 fill(m_packageName, errorSummaryMUCTPI);
633 errorSummaryPerLumiBlockMUCTPIY=2;
634 errorSummaryPerLumiBlockMUCTPIX=currentLumiBlock;
635 fill(m_packageName, errorSummaryPerLumiBlockMUCTPIX, errorSummaryPerLumiBlockMUCTPIY);
636 }
637
638
639
640 if(isCentralSlice)
641 {
642 candCount = header_candCount;
643 fill(m_packageName,candCount);
644
645 candCountVsLBY = header_candCount;
646 candCountVsLBX = currentLumiBlock;
647 fill(m_packageName,candCountVsLBX,candCountVsLBY);
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;
684 fill(m_packageName, candPtBAX);
685
686 candSLVsLBBAX = currentLumiBlock;
688 fill(m_packageName, candSLVsLBBAX, candSLVsLBBAY);
689
690 if(vetoFlag)
691 {
692 candVetoFlag_RoiVsSLBAX =
num;
693 candVetoFlag_RoiVsSLBAY =
slices[iSlice].cand[iCand].roi;
694 fill(m_packageName, candVetoFlag_RoiVsSLBAX, candVetoFlag_RoiVsSLBAY);
695
696 candVetoFlag_EtaPhiBAX = candEta;
697 candVetoFlag_EtaPhiBAY = candPhi;
698 fill(m_packageName, candVetoFlag_EtaPhiBAX, candVetoFlag_EtaPhiBAY);
699 }
700
701 if(slices[iSlice].cand[iCand].candFlag_phiOverlap)
702 {
703 candEtaPhi_PhiOverlapX_BA = candEta;
704 candEtaPhi_PhiOverlapY_BA = candPhi;
705 fill(m_packageName, candEtaPhi_PhiOverlapX_BA, candEtaPhi_PhiOverlapY_BA);
706 }
707
708 if(slices[iSlice].cand[iCand].candFlag_gt1CandRoi)
709 {
710 candEtaPhi_Gt1CandRoiX_BA = candEta;
711 candEtaPhi_Gt1CandRoiY_BA = candPhi;
712 fill(m_packageName,candEtaPhi_Gt1CandRoiX_BA,candEtaPhi_Gt1CandRoiY_BA);
713 }
714
715 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
716 {
717 candEtaPhi_SectorFlagGtNX_BA = candEta;
718 candEtaPhi_SectorFlagGtNY_BA = candPhi;
719 fill(m_packageName,candEtaPhi_SectorFlagGtNX_BA,candEtaPhi_SectorFlagGtNY_BA);
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;
729 fill(m_packageName, candSliceVsSLBAX, candSliceVsSLBAY);
730
731
732
733 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
734 {
735 candSliceVsSLBAFirstInTrainX=
num;
736 candSliceVsSLBAFirstInTrainY=sliceIndex;
737 fill(m_packageName, candSliceVsSLBAFirstInTrainX, candSliceVsSLBAFirstInTrainY);
738 }
739
740 if(isCentralSlice)
741 {
742 candRoiVsSLBACentralSliceX =
num;
743 candRoiVsSLBACentralSliceY =
slices[iSlice].cand[iCand].roi;
744 fill(m_packageName, candRoiVsSLBACentralSliceX, candRoiVsSLBACentralSliceY);
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;
764 fill(m_packageName, candRoiVsSLBAOtherSliceX, candRoiVsSLBAOtherSliceY);
765 }
766 }
768 {
770
771 candPtECX =
slices[iSlice].cand[iCand].pt;
772 fill(m_packageName, candPtECX);
773
774 candSLVsLBECX = currentLumiBlock;
776 fill(m_packageName, candSLVsLBECX, candSLVsLBECY);
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;
783 fill(m_packageName, candVetoFlag_RoiVsSLECX, candVetoFlag_RoiVsSLECY);
784
785 candVetoFlag_EtaPhiECX = candEta;
786 candVetoFlag_EtaPhiECY = candPhi;
787 fill(m_packageName, candVetoFlag_EtaPhiECX, candVetoFlag_EtaPhiECY);
788 }
789
790 if(slices[iSlice].cand[iCand].sectorFlag_nswMon)
791 {
792 candEtaPhi_NSWMonFlagX_EC = candEta;
793 candEtaPhi_NSWMonFlagY_EC = candPhi;
794 fill(m_packageName,candEtaPhi_NSWMonFlagX_EC,candEtaPhi_NSWMonFlagY_EC);
795 }
796
797 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
798 {
799 candEtaPhi_SectorFlagGtNX_EC = candEta;
800 candEtaPhi_SectorFlagGtNY_EC = candPhi;
801 fill(m_packageName,candEtaPhi_SectorFlagGtNX_EC,candEtaPhi_SectorFlagGtNY_EC);
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;
811 fill(m_packageName, candSliceVsSLECX, candSliceVsSLECY);
812
813
814
815 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
816 {
817 candSliceVsSLECFirstInTrainX=
num;
818 candSliceVsSLECFirstInTrainY=sliceIndex;
819 fill(m_packageName, candSliceVsSLECFirstInTrainX, candSliceVsSLECFirstInTrainY);
820 }
821
822 if(isCentralSlice)
823 {
824 candRoiVsSLECCentralSliceX =
num;
825 candRoiVsSLECCentralSliceY =
slices[iSlice].cand[iCand].roi;
826 fill(m_packageName, candRoiVsSLECCentralSliceX,candRoiVsSLECCentralSliceY);
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;
854 fill(m_packageName, candRoiVsSLECOtherSliceX, candRoiVsSLECOtherSliceY);
855 }
856 }
858 {
860 candPtFWX =
slices[iSlice].cand[iCand].pt;
861 fill(m_packageName, candPtFWX);
862
863 candSLVsLBFWX = currentLumiBlock;
865 fill(m_packageName, candSLVsLBFWX, candSLVsLBFWY);
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;
872 fill(m_packageName, candVetoFlag_RoiVsSLFWX, candVetoFlag_RoiVsSLFWY);
873
874 candVetoFlag_EtaPhiFWX = candEta;
875 candVetoFlag_EtaPhiFWY = candPhi;
876 fill(m_packageName, candVetoFlag_EtaPhiFWX, candVetoFlag_EtaPhiFWY);
877 }
878
879 if(slices[iSlice].cand[iCand].sectorFlag_nswMon)
880 {
881 candEtaPhi_NSWMonFlagX_FW = candEta;
882 candEtaPhi_NSWMonFlagY_FW = candPhi;
883 fill(m_packageName,candEtaPhi_NSWMonFlagX_FW,candEtaPhi_NSWMonFlagY_FW);
884 }
885
886 if(slices[iSlice].cand[iCand].sectorFlag_gtN)
887 {
888 candEtaPhi_SectorFlagGtNX_FW = candEta;
889 candEtaPhi_SectorFlagGtNY_FW = candPhi;
890 fill(m_packageName,candEtaPhi_SectorFlagGtNX_FW,candEtaPhi_SectorFlagGtNY_FW);
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;
900 fill(m_packageName, candSliceVsSLFWX, candSliceVsSLFWY);
901
902
903
904 if(std::find(bcidFirstInTrain.begin(), bcidFirstInTrain.end(), currentBCID) != bcidFirstInTrain.end())
905 {
906 candSliceVsSLFWFirstInTrainX=
num;
907 candSliceVsSLFWFirstInTrainY=sliceIndex;
908 fill(m_packageName, candSliceVsSLFWFirstInTrainX, candSliceVsSLFWFirstInTrainY);
909 }
910
911 if(isCentralSlice)
912 {
913 candRoiVsSLFWCentralSliceX =
num;
914 candRoiVsSLFWCentralSliceY =
slices[iSlice].cand[iCand].roi;
915 fill(m_packageName, candRoiVsSLFWCentralSliceX, candRoiVsSLFWCentralSliceY);
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;
943 fill(m_packageName, candRoiVsSLFWOtherSliceX, candRoiVsSLFWOtherSliceY);
944 }
945 }
946 }
947
948
949
950
951
955
960
963
965 if(header_tobCount != slices[iSlice].tob.size())
966 {
967 errorSummaryMUCTPI=3;
968 fill(m_packageName, errorSummaryMUCTPI);
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();
979 fill(m_packageName,tobCount);
980
981 if(slices[iSlice].bcid != currentBCID)
982 {
983 errorSummaryMUCTPI=1;
984 fill(m_packageName, errorSummaryMUCTPI);
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
1005 fill(m_packageName, tobEtaPhiAX, tobEtaPhiAY);
1006
1009 fill(m_packageName, tobPtVsEtaAX, tobPtVsEtaAY);
1010
1013 fill(m_packageName, tobPtVsPhiAX, tobPtVsPhiAY);
1014
1015 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1016 tobEtaPhiA_GoodMFX =
eta;
1017 tobEtaPhiA_GoodMFY =
phi;
1018 fill(m_packageName, tobEtaPhiA_GoodMFX, tobEtaPhiA_GoodMFY);
1019 }
1020
1021 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1022 tobEtaPhiA_InnerCoinX =
eta;
1023 tobEtaPhiA_InnerCoinY =
phi;
1024 fill(m_packageName, tobEtaPhiA_InnerCoinX, tobEtaPhiA_InnerCoinY);
1025 }
1026
1027 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1028 tobEtaPhiA_BW23X =
eta;
1029 tobEtaPhiA_BW23Y =
phi;
1030 fill(m_packageName, tobEtaPhiA_BW23X, tobEtaPhiA_BW23Y);
1031 }
1032
1033 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1034 tobEtaPhiA_ChargeX =
eta;
1035 tobEtaPhiA_ChargeY =
phi;
1036 fill(m_packageName, tobEtaPhiA_ChargeX, tobEtaPhiA_ChargeY);
1037 }
1038
1039
1040 switch(slices[iSlice].tob[iTOB].det)
1041 {
1042 case 0:
1043 {
1044 tobEtaPhiXdecoded_BA = etaDecoded;
1045 tobEtaPhiYdecoded_BA = phiDecoded;
1046 fill(m_packageName, tobEtaPhiXdecoded_BA, tobEtaPhiYdecoded_BA);
1047
1048 tobPtVsEtaXdecoded_BA = etaDecoded;
1049 tobPtVsEtaYdecoded_BA =
pt;
1050 fill(m_packageName, tobPtVsEtaXdecoded_BA, tobPtVsEtaYdecoded_BA);
1051
1052 tobPtVsPhiXdecoded_BA = phiDecoded;
1053 tobPtVsPhiYdecoded_BA =
pt;
1054 fill(m_packageName, tobPtVsPhiXdecoded_BA, tobPtVsPhiYdecoded_BA);
1055
1056 break;
1057 }
1058 case 1:
1059 {
1060 tobEtaPhiXdecoded_FW = etaDecoded;
1061 tobEtaPhiYdecoded_FW = phiDecoded;
1062 fill(m_packageName, tobEtaPhiXdecoded_FW, tobEtaPhiYdecoded_FW);
1063
1064 tobPtVsEtaXdecoded_FW = etaDecoded;
1065 tobPtVsEtaYdecoded_FW =
pt;
1066 fill(m_packageName, tobPtVsEtaXdecoded_FW, tobPtVsEtaYdecoded_FW);
1067
1068 tobPtVsPhiXdecoded_FW = phiDecoded;
1069 tobPtVsPhiYdecoded_FW =
pt;
1070 fill(m_packageName, tobPtVsPhiXdecoded_FW, tobPtVsPhiYdecoded_FW);
1071
1072 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1073 tobEtaPhi_GoodMFXdecoded_FW = etaDecoded;
1074 tobEtaPhi_GoodMFYdecoded_FW = phiDecoded;
1075 fill(m_packageName, tobEtaPhi_GoodMFXdecoded_FW, tobEtaPhi_GoodMFYdecoded_FW);
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;
1087 fill(m_packageName, tobEtaPhi_BW23Xdecoded_FW, tobEtaPhi_BW23Ydecoded_FW);
1088 }
1089
1090 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1091 tobEtaPhi_ChargeXdecoded_FW = etaDecoded;
1092 tobEtaPhi_ChargeYdecoded_FW = phiDecoded;
1093 fill(m_packageName, tobEtaPhi_ChargeXdecoded_FW, tobEtaPhi_ChargeYdecoded_FW);
1094 }
1095
1096 break;
1097 }
1098 case 2:
1099 {
1100 tobEtaPhiXdecoded_EC = etaDecoded;
1101 tobEtaPhiYdecoded_EC = phiDecoded;
1102 fill(m_packageName, tobEtaPhiXdecoded_EC, tobEtaPhiYdecoded_EC);
1103
1104 tobPtVsEtaXdecoded_EC = etaDecoded;
1105 tobPtVsEtaYdecoded_EC =
pt;
1106 fill(m_packageName, tobPtVsEtaXdecoded_EC, tobPtVsEtaYdecoded_EC);
1107
1108 tobPtVsPhiXdecoded_EC = phiDecoded;
1109 tobPtVsPhiYdecoded_EC =
pt;
1110 fill(m_packageName, tobPtVsPhiXdecoded_EC, tobPtVsPhiYdecoded_EC);
1111
1112 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1113 tobEtaPhi_GoodMFXdecoded_EC = etaDecoded;
1114 tobEtaPhi_GoodMFYdecoded_EC = phiDecoded;
1115 fill(m_packageName, tobEtaPhi_GoodMFXdecoded_EC, tobEtaPhi_GoodMFYdecoded_EC);
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;
1127 fill(m_packageName, tobEtaPhi_BW23Xdecoded_EC, tobEtaPhi_BW23Ydecoded_EC);
1128 }
1129
1130 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1131 tobEtaPhi_ChargeXdecoded_EC = etaDecoded;
1132 tobEtaPhi_ChargeYdecoded_EC = phiDecoded;
1133 fill(m_packageName, tobEtaPhi_ChargeXdecoded_EC, tobEtaPhi_ChargeYdecoded_EC);
1134 }
1135 break;
1136 }
1137 }
1138 }
1139 else
1140 {
1143 fill(m_packageName, tobEtaPhiCX, tobEtaPhiCY);
1144
1147 fill(m_packageName, tobPtVsEtaCX, tobPtVsEtaCY);
1148
1151 fill(m_packageName, tobPtVsPhiCX, tobPtVsPhiCY);
1152
1153 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1154 tobEtaPhiC_GoodMFX =
eta;
1155 tobEtaPhiC_GoodMFY =
phi;
1156 fill(m_packageName, tobEtaPhiC_GoodMFX, tobEtaPhiC_GoodMFY);
1157 }
1158
1159 if(slices[iSlice].tob[iTOB].candFlag_InnerCoin) {
1160 tobEtaPhiC_InnerCoinX =
eta;
1161 tobEtaPhiC_InnerCoinY =
phi;
1162 fill(m_packageName, tobEtaPhiC_InnerCoinX, tobEtaPhiC_InnerCoinY);
1163 }
1164
1165 if(slices[iSlice].tob[iTOB].candFlag_BW23) {
1166 tobEtaPhiC_BW23X =
eta;
1167 tobEtaPhiC_BW23Y =
phi;
1168 fill(m_packageName, tobEtaPhiC_BW23X, tobEtaPhiC_BW23Y);
1169 }
1170
1171 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1172 tobEtaPhiC_ChargeX =
eta;
1173 tobEtaPhiC_ChargeY =
phi;
1174 fill(m_packageName, tobEtaPhiC_ChargeX, tobEtaPhiC_ChargeY);
1175 }
1176
1177
1178 switch(slices[iSlice].tob[iTOB].det)
1179 {
1180
1181 case 0:
1182 {
1183 tobEtaPhiXdecoded_BA = etaDecoded;
1184 tobEtaPhiYdecoded_BA = phiDecoded;
1185 fill(m_packageName, tobEtaPhiXdecoded_BA, tobEtaPhiYdecoded_BA);
1186
1187 tobPtVsEtaXdecoded_BA = etaDecoded;
1188 tobPtVsEtaYdecoded_BA =
pt;
1189 fill(m_packageName, tobPtVsEtaXdecoded_BA, tobPtVsEtaYdecoded_BA);
1190
1191 tobPtVsPhiXdecoded_BA = phiDecoded;
1192 tobPtVsPhiYdecoded_BA =
pt;
1193 fill(m_packageName, tobPtVsPhiXdecoded_BA, tobPtVsPhiYdecoded_BA);
1194
1195 break;
1196 }
1197
1198
1199 case 1:
1200 {
1201 tobEtaPhiXdecoded_FW = etaDecoded;
1202 tobEtaPhiYdecoded_FW = phiDecoded;
1203 fill(m_packageName, tobEtaPhiXdecoded_FW, tobEtaPhiYdecoded_FW);
1204
1205 tobPtVsEtaXdecoded_FW = etaDecoded;
1206 tobPtVsEtaYdecoded_FW =
pt;
1207 fill(m_packageName, tobPtVsEtaXdecoded_FW, tobPtVsEtaYdecoded_FW);
1208
1209 tobPtVsPhiXdecoded_FW = phiDecoded;
1210 tobPtVsPhiYdecoded_FW =
pt;
1211 fill(m_packageName, tobPtVsPhiXdecoded_FW, tobPtVsPhiYdecoded_FW);
1212
1213 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1214 tobEtaPhi_GoodMFXdecoded_FW = etaDecoded;
1215 tobEtaPhi_GoodMFYdecoded_FW = phiDecoded;
1216 fill(m_packageName, tobEtaPhi_GoodMFXdecoded_FW, tobEtaPhi_GoodMFYdecoded_FW);
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;
1228 fill(m_packageName, tobEtaPhi_BW23Xdecoded_FW, tobEtaPhi_BW23Ydecoded_FW);
1229 }
1230
1231 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1232 tobEtaPhi_ChargeXdecoded_FW = etaDecoded;
1233 tobEtaPhi_ChargeYdecoded_FW = phiDecoded;
1234 fill(m_packageName, tobEtaPhi_ChargeXdecoded_FW, tobEtaPhi_ChargeYdecoded_FW);
1235 }
1236
1237 break;
1238 }
1239
1240
1241 case 2:
1242 {
1243 tobEtaPhiXdecoded_EC = etaDecoded;
1244 tobEtaPhiYdecoded_EC = phiDecoded;
1245 fill(m_packageName, tobEtaPhiXdecoded_EC, tobEtaPhiYdecoded_EC);
1246
1247 tobPtVsEtaXdecoded_EC = etaDecoded;
1248 tobPtVsEtaYdecoded_EC =
pt;
1249 fill(m_packageName, tobPtVsEtaXdecoded_EC, tobPtVsEtaYdecoded_EC);
1250
1251 tobPtVsPhiXdecoded_EC = phiDecoded;
1252 tobPtVsPhiYdecoded_EC =
pt;
1253 fill(m_packageName, tobPtVsPhiXdecoded_EC, tobPtVsPhiYdecoded_EC);
1254
1255 if(slices[iSlice].tob[iTOB].candFlag_GoodMF) {
1256 tobEtaPhi_GoodMFXdecoded_EC = etaDecoded;
1257 tobEtaPhi_GoodMFYdecoded_EC = phiDecoded;
1258 fill(m_packageName, tobEtaPhi_GoodMFXdecoded_EC, tobEtaPhi_GoodMFYdecoded_EC);
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;
1270 fill(m_packageName, tobEtaPhi_BW23Xdecoded_EC, tobEtaPhi_BW23Ydecoded_EC);
1271 }
1272
1273 if(slices[iSlice].tob[iTOB].candFlag_Charge) {
1274 tobEtaPhi_ChargeXdecoded_EC = etaDecoded;
1275 tobEtaPhi_ChargeYdecoded_EC = phiDecoded;
1276 fill(m_packageName, tobEtaPhi_ChargeXdecoded_EC, tobEtaPhi_ChargeYdecoded_EC);
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;
1312 fill(m_packageName, errorSummaryMUCTPI);
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;
1332 fill(m_packageName, errorSummaryMUCTPI);
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;
1345 fill(m_packageName,errorSummaryMUCTPI);
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;
1354 fill(m_packageName,errorSummaryMUCTPI);
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;
1379 fill(m_packageName, statusDataWordMUCTPI);
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.