Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
o2::framework::Configurable<float> cfgAlphaMeson{"cfgAlphaMeson", 0.65, "photon energy asymmetry distribution parameter for specific value cut"};
o2::framework::Configurable<float> cfgAlphaMesonA{"cfgAlphaMesonA", 0.65, "photon energy asymmetry distribution parameter A for pT dependent cut (A * tanh(B*pT))"};
o2::framework::Configurable<float> cfgAlphaMesonB{"cfgAlphaMesonB", 1.2, "photon energy asymmetry distribution parameter B for pT dependent cut (A * tanh(B*pT))"};
o2::framework::Configurable<bool> cfgGGContaCheck{"cfgGGContaCheck", false, "check gamma gamma contamination of dalitz"};

EMPhotonEventCut fEMEventCut;
struct : o2::framework::ConfigurableGroup {
Expand Down Expand Up @@ -252,6 +253,12 @@
f1fd_k0s_to_pi0 = new TF1("f1fd_k0s_to_pi0", TString(fd_k0s_to_pi0), 0.f, 100.f);

fRegistry.add("Event/hNrecPerMCCollision", "Nrec per mc collision;N_{rec} collisions per MC collision", o2::framework::HistType::kTH1F, {{21, -0.5f, 20.5f}}, false);
if (cfgGGContaCheck) {
fRegistry.add("Event/hNGGContamEta", "Number of Eta from etaToGammaGamma; p_{T, #eta} (GeV/#it{c}); N", o2::framework::HistType::kTH1F, {{40, -0.5f, 20.5f}}, false);
fRegistry.add("Event/hNGGContamPion", "Number of Pion from etaToGammaGamma; p_{T, #pi} (GeV/#it{c}); N", o2::framework::HistType::kTH1F, {{40, -0.5f, 20.5f}}, false);
}
fRegistry.add("Event/hNDalitzEtaPt", "Number of DalitzEta; p_{T, #eta} (GeV/#it{c}); N", o2::framework::HistType::kTH1F, {{40, -0.5f, 20.5f}}, false);
fRegistry.add("Event/hNDalitzPionPt", "Number of DalitzPion; p_{T, #pi} (GeV/#it{c}) ; N", o2::framework::HistType::kTH1F, {{40, -0.5f, 20.5f}}, false);

mRunNumber = 0;
d_bz = 0;
Expand All @@ -270,10 +277,10 @@
}

