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.
758 {
760
761 if( !m_GoodRunsListSelectorTool.empty() ){
762 int runNumber = GetEventInfo(ctx)->runNumber();
763 int lumiBlockNr = GetEventInfo(ctx)->lumiBlock();
764 if(m_GoodRunsListSelectorTool->getGRLCollection()->IsEmpty()){
766 return StatusCode::FAILURE;
767 }
768 bool pass = m_GoodRunsListSelectorTool->getGRLCollection()->HasRunLumiBlock(runNumber,lumiBlockNr);
769 if(pass){
770 ATH_MSG_DEBUG(
"passing GRL: run=" << runNumber <<
" lb=" << lumiBlockNr);
771 }else{
772 ATH_MSG_DEBUG(
"failed GRL: run=" << runNumber <<
" lb=" << lumiBlockNr);
773 return StatusCode::SUCCESS;
774 }
775 }
776
778 if(m_doExpressProcessing){
781 if(!expressPass){
783 return StatusCode::SUCCESS;
784 }
785 }
787 if(pass){
788 ATH_MSG_DEBUG(
"passing StreamerFilter: " << m_streamerFilter );
789 }else{
790 ATH_MSG_DEBUG(
"failed StreamerFilter: " << m_streamerFilter );
791 return StatusCode::SUCCESS;
792 }
793 }
796
798
800
801 double primaryVertexZ = (primVertex!=
nullptr)?(primVertex->
z()):(-999);
802
803 auto mon_bcid = Monitored::Scalar<int>(
"mon_bcid",
GetEventInfo(ctx)->
bcid());
806 auto mon_primvtx_z=Monitored::Scalar<double>("mon_primvtx_z",primaryVertexZ);
807
808 fill(m_packageName+
"_Common", mon_bcid, mon_pileup, mon_lb, mon_primvtx_z);
814
815
817 std::map<const xAOD::MuonRoI*,std::set<std::string>> roiAndMenu;
818 std::map<std::string,std::vector<const xAOD::MuonRoI*>> menuAndRoIs;
821
823 std::vector < const xAOD::Muon* > oflmuons;
824 std::set < const xAOD::Muon* > biasedMuons;
825 std::vector < TimedMuon > mymuons;
826 std::map < std::string, std::vector< ExtPos > > extpositions;
827 std::vector< ExtPos > extpositions_pivot;
828 std::vector<double> deltaR_muons;
829 std::vector<double> deltaR_muons_roi;
830 std::vector<double> deltaR_muons_hlt;
831 std::vector<double> muon2pv_dz;
832 std::vector<double> muon2pv_dca;
833 std::vector<double> mymuon2pv_dz;
834 std::vector<double> mymuon2pv_dca;
835 if (m_anaOfflMuon) {
836 SG::ReadHandle < xAOD::MuonContainer > muons(m_MuonContainerKey, ctx);
837 if (!muons.isValid()) {
839 return StatusCode::SUCCESS;
840 }
842 for (const auto muon : *muons) {
843
844 if (muon == nullptr) continue;
845
846 if (
muon->pt() < 1000.)
continue;
847
848 if (
muon->author() > xAOD::Muon::Author::MuidSA )
continue;
849 if (
muon->muonType() > xAOD::Muon::MuonType::MuonStandAlone )
continue;
850
851 oflmuons.push_back(muon);
852
853 double dz=-999,dca=-999;
854 if(
dataType() != DataType_t::cosmics ){
856 if(m_useOnlyCombinedMuons &&
muon->muonType()!=xAOD::Muon::MuonType::Combined)
continue;
857 if(m_useOnlyMuidCoStacoMuons && (
muon->author()!=xAOD::Muon::Author::MuidCo &&
muon->author()!=xAOD::Muon::Author::STACO))
continue;
859 if(primVertex==nullptr)continue;
860 auto trackParticle =
muon->primaryTrackParticle();
861 if(trackParticle!=nullptr){
862 dz = trackParticle->z0() - primVertex->
z();
863 dca = trackParticle->d0();
864 }
865 muon2pv_dz.push_back(dz);
866 muon2pv_dca.push_back(dca);
867 if( std::abs(dz-m_muonToPVdzOffset) > m_muonToPVdz )continue;
868 if( std::abs(dca) > m_muonToPVdca )continue;
869 }
870 }
871
872 bool isolated = true;
873
874 bool probeOK = true;
875 if( m_TagAndProbe ) probeOK = false;
876 if(
dataType() == DataType_t::cosmics ) probeOK =
true;
877
878 for(const auto muon2 : *muons){
879
880 if (muon2 == nullptr) continue;
881
882
883 if( muon == muon2 )continue;
884
885
886 if( muon2->pt() < 1000. ) continue;
887
888
889 if ( muon2->author() > xAOD::Muon::Author::MuidSA )continue;
890 if ( muon2->muonType() > xAOD::Muon::MuonType::MuonStandAlone )continue;
891
892
893 if( m_tagMuonInDifferentSystem &&
894 ( (std::abs(
muon->eta()) < barrel_end && std::abs(muon2->eta()) < barrel_end) ||
895 (std::abs(
muon->eta()) > barrel_end && std::abs(muon2->eta()) > barrel_end) ) )
continue;
896
897
899 deltaR_muons.push_back(dr_muons);
900 if( dr_muons < m_isolationWindow ) isolated = false;
901
902
903
904
905
906
907 if(probeOK)continue;
908
909
910 for (const auto &trigName : list_of_single_muon_triggers) {
911 if(m_doExpressProcessing){
914 if(!expressPass)continue;
915 }
916
918 ATH_MSG_DEBUG(
"This muon trigger, " << trigName <<
", is fired in this event!!");
919
923 for(const auto& comb : fc.getCombinations()){
924 if(!comb.active())continue;
926 for(const auto& mucont : MuFeatureContainers){
927 if(mucont.empty())continue;
928 if(mucont.te()==nullptr)continue;
929 if(!mucont.te()->getActiveState())continue;
930 for(const auto hltmu : *mucont.cptr()){
931 if (hltmu == nullptr) continue;
932 if (hltmu->pt() < 1000.)continue;
934 deltaR_muons_hlt.push_back(dr);
935 if( dr < m_trigMatchWindow ){
936 probeOK = true;
938 biasedMuons.insert(muon2);
939 }
940 }
941 }
942 }
943 }else{
946 for (const auto& aaa : features) {
947 if (!aaa.isValid()) continue;
948 auto hltmu_link = aaa.link;
949 if (!hltmu_link.isValid()) continue;
950 auto hltmu = *hltmu_link;
951 if (hltmu == nullptr) continue;
952 if (hltmu->pt() < 1000.)continue;
954 deltaR_muons_hlt.push_back(dr);
955 if( dr < m_trigMatchWindow ){
956 probeOK = true;
958 biasedMuons.insert(muon2);
959 }
960 }
961 }
962 }
963
964 if(!probeOK) continue;
966
967 if( m_TagAndProbeZmumu &&
muon->charge() != muon2->charge() ){
968 double m2 = 2. *
muon->pt() * muon2->pt() * ( std::cosh(
muon->eta() - muon2->eta()) - std::cos(
muon->phi() - muon2->phi()) );
969 double m = (
m2>0.) ? ( std::sqrt(m2) ) : (0.);
970 double mdiff = std::abs( m - m_zMass );
973 }
974 ATH_MSG_DEBUG(
"Final condition of probleOK for this muon is: " << probeOK);
975 if(probeOK) break;
976 }
977
978 if(m_requireIsolated && !isolated)continue;
979
980 if(!probeOK)continue;
981
983
985
986 if ( std::abs(
muon->eta()) > 0.5
987 &&
muon->pt() > m_pTCutOnExtrapolation ) {
988 for (
const auto &
z : m_extZposition) {
989 if(
muon->eta()<0 &&
z>0 )
continue;
990 if(
muon->eta()>0 &&
z<0 )
continue;
991 xAOD::Muon::TrackParticleType trkPtclType;
992 if(m_useIDTrackForExtrapolation){ trkPtclType = xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle;
993 }else if(m_useMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::MuonSpectrometerTrackParticle;
994 }else if(m_useCBTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::CombinedTrackParticle;
995 }else if(m_useExtMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle;
996 }else if(m_useMSOnlyExtMSTrackForExtrapolation){trkPtclType = xAOD::Muon::TrackParticleType::MSOnlyExtrapolatedMuonSpectrometerTrackParticle;
997 }else{ trkPtclType = xAOD::Muon::TrackParticleType::Primary; }
999 if(trackParticle==nullptr)continue;
1000 auto matrix = std::make_unique<Amg::Transform3D>();
1002 matrix->translation().z() =
z;
1003 auto disc = std::make_unique < Trk::DiscSurface > (*matrix,
1004 m_endcapPivotPlaneMinimumRadius,
1005 m_endcapPivotPlaneMaximumRadius);
1006 const Trk::BoundaryCheck boundaryCheck = true;
1008 trackParticle->perigeeParameters(),
1009 *disc,
1011 boundaryCheck,
1013 if(extTrkParams != nullptr){
1014 if( std::abs(extTrkParams->position().z() -
z) > 10. )
continue;
1017 ext.extPos = extTrkParams->position();
1018 ext.extVec = extTrkParams->momentum();
1019 Amg::Vector3D extVec(extTrkParams->position().x(),extTrkParams->position().y(),
z);
1022 if( std::abs( std::abs(
z) - m_M3_Z ) < 10. &&
1023 std::abs(
muon->eta() ) > 1.05 &&
1024 std::abs(
muon->eta() ) < 2.40){
1025 extpositions_pivot.push_back(ext);
1026 }
1027 for(
const auto& cham :
ext.passedChambers){
1028 extpositions[cham].push_back(ext);
1029 }
1030 }
1031 }
1032 }
1033
1034 mymuon.matchedL1Charge=false;
1035 mymuon.passBW3Coin=false;
1036 mymuon.passInnerCoin=false;
1037 mymuon.passGoodMF=false;
1038 mymuon.passIsMoreCandInRoI=false;
1040 if (AllBCMuonRoIs.size()==0) {
1041 ATH_MSG_DEBUG(
"No RoI matching possible as no container has been retrieved");
1042 mymuons.push_back(mymuon);
1043 continue;
1044 }
1045 for(const auto& allBcMuonRoI : AllBCMuonRoIs){
1048 deltaR_muons_roi.push_back(dr);
1049 if( dr < max_dr ){
1050 if(roiAndMenu.count(roi)>0)mymuon.matchedL1Items.insert( roiAndMenu[roi].
begin(), roiAndMenu[roi].
end() );
1051 mymuon.matchedL1ThrExclusive.insert( roi->
getThrNumber() );
1059 }
1060 }
1061 for (int ithr = 1; ithr <= 15 ; ++ithr) {
1062 for (const auto &thr : mymuon.matchedL1ThrExclusive) {
1063 if (thr >= ithr) {
1064 mymuon.matchedL1ThrInclusive.insert(ithr);
1065 break;
1066 }
1067 }
1068 for (const auto &thr : mymuon.matchedL1ThrExclusiveTGC) {
1069 if (thr >= ithr) {
1070 mymuon.matchedL1ThrInclusiveTGC.insert(ithr);
1071 break;
1072 }
1073 }
1074 }
1075
1076 mymuons.push_back(mymuon);
1077 mymuon2pv_dz.push_back(dz);
1078 mymuon2pv_dca.push_back(dca);
1079 }
1080
1081
1082 auto oflmuon_num=Monitored::Scalar<int>("oflmuon_num",(*muons).size());
1091
1092 auto oflmuon_probe_num=Monitored::Scalar<int>("oflmuon_probe_num",mymuons.size());
1101
1105
1106
1107 fill(m_packageName+
"_Muon",
1108 oflmuon_num,oflmuon_muonType,oflmuon_author,oflmuon_quality,oflmuon_pt,oflmuon_eta,oflmuon_phi,oflmuon_pvdz,oflmuon_pvdca,
1109 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,
1110 oflmuon_deltaR, oflmuon_deltaR_roi, oflmuon_deltaR_hlt
1111 );
1112
1113
1114
1116 oflmuon_variables.push_back(oflmuon_num);
1117 oflmuon_variables.push_back(oflmuon_muonType);
1118 oflmuon_variables.push_back(oflmuon_author);
1119 oflmuon_variables.push_back(oflmuon_quality);
1120 oflmuon_variables.push_back(oflmuon_pt);
1121 oflmuon_variables.push_back(oflmuon_eta);
1122 oflmuon_variables.push_back(oflmuon_phi);
1123
1124
1126 return m.muon->charge();
1127 });
1128 oflmuon_variables.push_back(muon_charge);
1130return (
m.muon->charge()>0);
1131 });
1132 oflmuon_variables.push_back(muon_chargePos);
1134 return (
m.muon->charge()<0);
1135 });
1136 oflmuon_variables.push_back(muon_chargeNeg);
1138 return (
m.muon->pt()>pt_4_cut)?
m.muon->eta():-10;
1139 });
1140 oflmuon_variables.push_back(muon_eta4gev);
1142 return (
m.muon->pt()>pt_4_cut)?
m.muon->phi():-10;
1143 });
1144 oflmuon_variables.push_back(muon_phi4gev);
1146 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;
1147 });
1148 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3);
1150 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;
1151 });
1152 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3A);
1154 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;
1155 });
1156 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3C);
1158 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;
1159 });
1160 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4);
1162 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;
1163 });
1164 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4A);
1166 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;
1167 });
1168 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4C);
1170 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut) ?
m.muon->phi() : -10;
1171 });
1172 oflmuon_variables.push_back(muon_phi4gev_rpc);
1174 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1175 });
1176 oflmuon_variables.push_back(muon_phi4gev_rpcA);
1178 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1179 });
1180 oflmuon_variables.push_back(muon_phi4gev_rpcC);
1182 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;
1183 });
1184 oflmuon_variables.push_back(muon_phi4gev_tgc);
1186 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;
1187 });
1188 oflmuon_variables.push_back(muon_phi4gev_tgcA);
1190 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;
1191 });
1192 oflmuon_variables.push_back(muon_phi4gev_tgcC);
1194 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->phi() : -10;
1195 });
1196 oflmuon_variables.push_back(muon_phi0gev_tgc);
1198 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1199 });
1200 oflmuon_variables.push_back(muon_phi0gev_tgcA);
1202 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1203 });
1204 oflmuon_variables.push_back(muon_phi0gev_tgcC);
1206 return (
m.muon->pt() > pt_30_cut) ?
m.muon->eta() : -10;
1207 });
1208 oflmuon_variables.push_back(muon_eta);
1210 return (
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1211 });
1212 oflmuon_variables.push_back(muon_phi);
1214 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1215 });
1216 oflmuon_variables.push_back(muon_phi_rpc);
1218 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()>0) ?
m.muon->phi() : -10;
1219 });
1220 oflmuon_variables.push_back(muon_phi_rpcA);
1222 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()<0) ?
m.muon->phi() : -10;
1223 });
1224 oflmuon_variables.push_back(muon_phi_rpcC);
1226 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;
1227 });
1228 oflmuon_variables.push_back(muon_phi_tgc);
1230 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;
1231 });
1232 oflmuon_variables.push_back(muon_phi_tgcA);
1234 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;
1235 });
1236 oflmuon_variables.push_back(muon_phi_tgcC);
1238 return (std::abs(
m.muon->eta()) < barrel_end) ?
m.muon->pt() / Gaudi::Units::GeV : -10;
1239 });
1240 oflmuon_variables.push_back(muon_pt_rpc);
1242 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->pt() / Gaudi::Units::GeV : -10;
1243 });
1244 oflmuon_variables.push_back(muon_pt_tgc);
1246 return (std::abs(
m.muon->eta()) < barrel_end);
1247 });
1248 oflmuon_variables.push_back(muon_barrel);
1250 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < endcap_end);
1251 });
1252 oflmuon_variables.push_back(muon_endcap);
1254 return (std::abs(
m.muon->eta()) > endcap_end && std::abs(
m.muon->eta()) < trigger_end);
1255 });
1256 oflmuon_variables.push_back(muon_forward);
1258 return m.matchedL1ThrInclusiveTGC.find(1) !=
m.matchedL1ThrInclusiveTGC.end();
1259 });
1260 oflmuon_variables.push_back(muon_l1passThr1TGC);
1262 return m.matchedL1ThrInclusive.find(1) !=
m.matchedL1ThrInclusive.end();
1263 });
1264 oflmuon_variables.push_back(muon_l1passThr1);
1266 return m.matchedL1ThrInclusive.find(2) !=
m.matchedL1ThrInclusive.end();
1267 });
1268 oflmuon_variables.push_back(muon_l1passThr2);
1270 return m.matchedL1ThrInclusive.find(3) !=
m.matchedL1ThrInclusive.end();
1271 });
1272 oflmuon_variables.push_back(muon_l1passThr3);
1274 return m.matchedL1ThrInclusive.find(4) !=
m.matchedL1ThrInclusive.end();
1275 });
1276 oflmuon_variables.push_back(muon_l1passThr4);
1278 return m.matchedL1ThrInclusive.find(5) !=
m.matchedL1ThrInclusive.end();
1279 });
1280 oflmuon_variables.push_back(muon_l1passThr5);
1282 return m.matchedL1ThrInclusive.find(6) !=
m.matchedL1ThrInclusive.end();
1283 });
1284 oflmuon_variables.push_back(muon_l1passThr6);
1286 return m.matchedL1ThrInclusive.find(7) !=
m.matchedL1ThrInclusive.end();
1287 });
1288 oflmuon_variables.push_back(muon_l1passThr7);
1290 return m.matchedL1ThrInclusive.find(8) !=
m.matchedL1ThrInclusive.end();
1291 });
1292 oflmuon_variables.push_back(muon_l1passThr8);
1294 return m.matchedL1ThrInclusive.find(9) !=
m.matchedL1ThrInclusive.end();
1295 });
1296 oflmuon_variables.push_back(muon_l1passThr9);
1298 return m.matchedL1ThrInclusive.find(10) !=
m.matchedL1ThrInclusive.end();
1299 });
1300 oflmuon_variables.push_back(muon_l1passThr10);
1302 return m.matchedL1ThrInclusive.find(11) !=
m.matchedL1ThrInclusive.end();
1303 });
1304 oflmuon_variables.push_back(muon_l1passThr11);
1306 return m.matchedL1ThrInclusive.find(12) !=
m.matchedL1ThrInclusive.end();
1307 });
1308 oflmuon_variables.push_back(muon_l1passThr12);
1310 return m.matchedL1ThrInclusive.find(13) !=
m.matchedL1ThrInclusive.end();
1311 });
1312 oflmuon_variables.push_back(muon_l1passThr13);
1314 return m.matchedL1ThrInclusive.find(14) !=
m.matchedL1ThrInclusive.end();
1315 });
1316 oflmuon_variables.push_back(muon_l1passThr14);
1318 return m.matchedL1ThrInclusive.find(15) !=
m.matchedL1ThrInclusive.end();
1319 });
1320 oflmuon_variables.push_back(muon_l1passThr15);
1322 return m.matchedL1Charge;
1323 });
1324 oflmuon_variables.push_back(muon_l1passCharge);
1326 return m.passBW3Coin;
1327 });
1328 oflmuon_variables.push_back(muon_l1passBW3Coin);
1330 return !
m.passBW3Coin;
1331 });
1332 oflmuon_variables.push_back(muon_l1passBW3CoinVeto);
1334 return m.passInnerCoin;
1335 });
1336 oflmuon_variables.push_back(muon_l1passInnerCoin);
1338 return !
m.passInnerCoin;
1339 });
1340 oflmuon_variables.push_back(muon_l1passInnerCoinVeto);
1342 return m.passGoodMF;
1343 });
1344 oflmuon_variables.push_back(muon_l1passGoodMF);
1346 return !
m.passGoodMF;
1347 });
1348 oflmuon_variables.push_back(muon_l1passBadMF);
1350 return m.passIsMoreCandInRoI;
1351 });
1352 oflmuon_variables.push_back(muon_l1passIsMoreCandInRoI);
1353 fill(m_packageName, oflmuon_variables);
1354
1355 ATH_MSG_DEBUG(
"End filling offline muon-related histograms");
1356 }
1359
1363
1364
1366 if(m_anaTgcCoin){
1367 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinPrev(m_TgcCoinDataContainerPrevBCKey, ctx);
1368 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinCurr(m_TgcCoinDataContainerCurrBCKey, ctx);
1369 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinNext(m_TgcCoinDataContainerNextBCKey, ctx);
1370 if (!tgcCoinCurr.isValid() || !tgcCoinNext.isValid() || !tgcCoinPrev.isValid()) {
1372 }else{
1374 std::map<int, SG::ReadHandle<Muon::TgcCoinDataContainer> > tgcCoin;
1375 tgcCoin[-1] = tgcCoinPrev;
1376 tgcCoin[0] = tgcCoinCurr;
1377 tgcCoin[+1] = tgcCoinNext;
1379 SG::ReadHandle < Muon::TgcCoinDataContainer > tgcCoinNextNext(m_TgcCoinDataContainerNextNextBCKey, ctx);
1380 if(tgcCoinNextNext.isValid())tgcCoin[+2] = tgcCoinNextNext;
1381 }
1382 std::vector< TgcTrig > tgcTrigMap_SL;
1383 std::vector< TgcTrig > tgcTrigMap_SL_Endcap;
1384 std::vector< TgcTrig > tgcTrigMap_SL_Forward;
1385 std::vector< TgcTrig > tgcTrigMap_HPT_Wire;
1386 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Wire;
1387 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Wire;
1388 std::vector< TgcTrig > tgcTrigMap_HPT_Strip;
1389 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Strip;
1390 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Strip;
1391 std::vector< TgcTrig > tgcTrigMap_LPT_Wire;
1392 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Wire;
1393 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Wire;
1394 std::vector< TgcTrig > tgcTrigMap_LPT_Strip;
1395 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Strip;
1396 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Strip;
1397 std::vector< TgcTrig > tgcTrigMap_EIFI_Wire;
1398 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Wire;
1399 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Wire;
1400 std::vector< TgcTrig > tgcTrigMap_EIFI_Strip;
1401 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Strip;
1402 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Strip;
1403 std::vector< TgcTrigTile > tgcTrigTileMap;
1404 std::vector< TgcTrigNsw > tgcTrigNswMap;
1405 std::vector< TgcTrigRpc > tgcTrigRpcMap;
1406 std::vector< TgcTrigEifi > tgcTrigEifiMap;
1407 std::map<TString, TgcTrigNsw > tgcTrigNswMapUnique;
1408 std::vector<int> multiplicity_endcap(number_of_trigger_sectors_endcap*2+1);
1409 std::vector<int> multiplicity_forward(number_of_trigger_sectors_forward*2+1);
1410 std::vector<int> sectors_endcap(number_of_trigger_sectors_endcap*2+1);
1411 std::vector<int> sectors_forward(number_of_trigger_sectors_forward*2+1);
1412 std::iota(sectors_endcap.begin(),sectors_endcap.end(),-number_of_trigger_sectors_endcap);
1413 std::iota(sectors_forward.begin(),sectors_forward.end(),-number_of_trigger_sectors_forward);
1414 int n_TgcCoin_detElementIsNull = 0;
1415 int n_TgcCoin_postOutPtrIsNull = 0;
1416 for (auto thisCoin : tgcCoin) {
1417 int bunch = thisCoin.first;
1418 for (const auto tgccnt : *(thisCoin.second)) {
1419 for (
const auto data : *tgccnt) {
1420 if (
data->detectorElementOut() ==
nullptr ) n_TgcCoin_detElementIsNull++;
1421 if (
data->posOutPtr() ==
nullptr ) n_TgcCoin_postOutPtrIsNull++;
1422
1423 int slsector = (
data->isForward()) ? (
data->phi() % number_of_trigger_sectors_forward + 1) : ( (
data->phi() + 1) % number_of_trigger_sectors_endcap + 1);
1424 if(!
data->isAside()) slsector *= -1;
1425
1427 if (
data->isInner() &&
data->isStrip()) {
1431 rpcCoin.bunch = bunch;
1432 rpcCoin.currBc = (bunch==0);
1437 tgcTrigRpcMap.push_back(rpcCoin);
1438 }
else if (
data->isInner() && !
data->isStrip()) {
1442 int boardID = (std::abs(nswCoin.slSector)-1) / 2 + 1;
1443 nswCoin.slInputIndex = (boardID-1) * 6 + nswCoin.slInput;
1444 nswCoin.isAside =
data->isAside();
1445 nswCoin.isForward =
data->isForward();
1447 nswCoin.bunch = bunch;
1448 nswCoin.currBc = (bunch==0);
1452 if(nswCoin.R!=0 && nswCoin.Phi!=0){
1453 tgcTrigNswMap.push_back(nswCoin);
1454 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);
1455 if(tgcTrigNswMapUnique.find(uniqueinfo)==tgcTrigNswMapUnique.end()){
1456 nswCoin.bcmask = 0x1 << (1-bunch);
1457 tgcTrigNswMapUnique[uniqueinfo] = nswCoin;
1458 }else{
1459 tgcTrigNswMapUnique[uniqueinfo].bcmask |= 0x1 << (1-bunch);
1460 }
1461 }
1462 }
else if (!
data->isInner() &&
data->isStrip()) {
1466 tileCoin.bunch = bunch;
1467 tileCoin.currBc = (bunch==0);
1469 if(tileCoin.tmdbDecisions!=0)
1470 tgcTrigTileMap.push_back(tileCoin);
1471 }
else if (!
data->isInner() && !
data->isStrip()) {
1474 eifiCoin.bunch = bunch;
1475 eifiCoin.currBc = (bunch==0);
1476 tgcTrigEifiMap.push_back(eifiCoin);
1477 }
1478 }
1479
1480 if (
data->detectorElementOut() ==
nullptr ||
1481 data->posOutPtr() ==
nullptr )
continue;
1485 tgcTrig.x_In = posIn[0];
1486 tgcTrig.y_In = posIn[1];
1487 tgcTrig.z_In = posIn[2];
1489 tgcTrig.x_Out = posOut[0];
1490 tgcTrig.y_Out = posOut[1];
1491 tgcTrig.z_Out = posOut[2];
1492 tgcTrig.eta = posOut.eta();
1493 tgcTrig.phi = posOut.phi();
1494 tgcTrig.width_In =
data->widthIn();
1495 tgcTrig.width_Out =
data->widthOut();
1498 tgcTrig.width_R =
matrix(0, 0);
1499 tgcTrig.width_Phi =
matrix(1, 1);
1500
1501 tgcTrig.muonMatched = 0;
1502 for(const auto& ext : extpositions_pivot){
1504 if(
data->isAside() &&
ext.extPos.z()<0)
continue;
1505 if(!
data->isAside()&&
ext.extPos.z()>0)
continue;
1506 if(
Amg::deltaR(posOut,
ext.extPos) > m_l1trigMatchWindowPt15 )
continue;
1507 tgcTrig.muonMatched = 1;
1508 break;
1509 }
1510
1511 tgcTrig.loosemuonMatched = 0;
1512 for (const auto& muon : oflmuons) {
1515 if( dr > max_dr )continue;
1516 tgcTrig.loosemuonMatched = 1;
1517 break;
1518 }
1519
1520 tgcTrig.isBiased = 0;
1521 for(const auto& muon : biasedMuons){
1524 if( dr > max_dr )continue;
1525 tgcTrig.isBiased = 1;
1526 break;
1527 }
1528
1529
1530
1531 if(biasedMuons.size()>=2) tgcTrig.isBiased = 0;
1532
1533 } else {
1534 tgcTrig.width_R = 0.;
1535 tgcTrig.width_Phi = 0.;
1536 }
1537 int etaout = 0;
1538 int etain = 0;
1539 const Identifier tcdidout =
data->channelIdOut();
1541 etaout = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidout)));
1542 }
1543 const Identifier tcdidin =
data->channelIdIn();
1545 etain = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidin)));
1546 }
1547 tgcTrig.etaout = etaout;
1548 tgcTrig.etain = etain;
1549 tgcTrig.isAside =
data->isAside();
1550 tgcTrig.isForward =
data->isForward();
1551 tgcTrig.isStrip =
data->isStrip();
1552 tgcTrig.isInner =
data->isInner();
1553 tgcTrig.isPositiveDeltaR =
data->isPositiveDeltaR();
1554 tgcTrig.type =
data->type();
1555 tgcTrig.trackletId =
data->trackletId();
1556 tgcTrig.trackletIdStrip =
data->trackletIdStrip();
1557 tgcTrig.sector = slsector;
1558 tgcTrig.roi =
data->roi();
1559 tgcTrig.pt =
data->pt();
1560 tgcTrig.delta =
data->delta();
1561 tgcTrig.sub =
data->sub();
1562 tgcTrig.veto =
data->veto();
1563 tgcTrig.bunch = bunch;
1565 tgcTrig.inner =
data->inner();
1566 if( !
data->isInner() ){
1568 tgcTrigMap_SL_Endcap.push_back(tgcTrig);
1569 tgcTrigMap_SL.push_back(tgcTrig);
1570 multiplicity_endcap[ slsector + number_of_trigger_sectors_endcap ]++;
1572 tgcTrigMap_SL_Forward.push_back(tgcTrig);
1573 tgcTrigMap_SL.push_back(tgcTrig);
1574 multiplicity_forward[ slsector + number_of_trigger_sectors_forward ]++;
1576 if(tgcTrig.isStrip){
1577 tgcTrigMap_HPT_Endcap_Strip.push_back(tgcTrig);
1578 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1579 }else{
1580 tgcTrigMap_HPT_Endcap_Wire.push_back(tgcTrig);
1581 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1582 }
1584 if(tgcTrig.isStrip){
1585 tgcTrigMap_HPT_Forward_Strip.push_back(tgcTrig);
1586 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1587 }else{
1588 tgcTrigMap_HPT_Forward_Wire.push_back(tgcTrig);
1589 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1590 }
1592 if(tgcTrig.isStrip){
1593 tgcTrigMap_LPT_Endcap_Strip.push_back(tgcTrig);
1594 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1595 }else{
1596 tgcTrigMap_LPT_Endcap_Wire.push_back(tgcTrig);
1597 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1598 }
1600 if(tgcTrig.isStrip){
1601 tgcTrigMap_LPT_Forward_Strip.push_back(tgcTrig);
1602 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1603 }else{
1604 tgcTrigMap_LPT_Forward_Wire.push_back(tgcTrig);
1605 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1606 }
1608 if(tgcTrig.isStrip){
1609 tgcTrigMap_EIFI_Endcap_Strip.push_back(tgcTrig);
1610 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1611 }else{
1612 tgcTrigMap_EIFI_Endcap_Wire.push_back(tgcTrig);
1613 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1614 }
1616 if(tgcTrig.isStrip){
1617 tgcTrigMap_EIFI_Forward_Strip.push_back(tgcTrig);
1618 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1619 }else{
1620 tgcTrigMap_EIFI_Forward_Wire.push_back(tgcTrig);
1621 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1622 }
1623 }
1624 }else{
1625
1626 }
1627 }
1628 }
1629 }
1630
1631
1632 for(auto& sl : tgcTrigMap_SL){
1633 if( sl.bunch != 0 )continue;
1634 for(auto& inner : tgcTrigRpcMap){
1635 if( sl.isForward == 1 )break;
1636 if( sl.sector != inner.slSector )continue;
1637 inner.roiEta = sl.eta;
1638 inner.roiPhi = sl.phi;
1639 inner.roiNum = sl.roi;
1640 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1641 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1642 inner.goodBcid0 = inner.deltaBcid==0;
1643 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1644 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1645 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1646 sl.rpc.push_back(&inner);
1647 }
1648 for(auto& inner : tgcTrigNswMap){
1649 if( sl.sector != inner.slSector )continue;
1650 if( sl.isForward != inner.isForward )continue;
1652 inner.roiEta = sl.eta;
1653 inner.roiPhi = sl.phi;
1654 inner.roiNum = sl.roi;
1655 if( std::abs(inner.deltaR) < m_NswDeltaRCut ){
1656 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1657 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1658 inner.goodBcid0 = inner.deltaBcid==0;
1659 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1660 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1661 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1662 sl.nsw.push_back(&inner);
1663 }
1664 }
1665 for(auto& inner : tgcTrigNswMapUnique){
1666 if( sl.sector != inner.second.slSector )continue;
1667 if( sl.isForward != inner.second.isForward )continue;
1669 inner.second.roiEta = sl.eta;
1670 inner.second.roiPhi = sl.phi;
1671 inner.second.roiNum = sl.roi;
1672 if( std::abs(inner.second.deltaR) < m_NswDeltaRCut ){
1673 inner.second.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.second.bcid - sl.bcid) : -999;
1674 inner.second.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.second.bunch - sl.bunch) : -999;
1675 inner.second.goodBcid0 = inner.second.deltaBcid==0;
1676 inner.second.goodBcid1 = (std::abs(inner.second.deltaBcid)<=1 || (16-std::abs(inner.second.deltaBcid))<=1);
1677 inner.second.goodBcid2 = (std::abs(inner.second.deltaBcid)<=2 || (16-std::abs(inner.second.deltaBcid))<=2);
1678 inner.second.goodTiming = (inner.second.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1679 sl.nsw_unique.push_back(&inner.second);
1680 }
1681 }
1682 for(auto& inner : tgcTrigTileMap){
1683 if( sl.isForward == 1 )break;
1684 if( sl.sector != inner.slSector )continue;
1685 inner.roiEta = sl.eta;
1686 inner.roiPhi = sl.phi;
1687 inner.roiNum = sl.roi;
1688 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1689 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1690 inner.goodBcid0 = inner.deltaBcid==0;
1691 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1692 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1693 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1694 sl.tile.push_back(&inner);
1695 }
1696 for(auto& inner : tgcTrigEifiMap){
1697 if( sl.isForward == 1 )break;
1698 if( sl.sector != inner.slSector )continue;
1699 inner.roiEta = sl.eta;
1700 inner.roiPhi = sl.phi;
1701 inner.roiNum = sl.roi;
1702 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1703 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1704 sl.eifi.push_back(&inner);
1705 }
1706 }
1707
1708 std::vector< TgcTrigTile > tgcTrigTileMap_allmods;
1709 for(auto& inner : tgcTrigTileMap){
1710 if(inner.roiNum<0)continue;
1711 for(
int i = 0 ;
i < 12 ;
i++){
1713 if((inner.tmdbDecisions>>i) & 0x1){
1714 inner2.tmdbDecisions = (
i+3)%3 + 1;
1715 tgcTrigTileMap_allmods.push_back(inner2);
1716 }
1717 }
1718 }
1719
1720
1721
1723 tgcCoin_variables.push_back(mon_bcid);
1724 tgcCoin_variables.push_back(mon_pileup);
1725 tgcCoin_variables.push_back(mon_lb);
1726
1727 auto mon_nTgcCoin_detElementIsNull = Monitored::Scalar<int>("nTgcCoinDetElementIsNull", n_TgcCoin_detElementIsNull);
1728 auto mon_nTgcCoin_postOutPtrIsNull = Monitored::Scalar<int>("nTgcCoinPostOutPtrIsNull", n_TgcCoin_postOutPtrIsNull);
1731 auto mon_multiplicity_endcap =
Monitored::Collection(
"trigger_multiplicity_endcap", multiplicity_endcap);
1732 auto mon_multiplicity_forward =
Monitored::Collection(
"trigger_multiplicity_forward", multiplicity_forward);
1733 tgcCoin_variables.emplace_back(mon_nTgcCoin_detElementIsNull);
1734 tgcCoin_variables.emplace_back(mon_nTgcCoin_postOutPtrIsNull);
1735 tgcCoin_variables.emplace_back(mon_sectors_endcap);
1736 tgcCoin_variables.emplace_back(mon_sectors_forward);
1737 tgcCoin_variables.emplace_back(mon_multiplicity_endcap);
1738 tgcCoin_variables.emplace_back(mon_multiplicity_forward);
1739
1740
1741 std::vector<Monitored::ObjectsCollection<std::vector<TgcTrig>, double>> vo_coin;
1742 vo_coin.reserve(38 * 21);
1743
1744 fillTgcCoin(
"SL",tgcTrigMap_SL,vo_coin,tgcCoin_variables);
1745 fillTgcCoin(
"SL_Endcap",tgcTrigMap_SL_Endcap,vo_coin,tgcCoin_variables);
1746 fillTgcCoin(
"SL_Forward",tgcTrigMap_SL_Forward,vo_coin,tgcCoin_variables);
1747 fillTgcCoin(
"HPT_Wire",tgcTrigMap_HPT_Wire,vo_coin,tgcCoin_variables);
1748 fillTgcCoin(
"HPT_Endcap_Wire",tgcTrigMap_HPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1749 fillTgcCoin(
"HPT_Forward_Wire",tgcTrigMap_HPT_Forward_Wire,vo_coin,tgcCoin_variables);
1750 fillTgcCoin(
"HPT_Strip",tgcTrigMap_HPT_Strip,vo_coin,tgcCoin_variables);
1751 fillTgcCoin(
"HPT_Endcap_Strip",tgcTrigMap_HPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1752 fillTgcCoin(
"HPT_Forward_Strip",tgcTrigMap_HPT_Forward_Strip,vo_coin,tgcCoin_variables);
1753 fillTgcCoin(
"LPT_Wire",tgcTrigMap_LPT_Wire,vo_coin,tgcCoin_variables);
1754 fillTgcCoin(
"LPT_Endcap_Wire",tgcTrigMap_LPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1755 fillTgcCoin(
"LPT_Forward_Wire",tgcTrigMap_LPT_Forward_Wire,vo_coin,tgcCoin_variables);
1756 fillTgcCoin(
"LPT_Strip",tgcTrigMap_LPT_Strip,vo_coin,tgcCoin_variables);
1757 fillTgcCoin(
"LPT_Endcap_Strip",tgcTrigMap_LPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1758 fillTgcCoin(
"LPT_Forward_Strip",tgcTrigMap_LPT_Forward_Strip,vo_coin,tgcCoin_variables);
1759 fillTgcCoin(
"EIFI_Wire",tgcTrigMap_EIFI_Wire,vo_coin,tgcCoin_variables);
1760 fillTgcCoin(
"EIFI_Endcap_Wire",tgcTrigMap_EIFI_Endcap_Wire,vo_coin,tgcCoin_variables);
1761 fillTgcCoin(
"EIFI_Forward_Wire",tgcTrigMap_EIFI_Forward_Wire,vo_coin,tgcCoin_variables);
1762 fillTgcCoin(
"EIFI_Strip",tgcTrigMap_EIFI_Strip,vo_coin,tgcCoin_variables);
1763 fillTgcCoin(
"EIFI_Endcap_Strip",tgcTrigMap_EIFI_Endcap_Strip,vo_coin,tgcCoin_variables);
1764 fillTgcCoin(
"EIFI_Forward_Strip",tgcTrigMap_EIFI_Forward_Strip,vo_coin,tgcCoin_variables);
1765
1766 std::vector<Monitored::ObjectsCollection<std::vector<ExtTrigInfo>, double>> vo_exttriginfo;
1767 vo_exttriginfo.reserve(13 * 5);
1768 std::vector<ExtTrigInfo> extTrigInfo_SL;
1769 std::vector<ExtTrigInfo> extTrigInfo_HPT_Wire;
1770 std::vector<ExtTrigInfo> extTrigInfo_HPT_Strip;
1771 std::vector<ExtTrigInfo> extTrigInfo_LPT_Wire;
1772 std::vector<ExtTrigInfo> extTrigInfo_LPT_Strip;
1773 fillTgcCoinEff(
"SL",tgcTrigMap_SL,extpositions_pivot,extTrigInfo_SL,vo_exttriginfo,tgcCoin_variables);
1774 fillTgcCoinEff(
"HPT_Wire",tgcTrigMap_HPT_Wire,extpositions_pivot,extTrigInfo_HPT_Wire,vo_exttriginfo,tgcCoin_variables);
1775 fillTgcCoinEff(
"HPT_Strip",tgcTrigMap_HPT_Strip,extpositions_pivot,extTrigInfo_HPT_Strip,vo_exttriginfo,tgcCoin_variables);
1776 fillTgcCoinEff(
"LPT_Wire",tgcTrigMap_LPT_Wire,extpositions_pivot,extTrigInfo_LPT_Wire,vo_exttriginfo,tgcCoin_variables);
1777 fillTgcCoinEff(
"LPT_Strip",tgcTrigMap_LPT_Strip,extpositions_pivot,extTrigInfo_LPT_Strip,vo_exttriginfo,tgcCoin_variables);
1778
1779
1782 });
1783 tgcCoin_variables.push_back(coin_inner_tgc_roi);
1785 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.sector) : -999;
1786 });
1787 tgcCoin_variables.push_back(coin_inner_tgc_sector);
1789 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.sector) : -999;
1790 });
1791 tgcCoin_variables.push_back(coin_inner_tgc_fake_sector);
1792
1794 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.eta) : -999;
1795 });
1796 tgcCoin_variables.push_back(coin_inner_tgc_eta);
1798 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.phi) : -999;
1799 });
1800 tgcCoin_variables.push_back(coin_inner_tgc_phi);
1801
1803 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.eta) : -999;
1804 });
1805 tgcCoin_variables.push_back(coin_inner_tgc_fake_eta);
1807 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.phi) : -999;
1808 });
1809 tgcCoin_variables.push_back(coin_inner_tgc_fake_phi);
1810
1812 return m.isForward==1;
1813 });
1814 tgcCoin_variables.push_back(coin_inner_tgc_forward);
1816 return m.isForward==0;
1817 });
1818 tgcCoin_variables.push_back(coin_inner_tgc_endcap);
1820 return std::abs(
m.eta) < 1.3;
1821 });
1822 tgcCoin_variables.push_back(coin_inner_tgc_etaupto1p3);
1824 return std::abs(
m.eta) > 1.3 &&
m.isForward==0;
1825 });
1826 tgcCoin_variables.push_back(coin_inner_tgc_etafrom1p3_endcap);
1827
1829 return (((
m.pt>>CoinFlagEI)&0x1)!=0) ? 1.0 : 0.0;
1830 });
1831 tgcCoin_variables.push_back(coin_inner_tgc_coinflagEifi);
1833 return (((
m.pt>>CoinFlagTile)&0x1)!=0) ? 1.0 : 0.0;
1834 });
1835 tgcCoin_variables.push_back(coin_inner_tgc_coinflagTile);
1837 return (((
m.pt>>CoinFlagRPC)&0x1)!=0) ? 1.0 : 0.0;
1838 });
1839 tgcCoin_variables.push_back(coin_inner_tgc_coinflagRpc);
1841 return (((
m.pt>>CoinFlagNSW)&0x1)!=0) ? 1.0 : 0.0;
1842 });
1843 tgcCoin_variables.push_back(coin_inner_tgc_coinflagNsw);
1845 return (((
m.pt>>CoinFlagC)&0x1)!=0) ? 1.0 : 0.0;
1846 });
1847 tgcCoin_variables.push_back(coin_inner_tgc_coinflagC);
1848
1849
1851 return (
m.rpc.size()>0);
1852 });
1853 tgcCoin_variables.push_back(coin_inner_tgc_anyBcRpc);
1855 for(
const auto& inner :
m.rpc){
1856 if(inner->bunch == -1) return 1.;
1857 }
1858 return 0.;
1859 });
1860 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc);
1862 for(
const auto& inner :
m.rpc){
1863 if(inner->bunch == 0) return 1.;
1864 }
1865 return 0.;
1866 });
1867 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc);
1869 for(
const auto& inner :
m.rpc){
1870 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1871 }
1872 return 0.;
1873 });
1874 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid0);
1876 for(
const auto& inner :
m.rpc){
1877 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1878 }
1879 return 0.;
1880 });
1881 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid1);
1883 for(
const auto& inner :
m.rpc){
1884 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1885 }
1886 return 0.;
1887 });
1888 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid2);
1890 for(
const auto& inner :
m.rpc){
1891 if(inner->bunch == 1) return 1.;
1892 }
1893 return 0.;
1894 });
1895 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc);
1897 for(
const auto& inner :
m.rpc){
1898 if(inner->bunch == 2) return 1.;
1899 }
1900 return 0.;
1901 });
1902 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc);
1903
1905 for(
const auto& inner :
m.rpc){
1906 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1907 }
1908 return 0.;
1909 });
1910 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc_goodBcid0);
1912 for(
const auto& inner :
m.rpc){
1913 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1914 }
1915 return 0.;
1916 });
1917 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc_goodBcid0);
1918 auto coin_inner_tgc_nextnextBcRpc_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcRpc_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
1919 for(
const auto& inner :
m.rpc){
1920 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1921 }
1922 return 0.;
1923 });
1924 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc_goodBcid0);
1925
1926
1928 return (
m.nsw.size()>0);
1929 });
1930 tgcCoin_variables.push_back(coin_inner_tgc_anyBcNsw);
1932 for(
const auto& inner :
m.nsw){
1933 if(inner->bunch == -1) return 1.;
1934 }
1935 return 0.;
1936 });
1937 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw);
1939 for(
const auto& inner :
m.nsw){
1940 if(inner->bunch == 0) return 1.;
1941 }
1942 return 0.;
1943 });
1944 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw);
1946 for(
const auto& inner :
m.nsw){
1947 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1948 }
1949 return 0.;
1950 });
1951 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid0);
1953 for(
const auto& inner :
m.nsw){
1954 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1955 }
1956 return 0.;
1957 });
1958 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid1);
1960 for(
const auto& inner :
m.nsw){
1961 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1962 }
1963 return 0.;
1964 });
1965 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid2);
1967 for(
const auto& inner :
m.nsw){
1968 if(inner->bunch == 1) return 1.;
1969 }
1970 return 0.;
1971 });
1972 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw);
1974 for(
const auto& inner :
m.nsw){
1975 if(inner->bunch == 2) return 1.;
1976 }
1977 return 0.;
1978 });
1979 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw);
1980
1982 for(
const auto& inner :
m.nsw){
1983 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1984 }
1985 return 0.;
1986 });
1987 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw_goodBcid0);
1989 for(
const auto& inner :
m.nsw){
1990 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1991 }
1992 return 0.;
1993 });
1994 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw_goodBcid0);
1995 auto coin_inner_tgc_nextnextBcNsw_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcNsw_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
1996 for(
const auto& inner :
m.nsw){
1997 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1998 }
1999 return 0.;
2000 });
2001 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw_goodBcid0);
2003 for(
const auto& inner :
m.nsw_unique){
2004 if(inner->bcmask==1) return 1.;
2005 }
2006 return 0.;
2007 });
2008 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask1);
2010 for(
const auto& inner :
m.nsw_unique){
2011 if(inner->bcmask==2) return 1.;
2012 }
2013 return 0.;
2014 });
2015 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask2);
2017 for(
const auto& inner :
m.nsw_unique){
2018 if(inner->bcmask==3) return 1.;
2019 }
2020 return 0.;
2021 });
2022 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask3);
2024 for(
const auto& inner :
m.nsw_unique){
2025 if(inner->bcmask==4) return 1.;
2026 }
2027 return 0.;
2028 });
2029 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask4);
2031 for(
const auto& inner :
m.nsw_unique){
2032 if(inner->bcmask==5) return 1.;
2033 }
2034 return 0.;
2035 });
2036 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask5);
2038 for(
const auto& inner :
m.nsw_unique){
2039 if(inner->bcmask==6) return 1.;
2040 }
2041 return 0.;
2042 });
2043 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask6);
2045 for(
const auto& inner :
m.nsw_unique){
2046 if(inner->bcmask==7) return 1.;
2047 }
2048 return 0.;
2049 });
2050 tgcCoin_variables.push_back(coin_inner_tgc_Nsw_bcmask7);
2051
2052
2054 return (
m.tile.size()>0);
2055 });
2056 tgcCoin_variables.push_back(coin_inner_tgc_anyBcTile);
2058 for(
const auto& inner :
m.tile){
2059 if(inner->bunch == -1) return 1.;
2060 }
2061 return 0.;
2062 });
2063 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile);
2065 for(
const auto& inner :
m.tile){
2066 if(inner->bunch == 0) return 1.;
2067 }
2068 return 0.;
2069 });
2070 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile);
2071 auto coin_inner_tgc_currBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2072 for(
const auto& inner :
m.tile){
2073 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
2074 }
2075 return 0.;
2076 });
2077 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid0);
2078 auto coin_inner_tgc_currBcTile_goodBcid1=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid1",tgcTrigMap_SL,[](
const TgcTrig&m){
2079 for(
const auto& inner :
m.tile){
2080 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
2081 }
2082 return 0.;
2083 });
2084 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid1);
2085 auto coin_inner_tgc_currBcTile_goodBcid2=
Monitored::Collection(
"coin_inner_tgc_currBcTile_goodBcid2",tgcTrigMap_SL,[](
const TgcTrig&m){
2086 for(
const auto& inner :
m.tile){
2087 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
2088 }
2089 return 0.;
2090 });
2091 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid2);
2093 for(
const auto& inner :
m.tile){
2094 if(inner->bunch == 1) return 1.;
2095 }
2096 return 0.;
2097 });
2098 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile);
2100 for(
const auto inner :
m.tile){
2101 if(inner->bunch == 2) return 1.;
2102 }
2103 return 0.;
2104 });
2105 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile);
2106
2107 auto coin_inner_tgc_prevBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_prevBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2108 for(
const auto& inner :
m.tile){
2109 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
2110 }
2111 return 0.;
2112 });
2113 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile_goodBcid0);
2114 auto coin_inner_tgc_nextBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2115 for(
const auto& inner :
m.tile){
2116 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
2117 }
2118 return 0.;
2119 });
2120 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile_goodBcid0);
2121 auto coin_inner_tgc_nextnextBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&m){
2122 for(
const auto inner :
m.tile){
2123 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
2124 }
2125 return 0.;
2126 });
2127 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile_goodBcid0);
2128
2129
2131 return (
m.eifi.size()>0);
2132 });
2133 tgcCoin_variables.push_back(coin_inner_tgc_anyBcEifi);
2135 for(
const auto& inner :
m.eifi){
2136 if(inner->bunch == -1) return 1.;
2137 }
2138 return 0.;
2139 });
2140 tgcCoin_variables.push_back(coin_inner_tgc_prevBcEifi);
2142 for(
const auto& inner :
m.eifi){
2143 if(inner->bunch == 0) return 1.;
2144 }
2145 return 0.;
2146 });
2147 tgcCoin_variables.push_back(coin_inner_tgc_currBcEifi);
2149 for(
const auto& inner :
m.eifi){
2150 if(inner->bunch == 1) return 1.;
2151 }
2152 return 0.;
2153 });
2154 tgcCoin_variables.push_back(coin_inner_tgc_nextBcEifi);
2156 for(
const auto inner :
m.eifi){
2157 if(inner->bunch == 2) return 1.;
2158 }
2159 return 0.;
2160 });
2161 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcEifi);
2162
2163
2164
2167 });
2168 tgcCoin_variables.push_back(coin_inner_rpc_slSector);
2170 return (
m.goodTiming) ?
m.slSector : -999;
2171 });
2172 tgcCoin_variables.push_back(coin_inner_rpc_slSector_goodTiming);
2175 });
2176 tgcCoin_variables.push_back(coin_inner_rpc_roiEta);
2179 });
2180 tgcCoin_variables.push_back(coin_inner_rpc_roiPhi);
2183 });
2184 tgcCoin_variables.push_back(coin_inner_rpc_roiNum);
2187 });
2188 tgcCoin_variables.push_back(coin_inner_rpc_deltaBcid);
2190 return m.deltaTiming;
2191 });
2192 tgcCoin_variables.push_back(coin_inner_rpc_deltaTiming);
2195 });
2196 tgcCoin_variables.push_back(coin_inner_rpc_rpcEta);
2199 });
2200 tgcCoin_variables.push_back(coin_inner_rpc_rpcPhi);
2203 });
2204 tgcCoin_variables.push_back(coin_inner_rpc_rpcDEta);
2207 });
2208 tgcCoin_variables.push_back(coin_inner_rpc_rpcDPhi);
2211 });
2212 tgcCoin_variables.push_back(coin_inner_rpc_currBc);
2215 });
2216 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid0);
2219 });
2220 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid1);
2223 });
2224 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid2);
2226 return m.goodTiming;
2227 });
2228 tgcCoin_variables.push_back(coin_inner_rpc_goodTiming);
2229
2230
2231
2234 });
2235 tgcCoin_variables.push_back(coin_inner_nsw_deltaR);
2238 });
2239 tgcCoin_variables.push_back(coin_inner_nsw_slSector);
2241 return (
m.goodTiming) ?
m.slSector : -999;
2242 });
2243 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming);
2245 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0) ?
m.slSector : -999;
2246 });
2247 tgcCoin_variables.push_back(coin_inner_nsw_slSector_endcap);
2249 return (
m.isForward==1) ?
m.slSector : -999;
2250 });
2251 tgcCoin_variables.push_back(coin_inner_nsw_slSector_forward);
2252 auto coin_inner_nsw_slSector_goodTiming_endcap=
Monitored::Collection(
"coin_inner_nsw_slSector_goodTiming_endcap",tgcTrigNswMap,[](
const TgcTrigNsw&m){
2253 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0 &&
m.goodTiming) ?
m.slSector : -999;
2254 });
2255 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_endcap);
2256 auto coin_inner_nsw_slSector_goodTiming_forward=
Monitored::Collection(
"coin_inner_nsw_slSector_goodTiming_forward",tgcTrigNswMap,[](
const TgcTrigNsw&m){
2257 return (
m.isForward==1 &&
m.goodTiming) ?
m.slSector : -999;
2258 });
2259 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_forward);
2262 });
2263 tgcCoin_variables.push_back(coin_inner_nsw_roiEta);
2266 });
2267 tgcCoin_variables.push_back(coin_inner_nsw_roiPhi);
2270 });
2271 tgcCoin_variables.push_back(coin_inner_nsw_roiNum);
2274 });
2275 tgcCoin_variables.push_back(coin_inner_nsw_deltaBcid);
2277 return m.deltaTiming;
2278 });
2279 tgcCoin_variables.push_back(coin_inner_nsw_deltaTiming);
2282 });
2283 tgcCoin_variables.push_back(coin_inner_nsw_R);
2286 });
2287 tgcCoin_variables.push_back(coin_inner_nsw_Phi);
2289 return m.deltaTheta;
2290 });
2291 tgcCoin_variables.push_back(coin_inner_nsw_deltaTheta);
2293 return m.isForward==1;
2294 });
2295 tgcCoin_variables.push_back(coin_inner_nsw_isForward);
2297 return m.isForward==0;
2298 });
2299 tgcCoin_variables.push_back(coin_inner_nsw_isEndcap);
2302 });
2303 tgcCoin_variables.push_back(coin_inner_nsw_currBc);
2305 return (
m.isForward==0 &&
m.currBc==1);
2306 });
2307 tgcCoin_variables.push_back(coin_inner_nsw_endcap_currBc);
2309 return (
m.isForward==1 &&
m.currBc==1);
2310 });
2311 tgcCoin_variables.push_back(coin_inner_nsw_forward_currBc);
2314 });
2315 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid0);
2318 });
2319 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid1);
2322 });
2323 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid2);
2325 return m.goodTiming;
2326 });
2327 tgcCoin_variables.push_back(coin_inner_nsw_goodTiming);
2328
2330 return m.slInputIndex;
2331 });
2332 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex);
2334 return (
m.isAside==1 &&
m.isForward==0) ?
m.slInputIndex : -999;
2335 });
2336 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AEndcap);
2338 return (
m.isAside==0 &&
m.isForward==0) ?
m.slInputIndex : -999;
2339 });
2340 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CEndcap);
2342 return (
m.isAside==1 &&
m.isForward==1) ?
m.slInputIndex : -999;
2343 });
2344 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AForward);
2346 return (
m.isAside==0 &&
m.isForward==1) ?
m.slInputIndex : -999;
2347 });
2348 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CForward);
2349
2351 return (
m.goodTiming==1 &&
m.goodBcid0==1);
2352 });
2353 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid0);
2355 return (
m.goodTiming==1 &&
m.goodBcid1==1);
2356 });
2357 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid1);
2359 return (
m.goodTiming==1 &&
m.goodBcid2==1);
2360 });
2361 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid2);
2363 return m.deltaTiming==-1;
2364 });
2365 tgcCoin_variables.push_back(coin_inner_nsw_BcPrev);
2367 return m.deltaTiming==0;
2368 });
2369 tgcCoin_variables.push_back(coin_inner_nsw_BcCurr);
2371 return m.deltaTiming==1;
2372 });
2373 tgcCoin_variables.push_back(coin_inner_nsw_BcNext);
2375 return m.deltaTiming==2;
2376 });
2377 tgcCoin_variables.push_back(coin_inner_nsw_BcNextNext);
2378
2379
2382 });
2383 tgcCoin_variables.push_back(coin_inner_tile_slSector);
2385 return (
m.goodTiming) ?
m.slSector : -999;
2386 });
2387 tgcCoin_variables.push_back(coin_inner_tile_slSector_goodTiming);
2390 });
2391 tgcCoin_variables.push_back(coin_inner_tile_roiEta);
2394 });
2395 tgcCoin_variables.push_back(coin_inner_tile_roiPhi);
2398 });
2399 tgcCoin_variables.push_back(coin_inner_tile_roiNum);
2402 });
2403 tgcCoin_variables.push_back(coin_inner_tile_deltaBcid);
2405 return m.deltaTiming;
2406 });
2407 tgcCoin_variables.push_back(coin_inner_tile_deltaTiming);
2409 return m.tmdbDecisions;
2410 });
2411 tgcCoin_variables.push_back(coin_inner_tile_tmdbDecisions);
2414 });
2415 tgcCoin_variables.push_back(coin_inner_tile_currBc);
2418 });
2419 tgcCoin_variables.push_back(coin_inner_tile_goodBcid0);
2422 });
2423 tgcCoin_variables.push_back(coin_inner_tile_goodBcid1);
2426 });
2427 tgcCoin_variables.push_back(coin_inner_tile_goodBcid2);
2429 return m.goodTiming;
2430 });
2431 tgcCoin_variables.push_back(coin_inner_tile_goodTiming);
2432
2435 });
2436 tgcCoin_variables.push_back(coin_inner_tile2_slSector);
2439 });
2440 tgcCoin_variables.push_back(coin_inner_tile2_currBc);
2442 return m.tmdbDecisions;
2443 });
2444 tgcCoin_variables.push_back(coin_inner_tile2_tmdbDecisions);
2445
2446
2448 return (
m.goodTiming) ?
m.slSector : -999;
2449 });
2450 tgcCoin_variables.push_back(coin_inner_eifi_slSector_goodTiming);
2453 });
2454 tgcCoin_variables.push_back(coin_inner_eifi_slSector);
2457 });
2458 tgcCoin_variables.push_back(coin_inner_eifi_roiEta);
2461 });
2462 tgcCoin_variables.push_back(coin_inner_eifi_roiPhi);
2465 });
2466 tgcCoin_variables.push_back(coin_inner_eifi_roiNum);
2468 return m.deltaTiming;
2469 });
2470 tgcCoin_variables.push_back(coin_inner_eifi_deltaTiming);
2473 });
2474 tgcCoin_variables.push_back(coin_inner_eifi_currBc);
2476 return m.goodTiming;
2477 });
2478 tgcCoin_variables.push_back(coin_inner_eifi_goodTiming);
2479
2480
2481 fill(m_packageName+
"_TgcCoin", tgcCoin_variables);
2482
2484 }
2485 }
2486
2489 return StatusCode::SUCCESS;
2490}
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
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
std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVariables
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=Gaudi::Hive::currentContext()) 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.
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)