User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.
755 {
757
758 if( !m_GoodRunsListSelectorTool.empty() ){
759 int runNumber = GetEventInfo(ctx)->runNumber();
760 int lumiBlockNr = GetEventInfo(ctx)->lumiBlock();
761 if(m_GoodRunsListSelectorTool->getGRLCollection()->IsEmpty()){
763 return StatusCode::FAILURE;
764 }
765 bool pass = m_GoodRunsListSelectorTool->getGRLCollection()->HasRunLumiBlock(runNumber,lumiBlockNr);
766 if(pass){
767 ATH_MSG_DEBUG(
"passing GRL: run=" << runNumber <<
" lb=" << lumiBlockNr);
768 }else{
769 ATH_MSG_DEBUG(
"failed GRL: run=" << runNumber <<
" lb=" << lumiBlockNr);
770 return StatusCode::SUCCESS;
771 }
772 }
773
775 if(m_doExpressProcessing){
778 if(!expressPass){
780 return StatusCode::SUCCESS;
781 }
782 }
784 if(pass){
785 ATH_MSG_DEBUG(
"passing StreamerFilter: " << m_streamerFilter );
786 }else{
787 ATH_MSG_DEBUG(
"failed StreamerFilter: " << m_streamerFilter );
788 return StatusCode::SUCCESS;
789 }
790 }
793
795
797
798 double primaryVertexZ = (primVertex!=
nullptr)?(primVertex->
z()):(-999);
799
800 auto mon_bcid = Monitored::Scalar<int>(
"mon_bcid",
GetEventInfo(ctx)->
bcid());
803 auto mon_primvtx_z=Monitored::Scalar<double>("mon_primvtx_z",primaryVertexZ);
804
805 fill(m_packageName+
"_Common", mon_bcid, mon_pileup, mon_lb, mon_primvtx_z);
811
812
814 std::map<const xAOD::MuonRoI*,std::set<std::string>> roiAndMenu;
815 std::map<std::string,std::vector<const xAOD::MuonRoI*>> menuAndRoIs;
818
820 std::vector < const xAOD::Muon* > oflmuons;
821 std::set < const xAOD::Muon* > biasedMuons;
822 std::vector < TimedMuon > mymuons;
823 std::map < std::string, std::vector< ExtPos > > extpositions;
824 std::vector< ExtPos > extpositions_pivot;
825 std::vector<double> deltaR_muons;
826 std::vector<double> deltaR_muons_roi;
827 std::vector<double> deltaR_muons_hlt;
828 std::vector<double> muon2pv_dz;
829 std::vector<double> muon2pv_dca;
830 std::vector<double> mymuon2pv_dz;
831 std::vector<double> mymuon2pv_dca;
832 if (m_anaOfflMuon) {
833 SG::ReadHandle < xAOD::MuonContainer > muons(m_MuonContainerKey, ctx);
834 if (!muons.isValid()) {
836 return StatusCode::SUCCESS;
837 }
839 for (const auto muon : *muons) {
840
841 if (muon == nullptr) continue;
842
843 if (
muon->pt() < 1000.)
continue;
844
845 if (
muon->author() > xAOD::Muon::Author::MuidSA )
continue;
846 if (
muon->muonType() > xAOD::Muon::MuonType::MuonStandAlone )
continue;
847
848 oflmuons.push_back(muon);
849
850 double dz=-999,dca=-999;
851 if(
dataType() != DataType_t::cosmics ){
853 if(m_useOnlyCombinedMuons &&
muon->muonType()!=xAOD::Muon::MuonType::Combined)
continue;
854 if(m_useOnlyMuidCoStacoMuons && (
muon->author()!=xAOD::Muon::Author::MuidCo &&
muon->author()!=xAOD::Muon::Author::STACO))
continue;
856 if(primVertex==nullptr)continue;
857 auto trackParticle =
muon->primaryTrackParticle();
858 if(trackParticle!=nullptr){
859 dz = trackParticle->z0() - primVertex->
z();
860 dca = trackParticle->d0();
861 }
862 muon2pv_dz.push_back(dz);
863 muon2pv_dca.push_back(dca);
864 if( std::abs(dz-m_muonToPVdzOffset) > m_muonToPVdz )continue;
865 if( std::abs(dca) > m_muonToPVdca )continue;
866 }
867 }
868
869 bool isolated = true;
870
871 bool probeOK = true;
872 if( m_TagAndProbe ) probeOK = false;
873 if(
dataType() == DataType_t::cosmics ) probeOK =
true;
874
875 for(const auto muon2 : *muons){
876
877 if (muon2 == nullptr) continue;
878
879
880 if( muon == muon2 )continue;
881
882
883 if( muon2->pt() < 1000. ) continue;
884
885
886 if ( muon2->author() > xAOD::Muon::Author::MuidSA )continue;
887 if ( muon2->muonType() > xAOD::Muon::MuonType::MuonStandAlone )continue;
888
889
890 if( m_tagMuonInDifferentSystem &&
891 ( (std::abs(
muon->eta()) < barrel_end && std::abs(muon2->eta()) < barrel_end) ||
892 (std::abs(
muon->eta()) > barrel_end && std::abs(muon2->eta()) > barrel_end) ) )
continue;
893
894
896 deltaR_muons.push_back(dr_muons);
897 if( dr_muons < m_isolationWindow ) isolated = false;
898
899
900
901
902
903
904 if(probeOK)continue;
905
906
907 for (const auto &trigName : list_of_single_muon_triggers) {
908 if(m_doExpressProcessing){
911 if(!expressPass)continue;
912 }
913
915 ATH_MSG_DEBUG(
"This muon trigger, " << trigName <<
", is fired in this event!!");
916
920 for(const auto& comb : fc.getCombinations()){
921 if(!comb.active())continue;
923 for(const auto& mucont : MuFeatureContainers){
924 if(mucont.empty())continue;
925 if(mucont.te()==nullptr)continue;
926 if(!mucont.te()->getActiveState())continue;
927 for(const auto hltmu : *mucont.cptr()){
928 if (hltmu == nullptr) continue;
929 if (hltmu->pt() < 1000.)continue;
931 deltaR_muons_hlt.push_back(dr);
932 if( dr < m_trigMatchWindow ){
933 probeOK = true;
935 biasedMuons.insert(muon2);
936 }
937 }
938 }
939 }
940 }else{
943 for (const auto& aaa : features) {
944 if (!aaa.isValid()) continue;
945 auto hltmu_link = aaa.link;
946 if (!hltmu_link.isValid()) continue;
947 auto hltmu = *hltmu_link;
948 if (hltmu == nullptr) continue;
949 if (hltmu->pt() < 1000.)continue;
951 deltaR_muons_hlt.push_back(dr);
952 if( dr < m_trigMatchWindow ){
953 probeOK = true;
955 biasedMuons.insert(muon2);
956 }
957 }
958 }
959 }
960
961 if(!probeOK) continue;
963
964 if( m_TagAndProbeZmumu &&
muon->charge() != muon2->charge() ){
965 double m2 = 2. *
muon->pt() * muon2->pt() * ( std::cosh(
muon->eta() - muon2->eta()) - std::cos(
muon->phi() - muon2->phi()) );
966 double m = (
m2>0.) ? ( std::sqrt(m2) ) : (0.);
967 double mdiff = std::abs( m - m_zMass );
970 }
971 ATH_MSG_DEBUG(
"Final condition of probleOK for this muon is: " << probeOK);
972 if(probeOK) break;
973 }
974
975 if(m_requireIsolated && !isolated)continue;
976
977 if(!probeOK)continue;
978
980
982
983 if ( std::abs(
muon->eta()) > 0.5
984 &&
muon->pt() > m_pTCutOnExtrapolation ) {
985 for (
const auto &
z : m_extZposition) {
986 if(
muon->eta()<0 &&
z>0 )
continue;
987 if(
muon->eta()>0 &&
z<0 )
continue;
988 xAOD::Muon::TrackParticleType trkPtclType;
989 if(m_useIDTrackForExtrapolation){ trkPtclType = xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle;
990 }else if(m_useMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::MuonSpectrometerTrackParticle;
991 }else if(m_useCBTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::CombinedTrackParticle;
992 }else if(m_useExtMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle;
993 }else if(m_useMSOnlyExtMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::MSOnlyExtrapolatedMuonSpectrometerTrackParticle;
994 }else{ trkPtclType = xAOD::Muon::TrackParticleType::Primary; }
996 if(trackParticle==nullptr)continue;
997 auto matrix = std::make_unique<Amg::Transform3D>();
1000 auto disc = std::make_unique < Trk::DiscSurface > (*matrix,
1001 m_endcapPivotPlaneMinimumRadius,
1002 m_endcapPivotPlaneMaximumRadius);
1003 const Trk::BoundaryCheck boundaryCheck = true;
1005 trackParticle->perigeeParameters(),
1006 *disc,
1008 boundaryCheck,
1010 if(extTrkParams != nullptr){
1011 if( std::abs(extTrkParams->position().z() -
z) > 10. )
continue;
1014 ext.extPos = extTrkParams->position();
1015 ext.extVec = extTrkParams->momentum();
1016 Amg::Vector3D extVec(extTrkParams->position().x(),extTrkParams->position().y(),
z);
1019 if( std::abs( std::abs(
z) - m_M3_Z ) < 10. &&
1020 std::abs(
muon->eta() ) > 1.05 &&
1021 std::abs(
muon->eta() ) < 2.40){
1022 extpositions_pivot.push_back(ext);
1023 }
1024 for(
const auto& cham :
ext.passedChambers){
1025 extpositions[cham].push_back(ext);
1026 }
1027 }
1028 }
1029 }
1030
1031 mymuon.matchedL1Charge=false;
1032 mymuon.passBW3Coin=false;
1033 mymuon.passInnerCoin=false;
1034 mymuon.passGoodMF=false;
1035 mymuon.passIsMoreCandInRoI=false;
1037 if (AllBCMuonRoIs.size()==0) {
1038 ATH_MSG_DEBUG(
"No RoI matching possible as no container has been retrieved");
1039 mymuons.push_back(mymuon);
1040 continue;
1041 }
1042 for(const auto& allBcMuonRoI : AllBCMuonRoIs){
1045 deltaR_muons_roi.push_back(dr);
1046 if( dr < max_dr ){
1047 if(roiAndMenu.count(roi)>0)mymuon.matchedL1Items.insert( roiAndMenu[roi].
begin(), roiAndMenu[roi].
end() );
1048 mymuon.matchedL1ThrExclusive.insert( roi->
getThrNumber() );
1056 }
1057 }
1058 for (int ithr = 1; ithr <= 15 ; ++ithr) {
1059 for (const auto &thr : mymuon.matchedL1ThrExclusive) {
1060 if (thr >= ithr) {
1061 mymuon.matchedL1ThrInclusive.insert(ithr);
1062 break;
1063 }
1064 }
1065 for (const auto &thr : mymuon.matchedL1ThrExclusiveTGC) {
1066 if (thr >= ithr) {
1067 mymuon.matchedL1ThrInclusiveTGC.insert(ithr);
1068 break;
1069 }
1070 }
1071 }
1072
1073 mymuons.push_back(mymuon);
1074 mymuon2pv_dz.push_back(dz);
1075 mymuon2pv_dca.push_back(dca);
1076 }
1077
1078
1079 auto oflmuon_num=Monitored::Scalar<int>("oflmuon_num",(*muons).size());
1080 using namespace Muon::MuonStationIndex;
1089
1090 auto oflmuon_probe_num=Monitored::Scalar<int>("oflmuon_probe_num",mymuons.size());
1099
1103
1104
1105 fill(m_packageName+
"_Muon",
1106 oflmuon_num,oflmuon_muonType,oflmuon_author,oflmuon_quality,oflmuon_pt,oflmuon_eta,oflmuon_phi,oflmuon_pvdz,oflmuon_pvdca,
1107 oflmuon_probe_num,oflmuon_probe_muonType,oflmuon_probe_author,oflmuon_probe_quality,oflmuon_probe_pt,oflmuon_probe_eta,oflmuon_probe_phi,oflmuon_probe_pvdz,oflmuon_probe_pvdca,
1108 oflmuon_deltaR, oflmuon_deltaR_roi, oflmuon_deltaR_hlt
1109 );
1110
1111
1112
1114 oflmuon_variables.push_back(oflmuon_num);
1115 oflmuon_variables.push_back(oflmuon_muonType);
1116 oflmuon_variables.push_back(oflmuon_author);
1117 oflmuon_variables.push_back(oflmuon_quality);
1118 oflmuon_variables.push_back(oflmuon_pt);
1119 oflmuon_variables.push_back(oflmuon_eta);
1120 oflmuon_variables.push_back(oflmuon_phi);
1121
1122
1124 return m.muon->charge();
1125 });
1126 oflmuon_variables.push_back(muon_charge);
1128return (
m.muon->charge()>0);
1129 });
1130 oflmuon_variables.push_back(muon_chargePos);
1132 return (
m.muon->charge()<0);
1133 });
1134 oflmuon_variables.push_back(muon_chargeNeg);
1136 return (
m.muon->pt()>pt_4_cut)?
m.muon->eta():-10;
1137 });
1138 oflmuon_variables.push_back(muon_eta4gev);
1140 return (
m.muon->pt()>pt_4_cut)?
m.muon->phi():-10;
1141 });
1142 oflmuon_variables.push_back(muon_phi4gev);
1144 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary)?
m.muon->phi():-10;
1145 });
1146 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3);
1148 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary &&
m.muon->eta()>0)?
m.muon->phi():-10;
1149 });
1150 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3A);
1152 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary &&
m.muon->eta()<0)?
m.muon->phi():-10;
1153 });
1154 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3C);
1156 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end)?
m.muon->phi():-10;
1157 });
1158 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4);
1160 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end &&
m.muon->eta()>0)?
m.muon->phi():-10;
1161 });
1162 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4A);
1164 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end &&
m.muon->eta()<0)?
m.muon->phi():-10;
1165 });
1166 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4C);
1168 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut) ?
m.muon->phi() : -10;
1169 });
1170 oflmuon_variables.push_back(muon_phi4gev_rpc);
1172 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1173 });
1174 oflmuon_variables.push_back(muon_phi4gev_rpcA);
1176 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1177 });
1178 oflmuon_variables.push_back(muon_phi4gev_rpcC);
1180 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut) ?
m.muon->phi() : -10;
1181 });
1182 oflmuon_variables.push_back(muon_phi4gev_tgc);
1184 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1185 });
1186 oflmuon_variables.push_back(muon_phi4gev_tgcA);
1188 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1189 });
1190 oflmuon_variables.push_back(muon_phi4gev_tgcC);
1192 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->phi() : -10;
1193 });
1194 oflmuon_variables.push_back(muon_phi0gev_tgc);
1196 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1197 });
1198 oflmuon_variables.push_back(muon_phi0gev_tgcA);
1200 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1201 });
1202 oflmuon_variables.push_back(muon_phi0gev_tgcC);
1204 return (
m.muon->pt() > pt_30_cut) ?
m.muon->eta() : -10;
1205 });
1206 oflmuon_variables.push_back(muon_eta);
1208 return (
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1209 });
1210 oflmuon_variables.push_back(muon_phi);
1212 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1213 });
1214 oflmuon_variables.push_back(muon_phi_rpc);
1216 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()>0) ?
m.muon->phi() : -10;
1217 });
1218 oflmuon_variables.push_back(muon_phi_rpcA);
1220 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()<0) ?
m.muon->phi() : -10;
1221 });
1222 oflmuon_variables.push_back(muon_phi_rpcC);
1224 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1225 });
1226 oflmuon_variables.push_back(muon_phi_tgc);
1228 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()>0) ?
m.muon->phi() : -10;
1229 });
1230 oflmuon_variables.push_back(muon_phi_tgcA);
1232 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()<0) ?
m.muon->phi() : -10;
1233 });
1234 oflmuon_variables.push_back(muon_phi_tgcC);
1236 return (std::abs(
m.muon->eta()) < barrel_end) ?
m.muon->pt() / Gaudi::Units::GeV : -10;
1237 });
1238 oflmuon_variables.push_back(muon_pt_rpc);
1240 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->pt() / Gaudi::Units::GeV : -10;
1241 });
1242 oflmuon_variables.push_back(muon_pt_tgc);
1244 return (std::abs(
m.muon->eta()) < barrel_end);
1245 });
1246 oflmuon_variables.push_back(muon_barrel);
1248 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < endcap_end);
1249 });
1250 oflmuon_variables.push_back(muon_endcap);
1252 return (std::abs(
m.muon->eta()) > endcap_end && std::abs(
m.muon->eta()) < trigger_end);
1253 });
1254 oflmuon_variables.push_back(muon_forward);
1256 return m.matchedL1ThrInclusiveTGC.find(1) !=
m.matchedL1ThrInclusiveTGC.end();
1257 });
1258 oflmuon_variables.push_back(muon_l1passThr1TGC);
1260 return m.matchedL1ThrInclusive.find(1) !=
m.matchedL1ThrInclusive.end();
1261 });
1262 oflmuon_variables.push_back(muon_l1passThr1);
1264 return m.matchedL1ThrInclusive.find(2) !=
m.matchedL1ThrInclusive.end();
1265 });
1266 oflmuon_variables.push_back(muon_l1passThr2);
1268 return m.matchedL1ThrInclusive.find(3) !=
m.matchedL1ThrInclusive.end();
1269 });
1270 oflmuon_variables.push_back(muon_l1passThr3);
1272 return m.matchedL1ThrInclusive.find(4) !=
m.matchedL1ThrInclusive.end();
1273 });
1274 oflmuon_variables.push_back(muon_l1passThr4);
1276 return m.matchedL1ThrInclusive.find(5) !=
m.matchedL1ThrInclusive.end();
1277 });
1278 oflmuon_variables.push_back(muon_l1passThr5);
1280 return m.matchedL1ThrInclusive.find(6) !=
m.matchedL1ThrInclusive.end();
1281 });
1282 oflmuon_variables.push_back(muon_l1passThr6);
1284 return m.matchedL1ThrInclusive.find(7) !=
m.matchedL1ThrInclusive.end();
1285 });
1286 oflmuon_variables.push_back(muon_l1passThr7);
1288 return m.matchedL1ThrInclusive.find(8) !=
m.matchedL1ThrInclusive.end();
1289 });
1290 oflmuon_variables.push_back(muon_l1passThr8);
1292 return m.matchedL1ThrInclusive.find(9) !=
m.matchedL1ThrInclusive.end();
1293 });
1294 oflmuon_variables.push_back(muon_l1passThr9);
1296 return m.matchedL1ThrInclusive.find(10) !=
m.matchedL1ThrInclusive.end();
1297 });
1298 oflmuon_variables.push_back(muon_l1passThr10);
1300 return m.matchedL1ThrInclusive.find(11) !=
m.matchedL1ThrInclusive.end();
1301 });
1302 oflmuon_variables.push_back(muon_l1passThr11);
1304 return m.matchedL1ThrInclusive.find(12) !=
m.matchedL1ThrInclusive.end();
1305 });
1306 oflmuon_variables.push_back(muon_l1passThr12);
1308 return m.matchedL1ThrInclusive.find(13) !=
m.matchedL1ThrInclusive.end();
1309 });
1310 oflmuon_variables.push_back(muon_l1passThr13);
1312 return m.matchedL1ThrInclusive.find(14) !=
m.matchedL1ThrInclusive.end();
1313 });
1314 oflmuon_variables.push_back(muon_l1passThr14);
1316 return m.matchedL1ThrInclusive.find(15) !=
m.matchedL1ThrInclusive.end();
1317 });
1318 oflmuon_variables.push_back(muon_l1passThr15);
1320 return m.matchedL1Charge;
1321 });
1322 oflmuon_variables.push_back(muon_l1passCharge);
1324 return m.passBW3Coin;
1325 });
1326 oflmuon_variables.push_back(muon_l1passBW3Coin);
1328 return !
m.passBW3Coin;
1329 });
1330 oflmuon_variables.push_back(muon_l1passBW3CoinVeto);
1332 return m.passInnerCoin;
1333 });
1334 oflmuon_variables.push_back(muon_l1passInnerCoin);
1336 return !
m.passInnerCoin;
1337 });
1338 oflmuon_variables.push_back(muon_l1passInnerCoinVeto);
1340 return m.passGoodMF;
1341 });
1342 oflmuon_variables.push_back(muon_l1passGoodMF);
1344 return !
m.passGoodMF;
1345 });
1346 oflmuon_variables.push_back(muon_l1passBadMF);
1348 return m.passIsMoreCandInRoI;
1349 });
1350 oflmuon_variables.push_back(muon_l1passIsMoreCandInRoI);
1351 fill(m_packageName, oflmuon_variables);
1352
1353 ATH_MSG_DEBUG(
"End filling offline muon-related histograms");
1354 }
1357
1361
1362
1364 if(m_anaTgcCoin){
1365 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinPrev(m_TgcCoinDataContainerPrevBCKey, ctx);
1366 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinCurr(m_TgcCoinDataContainerCurrBCKey, ctx);
1367 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinNext(m_TgcCoinDataContainerNextBCKey, ctx);
1368 if (!tgcCoinCurr.isValid() || !tgcCoinNext.isValid() || !tgcCoinPrev.isValid()) {
1370 }else{
1372 std::map<int, SG::ReadHandle<Muon::TgcCoinDataContainer> > tgcCoin;
1373 tgcCoin[-1] = tgcCoinPrev;
1374 tgcCoin[0] = tgcCoinCurr;
1375 tgcCoin[+1] = tgcCoinNext;
1377 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinNextNext(m_TgcCoinDataContainerNextNextBCKey, ctx);
1378 if(tgcCoinNextNext.isValid())tgcCoin[+2] = tgcCoinNextNext;
1379 }
1380 std::vector< TgcTrig > tgcTrigMap_SL;
1381 std::vector< TgcTrig > tgcTrigMap_SL_Endcap;
1382 std::vector< TgcTrig > tgcTrigMap_SL_Forward;
1383 std::vector< TgcTrig > tgcTrigMap_HPT_Wire;
1384 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Wire;
1385 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Wire;
1386 std::vector< TgcTrig > tgcTrigMap_HPT_Strip;
1387 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Strip;
1388 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Strip;
1389 std::vector< TgcTrig > tgcTrigMap_LPT_Wire;
1390 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Wire;
1391 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Wire;
1392 std::vector< TgcTrig > tgcTrigMap_LPT_Strip;
1393 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Strip;
1394 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Strip;
1395 std::vector< TgcTrig > tgcTrigMap_EIFI_Wire;
1396 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Wire;
1397 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Wire;
1398 std::vector< TgcTrig > tgcTrigMap_EIFI_Strip;
1399 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Strip;
1400 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Strip;
1401 std::vector< TgcTrigTile > tgcTrigTileMap;
1402 std::vector< TgcTrigNsw > tgcTrigNswMap;
1403 std::vector< TgcTrigRpc > tgcTrigRpcMap;
1404 std::vector< TgcTrigEifi > tgcTrigEifiMap;
1405 std::map<TString, TgcTrigNsw > tgcTrigNswMapUnique;
1406 std::vector<int> multiplicity_endcap(number_of_trigger_sectors_endcap*2+1);
1407 std::vector<int> multiplicity_forward(number_of_trigger_sectors_forward*2+1);
1408 std::vector<int> sectors_endcap(number_of_trigger_sectors_endcap*2+1);
1409 std::vector<int> sectors_forward(number_of_trigger_sectors_forward*2+1);
1410 std::iota(sectors_endcap.begin(),sectors_endcap.end(),-number_of_trigger_sectors_endcap);
1411 std::iota(sectors_forward.begin(),sectors_forward.end(),-number_of_trigger_sectors_forward);
1412 int n_TgcCoin_detElementIsNull = 0;
1413 int n_TgcCoin_postOutPtrIsNull = 0;
1414 for (auto thisCoin : tgcCoin) {
1415 int bunch = thisCoin.first;
1416 for (const auto tgccnt : *(thisCoin.second)) {
1417 for (
const auto data : *tgccnt) {
1418 if (
data->detectorElementOut() ==
nullptr ) n_TgcCoin_detElementIsNull++;
1419 if (
data->posOutPtr() ==
nullptr ) n_TgcCoin_postOutPtrIsNull++;
1420
1421 int slsector = (
data->isForward()) ? (
data->phi() % number_of_trigger_sectors_forward + 1) : ( (
data->phi() + 1) % number_of_trigger_sectors_endcap + 1);
1422 if(!
data->isAside()) slsector *= -1;
1423
1425 if (
data->isInner() &&
data->isStrip()) {
1429 rpcCoin.bunch = bunch;
1430 rpcCoin.currBc = (bunch==0);
1435 tgcTrigRpcMap.push_back(rpcCoin);
1436 }
else if (
data->isInner() && !
data->isStrip()) {
1440 int boardID = (std::abs(nswCoin.slSector)-1) / 2 + 1;
1441 nswCoin.slInputIndex = (boardID-1) * 6 + nswCoin.slInput;
1442 nswCoin.isAside =
data->isAside();
1443 nswCoin.isForward =
data->isForward();
1445 nswCoin.bunch = bunch;
1446 nswCoin.currBc = (bunch==0);
1450 if(nswCoin.R!=0 && nswCoin.Phi!=0){
1451 tgcTrigNswMap.push_back(nswCoin);
1452 TString uniqueinfo = Form("%d:%d:%d:%d:%d:%d:%d:%d",nswCoin.slSector,nswCoin.slInput,nswCoin.slInputIndex,nswCoin.isAside,nswCoin.isForward,nswCoin.R,nswCoin.Phi,nswCoin.deltaTheta);
1453 if(tgcTrigNswMapUnique.find(uniqueinfo)==tgcTrigNswMapUnique.end()){
1454 nswCoin.bcmask = 0x1 << (1-bunch);
1455 tgcTrigNswMapUnique[uniqueinfo] = nswCoin;
1456 }else{
1457 tgcTrigNswMapUnique[uniqueinfo].bcmask |= 0x1 << (1-bunch);
1458 }
1459 }
1460 }
else if (!
data->isInner() &&
data->isStrip()) {
1464 tileCoin.bunch = bunch;
1465 tileCoin.currBc = (bunch==0);
1467 if(tileCoin.tmdbDecisions!=0)
1468 tgcTrigTileMap.push_back(tileCoin);
1469 }
else if (!
data->isInner() && !
data->isStrip()) {
1472 eifiCoin.bunch = bunch;
1473 eifiCoin.currBc = (bunch==0);
1474 tgcTrigEifiMap.push_back(eifiCoin);
1475 }
1476 }
1477
1478 if (
data->detectorElementOut() ==
nullptr ||
1479 data->posOutPtr() ==
nullptr )
continue;
1483 tgcTrig.x_In = posIn[0];
1484 tgcTrig.y_In = posIn[1];
1485 tgcTrig.z_In = posIn[2];
1487 tgcTrig.x_Out = posOut[0];
1488 tgcTrig.y_Out = posOut[1];
1489 tgcTrig.z_Out = posOut[2];
1490 tgcTrig.eta = posOut.eta();
1491 tgcTrig.phi = posOut.phi();
1492 tgcTrig.width_In =
data->widthIn();
1493 tgcTrig.width_Out =
data->widthOut();
1496 tgcTrig.width_R =
matrix(0, 0);
1497 tgcTrig.width_Phi =
matrix(1, 1);
1498
1499 tgcTrig.muonMatched = 0;
1500 for(const auto& ext : extpositions_pivot){
1502 if(
data->isAside() &&
ext.extPos.z()<0)
continue;
1503 if(!
data->isAside()&&
ext.extPos.z()>0)
continue;
1504 if(
Amg::deltaR(posOut,
ext.extPos) > m_l1trigMatchWindowPt15 )
continue;
1505 tgcTrig.muonMatched = 1;
1506 break;
1507 }
1508
1509 tgcTrig.loosemuonMatched = 0;
1510 for (const auto& muon : oflmuons) {
1513 if( dr > max_dr )continue;
1514 tgcTrig.loosemuonMatched = 1;
1515 break;
1516 }
1517
1518 tgcTrig.isBiased = 0;
1519 for(const auto& muon : biasedMuons){
1522 if( dr > max_dr )continue;
1523 tgcTrig.isBiased = 1;
1524 break;
1525 }
1526
1527
1528
1529 if(biasedMuons.size()>=2) tgcTrig.isBiased = 0;
1530
1531 } else {
1532 tgcTrig.width_R = 0.;
1533 tgcTrig.width_Phi = 0.;
1534 }
1535 int etaout = 0;
1536 int etain = 0;
1537 const Identifier tcdidout =
data->channelIdOut();
1539 etaout = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidout)));
1540 }
1541 const Identifier tcdidin =
data->channelIdIn();
1543 etain = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidin)));
1544 }
1545 tgcTrig.etaout = etaout;
1546 tgcTrig.etain = etain;
1547 tgcTrig.isAside =
data->isAside();
1548 tgcTrig.isForward =
data->isForward();
1549 tgcTrig.isStrip =
data->isStrip();
1550 tgcTrig.isInner =
data->isInner();
1551 tgcTrig.isPositiveDeltaR =
data->isPositiveDeltaR();
1552 tgcTrig.type =
data->type();
1553 tgcTrig.trackletId =
data->trackletId();
1554 tgcTrig.trackletIdStrip =
data->trackletIdStrip();
1555 tgcTrig.sector = slsector;
1556 tgcTrig.roi =
data->roi();
1557 tgcTrig.pt =
data->pt();
1558 tgcTrig.delta =
data->delta();
1559 tgcTrig.sub =
data->sub();
1560 tgcTrig.veto =
data->veto();
1561 tgcTrig.bunch = bunch;
1563 tgcTrig.inner =
data->inner();
1564 if( !
data->isInner() ){
1566 tgcTrigMap_SL_Endcap.push_back(tgcTrig);
1567 tgcTrigMap_SL.push_back(tgcTrig);
1568 multiplicity_endcap[ slsector + number_of_trigger_sectors_endcap ]++;
1570 tgcTrigMap_SL_Forward.push_back(tgcTrig);
1571 tgcTrigMap_SL.push_back(tgcTrig);
1572 multiplicity_forward[ slsector + number_of_trigger_sectors_forward ]++;
1574 if(tgcTrig.isStrip){
1575 tgcTrigMap_HPT_Endcap_Strip.push_back(tgcTrig);
1576 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1577 }else{
1578 tgcTrigMap_HPT_Endcap_Wire.push_back(tgcTrig);
1579 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1580 }
1582 if(tgcTrig.isStrip){
1583 tgcTrigMap_HPT_Forward_Strip.push_back(tgcTrig);
1584 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1585 }else{
1586 tgcTrigMap_HPT_Forward_Wire.push_back(tgcTrig);
1587 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1588 }
1590 if(tgcTrig.isStrip){
1591 tgcTrigMap_LPT_Endcap_Strip.push_back(tgcTrig);
1592 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1593 }else{
1594 tgcTrigMap_LPT_Endcap_Wire.push_back(tgcTrig);
1595 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1596 }
1598 if(tgcTrig.isStrip){
1599 tgcTrigMap_LPT_Forward_Strip.push_back(tgcTrig);
1600 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1601 }else{
1602 tgcTrigMap_LPT_Forward_Wire.push_back(tgcTrig);
1603 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1604 }
1606 if(tgcTrig.isStrip){
1607 tgcTrigMap_EIFI_Endcap_Strip.push_back(tgcTrig);
1608 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1609 }else{
1610 tgcTrigMap_EIFI_Endcap_Wire.push_back(tgcTrig);
1611 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1612 }
1614 if(tgcTrig.isStrip){
1615 tgcTrigMap_EIFI_Forward_Strip.push_back(tgcTrig);
1616 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1617 }else{
1618 tgcTrigMap_EIFI_Forward_Wire.push_back(tgcTrig);
1619 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1620 }
1621 }
1622 }else{
1623
1624 }
1625 }
1626 }
1627 }
1628
1629
1630 for(auto& sl : tgcTrigMap_SL){
1631 if( sl.bunch != 0 )continue;
1632 for(auto& inner : tgcTrigRpcMap){
1633 if( sl.isForward == 1 )break;
1634 if( sl.sector != inner.slSector )continue;
1635 inner.roiEta = sl.eta;
1636 inner.roiPhi = sl.phi;
1637 inner.roiNum = sl.roi;
1638 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1639 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1640 inner.goodBcid0 = inner.deltaBcid==0;
1641 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1642 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1643 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1644 sl.rpc.push_back(&inner);
1645 }
1646 for(auto& inner : tgcTrigNswMap){
1647 if( sl.sector != inner.slSector )continue;
1648 if( sl.isForward != inner.isForward )continue;
1650 inner.roiEta = sl.eta;
1651 inner.roiPhi = sl.phi;
1652 inner.roiNum = sl.roi;
1653 if( std::abs(inner.deltaR) < m_NswDeltaRCut ){
1654 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1655 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1656 inner.goodBcid0 = inner.deltaBcid==0;
1657 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1658 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1659 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1660 sl.nsw.push_back(&inner);
1661 }
1662 }
1663 for(auto& inner : tgcTrigNswMapUnique){
1664 if( sl.sector != inner.second.slSector )continue;
1665 if( sl.isForward != inner.second.isForward )continue;
1667 inner.second.roiEta = sl.eta;
1668 inner.second.roiPhi = sl.phi;
1669 inner.second.roiNum = sl.roi;
1670 if( std::abs(inner.second.deltaR) < m_NswDeltaRCut ){
1671 inner.second.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.second.bcid - sl.bcid) : -999;
1672 inner.second.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.second.bunch - sl.bunch) : -999;
1673 inner.second.goodBcid0 = inner.second.deltaBcid==0;
1674 inner.second.goodBcid1 = (std::abs(inner.second.deltaBcid)<=1 || (16-std::abs(inner.second.deltaBcid))<=1);
1675 inner.second.goodBcid2 = (std::abs(inner.second.deltaBcid)<=2 || (16-std::abs(inner.second.deltaBcid))<=2);
1676 inner.second.goodTiming = (inner.second.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1677 sl.nsw_unique.push_back(&inner.second);
1678 }
1679 }
1680 for(auto& inner : tgcTrigTileMap){
1681 if( sl.isForward == 1 )break;
1682 if( sl.sector != inner.slSector )continue;
1683 inner.roiEta = sl.eta;
1684 inner.roiPhi = sl.phi;
1685 inner.roiNum = sl.roi;
1686 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1687 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1688 inner.goodBcid0 = inner.deltaBcid==0;
1689 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1690 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1691 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1692 sl.tile.push_back(&inner);
1693 }
1694 for(auto& inner : tgcTrigEifiMap){
1695 if( sl.isForward == 1 )break;
1696 if( sl.sector != inner.slSector )continue;
1697 inner.roiEta = sl.eta;
1698 inner.roiPhi = sl.phi;
1699 inner.roiNum = sl.roi;
1700 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1701 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1702 sl.eifi.push_back(&inner);
1703 }
1704 }
1705
1706 std::vector< TgcTrigTile > tgcTrigTileMap_allmods;
1707 for(auto& inner : tgcTrigTileMap){
1708 if(inner.roiNum<0)continue;
1709 for(
int i = 0 ;
i < 12 ;
i++){
1711 if((inner.tmdbDecisions>>i) & 0x1){
1712 inner2.tmdbDecisions = (
i+3)%3 + 1;
1713 tgcTrigTileMap_allmods.push_back(inner2);
1714 }
1715 }
1716 }
1717
1718
1719
1721 tgcCoin_variables.push_back(mon_bcid);
1722 tgcCoin_variables.push_back(mon_pileup);
1723 tgcCoin_variables.push_back(mon_lb);
1724
1725 auto mon_nTgcCoin_detElementIsNull = Monitored::Scalar<int>("nTgcCoinDetElementIsNull", n_TgcCoin_detElementIsNull);
1726 auto mon_nTgcCoin_postOutPtrIsNull = Monitored::Scalar<int>("nTgcCoinPostOutPtrIsNull", n_TgcCoin_postOutPtrIsNull);
1729 auto mon_multiplicity_endcap =
Monitored::Collection(
"trigger_multiplicity_endcap", multiplicity_endcap);
1730 auto mon_multiplicity_forward =
Monitored::Collection(
"trigger_multiplicity_forward", multiplicity_forward);
1731 tgcCoin_variables.emplace_back(mon_nTgcCoin_detElementIsNull);
1732 tgcCoin_variables.emplace_back(mon_nTgcCoin_postOutPtrIsNull);
1733 tgcCoin_variables.emplace_back(mon_sectors_endcap);
1734 tgcCoin_variables.emplace_back(mon_sectors_forward);
1735 tgcCoin_variables.emplace_back(mon_multiplicity_endcap);
1736 tgcCoin_variables.emplace_back(mon_multiplicity_forward);
1737
1738
1739 std::vector<Monitored::ObjectsCollection<std::vector<TgcTrig>, double>> vo_coin;
1740 vo_coin.reserve(38 * 21);
1741
1742 fillTgcCoin(
"SL",tgcTrigMap_SL,vo_coin,tgcCoin_variables);
1743 fillTgcCoin(
"SL_Endcap",tgcTrigMap_SL_Endcap,vo_coin,tgcCoin_variables);
1744 fillTgcCoin(
"SL_Forward",tgcTrigMap_SL_Forward,vo_coin,tgcCoin_variables);
1745 fillTgcCoin(
"HPT_Wire",tgcTrigMap_HPT_Wire,vo_coin,tgcCoin_variables);
1746 fillTgcCoin(
"HPT_Endcap_Wire",tgcTrigMap_HPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1747 fillTgcCoin(
"HPT_Forward_Wire",tgcTrigMap_HPT_Forward_Wire,vo_coin,tgcCoin_variables);
1748 fillTgcCoin(
"HPT_Strip",tgcTrigMap_HPT_Strip,vo_coin,tgcCoin_variables);
1749 fillTgcCoin(
"HPT_Endcap_Strip",tgcTrigMap_HPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1750 fillTgcCoin(
"HPT_Forward_Strip",tgcTrigMap_HPT_Forward_Strip,vo_coin,tgcCoin_variables);
1751 fillTgcCoin(
"LPT_Wire",tgcTrigMap_LPT_Wire,vo_coin,tgcCoin_variables);
1752 fillTgcCoin(
"LPT_Endcap_Wire",tgcTrigMap_LPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1753 fillTgcCoin(
"LPT_Forward_Wire",tgcTrigMap_LPT_Forward_Wire,vo_coin,tgcCoin_variables);
1754 fillTgcCoin(
"LPT_Strip",tgcTrigMap_LPT_Strip,vo_coin,tgcCoin_variables);
1755 fillTgcCoin(
"LPT_Endcap_Strip",tgcTrigMap_LPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1756 fillTgcCoin(
"LPT_Forward_Strip",tgcTrigMap_LPT_Forward_Strip,vo_coin,tgcCoin_variables);
1757 fillTgcCoin(
"EIFI_Wire",tgcTrigMap_EIFI_Wire,vo_coin,tgcCoin_variables);
1758 fillTgcCoin(
"EIFI_Endcap_Wire",tgcTrigMap_EIFI_Endcap_Wire,vo_coin,tgcCoin_variables);
1759 fillTgcCoin(
"EIFI_Forward_Wire",tgcTrigMap_EIFI_Forward_Wire,vo_coin,tgcCoin_variables);
1760 fillTgcCoin(
"EIFI_Strip",tgcTrigMap_EIFI_Strip,vo_coin,tgcCoin_variables);
1761 fillTgcCoin(
"EIFI_Endcap_Strip",tgcTrigMap_EIFI_Endcap_Strip,vo_coin,tgcCoin_variables);
1762 fillTgcCoin(
"EIFI_Forward_Strip",tgcTrigMap_EIFI_Forward_Strip,vo_coin,tgcCoin_variables);
1763
1764 std::vector<Monitored::ObjectsCollection<std::vector<ExtTrigInfo>, double>> vo_exttriginfo;
1765 vo_exttriginfo.reserve(13 * 5);
1766 std::vector<ExtTrigInfo> extTrigInfo_SL;
1767 std::vector<ExtTrigInfo> extTrigInfo_HPT_Wire;
1768 std::vector<ExtTrigInfo> extTrigInfo_HPT_Strip;
1769 std::vector<ExtTrigInfo> extTrigInfo_LPT_Wire;
1770 std::vector<ExtTrigInfo> extTrigInfo_LPT_Strip;
1771 fillTgcCoinEff(
"SL",tgcTrigMap_SL,extpositions_pivot,extTrigInfo_SL,vo_exttriginfo,tgcCoin_variables);
1772 fillTgcCoinEff(
"HPT_Wire",tgcTrigMap_HPT_Wire,extpositions_pivot,extTrigInfo_HPT_Wire,vo_exttriginfo,tgcCoin_variables);
1773 fillTgcCoinEff(
"HPT_Strip",tgcTrigMap_HPT_Strip,extpositions_pivot,extTrigInfo_HPT_Strip,vo_exttriginfo,tgcCoin_variables);
1774 fillTgcCoinEff(
"LPT_Wire",tgcTrigMap_LPT_Wire,extpositions_pivot,extTrigInfo_LPT_Wire,vo_exttriginfo,tgcCoin_variables);
1775 fillTgcCoinEff(
"LPT_Strip",tgcTrigMap_LPT_Strip,extpositions_pivot,extTrigInfo_LPT_Strip,vo_exttriginfo,tgcCoin_variables);
1776
1777
1780 });
1781 tgcCoin_variables.push_back(coin_inner_tgc_roi);
1783 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.sector) : -999;
1784 });
1785 tgcCoin_variables.push_back(coin_inner_tgc_sector);
1787 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.sector) : -999;
1788 });
1789 tgcCoin_variables.push_back(coin_inner_tgc_fake_sector);
1790
1792 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.eta) : -999;
1793 });
1794 tgcCoin_variables.push_back(coin_inner_tgc_eta);
1796 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.phi) : -999;
1797 });
1798 tgcCoin_variables.push_back(coin_inner_tgc_phi);
1799
1801 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.eta) : -999;
1802 });
1803 tgcCoin_variables.push_back(coin_inner_tgc_fake_eta);
1805 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.phi) : -999;
1806 });
1807 tgcCoin_variables.push_back(coin_inner_tgc_fake_phi);
1808
1810 return m.isForward==1;
1811 });
1812 tgcCoin_variables.push_back(coin_inner_tgc_forward);
1814 return m.isForward==0;
1815 });
1816 tgcCoin_variables.push_back(coin_inner_tgc_endcap);
1818 return std::abs(
m.eta) < 1.3;
1819 });
1820 tgcCoin_variables.push_back(coin_inner_tgc_etaupto1p3);
1822 return std::abs(
m.eta) > 1.3 &&
m.isForward==0;
1823 });
1824 tgcCoin_variables.push_back(coin_inner_tgc_etafrom1p3_endcap);
1825
1827 return (((
m.pt>>CoinFlagEI)&0x1)!=0) ? 1.0 : 0.0;
1828 });
1829 tgcCoin_variables.push_back(coin_inner_tgc_coinflagEifi);
1831 return (((
m.pt>>CoinFlagTile)&0x1)!=0) ? 1.0 : 0.0;
1832 });
1833 tgcCoin_variables.push_back(coin_inner_tgc_coinflagTile);
1835 return (((
m.pt>>CoinFlagRPC)&0x1)!=0) ? 1.0 : 0.0;
1836 });
1837 tgcCoin_variables.push_back(coin_inner_tgc_coinflagRpc);
1839 return (((
m.pt>>CoinFlagNSW)&0x1)!=0) ? 1.0 : 0.0;
1840 });
1841 tgcCoin_variables.push_back(coin_inner_tgc_coinflagNsw);
1843 return (((
m.pt>>CoinFlagC)&0x1)!=0) ? 1.0 : 0.0;
1844 });
1845 tgcCoin_variables.push_back(coin_inner_tgc_coinflagC);
1846
1847
1849 return (
m.rpc.size()>0);
1850 });
1851 tgcCoin_variables.push_back(coin_inner_tgc_anyBcRpc);
1853 for(
const auto& inner :
m.rpc){
1854 if(inner->bunch == -1) return 1.;
1855 }
1856 return 0.;
1857 });
1858 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc);
1860 for(
const auto& inner :
m.rpc){
1861 if(inner->bunch == 0) return 1.;
1862 }
1863 return 0.;
1864 });
1865 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc);
1867 for(
const auto& inner :
m.rpc){
1868 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1869 }
1870 return 0.;
1871 });
1872 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid0);
1874 for(
const auto& inner :
m.rpc){
1875 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1876 }
1877 return 0.;
1878 });
1879 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid1);
1881 for(
const auto& inner :
m.rpc){
1882 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1883 }
1884 return 0.;
1885 });
1886 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid2);
1888 for(
const auto& inner :
m.rpc){
1889 if(inner->bunch == 1) return 1.;
1890 }
1891 return 0.;
1892 });
1893 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc);
1895 for(
const auto& inner :
m.rpc){
1896 if(inner->bunch == 2) return 1.;
1897 }
1898 return 0.;
1899 });
1900 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc);
1901
1903 for(
const auto& inner :
m.rpc){
1904 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1905 }
1906 return 0.;
1907 });
1908 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc_goodBcid0);
1910 for(
const auto& inner :
m.rpc){
1911 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1912 }
1913 return 0.;
1914 });
1915 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc_goodBcid0);
1916 auto coin_inner_tgc_nextnextBcRpc_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcRpc_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
1917 for(
const auto& inner :
m.rpc){
1918 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1919 }
1920 return 0.;
1921 });
1922 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc_goodBcid0);
1923
1924
1926 return (
m.nsw.size()>0);
1927 });
1928 tgcCoin_variables.push_back(coin_inner_tgc_anyBcNsw);
1930 for(
const auto& inner :
m.nsw){
1931 if(inner->bunch == -1) return 1.;
1932 }
1933 return 0.;
1934 });
1935 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw);
1937 for(
const auto& inner :
m.nsw){
1938 if(inner->bunch == 0) return 1.;
1939 }
1940 return 0.;
1941 });
1942 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw);
1944 for(
const auto& inner :
m.nsw){
1945 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1946 }
1947 return 0.;
1948 });
1949 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid0);
1951 for(
const auto& inner :
m.nsw){
1952 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1953 }
1954 return 0.;
1955 });
1956 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid1);
1958 for(
const auto& inner :
m.nsw){
1959 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1960 }
1961 return 0.;
1962 });
1963 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid2);
1965 for(
const auto& inner :
m.nsw){
1966 if(inner->bunch == 1) return 1.;
1967 }
1968 return 0.;
1969 });
1970 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw);
1972 for(
const auto& inner :
m.nsw){
1973 if(inner->bunch == 2) return 1.;
1974 }
1975 return 0.;
1976 });
1977 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw);
1978
1980 for(
const auto& inner :
m.nsw){
1981 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1982 }
1983 return 0.;
1984 });
1985 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw_goodBcid0);
1987 for(
const auto& inner :
m.nsw){
1988 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1989 }
1990 return 0.;
1991 });
1992 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw_goodBcid0);
1993 auto coin_inner_tgc_nextnextBcNsw_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcNsw_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
1994 for(
const auto& inner :
m.nsw){
1995 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1996 }
1997 return 0.;
1998 });
1999 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw_goodBcid0);
2001 for(
const auto& inner :
m.nsw_unique){
2002 if(inner->bcmask==1) return 1.;
2003 }
2004 return 0.;
2005 });
2006 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask1);
2008 for(
const auto& inner :
m.nsw_unique){
2009 if(inner->bcmask==2) return 1.;
2010 }
2011 return 0.;
2012 });
2013 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask2);
2015 for(
const auto& inner :
m.nsw_unique){
2016 if(inner->bcmask==3) return 1.;
2017 }
2018 return 0.;
2019 });
2020 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask3);
2022 for(
const auto& inner :
m.nsw_unique){
2023 if(inner->bcmask==4) return 1.;
2024 }
2025 return 0.;
2026 });
2027 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask4);
2029 for(
const auto& inner :
m.nsw_unique){
2030 if(inner->bcmask==5) return 1.;
2031 }
2032 return 0.;
2033 });
2034 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask5);
2036 for(
const auto& inner :
m.nsw_unique){
2037 if(inner->bcmask==6) return 1.;
2038 }
2039 return 0.;
2040 });
2041 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask6);
2043 for(
const auto& inner :
m.nsw_unique){
2044 if(inner->bcmask==7) return 1.;
2045 }
2046 return 0.;
2047 });
2048 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask7);
2049
2050
2052 return (
m.tile.size()>0);
2053 });
2054 tgcCoin_variables.push_back(coin_inner_tgc_anyBcTile);
2056 for(
const auto& inner :
m.tile){
2057 if(inner->bunch == -1) return 1.;
2058 }
2059 return 0.;
2060 });
2061 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile);
2063 for(
const auto& inner :
m.tile){
2064 if(inner->bunch == 0) return 1.;
2065 }
2066 return 0.;
2067 });
2068 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile);
2069 auto coin_inner_tgc_currBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2070 for(
const auto& inner :
m.tile){
2071 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
2072 }
2073 return 0.;
2074 });
2075 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid0);
2076 auto coin_inner_tgc_currBcTile_goodBcid1=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid1",tgcTrigMap_SL,[](
const TgcTrig&m){
2077 for(
const auto& inner :
m.tile){
2078 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
2079 }
2080 return 0.;
2081 });
2082 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid1);
2083 auto coin_inner_tgc_currBcTile_goodBcid2=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid2",tgcTrigMap_SL,[](
const TgcTrig&m){
2084 for(
const auto& inner :
m.tile){
2085 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
2086 }
2087 return 0.;
2088 });
2089 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid2);
2091 for(
const auto& inner :
m.tile){
2092 if(inner->bunch == 1) return 1.;
2093 }
2094 return 0.;
2095 });
2096 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile);
2098 for(
const auto inner :
m.tile){
2099 if(inner->bunch == 2) return 1.;
2100 }
2101 return 0.;
2102 });
2103 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile);
2104
2105 auto coin_inner_tgc_prevBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_prevBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2106 for(
const auto& inner :
m.tile){
2107 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
2108 }
2109 return 0.;
2110 });
2111 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile_goodBcid0);
2112 auto coin_inner_tgc_nextBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2113 for(
const auto& inner :
m.tile){
2114 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
2115 }
2116 return 0.;
2117 });
2118 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile_goodBcid0);
2119 auto coin_inner_tgc_nextnextBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2120 for(
const auto inner :
m.tile){
2121 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
2122 }
2123 return 0.;
2124 });
2125 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile_goodBcid0);
2126
2127
2129 return (
m.eifi.size()>0);
2130 });
2131 tgcCoin_variables.push_back(coin_inner_tgc_anyBcEifi);
2133 for(
const auto& inner :
m.eifi){
2134 if(inner->bunch == -1) return 1.;
2135 }
2136 return 0.;
2137 });
2138 tgcCoin_variables.push_back(coin_inner_tgc_prevBcEifi);
2140 for(
const auto& inner :
m.eifi){
2141 if(inner->bunch == 0) return 1.;
2142 }
2143 return 0.;
2144 });
2145 tgcCoin_variables.push_back(coin_inner_tgc_currBcEifi);
2147 for(
const auto& inner :
m.eifi){
2148 if(inner->bunch == 1) return 1.;
2149 }
2150 return 0.;
2151 });
2152 tgcCoin_variables.push_back(coin_inner_tgc_nextBcEifi);
2154 for(
const auto inner :
m.eifi){
2155 if(inner->bunch == 2) return 1.;
2156 }
2157 return 0.;
2158 });
2159 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcEifi);
2160
2161
2162
2165 });
2166 tgcCoin_variables.push_back(coin_inner_rpc_slSector);
2168 return (
m.goodTiming) ?
m.slSector : -999;
2169 });
2170 tgcCoin_variables.push_back(coin_inner_rpc_slSector_goodTiming);
2173 });
2174 tgcCoin_variables.push_back(coin_inner_rpc_roiEta);
2177 });
2178 tgcCoin_variables.push_back(coin_inner_rpc_roiPhi);
2181 });
2182 tgcCoin_variables.push_back(coin_inner_rpc_roiNum);
2185 });
2186 tgcCoin_variables.push_back(coin_inner_rpc_deltaBcid);
2188 return m.deltaTiming;
2189 });
2190 tgcCoin_variables.push_back(coin_inner_rpc_deltaTiming);
2193 });
2194 tgcCoin_variables.push_back(coin_inner_rpc_rpcEta);
2197 });
2198 tgcCoin_variables.push_back(coin_inner_rpc_rpcPhi);
2201 });
2202 tgcCoin_variables.push_back(coin_inner_rpc_rpcDEta);
2205 });
2206 tgcCoin_variables.push_back(coin_inner_rpc_rpcDPhi);
2209 });
2210 tgcCoin_variables.push_back(coin_inner_rpc_currBc);
2213 });
2214 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid0);
2217 });
2218 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid1);
2221 });
2222 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid2);
2224 return m.goodTiming;
2225 });
2226 tgcCoin_variables.push_back(coin_inner_rpc_goodTiming);
2227
2228
2229
2232 });
2233 tgcCoin_variables.push_back(coin_inner_nsw_deltaR);
2236 });
2237 tgcCoin_variables.push_back(coin_inner_nsw_slSector);
2239 return (
m.goodTiming) ?
m.slSector : -999;
2240 });
2241 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming);
2243 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0) ?
m.slSector : -999;
2244 });
2245 tgcCoin_variables.push_back(coin_inner_nsw_slSector_endcap);
2247 return (
m.isForward==1) ?
m.slSector : -999;
2248 });
2249 tgcCoin_variables.push_back(coin_inner_nsw_slSector_forward);
2250 auto coin_inner_nsw_slSector_goodTiming_endcap=
Monitored::Collection(
"coin_inner_nsw_slSector_goodTiming_endcap",tgcTrigNswMap,[](
const TgcTrigNsw&m){
2251 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0 &&
m.goodTiming) ?
m.slSector : -999;
2252 });
2253 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_endcap);
2254 auto coin_inner_nsw_slSector_goodTiming_forward=
Monitored::Collection(
"coin_inner_nsw_slSector_goodTiming_forward",tgcTrigNswMap,[](
const TgcTrigNsw&m){
2255 return (
m.isForward==1 &&
m.goodTiming) ?
m.slSector : -999;
2256 });
2257 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_forward);
2260 });
2261 tgcCoin_variables.push_back(coin_inner_nsw_roiEta);
2264 });
2265 tgcCoin_variables.push_back(coin_inner_nsw_roiPhi);
2268 });
2269 tgcCoin_variables.push_back(coin_inner_nsw_roiNum);
2272 });
2273 tgcCoin_variables.push_back(coin_inner_nsw_deltaBcid);
2275 return m.deltaTiming;
2276 });
2277 tgcCoin_variables.push_back(coin_inner_nsw_deltaTiming);
2280 });
2281 tgcCoin_variables.push_back(coin_inner_nsw_R);
2284 });
2285 tgcCoin_variables.push_back(coin_inner_nsw_Phi);
2287 return m.deltaTheta;
2288 });
2289 tgcCoin_variables.push_back(coin_inner_nsw_deltaTheta);
2291 return m.isForward==1;
2292 });
2293 tgcCoin_variables.push_back(coin_inner_nsw_isForward);
2295 return m.isForward==0;
2296 });
2297 tgcCoin_variables.push_back(coin_inner_nsw_isEndcap);
2300 });
2301 tgcCoin_variables.push_back(coin_inner_nsw_currBc);
2303 return (
m.isForward==0 &&
m.currBc==1);
2304 });
2305 tgcCoin_variables.push_back(coin_inner_nsw_endcap_currBc);
2307 return (
m.isForward==1 &&
m.currBc==1);
2308 });
2309 tgcCoin_variables.push_back(coin_inner_nsw_forward_currBc);
2312 });
2313 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid0);
2316 });
2317 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid1);
2320 });
2321 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid2);
2323 return m.goodTiming;
2324 });
2325 tgcCoin_variables.push_back(coin_inner_nsw_goodTiming);
2326
2328 return m.slInputIndex;
2329 });
2330 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex);
2332 return (
m.isAside==1 &&
m.isForward==0) ?
m.slInputIndex : -999;
2333 });
2334 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AEndcap);
2336 return (
m.isAside==0 &&
m.isForward==0) ?
m.slInputIndex : -999;
2337 });
2338 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CEndcap);
2340 return (
m.isAside==1 &&
m.isForward==1) ?
m.slInputIndex : -999;
2341 });
2342 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AForward);
2344 return (
m.isAside==0 &&
m.isForward==1) ?
m.slInputIndex : -999;
2345 });
2346 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CForward);
2347
2349 return (
m.goodTiming==1 &&
m.goodBcid0==1);
2350 });
2351 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid0);
2353 return (
m.goodTiming==1 &&
m.goodBcid1==1);
2354 });
2355 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid1);
2357 return (
m.goodTiming==1 &&
m.goodBcid2==1);
2358 });
2359 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid2);
2361 return m.deltaTiming==-1;
2362 });
2363 tgcCoin_variables.push_back(coin_inner_nsw_BcPrev);
2365 return m.deltaTiming==0;
2366 });
2367 tgcCoin_variables.push_back(coin_inner_nsw_BcCurr);
2369 return m.deltaTiming==1;
2370 });
2371 tgcCoin_variables.push_back(coin_inner_nsw_BcNext);
2373 return m.deltaTiming==2;
2374 });
2375 tgcCoin_variables.push_back(coin_inner_nsw_BcNextNext);
2376
2377
2380 });
2381 tgcCoin_variables.push_back(coin_inner_tile_slSector);
2383 return (
m.goodTiming) ?
m.slSector : -999;
2384 });
2385 tgcCoin_variables.push_back(coin_inner_tile_slSector_goodTiming);
2388 });
2389 tgcCoin_variables.push_back(coin_inner_tile_roiEta);
2392 });
2393 tgcCoin_variables.push_back(coin_inner_tile_roiPhi);
2396 });
2397 tgcCoin_variables.push_back(coin_inner_tile_roiNum);
2400 });
2401 tgcCoin_variables.push_back(coin_inner_tile_deltaBcid);
2403 return m.deltaTiming;
2404 });
2405 tgcCoin_variables.push_back(coin_inner_tile_deltaTiming);
2407 return m.tmdbDecisions;
2408 });
2409 tgcCoin_variables.push_back(coin_inner_tile_tmdbDecisions);
2412 });
2413 tgcCoin_variables.push_back(coin_inner_tile_currBc);
2416 });
2417 tgcCoin_variables.push_back(coin_inner_tile_goodBcid0);
2420 });
2421 tgcCoin_variables.push_back(coin_inner_tile_goodBcid1);
2424 });
2425 tgcCoin_variables.push_back(coin_inner_tile_goodBcid2);
2427 return m.goodTiming;
2428 });
2429 tgcCoin_variables.push_back(coin_inner_tile_goodTiming);
2430
2433 });
2434 tgcCoin_variables.push_back(coin_inner_tile2_slSector);
2437 });
2438 tgcCoin_variables.push_back(coin_inner_tile2_currBc);
2440 return m.tmdbDecisions;
2441 });
2442 tgcCoin_variables.push_back(coin_inner_tile2_tmdbDecisions);
2443
2444
2446 return (
m.goodTiming) ?
m.slSector : -999;
2447 });
2448 tgcCoin_variables.push_back(coin_inner_eifi_slSector_goodTiming);
2451 });
2452 tgcCoin_variables.push_back(coin_inner_eifi_slSector);
2455 });
2456 tgcCoin_variables.push_back(coin_inner_eifi_roiEta);
2459 });
2460 tgcCoin_variables.push_back(coin_inner_eifi_roiPhi);
2463 });
2464 tgcCoin_variables.push_back(coin_inner_eifi_roiNum);
2466 return m.deltaTiming;
2467 });
2468 tgcCoin_variables.push_back(coin_inner_eifi_deltaTiming);
2471 });
2472 tgcCoin_variables.push_back(coin_inner_eifi_currBc);
2474 return m.goodTiming;
2475 });
2476 tgcCoin_variables.push_back(coin_inner_eifi_goodTiming);
2477
2478
2479 fill(m_packageName+
"_TgcCoin", tgcCoin_variables);
2480
2482 }
2483 }
2484
2487 return StatusCode::SUCCESS;
2488}
char data[hepevt_bytes_allocation_ATLAS]
DataType_t dataType() const
Accessor functions for the data type.
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
bool is_valid() const
Check if id is in a valid state.
static constexpr uint32_t INNER_TILE_MODULE_BITSHIFT
Bit info in int inner for the Tile inner-coincidence.
static constexpr uint32_t INNER_TILE_BCID_BIT
static constexpr uint32_t INNER_RPC_PHI_BIT
static constexpr uint32_t INNER_NSW_BCID_BIT
static constexpr uint32_t INNER_RPC_ETA_BIT
static constexpr uint32_t INNER_RPC_DPHI_BIT
static constexpr uint32_t INNER_TILE_MODULE_BIT
static constexpr uint32_t INNER_RPC_BCID_BITSHIFT
static constexpr uint32_t INNER_RPC_ETA_BITSHIFT
Bit info in int inner for the RPC inner-coincidence.
static constexpr uint32_t INNER_RPC_PHI_BITSHIFT
static constexpr uint32_t INNER_RPC_DPHI_BITSHIFT
static constexpr uint32_t INNER_NSW_PHI_BITSHIFT
static constexpr uint32_t INNER_RPC_DETA_BIT
static constexpr uint32_t INNER_RPC_BCID_BIT
static constexpr uint32_t INNER_NSW_BCID_BITSHIFT
static constexpr uint32_t INNER_RPC_DETA_BITSHIFT
static constexpr uint32_t INNER_NSW_R_BITSHIFT
Bit info in int inner for the NSW inner-coincidence.
static constexpr uint32_t INNER_TILE_BCID_BITSHIFT
static constexpr uint32_t INNER_NSW_PHI_BIT
static constexpr uint32_t INNER_NSW_INPUT_BITSHIFT
static constexpr uint32_t INNER_NSW_DTHETA_BITSHIFT
static constexpr uint32_t INNER_NSW_R_BIT
static constexpr uint32_t INNER_NSW_INPUT_BIT
static constexpr uint32_t INNER_NSW_DTHETA_BIT
DoubleProperty m_pTCutOnTrigExtrapolation
void fillRoiHistograms(const std::vector< TgcRawDataMonitorAlgorithm::TimedMuonRoI > &roiVec, const EventContext &ctx) const
DoubleProperty m_zMassWindow
StatusCode printOutAvailableMuonTriggers() const
void fillTgcCoinEff(const std::string &, const std::vector< TgcTrig > &, const std::vector< ExtPos > &, std::vector< ExtTrigInfo > &, std::vector< Monitored::ObjectsCollection< std::vector< ExtTrigInfo >, double > > &, MonVariables &) const
void fillMuonRoisInThresholdPattern(std::map< const xAOD::MuonRoI *, std::set< std::string > > &, std::map< std::string, std::vector< const xAOD::MuonRoI * > > &, std::vector< TimedMuonRoI > &AllBCMuonRoIs, const EventContext &ctx) const
SG::ReadHandleKey< xAOD::VertexContainer > m_PrimaryVertexContainerKey
double getMatchingWindow(const xAOD::Muon *muon) const
const xAOD::Vertex * getPrimaryVertex(const EventContext &ctx) const
StringProperty m_streamerFilter
void fillTgcCoin(const std::string &, const std::vector< TgcTrig > &, std::vector< Monitored::ObjectsCollection< std::vector< TgcTrig >, double > > &, MonVariables &) const
std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVariables
SG::ReadHandleKey< Muon::TgcCoinDataContainer > m_TgcCoinDataContainerNextNextBCKey
std::vector< TgcRawDataMonitorAlgorithm::TimedMuonRoI > getRegionsOfInterest(const EventContext &ctx) const
std::set< std::string > checkTriggerInfo() const
double getNswRindexFromEta(const double &eta) const
void fillTgcPrdHistograms(Monitored::Scalar< int > &mon_bcid, Monitored::Scalar< int > &mon_pileup, Monitored::Scalar< int > &mon_lb, std::map< std::string, std::vector< ExtPos > > &extpositions, const EventContext &ctx) const
BooleanProperty m_useDirectPrimaryTrackForExtrapolation
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
ToolHandle< CP::IMuonSelectionTool > m_muonSelectionTool
ToolHandle< ITgcRawDataMonitorTool > m_tgcMonTool
ToolHandle< Trk::IExtrapolator > m_extrapolator
void fillHistogramsAfterTriggerDecision(std::vector< TgcRawDataMonitorAlgorithm::TimedMuonRoI > &roiVec) const
void fillThresholdPatternHistograms(std::map< std::string, std::vector< const xAOD::MuonRoI * > > &menuAndRoIs, const std::vector< TimedMuon > &mymuons, const EventContext &ctx) const
float eta() const
The pseudorapidity ( ) of the muon candidate.
bool getInnerCoincidence() const
Returns whether or not there was an inner coincidence in the TGC.
bool getBW3Coincidence() const
Returns whether or not there was a 3-station coincidence in the TGC.
RoISource getSource() const
Returns the system that detected the muon candidate.
int getThrNumber() const
Get the logic number of the highest threshold this RoI passed.
bool isMoreCandInRoI() const
Returns if there were other muons detected in the same RoI.
float phi() const
The azimuthal angle ( ) of the muon candidate.
@ Barrel
The muon candidate was detected in the barrel region.
Charge getCharge() const
Returns the charge sign of the muon candidate.
@ Neg
Candidate is a mu- from a TGC sector.
@ Pos
Candidate is a mu+ from a TGC sector.
bool getGoodMF() const
Returns whether or not there was a good magnetic field quality in the TGC.
float z() const
Returns the z position.
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx) const
Calculate the average mu, i.e.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 3, 1 > Vector3D
double deltaR(const Amg::Vector3D &v1, const Amg::Vector3D &v2)
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
constexpr int toInt(const EnumType enumVal)
static const unsigned int Express_passed
static const unsigned int Physics
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Vertex_v1 Vertex
Define the latest version of the vertex class.
Muon_v1 Muon
Reference the current persistent version:
setEventNumber setTimeStamp bcid
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
void fill(H5::Group &out_file, size_t iterations)