@@ -284,6 +284,30 @@ struct muonQa {
284284 registry.add (" muons/TrackPDCA" , " MCH track p #times DCA" , {HistType::kTH1F , {pdcaAxis}});
285285 registry.add (" muons/TrackPhi" , " MCH track #phi" , {HistType::kTH1F , {phiAxis}});
286286
287+ // muon origin from MCH quadrants
288+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta" , {HistType::kTH1F , {etaAxis}});
289+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta" , {HistType::kTH1F , {etaAxis}});
290+ // -- pT and eta
291+ registryDimuon.add (" muon/TrackPt_TrackEtaPos" , " track pT and #eta" , {HistType::kTH2F , {transverseMomentumAxis, etaAxis}});
292+ // top-bottom
293+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, top-top" , {HistType::kTH1F , {etaAxis}});
294+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, top-bottom or bottom-top" , {HistType::kTH1F , {etaAxis}});
295+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, bottom-bottom" , {HistType::kTH1F , {etaAxis}});
296+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, top-top" , {HistType::kTH1F , {etaAxis}});
297+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, top-bottom or bottom-top" , {HistType::kTH1F , {etaAxis}});
298+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, bottom-bottom" , {HistType::kTH1F , {etaAxis}});
299+ // -- pT and eta
300+ // MOET NOG
301+ // left-right
302+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, left-left" , {HistType::kTH1F , {etaAxis}});
303+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, left-right or right-left" , {HistType::kTH1F , {etaAxis}});
304+ registry.add (" muons/TrackEtaPos" , " MCH #mu^{+} track #eta, right-right" , {HistType::kTH1F , {etaAxis}});
305+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, left-left" , {HistType::kTH1F , {etaAxis}});
306+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, left-right or right-left" , {HistType::kTH1F , {etaAxis}});
307+ registry.add (" muons/TrackEtaNeg" , " MCH #mu^{-} track #eta, right-right" , {HistType::kTH1F , {etaAxis}});
308+ // -- pT and eta
309+ // MOET NOG
310+
287311 // ======================
288312 // Global muons plots
289313 // ======================
@@ -538,6 +562,7 @@ struct muonQa {
538562 AxisSpec invMassAxis = {400 , 1 , 5 , " M_{#mu^{+}#mu^{-}} (GeV/c^{2})" };
539563 AxisSpec invMassCorrelationAxis = {80 , 0 , 8 , " M_{#mu^{+}#mu^{-}} (GeV/c^{2})" };
540564 AxisSpec invMassAxisFull = {5000 , 0 , 100 , " M_{#mu^{+}#mu^{-}} (GeV/c^{2})" };
565+ AxisSpec yPairAxis = {120 , 0.0 , 6.0 , " #y_{pair}" };
541566 AxisSpec invMassAxis2D = {750 , 0 , 15 , " M_{#mu^{+}#mu^{-}} (GeV/c^{2})" };
542567 AxisSpec pTAxis2D = {120 , 0 , 30 , " p_{T} (GeV/c)" };
543568 // MCH-MID tracks with MCH acceptance cuts
@@ -667,11 +692,42 @@ struct muonQa {
667692 registryDimuon.add (" dimuon/same-event/invariantMassFull_GlobalMuonKine_GlobalMatchesCuts_subleading_leading" , " #mu^{+}#mu^{-} invariant mass" , {HistType::kTH1F , {invMassAxisFull}});
668693 registryDimuon.add (" dimuon/same-event/invariantMass_GlobalMuonKine_GlobalMatchesCuts_subleading_subleading" , " #mu^{+}#mu^{-} invariant mass" , {HistType::kTH1F , {invMassAxis}});
669694 registryDimuon.add (" dimuon/same-event/invariantMassFull_GlobalMuonKine_GlobalMatchesCuts_subleading_subleading" , " #mu^{+}#mu^{-} invariant mass" , {HistType::kTH1F , {invMassAxisFull}});
670-
671695 // invariant mass correlations
672696 registryDimuon.add (" dimuon/same-event/invariantMass_MuonKine_vs_GlobalMuonKine" , " M_{#mu^{+}#mu^{-}} - muon tracks vs. global tracks" , {HistType::kTH2F , {invMassCorrelationAxis, invMassCorrelationAxis}});
673697 registryDimuon.add (" dimuon/same-event/invariantMass_ScaledMftKine_vs_GlobalMuonKine" , " M_{#mu^{+}#mu^{-}} - rescaled MFT tracks vs. global tracks" , {HistType::kTH2F , {invMassCorrelationAxis, invMassCorrelationAxis}});
674698 registryDimuon.add (" dimuon/same-event/invariantMass_GlobalMuonKine_subleading_vs_leading" , " M_{#mu^{+}#mu^{-}} - subleading vs. leading matches" , {HistType::kTH2F , {invMassCorrelationAxis, invMassCorrelationAxis}});
699+
700+ // pseudorapidity (only for MCH acceptance cuts)
701+ // MCH-MID tracks with MCH acceptance cuts
702+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts" , " #eta of dimuon pair" , {HistType::kTH1F , {yPairAxis}});
703+ // -- Mass and eta
704+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts" , " #mu^{+}#mu^{-} invariant mass" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
705+ // -- pT and eta
706+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts" , " #mu^{+}#mu^{-} p_{T} and #eta" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
707+ // MCH-MID tracks with MCH acceptance cuts and combinations from the top and bottom halfs of MCH
708+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_TT" , " #eta of dimuon pair, top-top" , {HistType::kTH1F , {yPairAxis}});
709+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_TB" , " #eta of dimuon pair, top-bottom or bottom-top" , {HistType::kTH1F , {yPairAxis}});
710+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_BB" , " #eta of dimuon pair, bottom-bottom" , {HistType::kTH1F , {yPairAxis}});
711+ // -- Mass and eta
712+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_TT" , " #mu^{+}#mu^{-} invariant mass, top-top" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
713+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_TB" , " #mu^{+}#mu^{-} invariant mass, top-bottom or bottom-top" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
714+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_BB" , " #mu^{+}#mu^{-} invariant mass, bottom-bottom" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
715+ // -- pT and eta
716+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_TT" , " #mu^{+}#mu^{-} p_{T} and #eta, top-top" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
717+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_TB" , " #mu^{+}#mu^{-} p_{T} and #eta, top-bottom or bottom-top" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
718+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_BB" , " #mu^{+}#mu^{-} p_{T} and #eta, bottom-bottom" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
719+ // MCH-MID tracks with MCH acceptance cuts and combinations from the left and right halfs of MCH
720+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_LL" , " #eta of dimuon pair, left-left" , {HistType::kTH1F , {yPairAxis}});
721+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_LR" , " #eta of dimuon pair, left-right or right-left" , {HistType::kTH1F , {yPairAxis}});
722+ registryDimuon.add (" dimuon/same-event/etaPair_MuonKine_MuonCuts_RR" , " #eta of dimuon pair, right-right" , {HistType::kTH1F , {yPairAxis}});
723+ // -- Mass and eta
724+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_LL" , " #mu^{+}#mu^{-} invariant mass, left-left" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
725+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_LR" , " #mu^{+}#mu^{-} invariant mass, left-right or right-left" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
726+ registryDimuon.add (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_RR" , " #mu^{+}#mu^{-} invariant mass, right-right" , {HistType::kTH2F , {invMassAxis2D, yPairAxis}});
727+ // -- pT and eta
728+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_LL" , " #mu^{+}#mu^{-} p_{T} and #eta, left-left" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
729+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_LR" , " #mu^{+}#mu^{-} p_{T} and #eta, left-right or right-left" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
730+ registryDimuon.add (" dimuon/same-event/pT_etaPair_MuonKine_MuonCuts_RR" , " #mu^{+}#mu^{-} p_{T} and #eta, right-right" , {HistType::kTH2F , {pTAxis2D, yPairAxis}});
675731 }
676732 }
677733
@@ -1021,6 +1077,26 @@ struct muonQa {
10211077 return dimuon.Pt ();
10221078 }
10231079
1080+ template <typename VarT>
1081+ double GetMuMuRap (VarT const & track1, VarT const & track2)
1082+ {
1083+ ROOT::Math::PxPyPzMVector muon1{
1084+ track1.px ,
1085+ track1.py ,
1086+ track1.pz ,
1087+ o2::constants::physics::MassMuon};
1088+
1089+ ROOT::Math::PxPyPzMVector muon2{
1090+ track2.px ,
1091+ track2.py ,
1092+ track2.pz ,
1093+ o2::constants::physics::MassMuon};
1094+
1095+ auto dimuon = muon1 + muon2;
1096+
1097+ return dimuon.Y ();
1098+ }
1099+
10241100 template <typename TMuons, typename TCandidates>
10251101 void GetMuonPairs (TMuons const & muons, TCandidates const & matchingCandidates, const std::map<uint64_t , VarColl>& collisionInfos,
10261102 std::vector<MuonPair>& muonPairs,
@@ -2310,39 +2386,54 @@ struct muonQa {
23102386
23112387 double mass = GetMuMuInvariantMass (fgValuesMuonPV1, fgValuesMuonPV2);
23122388 double pT = GetMuMuPt (fgValuesMuonPV1, fgValuesMuonPV2);
2389+ double yPair = GetMuMuRap (fgValuesMuonPV1, fgValuesMuonPV2);
23132390 if (goodMuonTracks) {
23142391 if (sameEvent) {
23152392 // same-event case
23162393 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts" ))->Fill (mass);
23172394 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts" ))->Fill (mass);
23182395 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts" ))->Fill (mass, pT);
2396+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts" ))->Fill (yPair);
2397+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts" ))->Fill (mass, yPair);
23192398
23202399 if (TopBottom1 == 0 && TopBottom2 == 0 ) {
23212400 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_TT" ))->Fill (mass);
23222401 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_TT" ))->Fill (mass);
23232402 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_TT" ))->Fill (mass, pT);
2403+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_TT" ))->Fill (yPair);
2404+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_TT" ))->Fill (mass, yPair);
23242405 } else if ((TopBottom1 == 0 && TopBottom2 == 1 ) || (TopBottom1 == 1 && TopBottom2 == 0 )) {
23252406 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_TB" ))->Fill (mass);
23262407 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_TB" ))->Fill (mass);
23272408 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_TB" ))->Fill (mass, pT);
2409+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_TB" ))->Fill (yPair);
2410+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_TB" ))->Fill (mass, yPair);
23282411 } else if (TopBottom1 == 1 && TopBottom2 == 1 ) {
23292412 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_BB" ))->Fill (mass);
23302413 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_BB" ))->Fill (mass);
23312414 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_BB" ))->Fill (mass, pT);
2415+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_BB" ))->Fill (yPair);
2416+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_BB" ))->Fill (mass, yPair);
23322417 }
23332418
23342419 if (LeftRight1 == 0 && LeftRight2 == 0 ) {
23352420 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_LL" ))->Fill (mass);
23362421 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_LL" ))->Fill (mass);
23372422 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_LL" ))->Fill (mass, pT);
2423+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_LL" ))->Fill (yPair);
2424+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_LL" ))->Fill (mass, yPair);
23382425 } else if ((LeftRight1 == 0 && LeftRight2 == 1 ) || (LeftRight1 == 1 && LeftRight2 == 0 )) {
23392426 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_LR" ))->Fill (mass);
23402427 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_LR" ))->Fill (mass);
23412428 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_LR" ))->Fill (mass, pT);
2429+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_LR" ))->Fill (yPair);
2430+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_LR" ))->Fill (mass, yPair);
23422431 } else if (LeftRight1 == 1 && LeftRight2 == 1 ) {
23432432 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMass_MuonKine_MuonCuts_RR" ))->Fill (mass);
23442433 registryDimuon.get <TH1>(HIST (" dimuon/same-event/invariantMassFull_MuonKine_MuonCuts_RR" ))->Fill (mass);
23452434 registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_pT_MuonKine_MuonCuts_RR" ))->Fill (mass, pT);
2435+ registryDimuon.get <TH1>(HIST (" dimuon/same-event/etaPair_MuonKine_MuonCuts_RR" ))->Fill (yPair);
2436+ registryDimuon.get <TH2>(HIST (" dimuon/same-event/invariantMass_etaPair_MuonKine_MuonCuts_RR" ))->Fill (mass, yPair);
23462437 }
23472438 } else {
23482439 // event-mixing case
0 commit comments