Skip to content

Commit 908fa0c

Browse files
committed
[Common] Added pseudorapidity to qaMuon task
The muon QA task is now able to make histograms of the pseudorapidity values of the positive, and negative muons, as well as the dimuon pairs. This is also done correlated with the invariant mass and pT. TODO: - fill 2D histograms for dimuons with pT and rapidity - change names in dimuons histograms everywhere from eta to rapidity - add pos, neg histograms to single muons in fill histogram function. fgValues has all the signs, phi, etc. that's necessary. Just copy from the dimuon function.
1 parent 1b12a5e commit 908fa0c

File tree

1 file changed

+92
-1
lines changed

1 file changed

+92
-1
lines changed

Common/Tasks/qaMuon.cxx

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)