Skip to content

Commit 350dfb6

Browse files
[PWGDQ] Add e-mu pairing with MC matching to dqEfficiency_withAssoc (#16276)
1 parent 85a21b4 commit 350dfb6

4 files changed

Lines changed: 520 additions & 10 deletions

File tree

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1971,6 +1971,15 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
19711971
if (subGroupStr.Contains("correlation-emu")) {
19721972
hm->AddHistogram(histClass, "DeltaPhiPair2_DeltaEtaPair2", "", false, 600, -o2::constants::math::PIHalf, 1.5 * o2::constants::math::PI, VarManager::kDeltaPhiPair2, 350, 1.5, 5.0, VarManager::kDeltaEtaPair2);
19731973
hm->AddHistogram(histClass, "DeltaPhiPair2_Pt", "", false, 600, -o2::constants::math::PIHalf, 1.5 * o2::constants::math::PI, VarManager::kDeltaPhiPair2, 200, 0.0, 20.0, VarManager::kPt);
1974+
// 4D correlation map: (Delta phi_pair, Delta eta_pair, p_T^{e}, p_T^{mu}). Per-track pT axes use kPt1/kPt2,
1975+
// which FillPair populates for SE and FillPairME (patched in this PR) populates for ME. Stored as THnSparse so
1976+
// running with many MC-matched hist classes (track cut x muon cut x signal x QA variant) does not blow the
1977+
// 1 GB TBufferFile limit during the final ROOT serialization.
1978+
int varsEmu4D[4] = {VarManager::kDeltaPhiPair2, VarManager::kDeltaEtaPair2, VarManager::kPt1, VarManager::kPt2};
1979+
int binsEmu4D[4] = {60, 35, 20, 20};
1980+
double xminEmu4D[4] = {-o2::constants::math::PIHalf, 1.5, 0.0, 0.0};
1981+
double xmaxEmu4D[4] = {1.5 * o2::constants::math::PI, 5.0, 20.0, 20.0};
1982+
hm->AddHistogram(histClass, "DeltaPhiPair2_DeltaEtaPair2_PtE_PtMu", "", 4, varsEmu4D, binsEmu4D, xminEmu4D, xmaxEmu4D, nullptr, -1, kTRUE);
19741983
}
19751984
if (subGroupStr.Contains("dielectrons")) {
19761985
if (subGroupStr.Contains("prefilter")) {

PWGDQ/Core/MCSignalLibrary.cxx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,30 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name)
459459
signal = new MCSignal(name, "Electron-muon pair", {electron, muon}, {-1, -1});
460460
return signal;
461461
}
462+
if (!nameStr.compare("emuFromOpenHFhadron")) {
463+
MCProng electron(2, {11, 902}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
464+
electron.SetSourceBit(0, MCProng::kPhysicalPrimary);
465+
MCProng muon(2, {13, 902}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
466+
muon.SetSourceBit(0, MCProng::kPhysicalPrimary);
467+
signal = new MCSignal(name, "e and mu each from an open charm or beauty hadron decay", {electron, muon}, {-1, -1});
468+
return signal;
469+
}
470+
if (!nameStr.compare("emuFromOpenCharmHadron")) {
471+
MCProng electron(2, {11, 402}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
472+
electron.SetSourceBit(0, MCProng::kPhysicalPrimary);
473+
MCProng muon(2, {13, 402}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
474+
muon.SetSourceBit(0, MCProng::kPhysicalPrimary);
475+
signal = new MCSignal(name, "e and mu each from an open charm hadron decay", {electron, muon}, {-1, -1});
476+
return signal;
477+
}
478+
if (!nameStr.compare("emuFromOpenBeautyHadron")) {
479+
MCProng electron(2, {11, 502}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
480+
electron.SetSourceBit(0, MCProng::kPhysicalPrimary);
481+
MCProng muon(2, {13, 502}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
482+
muon.SetSourceBit(0, MCProng::kPhysicalPrimary);
483+
signal = new MCSignal(name, "e and mu each from an open beauty hadron decay", {electron, muon}, {-1, -1});
484+
return signal;
485+
}
462486
if (!nameStr.compare("dielectronFromPC")) {
463487
MCProng prong(2, {11, 22}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
464488
signal = new MCSignal(name, "dielectron from a photon conversion", {prong, prong}, {1, 1});

PWGDQ/Core/VarManager.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3998,6 +3998,14 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values)
39983998
values[kPhi] = v12.Phi() > 0 ? v12.Phi() : v12.Phi() + 2. * M_PI;
39993999
values[kRap] = -v12.Rapidity();
40004000

4001+
// Per-track quantities so ME histograms can use kPt1/kPt2/kEta1/kEta2/kPhi1/kPhi2 just like SE FillPair does.
4002+
values[kPt1] = t1.pt();
4003+
values[kEta1] = t1.eta();
4004+
values[kPhi1] = t1.phi();
4005+
values[kPt2] = t2.pt();
4006+
values[kEta2] = t2.eta();
4007+
values[kPhi2] = t2.phi();
4008+
40014009
if (fgUsedVars[kDeltaPhiPair2]) {
40024010
double phipair2ME = v1.Phi() - v2.Phi();
40034011
if (phipair2ME > 3 * TMath::Pi() / 2) {

0 commit comments

Comments
 (0)