Skip to content

Commit 597d808

Browse files
authored
[PWGLF] Added eta particle in the reflection process function (#16118)
1 parent 56f710a commit 597d808

1 file changed

Lines changed: 133 additions & 0 deletions

File tree

PWGLF/Tasks/Resonances/kstar892LightIon.cxx

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ struct Kstar892LightIon {
161161
Configurable<bool> isZvtxPosSelMC{"isZvtxPosSelMC", true, "Zvtx position selection for MC events?"};
162162
Configurable<bool> selTVXMC{"selTVXMC", true, "apply TVX selection in MC?"};
163163
Configurable<bool> selINELgt0MC{"selINELgt0MC", true, "Select INEL > 0?"};
164+
165+
Configurable<float> invMassMinMID{"invMassMinMID", 0.6, "Minimum invariant mass for MID"};
166+
Configurable<float> invMassMaxMID{"invMassMaxMID", 0.82, "Maximum invariant mass for MID"};
164167
} selectionConfig;
165168

166169
Configurable<bool> calcLikeSign{"calcLikeSign", true, "Calculate Like Sign"};
@@ -378,6 +381,8 @@ struct Kstar892LightIon {
378381
hMC.add("Reflections/hOmegaToKpi", "Refelction template of Omega", kTH3F, {ptAxis, centralityAxis, invmassAxis});
379382
hMC.add("Reflections/hPhiToKpi", "Refelction template of Phi", kTH3F, {ptAxis, centralityAxis, invmassAxis});
380383
hMC.add("Reflections/hKstarSelf", "Refelction template of Kstar", kTH3F, {ptAxis, centralityAxis, invmassAxis});
384+
hMC.add("Reflections/hEtaToKpi", "Refelction template of Eta", kTH3F, {ptAxis, centralityAxis, invmassAxis});
385+
hMC.add("Reflections/hEtaPrimeToKpi", "Refelction template of Eta'", kTH3F, {ptAxis, centralityAxis, invmassAxis});
381386
}
382387

383388
if (doprocessMCCheck) {
@@ -1998,6 +2003,50 @@ struct Kstar892LightIon {
19982003
hMC.fill(HIST("Reflections/hOmegaToKpi"), fake2.Pt(), centrality, fake2.M());
19992004
}
20002005

2006+
// =====================================================
2007+
// Eta -> pi pi(pi0) -> K pi
2008+
// =====================================================
2009+
if (motherPDG == o2::constants::physics::kEta && pdg1 == PDG_t::kPiPlus && pdg2 == PDG_t::kPiPlus) {
2010+
2011+
// track 1 -> K
2012+
ROOT::Math::PxPyPzMVector p1K(track1.px(), track1.py(), track1.pz(), massKa);
2013+
ROOT::Math::PxPyPzMVector p2Pi(track2.px(), track2.py(), track2.pz(), massPi);
2014+
auto fake1 = p1K + p2Pi;
2015+
2016+
if (fake1.Rapidity() > selectionConfig.motherRapidityMin && fake1.Rapidity() < selectionConfig.motherRapidityMax)
2017+
hMC.fill(HIST("Reflections/hEtaToKpi"), fake1.Pt(), centrality, fake1.M());
2018+
2019+
// track 2 -> K
2020+
ROOT::Math::PxPyPzMVector p1Pi(track1.px(), track1.py(), track1.pz(), massPi);
2021+
ROOT::Math::PxPyPzMVector p2K(track2.px(), track2.py(), track2.pz(), massKa);
2022+
auto fake2 = p1Pi + p2K;
2023+
2024+
if (fake2.Rapidity() > selectionConfig.motherRapidityMin && fake2.Rapidity() < selectionConfig.motherRapidityMax)
2025+
hMC.fill(HIST("Reflections/hEtaToKpi"), fake2.Pt(), centrality, fake2.M());
2026+
}
2027+
2028+
// =====================================================
2029+
// Eta' (958) -> pi pi(eta) -> K pi
2030+
// =====================================================
2031+
if (motherPDG == o2::constants::physics::kEtaPrime && pdg1 == PDG_t::kPiPlus && pdg2 == PDG_t::kPiPlus) {
2032+
2033+
// track 1 -> K
2034+
ROOT::Math::PxPyPzMVector p1K(track1.px(), track1.py(), track1.pz(), massKa);
2035+
ROOT::Math::PxPyPzMVector p2Pi(track2.px(), track2.py(), track2.pz(), massPi);
2036+
auto fake1 = p1K + p2Pi;
2037+
2038+
if (fake1.Rapidity() > selectionConfig.motherRapidityMin && fake1.Rapidity() < selectionConfig.motherRapidityMax)
2039+
hMC.fill(HIST("Reflections/hEtaPrimeToKpi"), fake1.Pt(), centrality, fake1.M());
2040+
2041+
// track 2 -> K
2042+
ROOT::Math::PxPyPzMVector p1Pi(track1.px(), track1.py(), track1.pz(), massPi);
2043+
ROOT::Math::PxPyPzMVector p2K(track2.px(), track2.py(), track2.pz(), massKa);
2044+
auto fake2 = p1Pi + p2K;
2045+
2046+
if (fake2.Rapidity() > selectionConfig.motherRapidityMin && fake2.Rapidity() < selectionConfig.motherRapidityMax)
2047+
hMC.fill(HIST("Reflections/hEtaPrimeToKpi"), fake2.Pt(), centrality, fake2.M());
2048+
}
2049+
20012050
// =====================================================
20022051
// Phi (1020) -> KK -> K pi
20032052
// =====================================================
@@ -2261,6 +2310,90 @@ struct Kstar892LightIon {
22612310
hMC.fill(HIST("MCCheck/NchMC_AllGen"), nChMCEta08);
22622311
}
22632312
PROCESS_SWITCH(Kstar892LightIon, processMCCheck, "Cross-check MC analysis", false);
2313+
2314+
void processSEMassMID(EventCandidates::iterator const& collision, TrackCandidates const& tracks, aod::BCs const&)
2315+
{
2316+
if (!selectionEvent(collision, true)) { // fill data event cut histogram
2317+
return;
2318+
}
2319+
2320+
centrality = -1;
2321+
2322+
if (selectCentEstimator == kFT0M) {
2323+
centrality = collision.centFT0M();
2324+
} else if (selectCentEstimator == kFT0A) {
2325+
centrality = collision.centFT0A();
2326+
} else if (selectCentEstimator == kFT0C) {
2327+
centrality = collision.centFT0C();
2328+
} else if (selectCentEstimator == kFV0A) {
2329+
centrality = collision.centFV0A();
2330+
} else {
2331+
centrality = collision.centFT0M(); // default
2332+
}
2333+
2334+
/* else if (selectCentEstimator == 4) {
2335+
centrality = collision.centMFT();
2336+
} */
2337+
/* else if (selectCentEstimator == 5) {
2338+
centrality = collision.centNGlobal();
2339+
} */
2340+
/* else if (selectCentEstimator == 6) {
2341+
centrality = collision.centNTPV();
2342+
} */
2343+
2344+
if (cQAevents) {
2345+
hEventSelection.fill(HIST("hVertexZ"), collision.posZ());
2346+
hEventSelection.fill(HIST("hCentrality"), centrality);
2347+
}
2348+
2349+
for (const auto& [track1, track2] : combinations(CombinationsFullIndexPolicy(tracks, tracks))) {
2350+
if (!selectionTrack(track1) || !selectionTrack(track2)) {
2351+
continue;
2352+
}
2353+
2354+
if (track1.globalIndex() == track2.globalIndex())
2355+
continue;
2356+
2357+
if (!selectionPair(track1, track2)) {
2358+
continue;
2359+
}
2360+
2361+
// since we are using combinations full index policy, so repeated pairs are allowed, so we can check one with Kaon and other with pion
2362+
if ((!selectionConfig.isApplypTdepPID && !selectionConfig.isApplypTdepPIDwTOF) && !selectionPID(track1, 1)) // Track 1 is checked with Kaon
2363+
continue;
2364+
if ((!selectionConfig.isApplypTdepPID && !selectionConfig.isApplypTdepPIDwTOF) && !selectionPID(track2, 0)) // Track 2 is checked with Pion
2365+
continue;
2366+
2367+
if (selectionConfig.isApplypTdepPID && !selectionPIDpTdep(track1, 1)) // Track 1 is checked with Kaon
2368+
continue;
2369+
if (selectionConfig.isApplypTdepPID && !selectionPIDpTdep(track2, 0)) // Track 2 is checked with Pion
2370+
continue;
2371+
2372+
if (selectionConfig.isApplypTdepPIDwTOF && !selectionPIDpTdepTOF(track1, 1)) // Track 1 is checked with Kaon
2373+
continue;
2374+
if (selectionConfig.isApplypTdepPIDwTOF && !selectionPIDpTdepTOF(track2, 0)) // Track 2 is checked with Pion
2375+
continue;
2376+
2377+
/* if (selectionConfig.isApplyMID && (selectionMID(track1, 0) || selectionMID(track2, 1)))
2378+
continue;
2379+
2380+
if (selectionConfig.isApplypTdepMID && (selectionMIDpTdep(track1, 0) || selectionMIDpTdep(track2, 1)))
2381+
continue; */
2382+
2383+
daughter1 = ROOT::Math::PxPyPzMVector(track1.px(), track1.py(), track1.pz(), massKa);
2384+
daughter2 = ROOT::Math::PxPyPzMVector(track2.px(), track2.py(), track2.pz(), massPi);
2385+
mother = daughter1 + daughter2; // Kstar meson
2386+
2387+
if (mother.M() < selectionConfig.invMassMaxMID && mother.M() > selectionConfig.invMassMinMID) {
2388+
if (selectionConfig.isApplyMID && (selectionMID(track1, 0) || selectionMID(track2, 1)))
2389+
continue;
2390+
}
2391+
2392+
isMix = false;
2393+
fillInvMass(daughter1, daughter2, mother, centrality, isMix, track1, track2);
2394+
}
2395+
}
2396+
PROCESS_SWITCH(Kstar892LightIon, processSEMassMID, "Process Same event", false);
22642397
};
22652398

22662399
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)