From 4eeb1980d30624daf17f2cda949cacdf505d645a Mon Sep 17 00:00:00 2001 From: lorber98 <95907752+lorber98@users.noreply.github.com> Date: Thu, 22 Jan 2026 18:56:46 +0100 Subject: [PATCH 1/5] Add ConfigurableGroups for better readability --- .../Strangeness/strangenessInJetsIons.cxx | 320 +++++++++--------- 1 file changed, 163 insertions(+), 157 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx index 6981b638514..fb1f339c2f0 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx @@ -134,54 +134,60 @@ struct StrangenessInJetsIons { Configurable requireGoodZvtxFT0vsPV{"requireGoodZvtxFT0vsPV", true, "Require kIsGoodZvtxFT0vsPV selection"}; // Track analysis parameters - Configurable minITSnCls{"minITSnCls", 4, "Minimum number of ITS clusters"}; - Configurable minNCrossedRowsTPC{"minNCrossedRowsTPC", 70, "Minimum number of TPC crossed rows"}; - Configurable maxChi2TPC{"maxChi2TPC", 4.0f, "Maximum chi2 per cluster TPC"}; - Configurable etaMin{"etaMin", -0.8f, "Minimum eta"}; - Configurable etaMax{"etaMax", +0.8f, "Maximum eta"}; - Configurable ptMinV0Proton{"ptMinV0Proton", 0.0f, "Minimum pt of protons from V0"}; - Configurable ptMaxV0Proton{"ptMaxV0Proton", 100.0f, "Maximum pt of protons from V0"}; - Configurable ptMinV0Pion{"ptMinV0Pion", 0.0f, "Minimum pt of pions from V0"}; - Configurable ptMaxV0Pion{"ptMaxV0Pion", 100.0f, "Maximum pt of pions from V0"}; - Configurable ptMinK0Pion{"ptMinK0Pion", 0.0f, "Minimum pt of pions from K0"}; - Configurable ptMaxK0Pion{"ptMaxK0Pion", 100.0f, "Maximum pt of pions from K0"}; - Configurable nsigmaTPCmin{"nsigmaTPCmin", -3.0f, "Minimum nsigma TPC"}; - Configurable nsigmaTPCmax{"nsigmaTPCmax", +3.0f, "Maximum nsigma TPC"}; - Configurable nsigmaTOFmin{"nsigmaTOFmin", -3.0f, "Minimum nsigma TOF"}; - Configurable nsigmaTOFmax{"nsigmaTOFmax", +3.0f, "Maximum nsigma TOF"}; - Configurable requireITS{"requireITS", false, "Require ITS hit"}; - Configurable requireTOF{"requireTOF", false, "Require TOF hit"}; + struct: ConfigurableGroup { + Configurable minITSnCls{"minITSnCls", 4, "Minimum number of ITS clusters"}; + Configurable minNCrossedRowsTPC{"minNCrossedRowsTPC", 70, "Minimum number of TPC crossed rows"}; + Configurable maxChi2TPC{"maxChi2TPC", 4.0f, "Maximum chi2 per cluster TPC"}; + Configurable etaMin{"etaMin", -0.8f, "Minimum eta"}; + Configurable etaMax{"etaMax", +0.8f, "Maximum eta"}; + Configurable ptMinV0Proton{"ptMinV0Proton", 0.0f, "Minimum pt of protons from V0"}; + Configurable ptMaxV0Proton{"ptMaxV0Proton", 100.0f, "Maximum pt of protons from V0"}; + Configurable ptMinV0Pion{"ptMinV0Pion", 0.0f, "Minimum pt of pions from V0"}; + Configurable ptMaxV0Pion{"ptMaxV0Pion", 100.0f, "Maximum pt of pions from V0"}; + Configurable ptMinK0Pion{"ptMinK0Pion", 0.0f, "Minimum pt of pions from K0"}; + Configurable ptMaxK0Pion{"ptMaxK0Pion", 100.0f, "Maximum pt of pions from K0"}; + Configurable nsigmaTPCmin{"nsigmaTPCmin", -3.0f, "Minimum nsigma TPC"}; + Configurable nsigmaTPCmax{"nsigmaTPCmax", +3.0f, "Maximum nsigma TPC"}; + Configurable nsigmaTOFmin{"nsigmaTOFmin", -3.0f, "Minimum nsigma TOF"}; + Configurable nsigmaTOFmax{"nsigmaTOFmax", +3.0f, "Maximum nsigma TOF"}; + Configurable requireITS{"requireITS", false, "Require ITS hit"}; + Configurable requireTOF{"requireTOF", false, "Require TOF hit"}; + } configTracks; // V0 analysis parameters - Configurable minimumV0Radius{"minimumV0Radius", 1.2f, "Minimum V0 Radius (cm)"}; - Configurable maximumV0Radius{"maximumV0Radius", 40.0f, "Maximum V0 Radius (cm)"}; - Configurable v0cospaMin{"v0cospaMin", 0.995f, "Minimum V0 cosine of pointing angle"}; - Configurable dcaV0DaughtersMax{"dcaV0DaughtersMax", 1.0f, "Maximum DCA between V0 daughters"}; - Configurable requireV0type{"requireV0type", true, "Require V0 type Cut"}; - Configurable v0type{"v0type", 1, "0: solely for cascades (does not pass standard V0 cuts), 1: standard 2, 3: photon-like with TPC-only use. Regular analysis should always use type 1"}; - // K0S parameters - Configurable dcaNegToPVminK0s{"dcaNegToPVminK0s", 0.1f, "Minimum DCA of negative track to primary vertex in K0S decays (cm)"}; - Configurable dcaPosToPVminK0s{"dcaPosToPVminK0s", 0.1f, "Minimum DCA of positive track to primary vertex in K0S decays (cm)"}; - Configurable requireArmenterosCut{"requireArmenterosCut", true, "Require Armenteros Cut"}; - Configurable paramArmenterosCut{"paramArmenterosCut", 0.2f, "Parameter Armenteros Cut (K0S only). This parameters multiplies alphaArm (Check if: qtarm >= this * |alphaArm|)"}; - Configurable ctauK0s{"ctauK0s", 20.0f, "C tau K0S (cm)"}; - // Lambda/anti-Lambda paramaters - Configurable dcaProtonToPVmin{"dcaProtonToPVmin", 0.05f, "Minimum DCA of proton/anti-proton track to primary vertex in Lambda/anti-Lambda decays (cm)"}; - Configurable dcaPionToPVmin{"dcaPionToPVmin", 0.2f, "Minimum DCA of pion-/pion+ track to primary vertex in Lambda/anti-Lambda decays (cm)"}; - Configurable ctauLambda{"ctauLambda", 30.0f, "C tau Lambda (cm)"}; + struct: ConfigurableGroup { + Configurable minimumV0Radius{"minimumV0Radius", 1.2f, "Minimum V0 Radius (cm)"}; + Configurable maximumV0Radius{"maximumV0Radius", 40.0f, "Maximum V0 Radius (cm)"}; + Configurable v0cospaMin{"v0cospaMin", 0.995f, "Minimum V0 cosine of pointing angle"}; + Configurable dcaV0DaughtersMax{"dcaV0DaughtersMax", 1.0f, "Maximum DCA between V0 daughters"}; + Configurable requireV0type{"requireV0type", true, "Require V0 type Cut"}; + Configurable v0type{"v0type", 1, "0: solely for cascades (does not pass standard V0 cuts), 1: standard 2, 3: photon-like with TPC-only use. Regular analysis should always use type 1"}; + // K0S parameters + Configurable dcaNegToPVminK0s{"dcaNegToPVminK0s", 0.1f, "Minimum DCA of negative track to primary vertex in K0S decays (cm)"}; + Configurable dcaPosToPVminK0s{"dcaPosToPVminK0s", 0.1f, "Minimum DCA of positive track to primary vertex in K0S decays (cm)"}; + Configurable requireArmenterosCut{"requireArmenterosCut", true, "Require Armenteros Cut"}; + Configurable paramArmenterosCut{"paramArmenterosCut", 0.2f, "Parameter Armenteros Cut (K0S only). This parameters multiplies alphaArm (Check if: qtarm >= this * |alphaArm|)"}; + Configurable ctauK0s{"ctauK0s", 20.0f, "C tau K0S (cm)"}; + // Lambda/anti-Lambda paramaters + Configurable dcaProtonToPVmin{"dcaProtonToPVmin", 0.05f, "Minimum DCA of proton/anti-proton track to primary vertex in Lambda/anti-Lambda decays (cm)"}; + Configurable dcaPionToPVmin{"dcaPionToPVmin", 0.2f, "Minimum DCA of pion-/pion+ track to primary vertex in Lambda/anti-Lambda decays (cm)"}; + Configurable ctauLambda{"ctauLambda", 30.0f, "C tau Lambda (cm)"}; + } configV0; // Cascade analysis parameters - Configurable minimumCascRadius{"minimumCascRadius", 0.1f, "Minimum cascade radius"}; - Configurable maximumCascRadius{"maximumCascRadius", 40.0f, "Maximum cascade radius"}; - Configurable casccospaMin{"casccospaMin", 0.99f, "Minimum cascade cosine of pointing angle"}; - Configurable dcabachtopvMin{"dcabachtopvMin", 0.1f, "Minimum DCA of bachelor to primary vertex"}; - Configurable dcaV0topvMin{"dcaV0topvMin", 0.1f, "Minimum DCA of V0 to primary vertex"}; - Configurable dcaCascDaughtersMax{"dcaCascDaughtersMax", 0.5f, "Maximum DCA between daughters"}; - Configurable dcaNegToPVminV0{"dcaNegToPVminV0", 0.1f, "Minimum DCA of V0 negative track to primary vertex in cascades"}; - Configurable dcaPosToPVminV0{"dcaPosToPVminV0", 0.1f, "Minimum DCA of V0 positive track to primary vertex in cascades"}; - Configurable deltaMassXi{"deltaMassXi", 0.02f, "Mass window for Xi rejection"}; - Configurable deltaMassOmega{"deltaMassOmega", 0.02f, "Mass window for Omega rejection"}; - Configurable deltaMassLambda{"deltaMassLambda", 0.02f, "Mass window for Lambda inclusion"}; + struct: ConfigurableGroup { + Configurable minimumCascRadius{"minimumCascRadius", 0.1f, "Minimum cascade radius"}; + Configurable maximumCascRadius{"maximumCascRadius", 40.0f, "Maximum cascade radius"}; + Configurable casccospaMin{"casccospaMin", 0.99f, "Minimum cascade cosine of pointing angle"}; + Configurable dcabachtopvMin{"dcabachtopvMin", 0.1f, "Minimum DCA of bachelor to primary vertex"}; + Configurable dcaV0topvMin{"dcaV0topvMin", 0.1f, "Minimum DCA of V0 to primary vertex"}; + Configurable dcaCascDaughtersMax{"dcaCascDaughtersMax", 0.5f, "Maximum DCA between daughters"}; + Configurable dcaNegToPVminV0{"dcaNegToPVminV0", 0.1f, "Minimum DCA of V0 negative track to primary vertex in cascades"}; + Configurable dcaPosToPVminV0{"dcaPosToPVminV0", 0.1f, "Minimum DCA of V0 positive track to primary vertex in cascades"}; + Configurable deltaMassXi{"deltaMassXi", 0.02f, "Mass window for Xi rejection"}; + Configurable deltaMassOmega{"deltaMassOmega", 0.02f, "Mass window for Omega rejection"}; + Configurable deltaMassLambda{"deltaMassLambda", 0.02f, "Mass window for Lambda inclusion"}; + } configCasc; // Axes ConfigurableAxis multBinning{"multBinning", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, "Binning of the centrality axis"}; @@ -625,40 +631,40 @@ struct StrangenessInJetsIons { TVector3 pion(v0.pxneg(), v0.pyneg(), v0.pzneg()); // Selection on pt of Lambda daughters - if (proton.Pt() < ptMinV0Proton || proton.Pt() > ptMaxV0Proton) + if (proton.Pt() < configTracks.ptMinV0Proton || proton.Pt() > configTracks.ptMaxV0Proton) return false; - if (pion.Pt() < ptMinV0Pion || pion.Pt() > ptMaxV0Pion) + if (pion.Pt() < configTracks.ptMinV0Pion || pion.Pt() > configTracks.ptMaxV0Pion) return false; // V0 selections - if (v0.v0cosPA() < v0cospaMin) + if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < minimumV0Radius || v0.v0radius() > maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) return false; - if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > ctauLambda) + if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > configV0.ctauLambda) return false; - if (std::fabs(v0.dcaV0daughters()) > dcaV0DaughtersMax) + if (std::fabs(v0.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; - if (std::fabs(v0.dcapostopv()) < dcaProtonToPVmin) + if (std::fabs(v0.dcapostopv()) < configV0.dcaProtonToPVmin) return false; - if (std::fabs(v0.dcanegtopv()) < dcaPionToPVmin) + if (std::fabs(v0.dcanegtopv()) < configV0.dcaPionToPVmin) return false; - if (v0.v0Type() != v0type && requireV0type) { + if (v0.v0Type() != configV0.v0type && configV0.requireV0type) { registryQC.fill(HIST("V0_type"), v0.v0Type()); return false; } // PID selections (TPC): positive track = proton, negative track = pion - if (ptrack.tpcNSigmaPr() < nsigmaTPCmin || ptrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; - if (ntrack.tpcNSigmaPi() < nsigmaTPCmin || ntrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF): positive track = proton, negative track = pion - if (requireTOF) { - if (ptrack.tofNSigmaPr() < nsigmaTOFmin || ptrack.tofNSigmaPr() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ptrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; - if (ntrack.tofNSigmaPi() < nsigmaTOFmin || ntrack.tofNSigmaPi() > nsigmaTOFmax) + if (ntrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } return true; @@ -677,40 +683,40 @@ struct StrangenessInJetsIons { TVector3 proton(v0.pxneg(), v0.pyneg(), v0.pzneg()); // Selections on pt of Antilambda daughters - if (proton.Pt() < ptMinV0Proton || proton.Pt() > ptMaxV0Proton) + if (proton.Pt() < configTracks.ptMinV0Proton || proton.Pt() > configTracks.ptMaxV0Proton) return false; - if (pion.Pt() < ptMinV0Pion || pion.Pt() > ptMaxV0Pion) + if (pion.Pt() < configTracks.ptMinV0Pion || pion.Pt() > configTracks.ptMaxV0Pion) return false; // V0 selections - if (v0.v0cosPA() < v0cospaMin) + if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < minimumV0Radius || v0.v0radius() > maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) return false; - if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > ctauLambda) + if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > configV0.ctauLambda) return false; - if (std::fabs(v0.dcaV0daughters()) > dcaV0DaughtersMax) + if (std::fabs(v0.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; - if (std::fabs(v0.dcapostopv()) < dcaPionToPVmin) + if (std::fabs(v0.dcapostopv()) < configV0.dcaPionToPVmin) return false; - if (std::fabs(v0.dcanegtopv()) < dcaProtonToPVmin) + if (std::fabs(v0.dcanegtopv()) < configV0.dcaProtonToPVmin) return false; - if (v0.v0Type() != v0type && requireV0type) { + if (v0.v0Type() != configV0.v0type && configV0.requireV0type) { registryQC.fill(HIST("V0_type"), v0.v0Type()); return false; } // PID selections (TPC): negative track = proton, positive track = pion - if (ptrack.tpcNSigmaPi() < nsigmaTPCmin || ptrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; - if (ntrack.tpcNSigmaPr() < nsigmaTPCmin || ntrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF): negative track = proton, positive track = pion - if (requireTOF) { - if (ptrack.tofNSigmaPi() < nsigmaTOFmin || ptrack.tofNSigmaPi() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; - if (ntrack.tofNSigmaPr() < nsigmaTOFmin || ntrack.tofNSigmaPr() > nsigmaTOFmax) + if (ntrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; } return true; @@ -729,45 +735,45 @@ struct StrangenessInJetsIons { TVector3 pionNeg(v0.pxneg(), v0.pyneg(), v0.pzneg()); // Selections on pt of K0s daughters - if (pionPos.Pt() < ptMinK0Pion || pionPos.Pt() > ptMaxK0Pion) + if (pionPos.Pt() < configTracks.ptMinK0Pion || pionPos.Pt() > configTracks.ptMaxK0Pion) return false; - if (pionNeg.Pt() < ptMinK0Pion || pionNeg.Pt() > ptMaxK0Pion) + if (pionNeg.Pt() < configTracks.ptMinK0Pion || pionNeg.Pt() > configTracks.ptMaxK0Pion) return false; // V0 selections - if (v0.v0cosPA() < v0cospaMin) + if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < minimumV0Radius || v0.v0radius() > maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) return false; - if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassK0Short > ctauK0s) + if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassK0Short > configV0.ctauK0s) return false; - if (std::fabs(v0.dcaV0daughters()) > dcaV0DaughtersMax) + if (std::fabs(v0.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; - if (std::fabs(v0.dcapostopv()) < dcaPosToPVminK0s) + if (std::fabs(v0.dcapostopv()) < configV0.dcaPosToPVminK0s) return false; - if (std::fabs(v0.dcanegtopv()) < dcaNegToPVminK0s) + if (std::fabs(v0.dcanegtopv()) < configV0.dcaNegToPVminK0s) return false; // Armenteros-Podolanski cut - if (v0.qtarm() < (paramArmenterosCut * std::abs(v0.alpha())) && (requireArmenterosCut)) + if (v0.qtarm() < (configV0.paramArmenterosCut * std::abs(v0.alpha())) && (configV0.requireArmenterosCut)) return false; - if (v0.v0Type() != v0type && requireV0type) { + if (v0.v0Type() != configV0.v0type && configV0.requireV0type) { registryQC.fill(HIST("V0_type"), v0.v0Type()); return false; } // PID selections (TPC) - if (ptrack.tpcNSigmaPi() < nsigmaTPCmin || ptrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; - if (ntrack.tpcNSigmaPi() < nsigmaTPCmin || ntrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (ptrack.tofNSigmaPi() < nsigmaTOFmin || ptrack.tofNSigmaPi() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; - if (ntrack.tofNSigmaPi() < nsigmaTOFmin || ntrack.tofNSigmaPi() > nsigmaTOFmax) + if (ntrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } return true; @@ -787,22 +793,22 @@ struct StrangenessInJetsIons { // Xi+ selection (Xi+ -> antiL + pi+) if (btrack.sign() > 0) { - if (ntrack.pt() < ptMinV0Proton || ntrack.pt() > ptMaxV0Proton) + if (ntrack.pt() < configTracks.ptMinV0Proton || ntrack.pt() > configTracks.ptMaxV0Proton) return false; - if (ptrack.pt() < ptMinV0Pion || ptrack.pt() > ptMaxV0Pion) + if (ptrack.pt() < configTracks.ptMinV0Pion || ptrack.pt() > configTracks.ptMaxV0Pion) return false; // PID selections (TPC) - if (ntrack.tpcNSigmaPr() < nsigmaTPCmin || ntrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; - if (ptrack.tpcNSigmaPi() < nsigmaTPCmin || ptrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (ntrack.tofNSigmaPr() < nsigmaTOFmin || ntrack.tofNSigmaPr() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ntrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; - if (ptrack.tofNSigmaPi() < nsigmaTOFmin || ptrack.tofNSigmaPi() > nsigmaTOFmax) + if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } @@ -812,28 +818,28 @@ struct StrangenessInJetsIons { pProton.SetCoordinates(ntrack.px(), ntrack.py(), ntrack.pz(), o2::constants::physics::MassProton); pPion.SetCoordinates(ptrack.px(), ptrack.py(), ptrack.pz(), o2::constants::physics::MassPionCharged); double mLambda = (pProton + pPion).M(); - if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > deltaMassLambda) + if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > configCasc.deltaMassLambda) return false; } // Xi- selection (Xi- -> L + pi-) if (btrack.sign() < 0) { - if (ptrack.pt() < ptMinV0Proton || ptrack.pt() > ptMaxV0Proton) + if (ptrack.pt() < configTracks.ptMinV0Proton || ptrack.pt() > configTracks.ptMaxV0Proton) return false; - if (ntrack.pt() < ptMinV0Pion || ntrack.pt() > ptMaxV0Pion) + if (ntrack.pt() < configTracks.ptMinV0Pion || ntrack.pt() > configTracks.ptMaxV0Pion) return false; // PID selections (TPC) - if (ptrack.tpcNSigmaPr() < nsigmaTPCmin || ptrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; - if (ntrack.tpcNSigmaPi() < nsigmaTPCmin || ntrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (ptrack.tofNSigmaPr() < nsigmaTOFmin || ptrack.tofNSigmaPr() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ptrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; - if (ntrack.tofNSigmaPi() < nsigmaTOFmin || ntrack.tofNSigmaPi() > nsigmaTOFmax) + if (ntrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } @@ -843,46 +849,46 @@ struct StrangenessInJetsIons { pProton.SetCoordinates(ptrack.px(), ptrack.py(), ptrack.pz(), o2::constants::physics::MassProton); pPion.SetCoordinates(ntrack.px(), ntrack.py(), ntrack.pz(), o2::constants::physics::MassPionCharged); const double mLambda = (pProton + pPion).M(); - if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > deltaMassLambda) + if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > configCasc.deltaMassLambda) return false; } // V0 selections - if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < v0cospaMin) + if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < configV0.v0cospaMin) return false; - if (casc.v0radius() < minimumV0Radius || casc.v0radius() > maximumV0Radius) + if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) return false; - if (std::fabs(casc.dcaV0daughters()) > dcaV0DaughtersMax) + if (std::fabs(casc.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; - if (std::fabs(casc.dcapostopv()) < dcaPosToPVminV0) + if (std::fabs(casc.dcapostopv()) < configCasc.dcaPosToPVminV0) return false; - if (std::fabs(casc.dcanegtopv()) < dcaNegToPVminV0) + if (std::fabs(casc.dcanegtopv()) < configCasc.dcaNegToPVminV0) return false; // Cascade selections - if (casc.cascradius() < minimumCascRadius || casc.cascradius() > maximumCascRadius) + if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) return false; - if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < casccospaMin) + if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < configCasc.casccospaMin) return false; - if (std::fabs(casc.dcabachtopv()) < dcabachtopvMin) + if (std::fabs(casc.dcabachtopv()) < configCasc.dcabachtopvMin) return false; - if (std::fabs(casc.dcav0topv(coll.posX(), coll.posY(), coll.posZ())) < dcaV0topvMin) + if (std::fabs(casc.dcav0topv(coll.posX(), coll.posY(), coll.posZ())) < configCasc.dcaV0topvMin) return false; - if (std::fabs(casc.dcacascdaughters()) > dcaCascDaughtersMax) + if (std::fabs(casc.dcacascdaughters()) > configCasc.dcaCascDaughtersMax) return false; // PID selection on bachelor - if (btrack.tpcNSigmaPi() < nsigmaTPCmin || btrack.tpcNSigmaPi() > nsigmaTPCmax) + if (btrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || btrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (btrack.tofNSigmaPi() < nsigmaTOFmin || btrack.tofNSigmaPi() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (btrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || btrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } // Reject candidates compatible with Omega - if (std::fabs(casc.mOmega() - o2::constants::physics::MassOmegaMinus) < deltaMassOmega) + if (std::fabs(casc.mOmega() - o2::constants::physics::MassOmegaMinus) < configCasc.deltaMassOmega) return false; return true; } @@ -901,22 +907,22 @@ struct StrangenessInJetsIons { // Omega+ selection (Omega+ -> antiL + K+) if (btrack.sign() > 0) { - if (ntrack.pt() < ptMinV0Proton || ntrack.pt() > ptMaxV0Proton) + if (ntrack.pt() < configTracks.ptMinV0Proton || ntrack.pt() > configTracks.ptMaxV0Proton) return false; - if (ptrack.pt() < ptMinV0Pion || ptrack.pt() > ptMaxV0Pion) + if (ptrack.pt() < configTracks.ptMinV0Pion || ptrack.pt() > configTracks.ptMaxV0Pion) return false; // PID selections (TPC) - if (ntrack.tpcNSigmaPr() < nsigmaTPCmin || ntrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; - if (ptrack.tpcNSigmaPi() < nsigmaTPCmin || ptrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (ntrack.tofNSigmaPr() < nsigmaTOFmin || ntrack.tofNSigmaPr() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ntrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; - if (ptrack.tofNSigmaPi() < nsigmaTOFmin || ptrack.tofNSigmaPi() > nsigmaTOFmax) + if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } @@ -926,28 +932,28 @@ struct StrangenessInJetsIons { pProton.SetCoordinates(ntrack.px(), ntrack.py(), ntrack.pz(), o2::constants::physics::MassProton); pPion.SetCoordinates(ptrack.px(), ptrack.py(), ptrack.pz(), o2::constants::physics::MassPionCharged); double mLambda = (pProton + pPion).M(); - if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > deltaMassLambda) + if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > configCasc.deltaMassLambda) return false; } // Omega- selection (Omega- -> L + K-) if (btrack.sign() < 0) { - if (ptrack.pt() < ptMinV0Proton || ptrack.pt() > ptMaxV0Proton) + if (ptrack.pt() < configTracks.ptMinV0Proton || ptrack.pt() > configTracks.ptMaxV0Proton) return false; - if (ntrack.pt() < ptMinV0Pion || ntrack.pt() > ptMaxV0Pion) + if (ntrack.pt() < configTracks.ptMinV0Pion || ntrack.pt() > configTracks.ptMaxV0Pion) return false; // PID selections (TPC) - if (ptrack.tpcNSigmaPr() < nsigmaTPCmin || ptrack.tpcNSigmaPr() > nsigmaTPCmax) + if (ptrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ptrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax) return false; - if (ntrack.tpcNSigmaPi() < nsigmaTPCmin || ntrack.tpcNSigmaPi() > nsigmaTPCmax) + if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (ptrack.tofNSigmaPr() < nsigmaTOFmin || ptrack.tofNSigmaPr() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (ptrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPr() > configTracks.nsigmaTOFmax) return false; - if (ntrack.tofNSigmaPi() < nsigmaTOFmin || ntrack.tofNSigmaPi() > nsigmaTOFmax) + if (ntrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ntrack.tofNSigmaPi() > configTracks.nsigmaTOFmax) return false; } @@ -957,46 +963,46 @@ struct StrangenessInJetsIons { pProton.SetCoordinates(ptrack.px(), ptrack.py(), ptrack.pz(), o2::constants::physics::MassProton); pPion.SetCoordinates(ntrack.px(), ntrack.py(), ntrack.pz(), o2::constants::physics::MassPionCharged); double mLambda = (pProton + pPion).M(); - if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > deltaMassLambda) + if (std::fabs(mLambda - o2::constants::physics::MassLambda0) > configCasc.deltaMassLambda) return false; } // V0 selections - if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < v0cospaMin) + if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < configV0.v0cospaMin) return false; - if (casc.v0radius() < minimumV0Radius || casc.v0radius() > maximumV0Radius) + if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) return false; - if (std::fabs(casc.dcaV0daughters()) > dcaV0DaughtersMax) + if (std::fabs(casc.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; - if (std::fabs(casc.dcapostopv()) < dcaPosToPVminV0) + if (std::fabs(casc.dcapostopv()) < configCasc.dcaPosToPVminV0) return false; - if (std::fabs(casc.dcanegtopv()) < dcaNegToPVminV0) + if (std::fabs(casc.dcanegtopv()) < configCasc.dcaNegToPVminV0) return false; // Cascade selections - if (casc.cascradius() < minimumCascRadius || casc.cascradius() > maximumCascRadius) + if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) return false; - if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < casccospaMin) + if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < configCasc.casccospaMin) return false; - if (std::fabs(casc.dcabachtopv()) < dcabachtopvMin) + if (std::fabs(casc.dcabachtopv()) < configCasc.dcabachtopvMin) return false; - if (std::fabs(casc.dcav0topv(coll.posX(), coll.posY(), coll.posZ())) < dcaV0topvMin) + if (std::fabs(casc.dcav0topv(coll.posX(), coll.posY(), coll.posZ())) < configCasc.dcaV0topvMin) return false; - if (std::fabs(casc.dcacascdaughters()) > dcaCascDaughtersMax) + if (std::fabs(casc.dcacascdaughters()) > configCasc.dcaCascDaughtersMax) return false; // PID selection on bachelor - if (btrack.tpcNSigmaKa() < nsigmaTPCmin || btrack.tpcNSigmaKa() > nsigmaTPCmax) + if (btrack.tpcNSigmaKa() < configTracks.nsigmaTPCmin || btrack.tpcNSigmaKa() > configTracks.nsigmaTPCmax) return false; // PID selections (TOF) - if (requireTOF) { - if (btrack.tofNSigmaKa() < nsigmaTOFmin || btrack.tofNSigmaKa() > nsigmaTOFmax) + if (configTracks.requireTOF) { + if (btrack.tofNSigmaKa() < configTracks.nsigmaTOFmin || btrack.tofNSigmaKa() > configTracks.nsigmaTOFmax) return false; } // Reject candidates compatible with Xi - if (std::fabs(casc.mXi() - o2::constants::physics::MassXiMinus) < deltaMassXi) + if (std::fabs(casc.mXi() - o2::constants::physics::MassXiMinus) < configCasc.deltaMassXi) return false; return true; } @@ -1005,19 +1011,19 @@ struct StrangenessInJetsIons { template bool passedSingleTrackSelection(const Track& track) { - if (requireITS && (!track.hasITS())) + if (configTracks.requireITS && (!track.hasITS())) return false; - if (requireITS && track.itsNCls() < minITSnCls) + if (configTracks.requireITS && track.itsNCls() < configTracks.minITSnCls) return false; if (!track.hasTPC()) return false; - if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC) + if (track.tpcNClsCrossedRows() < configTracks.minNCrossedRowsTPC) return false; - if (track.tpcChi2NCl() > maxChi2TPC) + if (track.tpcChi2NCl() > configTracks.maxChi2TPC) return false; - if (track.eta() < etaMin || track.eta() > etaMax) + if (track.eta() < configTracks.etaMin || track.eta() > configTracks.etaMax) return false; - if (requireTOF && (!track.hasTOF())) + if (configTracks.requireTOF && (!track.hasTOF())) return false; return true; } @@ -1126,7 +1132,7 @@ struct StrangenessInJetsIons { for (const auto& jet : jets) { // Jet must be fully contained in the acceptance - if ((std::fabs(jet.eta()) + rJet) > (etaMax - deltaEtaEdge)) + if ((std::fabs(jet.eta()) + rJet) > (configTracks.etaMax - deltaEtaEdge)) continue; // Jet pt must be larger than threshold @@ -1421,7 +1427,7 @@ struct StrangenessInJetsIons { continue; double minPtParticle = 0.1; - if (particle.eta() < etaMin || particle.eta() > etaMax || particle.pt() < minPtParticle) + if (particle.eta() < configTracks.etaMin || particle.eta() > configTracks.etaMax || particle.pt() < minPtParticle) continue; // Build 4-momentum assuming charged pion mass @@ -1448,7 +1454,7 @@ struct StrangenessInJetsIons { for (const auto& jet : jets) { // Jet must be fully contained in acceptance - if ((std::fabs(jet.eta()) + rJet) > (etaMax - deltaEtaEdge)) + if ((std::fabs(jet.eta()) + rJet) > (configTracks.etaMax - deltaEtaEdge)) continue; // Subtract background energy from jet @@ -1732,7 +1738,7 @@ struct StrangenessInJetsIons { for (const auto& jet : jets) { // jet must be fully contained in the acceptance - if ((std::fabs(jet.eta()) + rJet) > (etaMax - deltaEtaEdge)) + if ((std::fabs(jet.eta()) + rJet) > (configTracks.etaMax - deltaEtaEdge)) continue; // jet pt must be larger than threshold From e8bcd3647a1eeaec5a44f93f8e15e9f4b4fa99ca Mon Sep 17 00:00:00 2001 From: lorber98 <95907752+lorber98@users.noreply.github.com> Date: Sat, 24 Jan 2026 11:17:22 +0100 Subject: [PATCH 2/5] Remove max radius cut for compatibility with other OO analyses --- .../Strangeness/strangenessInJetsIons.cxx | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx index fb1f339c2f0..5b9085e88cc 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx @@ -134,7 +134,7 @@ struct StrangenessInJetsIons { Configurable requireGoodZvtxFT0vsPV{"requireGoodZvtxFT0vsPV", true, "Require kIsGoodZvtxFT0vsPV selection"}; // Track analysis parameters - struct: ConfigurableGroup { + struct : ConfigurableGroup { Configurable minITSnCls{"minITSnCls", 4, "Minimum number of ITS clusters"}; Configurable minNCrossedRowsTPC{"minNCrossedRowsTPC", 70, "Minimum number of TPC crossed rows"}; Configurable maxChi2TPC{"maxChi2TPC", 4.0f, "Maximum chi2 per cluster TPC"}; @@ -155,9 +155,9 @@ struct StrangenessInJetsIons { } configTracks; // V0 analysis parameters - struct: ConfigurableGroup { + struct : ConfigurableGroup { Configurable minimumV0Radius{"minimumV0Radius", 1.2f, "Minimum V0 Radius (cm)"}; - Configurable maximumV0Radius{"maximumV0Radius", 40.0f, "Maximum V0 Radius (cm)"}; + // Configurable maximumV0Radius{"maximumV0Radius", 40.0f, "Maximum V0 Radius (cm)"}; Configurable v0cospaMin{"v0cospaMin", 0.995f, "Minimum V0 cosine of pointing angle"}; Configurable dcaV0DaughtersMax{"dcaV0DaughtersMax", 1.0f, "Maximum DCA between V0 daughters"}; Configurable requireV0type{"requireV0type", true, "Require V0 type Cut"}; @@ -175,9 +175,9 @@ struct StrangenessInJetsIons { } configV0; // Cascade analysis parameters - struct: ConfigurableGroup { + struct : ConfigurableGroup { Configurable minimumCascRadius{"minimumCascRadius", 0.1f, "Minimum cascade radius"}; - Configurable maximumCascRadius{"maximumCascRadius", 40.0f, "Maximum cascade radius"}; + // Configurable maximumCascRadius{"maximumCascRadius", 40.0f, "Maximum cascade radius"}; Configurable casccospaMin{"casccospaMin", 0.99f, "Minimum cascade cosine of pointing angle"}; Configurable dcabachtopvMin{"dcabachtopvMin", 0.1f, "Minimum DCA of bachelor to primary vertex"}; Configurable dcaV0topvMin{"dcaV0topvMin", 0.1f, "Minimum DCA of V0 to primary vertex"}; @@ -639,7 +639,8 @@ struct StrangenessInJetsIons { // V0 selections if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + // if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius) return false; if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > configV0.ctauLambda) return false; @@ -691,7 +692,8 @@ struct StrangenessInJetsIons { // V0 selections if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + // if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius) return false; if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassLambda0 > configV0.ctauLambda) return false; @@ -743,7 +745,8 @@ struct StrangenessInJetsIons { // V0 selections if (v0.v0cosPA() < configV0.v0cospaMin) return false; - if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + // if (v0.v0radius() < configV0.minimumV0Radius || v0.v0radius() > configV0.maximumV0Radius) + if (v0.v0radius() < configV0.minimumV0Radius) return false; if (v0.distovertotmom(vtxPos.X(), vtxPos.Y(), vtxPos.Z()) * o2::constants::physics::MassK0Short > configV0.ctauK0s) return false; @@ -856,7 +859,8 @@ struct StrangenessInJetsIons { // V0 selections if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < configV0.v0cospaMin) return false; - if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) + // if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) + if (casc.v0radius() < configV0.minimumV0Radius) return false; if (std::fabs(casc.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; @@ -866,7 +870,8 @@ struct StrangenessInJetsIons { return false; // Cascade selections - if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) + // if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) + if (casc.cascradius() < configCasc.minimumCascRadius) return false; if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < configCasc.casccospaMin) return false; @@ -970,7 +975,8 @@ struct StrangenessInJetsIons { // V0 selections if (casc.v0cosPA(coll.posX(), coll.posY(), coll.posZ()) < configV0.v0cospaMin) return false; - if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) + // if (casc.v0radius() < configV0.minimumV0Radius || casc.v0radius() > configV0.maximumV0Radius) + if (casc.v0radius() < configV0.minimumV0Radius) return false; if (std::fabs(casc.dcaV0daughters()) > configV0.dcaV0DaughtersMax) return false; @@ -980,7 +986,8 @@ struct StrangenessInJetsIons { return false; // Cascade selections - if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) + // if (casc.cascradius() < configCasc.minimumCascRadius || casc.cascradius() > configCasc.maximumCascRadius) + if (casc.cascradius() < configCasc.minimumCascRadius) return false; if (casc.casccosPA(coll.posX(), coll.posY(), coll.posZ()) < configCasc.casccospaMin) return false; From 6c1e9d3eab3e6770172e9a13b52ccc5dc2effef1 Mon Sep 17 00:00:00 2001 From: lorber98 <95907752+lorber98@users.noreply.github.com> Date: Sat, 24 Jan 2026 12:46:29 +0100 Subject: [PATCH 3/5] MC centrality with mcCentrality task Remove FT0C since, currently, there is a CCDB object only for FT0M --- .../Strangeness/strangenessInJetsIons.cxx | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx index 5b9085e88cc..fc05a27ab95 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx @@ -127,7 +127,7 @@ struct StrangenessInJetsIons { Configurable deltaEtaEdge{"deltaEtaEdge", 0.05, "eta gap from detector edge"}; Configurable cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Enable processing of skimmed data"}; Configurable triggerName{"triggerName", "fOmega", "Software trigger name"}; - Configurable centrEstimator{"centrEstimator", 0, "Select centrality estimator. Options: 0 = FT0C, 1 = FT0M"}; + // Configurable centrEstimator{"centrEstimator", 1, "Select centrality estimator. Options: 0 = FT0C, 1 = FT0M. CCDB objects available only for FT0M."}; // Event selection Configurable requireNoSameBunchPileup{"requireNoSameBunchPileup", true, "Require kNoSameBunchPileup selection"}; @@ -217,14 +217,14 @@ struct StrangenessInJetsIons { } // Define binning and axis specifications for multiplicity, eta, pT, PID, and invariant mass histograms - std::string multAxTitle; - if (centrEstimator == 0) { - multAxTitle = "FT0C percentile"; - } else if (centrEstimator == 1) { - multAxTitle = "FT0M percentile"; - } else { - LOG(fatal) << "Centrality estimator " << centrEstimator << " not available. Exit." << endl; - } + std::string multAxTitle = "FT0M percentile"; + // if (centrEstimator == 0) { + // multAxTitle = "FT0C percentile"; + // } else if (centrEstimator == 1) { + // multAxTitle = "FT0M percentile"; + // } else { + // LOG(fatal) << "Centrality estimator " << centrEstimator << " not available. Exit." << endl; + // } AxisSpec multAxis = {multBinning, multAxTitle}; const AxisSpec ptAxis{100, 0.0, 10.0, "#it{p}_{T} (GeV/#it{c})"}; @@ -1169,12 +1169,12 @@ struct StrangenessInJetsIons { registryData.fill(HIST("number_of_events_data"), 7.5); // Event multiplicity - float multiplicity; - if (centrEstimator == 0) { - multiplicity = collision.centFT0C(); - } else { - multiplicity = collision.centFT0M(); - } + float multiplicity = collision.centFT0M(); + // if (centrEstimator == 0) { + // multiplicity = collision.centFT0C(); + // } else { + // multiplicity = collision.centFT0M(); + // } // Fill event multiplicity registryData.fill(HIST("number_of_events_vsmultiplicity"), multiplicity); @@ -1356,8 +1356,7 @@ struct StrangenessInJetsIons { Preslice perMCCollision = o2::aod::mcparticle::mcCollisionId; Preslice perCollisionTrk = o2::aod::track::collisionId; - void processMCgenerated(aod::McCollisions const& collisions, - SimCollisions const& mcRecoCollisions, + void processMCgenerated(soa::Join const& collisions, aod::McParticles const& mcParticles) { // Define per-event particle containers @@ -1369,9 +1368,9 @@ struct StrangenessInJetsIons { fastjet::JetDefinition jetDef(fastjet::antikt_algorithm, rJet); fastjet::AreaDefinition areaDef(fastjet::active_area, fastjet::GhostedAreaSpec(1.0)); - // Loop over MC collisions + // Loop over MC collisions for (const auto& collision : collisions) { - // Get multiplicity from RECO MC + /* // Get multiplicity from RECO MC // Select RECO collisions for which "mcCollisionsID" = collision.globalIndex() float multiplicity = -999; @@ -1398,7 +1397,7 @@ struct StrangenessInJetsIons { } if (multiplicity == -999) - continue; + continue; */ // Clear containers at the start of the event loop fjParticles.clear(); @@ -1416,7 +1415,15 @@ struct StrangenessInJetsIons { registryMC.fill(HIST("number_of_events_mc_gen"), 1.5); // Multiplicity of generated event retrived from corresponding MC RECO collision - float genMultiplicity = multiplicity; + // float genMultiplicity = multiplicity; + + // Multiplicity of generated event + double genMultiplicity = collision.centFT0M();; + // if (centrEstimator == 0) { + // genMultiplicity = collision.centFT0C(); + // } else { + // genMultiplicity = collision.centFT0M(); + // } // MC particles per collision auto mcParticlesPerColl = mcParticles.sliceBy(perMCCollision, collision.globalIndex()); @@ -1653,6 +1660,7 @@ struct StrangenessInJetsIons { // Reconstructed MC events void processMCreconstructed(SimCollisions const& collisions, + soa::Join const&, DaughterTracksMC const& mcTracks, aod::V0Datas const& fullV0s, aod::CascDataExt const& Cascades, const aod::McParticles&) { @@ -1672,6 +1680,8 @@ struct StrangenessInJetsIons { continue; } + const auto& mcCollision = collision.mcCollision_as>(); + // Clear containers at the start of the event loop fjParticles.clear(); selectedJet.clear(); @@ -1706,12 +1716,7 @@ struct StrangenessInJetsIons { registryMC.fill(HIST("number_of_events_mc_rec"), 4.5); // Event multiplicity - float multiplicity; - if (centrEstimator == 0) { - multiplicity = collision.centFT0C(); - } else { - multiplicity = collision.centFT0M(); - } + float multiplicity = mcCollision.centFT0M(); // Number of V0 and cascades per collision auto v0sPerColl = fullV0s.sliceBy(perCollisionV0, collision.globalIndex()); From 62193a4c623a83c4df5915672ec200dc2e36e357 Mon Sep 17 00:00:00 2001 From: lorber98 <95907752+lorber98@users.noreply.github.com> Date: Mon, 26 Jan 2026 09:09:58 +0100 Subject: [PATCH 4/5] Minor fix: correct formatting --- PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx index fc05a27ab95..73baff7e385 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx @@ -1368,7 +1368,7 @@ struct StrangenessInJetsIons { fastjet::JetDefinition jetDef(fastjet::antikt_algorithm, rJet); fastjet::AreaDefinition areaDef(fastjet::active_area, fastjet::GhostedAreaSpec(1.0)); - // Loop over MC collisions + // Loop over MC collisions for (const auto& collision : collisions) { /* // Get multiplicity from RECO MC // Select RECO collisions for which "mcCollisionsID" = collision.globalIndex() @@ -1418,7 +1418,7 @@ struct StrangenessInJetsIons { // float genMultiplicity = multiplicity; // Multiplicity of generated event - double genMultiplicity = collision.centFT0M();; + double genMultiplicity = collision.centFT0M(); // if (centrEstimator == 0) { // genMultiplicity = collision.centFT0C(); // } else { From e8a294b3de45fd7b7698a00a68b23d0baf313ee8 Mon Sep 17 00:00:00 2001 From: lorber98 <95907752+lorber98@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:45:01 +0100 Subject: [PATCH 5/5] Restore centrEstimator configurable for FT0C and FT0M --- .../Strangeness/strangenessInJetsIons.cxx | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx index 73baff7e385..1b25bf8e442 100644 --- a/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx +++ b/PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx @@ -82,9 +82,7 @@ using SelCollisions = soa::Join; using SimCollisions = soa::Join; + aod::EvSels>; using DaughterTracks = soa::Join; @@ -127,7 +125,7 @@ struct StrangenessInJetsIons { Configurable deltaEtaEdge{"deltaEtaEdge", 0.05, "eta gap from detector edge"}; Configurable cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Enable processing of skimmed data"}; Configurable triggerName{"triggerName", "fOmega", "Software trigger name"}; - // Configurable centrEstimator{"centrEstimator", 1, "Select centrality estimator. Options: 0 = FT0C, 1 = FT0M. CCDB objects available only for FT0M."}; + Configurable centrEstimator{"centrEstimator", 1, "Select centrality estimator. Options: 0 = FT0C, 1 = FT0M. CCDB objects available only for FT0M."}; // Event selection Configurable requireNoSameBunchPileup{"requireNoSameBunchPileup", true, "Require kNoSameBunchPileup selection"}; @@ -217,14 +215,15 @@ struct StrangenessInJetsIons { } // Define binning and axis specifications for multiplicity, eta, pT, PID, and invariant mass histograms - std::string multAxTitle = "FT0M percentile"; - // if (centrEstimator == 0) { - // multAxTitle = "FT0C percentile"; - // } else if (centrEstimator == 1) { - // multAxTitle = "FT0M percentile"; - // } else { - // LOG(fatal) << "Centrality estimator " << centrEstimator << " not available. Exit." << endl; - // } + std::string multAxTitle; + if (centrEstimator == 0) { + multAxTitle = "FT0C percentile"; + LOG(warning) << "FT0C ccdb object not available yet." << endl; + } else if (centrEstimator == 1) { + multAxTitle = "FT0M percentile"; + } else { + LOG(fatal) << "Centrality estimator " << centrEstimator << " not available. Exit." << endl; + } AxisSpec multAxis = {multBinning, multAxTitle}; const AxisSpec ptAxis{100, 0.0, 10.0, "#it{p}_{T} (GeV/#it{c})"}; @@ -1169,12 +1168,12 @@ struct StrangenessInJetsIons { registryData.fill(HIST("number_of_events_data"), 7.5); // Event multiplicity - float multiplicity = collision.centFT0M(); - // if (centrEstimator == 0) { - // multiplicity = collision.centFT0C(); - // } else { - // multiplicity = collision.centFT0M(); - // } + float multiplicity; + if (centrEstimator == 0) { + multiplicity = collision.centFT0C(); + } else { + multiplicity = collision.centFT0M(); + } // Fill event multiplicity registryData.fill(HIST("number_of_events_vsmultiplicity"), multiplicity); @@ -1356,7 +1355,7 @@ struct StrangenessInJetsIons { Preslice perMCCollision = o2::aod::mcparticle::mcCollisionId; Preslice perCollisionTrk = o2::aod::track::collisionId; - void processMCgenerated(soa::Join const& collisions, + void processMCgenerated(soa::Join const& collisions, aod::McParticles const& mcParticles) { // Define per-event particle containers @@ -1418,12 +1417,12 @@ struct StrangenessInJetsIons { // float genMultiplicity = multiplicity; // Multiplicity of generated event - double genMultiplicity = collision.centFT0M(); - // if (centrEstimator == 0) { - // genMultiplicity = collision.centFT0C(); - // } else { - // genMultiplicity = collision.centFT0M(); - // } + float genMultiplicity; + if (centrEstimator == 0) { + genMultiplicity = collision.centFT0C(); + } else { + genMultiplicity = collision.centFT0M(); + } // MC particles per collision auto mcParticlesPerColl = mcParticles.sliceBy(perMCCollision, collision.globalIndex()); @@ -1660,7 +1659,7 @@ struct StrangenessInJetsIons { // Reconstructed MC events void processMCreconstructed(SimCollisions const& collisions, - soa::Join const&, + soa::Join const&, DaughterTracksMC const& mcTracks, aod::V0Datas const& fullV0s, aod::CascDataExt const& Cascades, const aod::McParticles&) { @@ -1680,7 +1679,7 @@ struct StrangenessInJetsIons { continue; } - const auto& mcCollision = collision.mcCollision_as>(); + const auto& mcCollision = collision.mcCollision_as>(); // Clear containers at the start of the event loop fjParticles.clear(); @@ -1716,8 +1715,12 @@ struct StrangenessInJetsIons { registryMC.fill(HIST("number_of_events_mc_rec"), 4.5); // Event multiplicity - float multiplicity = mcCollision.centFT0M(); - + float multiplicity; + if (centrEstimator == 0) { + multiplicity = mcCollision.centFT0C(); + } else { + multiplicity = mcCollision.centFT0M(); + } // Number of V0 and cascades per collision auto v0sPerColl = fullV0s.sliceBy(perCollisionV0, collision.globalIndex()); auto cascPerColl = Cascades.sliceBy(perCollisionCasc, collision.globalIndex());