From da480c012a514b95313f0976bc6b795d2de443ba Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Sat, 6 Jun 2026 22:52:36 +0200 Subject: [PATCH 1/2] [PWGLF] Add rapidity cut --- .../Nuspex/coalescenceTreeProducer.cxx | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx b/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx index 339fd71a655..b272d46190a 100644 --- a/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx +++ b/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx @@ -63,6 +63,8 @@ using namespace o2::framework::expressions; using namespace o2::constants::physics; using namespace o2::constants::math; +constexpr double massHypertriton = 2.99116; + // Lightweight particle container struct ReducedParticle { int64_t idPart = 0; @@ -84,8 +86,9 @@ struct CoalescenceTreeProducer { // Configurable analysis parameters Configurable zVtxMax{"zVtxMax", 10.f, "Maximum |z vertex| in cm"}; Configurable etaMax{"etaMax", 1.5f, "Maximum |eta| for generated particles"}; - Configurable pRhoMax{"pRhoMax", 1.0f, "Maximum Jacobi p_rho in GeV/c"}; - Configurable pLambdaMax{"pLambdaMax", 1.0f, "Maximum Jacobi p_lambda in GeV/c"}; + Configurable pRhoMax{"pRhoMax", 0.5f, "Maximum Jacobi p_rho in GeV/c"}; + Configurable pLambdaMax{"pLambdaMax", 0.5f, "Maximum Jacobi p_lambda in GeV/c"}; + Configurable yMax{"yMax", 0.5f, "Maximum rapidity"}; // Output tree storing bound-state candidates OutputObj treeBoundState{"treeBoundState", OutputObjHandlingPolicy::AnalysisObject}; @@ -173,7 +176,7 @@ struct CoalescenceTreeProducer { // Apply a momentum-space skim using Jacobi momenta in the candidate rest frame template - bool passThreeBodySkim(const ReducedPart& b1, const ReducedPart& b2, const ReducedPart& b3) + bool passThreeBodySkim(const ReducedPart& b1, const ReducedPart& b2, const ReducedPart& b3, double massBoundState) { // Constituent masses from PDG codes double m1 = massFromPdg(b1.pdgPart); @@ -189,10 +192,15 @@ struct CoalescenceTreeProducer { auto p4B3 = ROOT::Math::PxPyPzMVector{b3.pxPart, b3.pyPart, b3.pzPart, m3}; // Candidate four-momentum - auto candidate = p4B1 + p4B2 + p4B3; + ROOT::Math::PxPyPzMVector p4Candidate(p4B1.Px() + p4B2.Px() + p4B3.Px(), p4B1.Py() + p4B2.Py() + p4B3.Py(), p4B1.Pz() + p4B2.Pz() + p4B3.Pz(), massBoundState); + // Apply rapidity selection + if (std::abs(p4Candidate.Rapidity()) > yMax) { + return false; + } + // Boost to the candidate rest frame - auto betaCandidate = candidate.BoostToCM(); + auto betaCandidate = p4Candidate.BoostToCM(); ROOT::Math::Boost boostToRest(betaCandidate); // Constituent momenta in the candidate rest frame @@ -298,7 +306,7 @@ struct CoalescenceTreeProducer { // Skip mixed-sign combinations if (!isMatter && !isAntimatter) continue; - const bool passSkim = passThreeBodySkim(proton, neutron, lambda); + const bool passSkim = passThreeBodySkim(proton, neutron, lambda, massHypertriton); if (isMatter && passSkim) nCandidatesMatter++; @@ -332,7 +340,7 @@ struct CoalescenceTreeProducer { continue; // Apply momentum-space selection - const bool passSkim = passThreeBodySkim(proton, neutron, lambda); + const bool passSkim = passThreeBodySkim(proton, neutron, lambda, massHypertriton); if (!passSkim) continue; From 813be26996e4565f607e3c4bc61b0ca44a427dc4 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Sat, 6 Jun 2026 22:54:28 +0200 Subject: [PATCH 2/2] fix whitespace --- PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx b/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx index b272d46190a..f196e0ed8ff 100644 --- a/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx +++ b/PWGLF/TableProducer/Nuspex/coalescenceTreeProducer.cxx @@ -198,7 +198,7 @@ struct CoalescenceTreeProducer { if (std::abs(p4Candidate.Rapidity()) > yMax) { return false; } - + // Boost to the candidate rest frame auto betaCandidate = p4Candidate.BoostToCM(); ROOT::Math::Boost boostToRest(betaCandidate);