From 77656498b2ad2a6991c80f32429f860869d26d0b Mon Sep 17 00:00:00 2001 From: creetz16 Date: Fri, 10 Jul 2026 11:46:17 +0200 Subject: [PATCH 1/2] Update KF output tables in treeCreatorXicToXiPiPi: - Add missing trigger features to KF output trees - Remove unused variables and uptdate naming convention of chi2 deviations LF strangenessbuilder: store unconstrained V0 and cascade mass in cascKF outpuut table in all cases --- .../DataModel/CandidateReconstructionTables.h | 17 +++--- .../candidateCreatorXicToXiPiPi.cxx | 18 +++++- .../TableProducer/treeCreatorXicToXiPiPi.cxx | 58 ++++++++++--------- PWGLF/Utils/strangenessBuilderHelper.h | 23 +++++--- 4 files changed, 71 insertions(+), 45 deletions(-) diff --git a/PWGHF/DataModel/CandidateReconstructionTables.h b/PWGHF/DataModel/CandidateReconstructionTables.h index b4d60f34123..5fddf9d0f0d 100644 --- a/PWGHF/DataModel/CandidateReconstructionTables.h +++ b/PWGHF/DataModel/CandidateReconstructionTables.h @@ -1450,7 +1450,9 @@ DECLARE_SOA_COLUMN(CpaLambda, cpaLambda, float); DECLARE_SOA_COLUMN(CpaXYLambda, cpaXYLambda, float); DECLARE_SOA_COLUMN(CpaLambdaToXi, cpaLambdaToXi, float); DECLARE_SOA_COLUMN(CpaXYLambdaToXi, cpaXYLambdaToXi, float); +DECLARE_SOA_COLUMN(RadiusLambda, radiusLambda, float); DECLARE_SOA_COLUMN(PBachelorPi, pBachelorPi, float); +DECLARE_SOA_COLUMN(PtBachelorPi, ptBachelorPi, float); DECLARE_SOA_COLUMN(PPiFromLambda, pPiFromLambda, float); DECLARE_SOA_COLUMN(PPrFromLambda, pPrFromLambda, float); DECLARE_SOA_COLUMN(DcaXiDaughters, dcaXiDaughters, float); @@ -1462,10 +1464,10 @@ DECLARE_SOA_COLUMN(DcaXYCascToPV, dcaXYCascToPV, float); DECLARE_SOA_COLUMN(DcaZCascToPV, dcaZCascToPV, float); // KF specific columns DECLARE_SOA_COLUMN(Chi2TopoXicPlusToPV, chi2TopoXicPlusToPV, float); -DECLARE_SOA_COLUMN(Chi2TopoXicPlusToPVBefConst, chi2TopoXicPlusToPVBefConst, float); -DECLARE_SOA_COLUMN(Chi2PrimXi, chi2PrimXi, float); -DECLARE_SOA_COLUMN(Chi2PrimPi0, chi2PrimPi0, float); -DECLARE_SOA_COLUMN(Chi2PrimPi1, chi2PrimPi1, float); +DECLARE_SOA_COLUMN(Chi2XicPlusToPV, chi2XicPlusToPV, float); +DECLARE_SOA_COLUMN(Chi2XiToPV, chi2XiToPV, float); +DECLARE_SOA_COLUMN(Chi2Pi0ToPV, chi2Pi0ToPV, float); +DECLARE_SOA_COLUMN(Chi2Pi1ToPV, chi2Pi1ToPV, float); DECLARE_SOA_COLUMN(Chi2DevPi0Pi1, chi2DevPi0Pi1, float); DECLARE_SOA_COLUMN(Chi2DevPi0Xi, chi2DevPi0Xi, float); DECLARE_SOA_COLUMN(Chi2DevPi1Xi, chi2DevPi1Xi, float); @@ -1535,9 +1537,10 @@ DECLARE_SOA_TABLE(HfCandXicBase, "AOD", "HFCANDXICBASE", hf_cand::ImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1, hf_cand::ErrorImpactParameter2, // cascade specific columns - hf_cand_xic_to_xi_pi_pi::PBachelorPi, hf_cand_xic_to_xi_pi_pi::PPiFromLambda, hf_cand_xic_to_xi_pi_pi::PPrFromLambda, + hf_cand_xic_to_xi_pi_pi::PBachelorPi, hf_cand_xic_to_xi_pi_pi::PPiFromLambda, hf_cand_xic_to_xi_pi_pi::PPrFromLambda, hf_cand_xic_to_xi_pi_pi::PtBachelorPi, hf_cand_xic_to_xi_pi_pi::CpaXi, hf_cand_xic_to_xi_pi_pi::CpaXYXi, hf_cand_xic_to_xi_pi_pi::CpaLambda, hf_cand_xic_to_xi_pi_pi::CpaXYLambda, hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi, hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi, hf_cand_xic_to_xi_pi_pi::InvMassXi, hf_cand_xic_to_xi_pi_pi::InvMassLambda, hf_cand_xic_to_xi_pi_pi::InvMassXiPi0, hf_cand_xic_to_xi_pi_pi::InvMassXiPi1, + hf_cand_xic_to_xi_pi_pi::RadiusLambda, // DCA hf_cand_xic_to_xi_pi_pi::DcaXiDaughters, hf_cand_xic_to_xi_pi_pi::DcaV0Daughters, hf_cand_xic_to_xi_pi_pi::DcaPosToPV, hf_cand_xic_to_xi_pi_pi::DcaNegToPV, hf_cand_xic_to_xi_pi_pi::DcaBachelorToPV, hf_cand_xic_to_xi_pi_pi::DcaXYCascToPV, hf_cand_xic_to_xi_pi_pi::DcaZCascToPV, // PID @@ -1580,8 +1583,8 @@ using HfCandXic = HfCandXicExt; DECLARE_SOA_TABLE(HfCandXicKF, "AOD", "HFCANDXICKF", hf_cand_xic_to_xi_pi_pi::KfDecayLength, hf_cand_xic_to_xi_pi_pi::KfDecayLengthNormalised, hf_cand_xic_to_xi_pi_pi::KfDecayLengthXY, hf_cand_xic_to_xi_pi_pi::KfDecayLengthXYNormalised, cascdata::KFCascadeChi2, cascdata::KFV0Chi2, - hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV, - hf_cand_xic_to_xi_pi_pi::Chi2PrimXi, hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0, hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1, + hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV, + hf_cand_xic_to_xi_pi_pi::Chi2XiToPV, hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV, hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi, hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi, hf_cand_xic_to_xi_pi_pi::DcaPi0Pi1, hf_cand_xic_to_xi_pi_pi::DcaPi0Xi, hf_cand_xic_to_xi_pi_pi::DcaPi1Xi, hf_cand_xic_to_xi_pi_pi::DcaXYPi0Pi1, hf_cand_xic_to_xi_pi_pi::DcaXYPi0Xi, hf_cand_xic_to_xi_pi_pi::DcaXYPi1Xi); diff --git a/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx b/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx index 5ec7bbced6b..871b6e06aa8 100644 --- a/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx +++ b/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx @@ -107,7 +107,7 @@ struct HfCandidateCreatorXicToXiPiPi { Configurable useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"}; Configurable useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"}; // KFParticle - Configurable useXiMassConstraint{"useXiMassConstraint", true, "Use mass constraint for Xi"}; + Configurable useXiMassConstraint{"useXiMassConstraint", true, "Use mass constraint for Xi. WARNING: Only disable if you know what you are doing!"}; Configurable constrainXicPlusToPv{"constrainXicPlusToPv", false, "Constrain XicPlus to PV"}; Configurable kfConstructMethod{"kfConstructMethod", 2, "Construct method of XicPlus: 0 fast mathematics without constraint of fixed daughter particle masses, 2 daughter particle masses stay fixed in construction process"}; Configurable rejDiffCollTrack{"rejDiffCollTrack", true, "Reject tracks coming from different collisions (effective only for KFParticle w/o derived data)"}; @@ -414,6 +414,9 @@ struct HfCandidateCreatorXicToXiPiPi { float const cpaLambdaToXi = RecoDecay::cpa(vertexCasc, vertexV0, pVecV0); float const cpaXYLambdaToXi = RecoDecay::cpaXY(vertexCasc, vertexV0, pVecV0); + // calculate Lambda radius + float const radiusLambda = std::hypot(vertexV0[0], vertexV0[1]); + // get invariant mass of Xi-pi pairs auto arrayMomentaXiPi0 = std::array{pVecXi, pVecPi0}; massXiPi0 = RecoDecay::m(arrayMomentaXiPi0, std::array{MassXiMinus, MassPiPlus}); @@ -495,9 +498,10 @@ struct HfCandidateCreatorXicToXiPiPi { impactParameterCasc.getY(), impactParameter0.getY(), impactParameter1.getY(), std::sqrt(impactParameterCasc.getSigmaY2()), std::sqrt(impactParameter0.getSigmaY2()), std::sqrt(impactParameter1.getSigmaY2()), /*cascade specific columns*/ - trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, + trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, trackPionFromXi.pt(), cpaXi, cpaXYXi, cpaLambda, cpaXYLambda, cpaLambdaToXi, cpaXYLambdaToXi, casc.mXi(), casc.mLambda(), massXiPi0, massXiPi1, + radiusLambda, /*DCA information*/ casc.dcacascdaughters(), casc.dcaV0daughters(), casc.dcapostopv(), casc.dcanegtopv(), casc.dcabachtopv(), casc.dcaXYCascToPV(), casc.dcaZCascToPV(), @@ -598,6 +602,10 @@ struct HfCandidateCreatorXicToXiPiPi { float parPosMom[NElementsStateVector]; std::copy(xyzpxpypz.begin(), xyzpxpypz.end(), parPosMom); // create KFParticle + // README: The Xi KFParticle in this case is constructed from the parameters stored in the LF cascade table. + // The LF strangenessbuilder should in this case be run WITHOUT the mass constraint on the Xi to consistently store the unconstrained parameters and invariant mass of the Xi. + // The mass constraint on the Xi is applied here only after the KFParticle object was created from the unconstrained parameters and covariance matrix of the Xi. + // WARNING: If the Xi gets already constrained in the LF strangenessbuilder, the parameters and cov matrix passed to the KFParticle.Create() function will be constrained while the mass won't be. The stored energy, mass, and momentum will not be correctly related anymore! KFParticle kfXi; float const massXi = casc.mXi(); kfXi.Create(parPosMom, casc.kfTrackCovMat(), casc.sign(), massXi); @@ -663,6 +671,9 @@ struct HfCandidateCreatorXicToXiPiPi { float const cpaLambdaToXi = RecoDecay::cpa(vertexCasc, vertexV0, pVecV0); float const cpaXYLambdaToXi = RecoDecay::cpaXY(vertexCasc, vertexV0, pVecV0); + // calculate Lambda radius + float const radiusLambda = std::hypot(vertexV0[0], vertexV0[1]); + // get chi2 deviation of Pi0-Pi1, Pi0-Xi, Pi1-Xi float chi2DevPi0Pi1 = kfCharmBachelor0.GetDeviationFromParticle(kfCharmBachelor1); float chi2DevPi0Xi = kfCharmBachelor0.GetDeviationFromParticle(kfXi); @@ -779,9 +790,10 @@ struct HfCandidateCreatorXicToXiPiPi { impactParameterXiXY, impactParameterPi0XY, impactParameterPi1XY, errImpactParameterXiXY, errImpactParameterPi0XY, errImpactParameterPi1XY, /*cascade specific columns*/ - trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, + trackPionFromXi.p(), pPiFromLambda, pPrFromLambda, trackPionFromXi.pt(), cpaXi, cpaXYXi, cpaLambda, cpaXYLambda, cpaLambdaToXi, cpaXYLambdaToXi, massXi, casc.mLambda(), massXiPi0, massXiPi1, + radiusLambda, /*DCA information*/ casc.dcacascdaughters(), casc.dcaV0daughters(), casc.dcapostopv(), casc.dcanegtopv(), casc.dcabachtopv(), casc.dcaXYCascToPV(), casc.dcaZCascToPV(), diff --git a/PWGHF/TableProducer/treeCreatorXicToXiPiPi.cxx b/PWGHF/TableProducer/treeCreatorXicToXiPiPi.cxx index 11fbbf3508b..a80f2df5af5 100644 --- a/PWGHF/TableProducer/treeCreatorXicToXiPiPi.cxx +++ b/PWGHF/TableProducer/treeCreatorXicToXiPiPi.cxx @@ -132,6 +132,7 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF", full::PtXi, full::PtPi0, full::PtPi1, + hf_cand_xic_to_xi_pi_pi::PtBachelorPi, full::M, full::Chi2SV, full::Ct, @@ -145,15 +146,15 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF", hf_cand_xic_to_xi_pi_pi::CpaXYXi, hf_cand_xic_to_xi_pi_pi::CpaLambda, hf_cand_xic_to_xi_pi_pi::CpaXYLambda, - hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi, - hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi, + hf_cand_xic_to_xi_pi_pi::RadiusLambda, + hf_cand_xic_to_xi_pi_pi::InvMassXi, + hf_cand_xic_to_xi_pi_pi::InvMassLambda, full::ImpactParameterXi, full::ImpactParameterNormalisedXi, full::ImpactParameterPi0, full::ImpactParameterNormalisedPi0, full::ImpactParameterPi1, full::ImpactParameterNormalisedPi1, - full::MaxNormalisedDeltaIP, hf_cand_xic_to_xi_pi_pi::DcaXiDaughters, hf_cand_xic_to_xi_pi_pi::DcaV0Daughters, hf_cand_xic_to_xi_pi_pi::DcaXYCascToPV, @@ -175,11 +176,11 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiLiteKfs, "AOD", "HFXICXI2PILITKF", // KF specific columns full::Chi2GeoXi, full::Chi2GeoLambda, - hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst, + hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV, - hf_cand_xic_to_xi_pi_pi::Chi2PrimXi, - hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0, - hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1, + hf_cand_xic_to_xi_pi_pi::Chi2XiToPV, + hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV, + hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi, hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi, @@ -294,6 +295,7 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF", full::PtXi, full::PtPi0, full::PtPi1, + hf_cand_xic_to_xi_pi_pi::PtBachelorPi, full::M, full::Chi2SV, full::Ct, @@ -309,6 +311,9 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF", hf_cand_xic_to_xi_pi_pi::CpaXYLambda, hf_cand_xic_to_xi_pi_pi::CpaLambdaToXi, hf_cand_xic_to_xi_pi_pi::CpaXYLambdaToXi, + hf_cand_xic_to_xi_pi_pi::RadiusLambda, + hf_cand_xic_to_xi_pi_pi::InvMassXi, + hf_cand_xic_to_xi_pi_pi::InvMassLambda, full::ImpactParameterXi, full::ImpactParameterNormalisedXi, full::ImpactParameterPi0, @@ -324,10 +329,8 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF", hf_cand_xic_to_xi_pi_pi::DcaPosToPV, hf_cand_xic_to_xi_pi_pi::DcaNegToPV, // additional columns only stored in the full candidate table - hf_cand_xic_to_xi_pi_pi::InvMassXi, hf_cand_xic_to_xi_pi_pi::InvMassXiPi0, hf_cand_xic_to_xi_pi_pi::InvMassXiPi1, - hf_cand_xic_to_xi_pi_pi::InvMassLambda, full::P, full::PPi0, full::PPi1, @@ -348,11 +351,11 @@ DECLARE_SOA_TABLE(HfCandXicToXiPiPiFullKfs, "AOD", "HFXICXI2PIFULKF", // KF-specific columns full::Chi2GeoXi, full::Chi2GeoLambda, - hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPVBefConst, + hf_cand_xic_to_xi_pi_pi::Chi2XicPlusToPV, hf_cand_xic_to_xi_pi_pi::Chi2TopoXicPlusToPV, - hf_cand_xic_to_xi_pi_pi::Chi2PrimXi, - hf_cand_xic_to_xi_pi_pi::Chi2PrimPi0, - hf_cand_xic_to_xi_pi_pi::Chi2PrimPi1, + hf_cand_xic_to_xi_pi_pi::Chi2XiToPV, + hf_cand_xic_to_xi_pi_pi::Chi2Pi0ToPV, + hf_cand_xic_to_xi_pi_pi::Chi2Pi1ToPV, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Pi1, hf_cand_xic_to_xi_pi_pi::Chi2DevPi0Xi, hf_cand_xic_to_xi_pi_pi::Chi2DevPi1Xi, @@ -541,6 +544,7 @@ struct HfTreeCreatorXicToXiPiPi { candidate.ptProng0(), candidate.ptProng1(), candidate.ptProng2(), + candidate.ptBachelorPi(), candidate.invMassXicPlus(), candidate.chi2PCA(), candidate.ct(o2::constants::physics::MassXiCPlus), @@ -554,15 +558,15 @@ struct HfTreeCreatorXicToXiPiPi { candidate.cpaXYXi(), candidate.cpaLambda(), candidate.cpaXYLambda(), - candidate.cpaLambdaToXi(), - candidate.cpaXYLambdaToXi(), + candidate.radiusLambda(), + candidate.invMassXi(), + candidate.invMassLambda(), candidate.impactParameter0(), candidate.impactParameterNormalised0(), candidate.impactParameter1(), candidate.impactParameterNormalised1(), candidate.impactParameter2(), candidate.impactParameterNormalised2(), - candidate.maxNormalisedDeltaIP(), candidate.dcaXiDaughters(), candidate.dcaV0Daughters(), candidate.dcaXYCascToPV(), @@ -584,11 +588,11 @@ struct HfTreeCreatorXicToXiPiPi { // KF-specific columns candidate.kfCascadeChi2(), candidate.kfV0Chi2(), - candidate.chi2TopoXicPlusToPVBefConst(), + candidate.chi2XicPlusToPV(), candidate.chi2TopoXicPlusToPV(), - candidate.chi2PrimXi(), - candidate.chi2PrimPi0(), - candidate.chi2PrimPi1(), + candidate.chi2XiToPV(), + candidate.chi2Pi0ToPV(), + candidate.chi2Pi1ToPV(), candidate.chi2DevPi0Pi1(), candidate.chi2DevPi0Xi(), candidate.chi2DevPi1Xi(), @@ -610,6 +614,7 @@ struct HfTreeCreatorXicToXiPiPi { candidate.ptProng0(), candidate.ptProng1(), candidate.ptProng2(), + candidate.ptBachelorPi(), candidate.invMassXicPlus(), candidate.chi2PCA(), candidate.ct(o2::constants::physics::MassXiCPlus), @@ -625,6 +630,9 @@ struct HfTreeCreatorXicToXiPiPi { candidate.cpaXYLambda(), candidate.cpaLambdaToXi(), candidate.cpaXYLambdaToXi(), + candidate.radiusLambda(), + candidate.invMassXi(), + candidate.invMassLambda(), candidate.impactParameter0(), candidate.impactParameterNormalised0(), candidate.impactParameter1(), @@ -640,10 +648,8 @@ struct HfTreeCreatorXicToXiPiPi { candidate.dcaPosToPV(), candidate.dcaNegToPV(), // additional columns only stored in the full candidate table - candidate.invMassXi(), candidate.invMassXiPi0(), candidate.invMassXiPi1(), - candidate.invMassLambda(), candidate.p(), candidate.pProng1(), candidate.pProng2(), @@ -664,11 +670,11 @@ struct HfTreeCreatorXicToXiPiPi { // KF-specific columns candidate.kfCascadeChi2(), candidate.kfV0Chi2(), - candidate.chi2TopoXicPlusToPVBefConst(), + candidate.chi2XicPlusToPV(), candidate.chi2TopoXicPlusToPV(), - candidate.chi2PrimXi(), - candidate.chi2PrimPi0(), - candidate.chi2PrimPi1(), + candidate.chi2XiToPV(), + candidate.chi2Pi0ToPV(), + candidate.chi2Pi1ToPV(), candidate.chi2DevPi0Pi1(), candidate.chi2DevPi0Xi(), candidate.chi2DevPi1Xi(), diff --git a/PWGLF/Utils/strangenessBuilderHelper.h b/PWGLF/Utils/strangenessBuilderHelper.h index c6e2674079d..6b8d237e004 100644 --- a/PWGLF/Utils/strangenessBuilderHelper.h +++ b/PWGLF/Utils/strangenessBuilderHelper.h @@ -1059,6 +1059,11 @@ class strangenessBuilderHelper return false; } + // Calculate V0 mass before mass constraint + float MLambda, SigmaLambda; + KFV0.GetMass(MLambda, SigmaLambda); + cascade.kfMLambda = MLambda; + if (kfUseV0MassConstraint) { KFV0.SetNonlinearMassConstraint(o2::constants::physics::MassLambda); } @@ -1117,9 +1122,18 @@ class strangenessBuilderHelper cascade = {}; return false; } + + // Calculate masses a priori before potentially applying mass constraint --> this is the invariant mass of the decay products, not the mass-constrained value + float MXi, SigmaXi, MOmega, SigmaOmega; + KFXi.GetMass(MXi, SigmaXi); + KFOmega.GetMass(MOmega, SigmaOmega); + cascade.massXi = MXi; + cascade.massOmega = MOmega; + if (kfUseCascadeMassConstraint) { // set mass constraint if requested // WARNING: this is only adequate for decay chains, i.e. XiC -> Xi or OmegaC -> Omega + // WARNING: be aware of the fact that if enabled, the stored particle momentum and covariance matrix will be mass-constrained while the stored mass will be the invariant mass of the decay products (i.e. not mass-constrained) KFXi.SetNonlinearMassConstraint(o2::constants::physics::MassXiMinus); KFOmega.SetNonlinearMassConstraint(o2::constants::physics::MassOmegaMinus); } @@ -1215,15 +1229,6 @@ class strangenessBuilderHelper } cascade.pointingAngle = TMath::ACos(cosPA); - // Calculate masses a priori - float MLambda, SigmaLambda, MXi, SigmaXi, MOmega, SigmaOmega; - KFV0.GetMass(MLambda, SigmaLambda); - KFXi.GetMass(MXi, SigmaXi); - KFOmega.GetMass(MOmega, SigmaOmega); - cascade.kfMLambda = MLambda; - cascade.massXi = MXi; - cascade.massOmega = MOmega; - // KF Cascade covariance matrix std::array covCascKF; for (int i = 0; i < 21; i++) { // get covariance matrix elements (lower triangle) From 4ee3c708cc410d4cc31b9da19fcbc651971687d2 Mon Sep 17 00:00:00 2001 From: creetz16 Date: Fri, 10 Jul 2026 12:22:52 +0200 Subject: [PATCH 2/2] revert strangenessBuilderHelper changes --> separate PR --- PWGLF/Utils/strangenessBuilderHelper.h | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/PWGLF/Utils/strangenessBuilderHelper.h b/PWGLF/Utils/strangenessBuilderHelper.h index 6b8d237e004..c6e2674079d 100644 --- a/PWGLF/Utils/strangenessBuilderHelper.h +++ b/PWGLF/Utils/strangenessBuilderHelper.h @@ -1059,11 +1059,6 @@ class strangenessBuilderHelper return false; } - // Calculate V0 mass before mass constraint - float MLambda, SigmaLambda; - KFV0.GetMass(MLambda, SigmaLambda); - cascade.kfMLambda = MLambda; - if (kfUseV0MassConstraint) { KFV0.SetNonlinearMassConstraint(o2::constants::physics::MassLambda); } @@ -1122,18 +1117,9 @@ class strangenessBuilderHelper cascade = {}; return false; } - - // Calculate masses a priori before potentially applying mass constraint --> this is the invariant mass of the decay products, not the mass-constrained value - float MXi, SigmaXi, MOmega, SigmaOmega; - KFXi.GetMass(MXi, SigmaXi); - KFOmega.GetMass(MOmega, SigmaOmega); - cascade.massXi = MXi; - cascade.massOmega = MOmega; - if (kfUseCascadeMassConstraint) { // set mass constraint if requested // WARNING: this is only adequate for decay chains, i.e. XiC -> Xi or OmegaC -> Omega - // WARNING: be aware of the fact that if enabled, the stored particle momentum and covariance matrix will be mass-constrained while the stored mass will be the invariant mass of the decay products (i.e. not mass-constrained) KFXi.SetNonlinearMassConstraint(o2::constants::physics::MassXiMinus); KFOmega.SetNonlinearMassConstraint(o2::constants::physics::MassOmegaMinus); } @@ -1229,6 +1215,15 @@ class strangenessBuilderHelper } cascade.pointingAngle = TMath::ACos(cosPA); + // Calculate masses a priori + float MLambda, SigmaLambda, MXi, SigmaXi, MOmega, SigmaOmega; + KFV0.GetMass(MLambda, SigmaLambda); + KFXi.GetMass(MXi, SigmaXi); + KFOmega.GetMass(MOmega, SigmaOmega); + cascade.kfMLambda = MLambda; + cascade.massXi = MXi; + cascade.massOmega = MOmega; + // KF Cascade covariance matrix std::array covCascKF; for (int i = 0; i < 21; i++) { // get covariance matrix elements (lower triangle)