Skip to content

Commit

Permalink
PWGEM/Dilepton: update single track qc mc
Browse files Browse the repository at this point in the history
  • Loading branch information
dsekihat committed Dec 12, 2024
1 parent 94462f0 commit e713211
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions PWGEM/Dilepton/Core/SingleTrackQCMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ struct SingleTrackQCMC {

HistogramRegistry fRegistry{"output", {}, OutputObjHandlingPolicy::AnalysisObject, false, false}; // 1 HistogramRegistry can keep up to 512 histograms
static constexpr std::string_view event_cut_types[2] = {"before/", "after/"};
static constexpr std::string_view lepton_source_types[9] = {"lf/", "Photon/", "PromptJPsi/", "NonPromptJPsi/", "PromptPsi2S/", "NonPromptPsi2S/", "c2l/", "b2l/", "b2c2l/"};
static constexpr std::string_view lepton_source_types[10] = {"lf/", "lf_prompt/", "Photon/", "PromptJPsi/", "NonPromptJPsi/", "PromptPsi2S/", "NonPromptPsi2S/", "c2l/", "b2l/", "b2c2l/"};

~SingleTrackQCMC() {}

Expand All @@ -221,6 +221,7 @@ struct SingleTrackQCMC {

// generated info
fRegistry.add("Generated/lf/hs", "gen. single electron", kTHnSparseD, {axis_pt, axis_eta, axis_phi, axis_charge_gen}, true);
fRegistry.addClone("Generated/lf/", "Generated/lf_prompt/");
fRegistry.addClone("Generated/lf/", "Generated/PromptJPsi/");
fRegistry.addClone("Generated/lf/", "Generated/NonPromptJPsi/");
fRegistry.addClone("Generated/lf/", "Generated/PromptPsi2S/");
Expand Down Expand Up @@ -253,6 +254,7 @@ struct SingleTrackQCMC {
fRegistry.add("Track/lf/positive/hPtGen_DeltaPhi", "electron #varphi resolution;p_{T}^{gen} (GeV/c);#varphi^{rec} - #varphi^{gen} (rad.)", kTH2F, {{200, 0, 10}, {100, -0.05f, 0.05f}}, true);
}
fRegistry.addClone("Track/lf/positive/", "Track/lf/negative/");
fRegistry.addClone("Track/lf/", "Track/lf_prompt/");
fRegistry.addClone("Track/lf/", "Track/Photon/"); // this is not for efficiency! only for contamination. We don't store generated photon conversions.
fRegistry.addClone("Track/lf/", "Track/PromptJPsi/");
fRegistry.addClone("Track/lf/", "Track/NonPromptJPsi/");
Expand Down Expand Up @@ -289,6 +291,7 @@ struct SingleTrackQCMC {

// generated info
fRegistry.add("Generated/lf/hs", "gen. single muon", kTHnSparseD, {axis_pt, axis_eta, axis_phi, axis_charge_gen}, true);
fRegistry.addClone("Generated/lf/", "Generated/lf_prompt/");
fRegistry.addClone("Generated/lf/", "Generated/PromptJPsi/");
fRegistry.addClone("Generated/lf/", "Generated/NonPromptJPsi/");
fRegistry.addClone("Generated/lf/", "Generated/PromptPsi2S/");
Expand Down Expand Up @@ -318,6 +321,7 @@ struct SingleTrackQCMC {
fRegistry.add("Track/lf/positive/hPtGen_DeltaPhi", "muon #varphi resolution;p_{T}^{gen} (GeV/c);#varphi^{rec} - #varphi^{gen} (rad.)", kTH2F, {{200, 0, 10}, {100, -0.05f, 0.05f}}, true);
}
fRegistry.addClone("Track/lf/positive/", "Track/lf/negative/");
fRegistry.addClone("Track/lf/", "Track/lf_prompt/");
fRegistry.addClone("Track/lf/", "Track/Photon/"); // this is not for efficiency! only for contamination. We don't store generated photon conversions.
fRegistry.addClone("Track/lf/", "Track/PromptJPsi/");
fRegistry.addClone("Track/lf/", "Track/NonPromptJPsi/");
Expand Down Expand Up @@ -714,30 +718,33 @@ struct SingleTrackQCMC {

if (mctrack.isPhysicalPrimary() || mctrack.producedByGenerator()) {
if (pdg_mother == 111 || pdg_mother == 221 || pdg_mother == 331 || pdg_mother == 113 || pdg_mother == 223 || pdg_mother == 333) {
fillTrackInfo<0, TMCParticles>(track);
fillTrackInfo<0, TMCParticles>(track); // lf
if (IsFromCharm(mcmother, mcparticles) < 0 && IsFromBeauty(mcmother, mcparticles) < 0) {
fillTrackInfo<1, TMCParticles>(track); // lf_prompt
}
} else if (pdg_mother == 443) {
if (IsFromBeauty(mcmother, mcparticles) > 0) { // b is found in full decay chain.
fillTrackInfo<3, TMCParticles>(track);
fillTrackInfo<4, TMCParticles>(track);
} else {
fillTrackInfo<2, TMCParticles>(track);
fillTrackInfo<3, TMCParticles>(track);
}
} else if (pdg_mother == 100443) {
if (IsFromBeauty(mcmother, mcparticles) > 0) { // b is found in full decay chain.
fillTrackInfo<5, TMCParticles>(track);
fillTrackInfo<6, TMCParticles>(track);
} else {
fillTrackInfo<4, TMCParticles>(track);
fillTrackInfo<5, TMCParticles>(track);
}
} else if (IsFromBeauty(mctrack, mcparticles) > 0) { // b is found in full decay chain.
if (IsFromCharm(mctrack, mcparticles) > 0) { // c is found in full decay chain.
fillTrackInfo<8, TMCParticles>(track);
fillTrackInfo<9, TMCParticles>(track);
} else {
fillTrackInfo<7, TMCParticles>(track);
fillTrackInfo<8, TMCParticles>(track);
}
} else if (IsFromCharm(mctrack, mcparticles) > 0) { // c is found in full decay chain. Not from b.
fillTrackInfo<6, TMCParticles>(track);
fillTrackInfo<7, TMCParticles>(track);
}
} else {
fillTrackInfo<1, TMCParticles>(track);
fillTrackInfo<2, TMCParticles>(track);
}
} // end of track loop

Expand Down Expand Up @@ -821,6 +828,9 @@ struct SingleTrackQCMC {

if (pdg_mother == 111 || pdg_mother == 221 || pdg_mother == 331 || pdg_mother == 113 || pdg_mother == 223 || pdg_mother == 333) {
fRegistry.fill(HIST("Generated/lf/hs"), pt, eta, phi, -lepton.pdgCode() / pdg_lepton);
if (IsFromCharm(mcmother, mcparticles) < 0 && IsFromBeauty(mcmother, mcparticles) < 0) {
fRegistry.fill(HIST("Generated/lf_prompt/hs"), pt, eta, phi, -lepton.pdgCode() / pdg_lepton);
}
} else if (pdg_mother == 443) {
if (IsFromBeauty(mcmother, mcparticles) > 0) { // b is found in full decay chain.
fRegistry.fill(HIST("Generated/NonPromptJPsi/hs"), pt, eta, phi, -lepton.pdgCode() / pdg_lepton);
Expand Down

0 comments on commit e713211

Please sign in to comment.