Skip to content

Commit 5a37580

Browse files
committed
Optimised reflection process function
1 parent d1bc05e commit 5a37580

File tree

1 file changed

+47
-59
lines changed

1 file changed

+47
-59
lines changed

PWGLF/Tasks/Resonances/kstar892LightIon.cxx

Lines changed: 47 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,6 @@ struct Kstar892LightIon {
175175

176176
Configurable<int> selectCentEstimator{"selectCentEstimator", 0, "Select centrality estimator: 0 - FT0M, 1 - FT0A, 2 - FT0C, 3 - FV0A"};
177177

178-
Configurable<int> reflectionType{"reflectionType", 0, "Reflection: 0=Rho, 1=Omega, 2=Phi, 3=Kstar (for processRecReflection)"};
179-
180178
Configurable<float> nchAcceptance{"nchAcceptance", 0.5, "Eta window to measure Nch MC for Nch vs Cent distribution"};
181179

182180
Configurable<int> nBinsNch{"nBinsNch", 400, "N bins Nch (|eta|<0.8)"};
@@ -208,13 +206,6 @@ struct Kstar892LightIon {
208206
kProton
209207
};
210208

211-
enum PartReflection {
212-
kRho,
213-
kOmega,
214-
kPhi,
215-
kKstar
216-
};
217-
218209
int noOfDaughters = 2;
219210

220211
double pionPIDpTlow = 1, pionPIDpThigh = 2.5, kaonPIDpTlow = 0.7, kaonPIDpThigh = 2.5;
@@ -384,7 +375,10 @@ struct Kstar892LightIon {
384375
}
385376

386377
if (doprocessRecReflection) {
387-
hMC.add("Reflections/hReflection", "Refelction template of Rho", kTH3F, {ptAxis, centralityAxis, invmassAxis});
378+
hMC.add("Reflections/hRhoToKpi", "Refelction template of Rho", kTH3F, {ptAxis, centralityAxis, invmassAxis});
379+
hMC.add("Reflections/hOmegaToKpi", "Refelction template of Omega", kTH3F, {ptAxis, centralityAxis, invmassAxis});
380+
hMC.add("Reflections/hPhiToKpi", "Refelction template of Phi", kTH3F, {ptAxis, centralityAxis, invmassAxis});
381+
hMC.add("Reflections/hKstarSelf", "Refelction template of Kstar", kTH3F, {ptAxis, centralityAxis, invmassAxis});
388382
}
389383

390384
if (doprocessMCCheck) {
@@ -1905,6 +1899,8 @@ struct Kstar892LightIon {
19051899
if (!selectionEvent(collision, false))
19061900
return;
19071901

1902+
centrality = -1.f;
1903+
19081904
if (selectCentEstimator == kFT0M) {
19091905
centrality = collision.centFT0M();
19101906
} else if (selectCentEstimator == kFT0A) {
@@ -1914,10 +1910,11 @@ struct Kstar892LightIon {
19141910
} else if (selectCentEstimator == kFV0A) {
19151911
centrality = collision.centFV0A();
19161912
} else {
1917-
centrality = collision.centFT0M(); // default
1913+
centrality = collision.centFT0M();
19181914
}
19191915

1920-
for (const auto& [track1, track2] : combinations(CombinationsFullIndexPolicy(tracks, tracks))) {
1916+
for (const auto& [track1, track2] :
1917+
combinations(CombinationsFullIndexPolicy(tracks, tracks))) {
19211918

19221919
if (!selectionTrack(track1) || !selectionTrack(track2))
19231920
continue;
@@ -1943,8 +1940,8 @@ struct Kstar892LightIon {
19431940
for (const auto& m1 : mc1.mothers_as<aod::McParticles>()) {
19441941
for (const auto& m2 : mc2.mothers_as<aod::McParticles>()) {
19451942
if (m1.globalIndex() == m2.globalIndex()) {
1946-
motherPDG = std::abs(m1.pdgCode());
19471943
sameMother = true;
1944+
motherPDG = std::abs(m1.pdgCode());
19481945
break;
19491946
}
19501947
}
@@ -1955,101 +1952,92 @@ struct Kstar892LightIon {
19551952
if (!sameMother)
19561953
continue;
19571954

1958-
if (reflectionType == kRho) { // Rho0 (770) -> pi pi -> K pi
1959-
if (motherPDG != PDG_t::kRho770_0)
1960-
continue;
1955+
int pdg1 = std::abs(mc1.pdgCode());
1956+
int pdg2 = std::abs(mc2.pdgCode());
19611957

1962-
if (std::abs(mc1.pdgCode()) != PDG_t::kPiPlus ||
1963-
std::abs(mc2.pdgCode()) != PDG_t::kPiPlus)
1964-
continue;
1958+
// =====================================================
1959+
// Rho0 (770) -> pi pi -> K pi
1960+
// =====================================================
1961+
if (motherPDG == PDG_t::kRho770_0 && pdg1 == PDG_t::kPiPlus && pdg2 == PDG_t::kPiPlus) {
19651962

1966-
// ---- permutation 1: track1 -> K
1963+
// track 1 -> K
19671964
ROOT::Math::PxPyPzMVector p1K(track1.px(), track1.py(), track1.pz(), massKa);
19681965
ROOT::Math::PxPyPzMVector p2Pi(track2.px(), track2.py(), track2.pz(), massPi);
1969-
19701966
auto fake1 = p1K + p2Pi;
19711967

19721968
if (fake1.Rapidity() > selectionConfig.motherRapidityMin && fake1.Rapidity() < selectionConfig.motherRapidityMax)
1973-
hMC.fill(HIST("Reflections/hReflection"), fake1.Pt(), centrality, fake1.M());
1969+
hMC.fill(HIST("Reflections/hRhoToKpi"), fake1.Pt(), centrality, fake1.M());
19741970

1975-
// ---- permutation 2: track2 -> K
1971+
// track 2 -> K
19761972
ROOT::Math::PxPyPzMVector p1Pi(track1.px(), track1.py(), track1.pz(), massPi);
19771973
ROOT::Math::PxPyPzMVector p2K(track2.px(), track2.py(), track2.pz(), massKa);
1978-
19791974
auto fake2 = p1Pi + p2K;
19801975

19811976
if (fake2.Rapidity() > selectionConfig.motherRapidityMin && fake2.Rapidity() < selectionConfig.motherRapidityMax)
1982-
hMC.fill(HIST("Reflections/hReflection"), fake2.Pt(), centrality, fake2.M());
1983-
1984-
} else if (reflectionType == kOmega) { // Omega (782) -> pi pi (pi0) -> K pi
1985-
if (motherPDG != o2::constants::physics::kOmega)
1986-
continue;
1977+
hMC.fill(HIST("Reflections/hRhoToKpi"), fake2.Pt(), centrality, fake2.M());
1978+
}
19871979

1988-
if (std::abs(mc1.pdgCode()) != PDG_t::kPiPlus ||
1989-
std::abs(mc2.pdgCode()) != PDG_t::kPiPlus)
1990-
continue;
1980+
// =====================================================
1981+
// Omega (782) -> pi pi(pi0) -> K pi
1982+
// =====================================================
1983+
if (motherPDG == o2::constants::physics::kOmega && pdg1 == PDG_t::kPiPlus && pdg2 == PDG_t::kPiPlus) {
19911984

1992-
// same two permutations as rho
1985+
// track 1 -> K
19931986
ROOT::Math::PxPyPzMVector p1K(track1.px(), track1.py(), track1.pz(), massKa);
19941987
ROOT::Math::PxPyPzMVector p2Pi(track2.px(), track2.py(), track2.pz(), massPi);
1995-
19961988
auto fake1 = p1K + p2Pi;
19971989

19981990
if (fake1.Rapidity() > selectionConfig.motherRapidityMin && fake1.Rapidity() < selectionConfig.motherRapidityMax)
1999-
hMC.fill(HIST("Reflections/hReflection"), fake1.Pt(), centrality, fake1.M());
1991+
hMC.fill(HIST("Reflections/hOmegaToKpi"), fake1.Pt(), centrality, fake1.M());
20001992

1993+
// track 2 -> K
20011994
ROOT::Math::PxPyPzMVector p1Pi(track1.px(), track1.py(), track1.pz(), massPi);
20021995
ROOT::Math::PxPyPzMVector p2K(track2.px(), track2.py(), track2.pz(), massKa);
2003-
20041996
auto fake2 = p1Pi + p2K;
20051997

20061998
if (fake2.Rapidity() > selectionConfig.motherRapidityMin && fake2.Rapidity() < selectionConfig.motherRapidityMax)
2007-
hMC.fill(HIST("Reflections/hReflection"), fake2.Pt(), centrality, fake2.M());
2008-
2009-
} else if (reflectionType == kPhi) { // Phi (1020) -> K K -> K pi
2010-
if (motherPDG != o2::constants::physics::kPhi)
2011-
continue;
1999+
hMC.fill(HIST("Reflections/hOmegaToKpi"), fake2.Pt(), centrality, fake2.M());
2000+
}
20122001

2013-
if (std::abs(mc1.pdgCode()) != PDG_t::kKPlus || std::abs(mc2.pdgCode()) != PDG_t::kKPlus)
2014-
continue;
2002+
// =====================================================
2003+
// Phi (1020) -> KK -> K pi
2004+
// =====================================================
2005+
if (motherPDG == o2::constants::physics::kPhi && pdg1 == PDG_t::kKPlus && pdg2 == PDG_t::kKPlus) {
20152006

2016-
// ---- permutation 1: track1 -> π
2007+
// track 1 -> pi
20172008
ROOT::Math::PxPyPzMVector p1Pi(track1.px(), track1.py(), track1.pz(), massPi);
20182009
ROOT::Math::PxPyPzMVector p2K(track2.px(), track2.py(), track2.pz(), massKa);
2019-
20202010
auto fake1 = p1Pi + p2K;
20212011

20222012
if (fake1.Rapidity() > selectionConfig.motherRapidityMin && fake1.Rapidity() < selectionConfig.motherRapidityMax)
2023-
hMC.fill(HIST("Reflections/hReflection"), fake1.Pt(), centrality, fake1.M());
2013+
hMC.fill(HIST("Reflections/hPhiToKpi"), fake1.Pt(), centrality, fake1.M());
20242014

2025-
// ---- permutation 2: track2 -> π
2015+
// track 2 -> pi
20262016
ROOT::Math::PxPyPzMVector p1K(track1.px(), track1.py(), track1.pz(), massKa);
20272017
ROOT::Math::PxPyPzMVector p2Pi(track2.px(), track2.py(), track2.pz(), massPi);
2028-
20292018
auto fake2 = p1K + p2Pi;
20302019

20312020
if (fake2.Rapidity() > selectionConfig.motherRapidityMin && fake2.Rapidity() < selectionConfig.motherRapidityMax)
2032-
hMC.fill(HIST("Reflections/hReflection"), fake2.Pt(), centrality, fake2.M());
2033-
} else if (reflectionType == kKstar) { // K*0 (892) Self-Reflection (swap)
2034-
2035-
if (motherPDG != o2::constants::physics::kK0Star892)
2036-
continue;
2021+
hMC.fill(HIST("Reflections/hPhiToKpi"), fake2.Pt(), centrality, fake2.M());
2022+
}
20372023

2038-
if (!((std::abs(mc1.pdgCode()) == PDG_t::kPiPlus && std::abs(mc2.pdgCode()) == PDG_t::kKPlus) || (std::abs(mc1.pdgCode()) == PDG_t::kKPlus && std::abs(mc2.pdgCode()) == PDG_t::kPiPlus)))
2039-
continue;
2024+
// =====================================================
2025+
// K*0 Self-reflection
2026+
// =====================================================
2027+
if (motherPDG == o2::constants::physics::kK0Star892 && ((pdg1 == PDG_t::kPiPlus && pdg2 == PDG_t::kKPlus) || (pdg1 == PDG_t::kKPlus && pdg2 == PDG_t::kPiPlus))) {
20402028

2041-
ROOT::Math::PxPyPzMVector p1Swap(track1.px(), track1.py(), track1.pz(), std::abs(mc1.pdgCode()) == PDG_t::kKPlus ? massPi : massKa);
2029+
ROOT::Math::PxPyPzMVector p1Swap(track1.px(), track1.py(), track1.pz(), pdg1 == PDG_t::kKPlus ? massPi : massKa);
20422030

2043-
ROOT::Math::PxPyPzMVector p2Swap(track2.px(), track2.py(), track2.pz(), std::abs(mc2.pdgCode()) == PDG_t::kKPlus ? massPi : massKa);
2031+
ROOT::Math::PxPyPzMVector p2Swap(track2.px(), track2.py(), track2.pz(), pdg2 == PDG_t::kKPlus ? massPi : massKa);
20442032

20452033
auto fake = p1Swap + p2Swap;
20462034

20472035
if (fake.Rapidity() > selectionConfig.motherRapidityMin && fake.Rapidity() < selectionConfig.motherRapidityMax)
2048-
hMC.fill(HIST("Reflections/hReflection"), fake.Pt(), centrality, fake.M());
2036+
hMC.fill(HIST("Reflections/hKstarSelf"), fake.Pt(), centrality, fake.M());
20492037
}
20502038
}
20512039
}
2052-
PROCESS_SWITCH(Kstar892LightIon, processRecReflection, "Process particle reflection", false);
2040+
PROCESS_SWITCH(Kstar892LightIon, processRecReflection, "Process reconstructed reflections", false);
20532041

20542042
Service<o2::framework::O2DatabasePDG> pdg;
20552043

0 commit comments

Comments
 (0)