diff --git a/PWGLF/DataModel/LFLambda1405Table.h b/PWGLF/DataModel/LFLambda1405Table.h index 704c2a78abf..1425a345375 100644 --- a/PWGLF/DataModel/LFLambda1405Table.h +++ b/PWGLF/DataModel/LFLambda1405Table.h @@ -33,12 +33,15 @@ DECLARE_SOA_COLUMN(Px, px, float); //! Px of the candi DECLARE_SOA_COLUMN(Py, py, float); //! Py of the candidate DECLARE_SOA_COLUMN(Pz, pz, float); //! Pz of the candidate DECLARE_SOA_COLUMN(Mass, mass, float); //! Invariant mass of the candidate +DECLARE_SOA_COLUMN(MassXi1530, massXi1530, float); //! Invariant mass of the Xi(1530) candidate DECLARE_SOA_COLUMN(SigmaMinusMass, sigmaMinusMass, float); //! Invariant mass of the Sigma- candidate DECLARE_SOA_COLUMN(SigmaPlusMass, sigmaPlusMass, float); //! Invariant mass of the Sigma+ candidate +DECLARE_SOA_COLUMN(XiMinusMass, xiMinusMass, float); //! Invariant mass of the Xi- candidate DECLARE_SOA_COLUMN(PtSigma, ptSigma, float); //! Signed pT of the Sigma daughter DECLARE_SOA_COLUMN(AlphaAPSigma, alphaAPSigma, float); //! Alpha of the Sigma DECLARE_SOA_COLUMN(QtAPSigma, qtAPSigma, float); //! qT of the Sigma DECLARE_SOA_COLUMN(RadiusSigma, radiusSigma, float); //! Radius of the Sigma decay vertex +DECLARE_SOA_COLUMN(PtKink, ptKink, float); //! pT of the kink daughter DECLARE_SOA_COLUMN(NSigmaTPCPiKink, nSigmaTPCPiKink, float); //! Number of sigmas for the pion candidate from Sigma kink in TPC DECLARE_SOA_COLUMN(NSigmaTOFPiKink, nSigmaTOFPiKink, float); //! Number of sigmas for the pion candidate from Sigma kink in TOF DECLARE_SOA_COLUMN(NSigmaTPCPrKink, nSigmaTPCPrKink, float); //! Number of sigmas for the proton candidate from Sigma kink in TPC @@ -58,8 +61,10 @@ DECLARE_SOA_COLUMN(KinkDauPdgCode, kinkDauPdgCode, int); //! PDG code of the kin DECLARE_SOA_TABLE(Lambda1405Cands, "AOD", "LAMBDA1405", o2::soa::Index<>, lambda1405::Px, lambda1405::Py, lambda1405::Pz, - lambda1405::Mass, lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, + lambda1405::Mass, lambda1405::MassXi1530, + lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, lambda1405::XiMinusMass, lambda1405::PtSigma, lambda1405::AlphaAPSigma, lambda1405::QtAPSigma, lambda1405::RadiusSigma, + lambda1405::PtKink, lambda1405::NSigmaTPCPiKink, lambda1405::NSigmaTOFPiKink, lambda1405::NSigmaTPCPrKink, lambda1405::NSigmaTOFPrKink, lambda1405::DCAKinkDauToPV, @@ -68,8 +73,10 @@ DECLARE_SOA_TABLE(Lambda1405Cands, "AOD", "LAMBDA1405", DECLARE_SOA_TABLE(Lambda1405CandsMC, "AOD", "MCLAMBDA1405", o2::soa::Index<>, lambda1405::Px, lambda1405::Py, lambda1405::Pz, - lambda1405::Mass, lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, + lambda1405::Mass, lambda1405::MassXi1530, + lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, lambda1405::XiMinusMass, lambda1405::PtSigma, lambda1405::AlphaAPSigma, lambda1405::QtAPSigma, lambda1405::RadiusSigma, + lambda1405::PtKink, lambda1405::NSigmaTPCPiKink, lambda1405::NSigmaTOFPiKink, lambda1405::NSigmaTPCPrKink, lambda1405::NSigmaTOFPrKink, lambda1405::DCAKinkDauToPV, diff --git a/PWGLF/Tasks/Resonances/lambda1405analysis.cxx b/PWGLF/Tasks/Resonances/lambda1405analysis.cxx index fec9b582901..dc134339d63 100644 --- a/PWGLF/Tasks/Resonances/lambda1405analysis.cxx +++ b/PWGLF/Tasks/Resonances/lambda1405analysis.cxx @@ -28,13 +28,14 @@ using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; -using TracksFull = soa::Join; +using TracksFull = soa::Join; using CollisionsFull = soa::Join; using CollisionsFullMC = soa::Join; struct lambda1405candidate { // Columns for Lambda(1405) candidate float mass = -1; // Invariant mass of the Lambda(1405) candidate + float massXi1530 = -1; // Invariant mass of the Xi(1530) candidate float px = -1; // Px of the Lambda(1405) candidate float py = -1; // Py of the Lambda(1405) candidate float pz = -1; // Pz of the Lambda(1405) candidate @@ -44,10 +45,12 @@ struct lambda1405candidate { bool isSigmaMinus = false; // True if compatible with Sigma- float sigmaMinusMass = -1; // Invariant mass of the Sigma- candidate float sigmaPlusMass = -1; // Invariant mass of the Sigma+ candidate + float xiMinusMass = -1; // Invariant mass of the Xi- candidate int sigmaSign = 0; // Sign of the Sigma candidate: 1 for matter, -1 for antimatter float sigmaPt = -1; // pT of the Sigma daughter float sigmaAlphaAP = -1; // Alpha of the Sigma float sigmaQtAP = -1; // qT of the Sigma + float kinkPt = -1; // pT of the kink daughter float kinkTPCNSigmaPi = -1; // Number of sigmas for the pion candidate from Sigma kink in TPC float kinkTOFNSigmaPi = -1; // Number of sigmas for the pion candidate from Sigma kink in TOF float kinkTPCNSigmaPr = -1; // Number of sigmas for the proton candidate from Sigma kink in TPC @@ -240,8 +243,8 @@ struct lambda1405analysis { auto kinkDauMom = std::array{sigmaCand.pxDaug(), sigmaCand.pyDaug(), sigmaCand.pzDaug()}; auto sigmaMom = std::array{sigmaCand.pxMoth(), sigmaCand.pyMoth(), sigmaCand.pzMoth()}; auto piMom = std::array{piTrack.px(), piTrack.py(), piTrack.pz()}; - double massSigma = lambda1405Cand.isSigmaMinus ? sigmaCand.mSigmaMinus() : sigmaCand.mSigmaPlus(); - float invMass = RecoDecay::m(std::array{sigmaMom, piMom}, std::array{massSigma, o2::constants::physics::MassPiPlus}); + float invMass = RecoDecay::m(std::array{sigmaMom, piMom}, std::array{o2::constants::physics::MassSigmaMinus, o2::constants::physics::MassPiPlus}); + float invMassXiPi = RecoDecay::m(std::array{sigmaMom, kinkDauMom}, std::array{o2::constants::physics::MassXiMinus, o2::constants::physics::MassPiPlus}); if (invMass > cutUpperMass) { continue; } @@ -254,14 +257,17 @@ struct lambda1405analysis { lambda1405Cand.py = sigmaMom[1] + piMom[1]; lambda1405Cand.pz = sigmaMom[2] + piMom[2]; lambda1405Cand.mass = invMass; + lambda1405Cand.massXi1530 = invMassXiPi; lambda1405Cand.sigmaMinusMass = sigmaCand.mSigmaMinus(); lambda1405Cand.sigmaPlusMass = sigmaCand.mSigmaPlus(); + lambda1405Cand.xiMinusMass = sigmaCand.mXiMinus(); lambda1405Cand.sigmaSign = sigmaCand.mothSign(); lambda1405Cand.sigmaAlphaAP = alphaAP(sigmaMom, kinkDauMom); lambda1405Cand.sigmaQtAP = qtAP(sigmaMom, kinkDauMom); lambda1405Cand.sigmaPt = sigmaCand.ptMoth(); lambda1405Cand.sigmaRadius = sigmaRad; + lambda1405Cand.kinkPt = kinkDauTrack.pt(); lambda1405Cand.kinkTPCNSigmaPi = kinkDauTrack.tpcNSigmaPi(); lambda1405Cand.kinkTOFNSigmaPi = kinkDauTrack.tofNSigmaPi(); lambda1405Cand.kinkTPCNSigmaPr = kinkDauTrack.tpcNSigmaPr(); @@ -322,8 +328,10 @@ struct lambda1405analysis { } if (fillOutputTree) { outputDataTable(lambda1405Cand.px, lambda1405Cand.py, lambda1405Cand.pz, - lambda1405Cand.mass, lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, + lambda1405Cand.mass, lambda1405Cand.massXi1530, + lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, lambda1405Cand.xiMinusMass, lambda1405Cand.sigmaPt, lambda1405Cand.sigmaAlphaAP, lambda1405Cand.sigmaQtAP, lambda1405Cand.sigmaRadius, + lambda1405Cand.kinkPt, lambda1405Cand.kinkTPCNSigmaPi, lambda1405Cand.kinkTOFNSigmaPi, lambda1405Cand.kinkTPCNSigmaPr, lambda1405Cand.kinkTOFNSigmaPr, lambda1405Cand.dcaKinkDauToPV, @@ -406,8 +414,10 @@ struct lambda1405analysis { if (fillOutputTree) { outputDataTableMC(lambda1405Cand.px, lambda1405Cand.py, lambda1405Cand.pz, - lambda1405Cand.mass, lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, + lambda1405Cand.mass, lambda1405Cand.massXi1530, + lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, lambda1405Cand.xiMinusMass, lambda1405Cand.sigmaPt, lambda1405Cand.sigmaAlphaAP, lambda1405Cand.sigmaQtAP, lambda1405Cand.sigmaRadius, + lambda1405Cand.kinkPt, lambda1405Cand.kinkTPCNSigmaPi, lambda1405Cand.kinkTOFNSigmaPi, lambda1405Cand.kinkTPCNSigmaPr, lambda1405Cand.kinkTOFNSigmaPr, lambda1405Cand.dcaKinkDauToPV, @@ -417,6 +427,7 @@ struct lambda1405analysis { } } } + // Loop over generated particles to fill MC histograms for (const auto& mcPart : particlesMC) { if (std::abs(mcPart.pdgCode()) != lambda1405PdgCode) { @@ -426,6 +437,7 @@ struct lambda1405analysis { if (!mcPart.has_daughters()) { continue; // Skip if no daughters } + // Check if the Lambda(1405) has a Sigma daughter bool hasSigmaDaughter = false; int dauPdgCode = 0;