@@ -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