// In case override, don't proceed, please - no CCDB access required
if (d_bz_input > -990) {

Check failure on line 280 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
d_bz = d_bz_input;
o2::parameters::GRPMagField grpmag;
if (std::fabs(d_bz) > 1e-5) {

Check failure on line 283 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
grpmag.setL3Current(30000.f / (d_bz / 5.0f));
}
mRunNumber = collision.runNumber();
Expand Down Expand Up @@ -572,7 +579,7 @@
TMCCollisions const& mccollisions, TMCParticles const& mcparticles,
TLegs const& /*legs*/ = nullptr, TMatchedTracks const& matchedTracks = nullptr, TMatchedSecondaries const& matchedSecondaries = nullptr)
{
for (auto& collision : collisions) {

Check failure on line 582 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
initCCDB(collision);
if ((pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPHOSPHOS || pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPCMPHOS) && !collision.alias_bit(triggerAliases::kTVXinPHOS)) {
continue;
Expand All @@ -583,7 +590,7 @@
weight = collision.weight();
}

if (eventcuts.onlyKeepWeightedEvents && std::fabs(weight - 1.0) < 1e-10) {

Check failure on line 593 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}

Expand Down Expand Up @@ -720,9 +727,9 @@
}

if (g1mc.globalIndex() == g2mc.globalIndex()) {
if (o2::aod::pwgem::dilepton::utils::mcutil::getMotherPDGCode(g1mc, mcparticles) == 111)

Check failure on line 730 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Check failure on line 730 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
fRegistry.fill(HIST("Pair/Pi0/hs_FromSameGamma"), v12.M(), v12.Pt(), wpair);
else if (o2::aod::pwgem::dilepton::utils::mcutil::getMotherPDGCode(g1mc, mcparticles) == 221)

Check failure on line 732 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
fRegistry.fill(HIST("Pair/Eta/hs_FromSameGamma"), v12.M(), v12.Pt(), wpair);
continue;
}
Expand Down Expand Up @@ -792,6 +799,25 @@

auto pos2mc = mcparticles.iteratorAt(pos2.emmcparticleId());
auto ele2mc = mcparticles.iteratorAt(ele2.emmcparticleId());
if (cfgGGContaCheck) {
photonid2 = o2::aod::pwgem::dilepton::utils::mcutil::FindCommonMotherFrom2Prongs(pos2mc, ele2mc, -11, 11, 22, mcparticles); // check possible contamination
if (photonid2 > 0) {
auto photon2 = mcparticles.iteratorAt(photonid2);
int photon2pdg = photon2.pdgCode();
int photon2mothid = photon2.mothersIds()[0];
auto photon2moth = mcparticles.iteratorAt(photon2mothid);
if (photon2pdg == 22 && (o2::aod::pwgem::photonmeson::utils::mcutil::isGammaGammaDecay(photon2moth, mcparticles))) {

Check failure on line 809 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
int mothID = o2::aod::pwgem::dilepton::utils::mcutil::getMotherPDGCode(photon2, mcparticles);
if (mothID == 221) {
fRegistry.fill(HIST("Event/hNGGContamEta"), photon2moth.pt());
}
if (mothID == 111) {
fRegistry.fill(HIST("Event/hNGGContamPion"), photon2moth.pt());
}
}
}
}

pi0id = o2::aod::pwgem::dilepton::utils::mcutil::FindCommonMotherFrom3Prongs(g1mc, pos2mc, ele2mc, 22, -11, 11, 111, mcparticles);
etaid = o2::aod::pwgem::dilepton::utils::mcutil::FindCommonMotherFrom3Prongs(g1mc, pos2mc, ele2mc, 22, -11, 11, 221, mcparticles);
if (pi0id < 0 && etaid < 0) {
Expand All @@ -805,19 +831,21 @@
}
if (pi0id > 0) {
auto pi0mc = mcparticles.iteratorAt(pi0id);
fRegistry.fill(HIST("Event/hNDalitzPionPt"), pi0mc.pt());
if (cfgRequireTrueAssociation && (pi0mc.emmceventId() != collision.emmceventId())) {
continue;
}
o2::aod::pwgem::photonmeson::utils::nmhistogram::fillTruePairInfo(&fRegistry, veeg, pi0mc, mcparticles, mccollisions, f1fd_k0s_to_pi0, weight);
} else if (etaid > 0) {
auto etamc = mcparticles.iteratorAt(etaid);
fRegistry.fill(HIST("Event/hNDalitzEtaPt"), etamc.pt());
if (cfgRequireTrueAssociation && (etamc.emmceventId() != collision.emmceventId())) {
continue;
}
o2::aod::pwgem::photonmeson::utils::nmhistogram::fillTruePairInfo(&fRegistry, veeg, etamc, mcparticles, mccollisions, f1fd_k0s_to_pi0, weight);
}
} // end of dielectron loop
} // end of pcm loop
} // end of dielectron loop
} // end of pcm loop
} else { // PCM-EMC, PCM-PHOS.
// TODO: implement proper functionality if we ever want to run this in Pb-Pb
auto photons1_per_collision = photons1.sliceByCached(TDetectorTag1::perCollision(), collision.globalIndex(), cache);
Expand Down Expand Up @@ -864,8 +892,8 @@
// o2::aod::pwgem::photonmeson::utils::nmhistogram::fillTruePairInfo(&fRegistry, v12, etamc, mcparticles, mccollisions, f1fd_k0s_to_pi0, weight);
// }
} // end of pairing loop
} // end of pairing in same event
} // end of collision loop
} // end of pairing in same event
} // end of collision loop
}

template <int par_id, typename TBinnedData>
Expand Down Expand Up @@ -900,13 +928,13 @@
// loop over mc stack and fill histograms for pure MC truth signals
// all MC tracks which belong to the MC event corresponding to the current reconstructed event

for (auto& mccollision : mccollisions) {

Check failure on line 931 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto collision_per_mccoll = collisions.sliceBy(rec_perMcCollision, mccollision.globalIndex());
int nrec_per_mc = collision_per_mccoll.size();
fRegistry.fill(HIST("Event/hNrecPerMCCollision"), nrec_per_mc);
}

for (auto& collision : collisions) {

Check failure on line 937 in PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if ((pairtype == o2::aod::pwgem::photonmeson::photonpair::kPHOSPHOS || pairtype == o2::aod::pwgem::photonmeson::photonpair::kPCMPHOS) && !collision.alias_bit(triggerAliases::kTVXinPHOS)) {
continue; // I don't know why this is necessary in simulation.
}
Expand Down
Loading