Skip to content

Commit 8094338

Browse files
authored
[PWGEM] DileptonMC: differentiate between PromptPi0 and NonPromptPi0 (#10043)
1 parent 050faca commit 8094338

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -344,18 +344,19 @@ struct DileptonMC {
344344
const AxisSpec axis_dphi_e_ee{cfg_nbin_dphi_e_ee, 0, M_PI, "#Delta#varphi = #varphi_{l} - #varphi_{ll} (rad.)"}; // for kUPC
345345

346346
// generated info
347-
fRegistry.add("Generated/sm/Pi0/hs", "gen. dilepton signal", kTHnSparseD, {axis_mass, axis_pt, axis_y, axis_dphi_ee, axis_deta_ee, axis_cos_theta_cs, axis_phi_cs, axis_aco, axis_asym_pt, axis_dphi_e_ee}, true);
348-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Eta/");
349-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/EtaPrime/");
350-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Rho/");
351-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Omega/");
352-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Omega2ll/");
353-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Phi/");
354-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/Phi2ll/");
355-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/PromptJPsi/");
356-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/NonPromptJPsi/");
357-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/PromptPsi2S/");
358-
fRegistry.addClone("Generated/sm/Pi0/", "Generated/sm/NonPromptPsi2S/");
347+
fRegistry.add("Generated/sm/PromptPi0/hs", "gen. dilepton signal", kTHnSparseD, {axis_mass, axis_pt, axis_y, axis_dphi_ee, axis_deta_ee, axis_cos_theta_cs, axis_phi_cs, axis_aco, axis_asym_pt, axis_dphi_e_ee}, true);
348+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/NonPromptPi0/");
349+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Eta/");
350+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/EtaPrime/");
351+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Rho/");
352+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Omega/");
353+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Omega2ll/");
354+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Phi/");
355+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/Phi2ll/");
356+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/PromptJPsi/");
357+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/NonPromptJPsi/");
358+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/PromptPsi2S/");
359+
fRegistry.addClone("Generated/sm/PromptPi0/", "Generated/sm/NonPromptPsi2S/");
359360
fRegistry.add("Generated/sm/Omega2ll/hPtY", "pT of #omega meson", kTH2F, {axis_y_meson, axis_pt_meson}, true);
360361
fRegistry.add("Generated/sm/Phi2ll/hPtY", "pT of #phi meson", kTH2F, {axis_y_meson, axis_pt_meson}, true);
361362

@@ -402,7 +403,8 @@ struct DileptonMC {
402403

403404
// reconstructed pair info
404405
fRegistry.add("Pair/sm/Photon/hs", "rec. dilepton signal", kTHnSparseD, {axis_mass, axis_pt, axis_y, axis_dphi_ee, axis_deta_ee, axis_cos_theta_cs, axis_phi_cs, axis_aco, axis_asym_pt, axis_dphi_e_ee, axis_dca}, true);
405-
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/Pi0/");
406+
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/PromptPi0/");
407+
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/NonPromptPi0/");
406408
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/Eta/");
407409
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/EtaPrime/");
408410
fRegistry.addClone("Pair/sm/Photon/", "Pair/sm/Rho/");
@@ -418,7 +420,8 @@ struct DileptonMC {
418420
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
419421
fRegistry.add("Pair/sm/Photon/hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi (rad.);m_{ee} (GeV/c^{2})", kTH2F, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true);
420422
fRegistry.add("Pair/sm/Photon/hMvsRxy", "m_{ee} vs. r_{xy};r_{xy}^{true} (cm);m_{ee} (GeV/c^{2})", kTH2F, {{100, 0, 100}, {100, 0.0f, 1.0f}}, true);
421-
fRegistry.add("Pair/sm/Pi0/hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi (rad.);m_{ee} (GeV/c^{2})", kTH2F, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true);
423+
fRegistry.add("Pair/sm/PromptPi0/hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi (rad.);m_{ee} (GeV/c^{2})", kTH2F, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true);
424+
fRegistry.add("Pair/sm/NonPromptPi0/hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi (rad.);m_{ee} (GeV/c^{2})", kTH2F, {{90, 0, M_PI}, {100, 0.0f, 1.0f}}, true);
422425
}
423426

424427
fRegistry.add("Pair/ccbar/c2l_c2l/hadron_hadron/hs", "hs pair", kTHnSparseD, {axis_mass, axis_pt, axis_y, axis_dphi_ee, axis_deta_ee, axis_cos_theta_cs, axis_phi_cs, axis_aco, axis_asym_pt, axis_dphi_e_ee, axis_dca}, true);
@@ -967,9 +970,16 @@ struct DileptonMC {
967970
if ((t1mc.isPhysicalPrimary() || t1mc.producedByGenerator()) && (t2mc.isPhysicalPrimary() || t2mc.producedByGenerator())) {
968971
switch (abs(mcmother.pdgCode())) {
969972
case 111:
970-
fRegistry.fill(HIST("Pair/sm/Pi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee), pair_dca, weight);
971-
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
972-
fRegistry.fill(HIST("Pair/sm/Pi0/hMvsPhiV"), phiv, v12.M());
973+
if (IsFromCharm(mcmother, mcparticles) < 0 && IsFromBeauty(mcmother, mcparticles) < 0) { // prompt pi0
974+
fRegistry.fill(HIST("Pair/sm/PromptPi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee), pair_dca, weight);
975+
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
976+
fRegistry.fill(HIST("Pair/sm/PromptPi0/hMvsPhiV"), phiv, v12.M());
977+
}
978+
} else { // non-prompt pi0
979+
fRegistry.fill(HIST("Pair/sm/NonPromptPi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee), pair_dca, weight);
980+
if constexpr (pairtype == o2::aod::pwgem::dilepton::utils::pairutil::DileptonPairType::kDielectron) {
981+
fRegistry.fill(HIST("Pair/sm/NonPromptPi0/hMvsPhiV"), phiv, v12.M());
982+
}
973983
}
974984
break;
975985
case 221:
@@ -1370,7 +1380,11 @@ struct DileptonMC {
13701380

13711381
switch (abs(mcmother.pdgCode())) {
13721382
case 111:
1373-
fRegistry.fill(HIST("Generated/sm/Pi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee));
1383+
if (IsFromCharm(mcmother, mcparticles) < 0 && IsFromBeauty(mcmother, mcparticles) < 0) { // prompt pi0
1384+
fRegistry.fill(HIST("Generated/sm/PromptPi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee));
1385+
} else { // non-prompt pi0
1386+
fRegistry.fill(HIST("Generated/sm/NonPromptPi0/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee));
1387+
}
13741388
break;
13751389
case 221:
13761390
fRegistry.fill(HIST("Generated/sm/Eta/hs"), v12.M(), v12.Pt(), v12.Rapidity(), dphi, deta, abs(cos_thetaCS), abs(phiCS), aco, asym, abs(dphi_e_ee));

0 commit comments

Comments
 (0)