diff --git a/PWGHF/D2H/Tasks/taskCd.cxx b/PWGHF/D2H/Tasks/taskCd.cxx index 4c71e62d6ee..cea20fb44ae 100644 --- a/PWGHF/D2H/Tasks/taskCd.cxx +++ b/PWGHF/D2H/Tasks/taskCd.cxx @@ -100,6 +100,9 @@ DECLARE_SOA_COLUMN(NSigmaTpcKa, nSigmaTpcKa, float); //! TPC nσ DECLARE_SOA_COLUMN(NSigmaTpcPi, nSigmaTpcPi, float); //! TPC nσ for pion hypothesis DECLARE_SOA_COLUMN(NSigmaItsDe, nSigmaItsDe, float); //! ITS nσ for deuteron hypothesis DECLARE_SOA_COLUMN(NSigmaTofDe, nSigmaTofDe, float); //! TOF nσ for deuteron hypothesis +DECLARE_SOA_COLUMN(TofBetaDe, tofBetaDe, float); //! TOF beta for deuteron candidate +DECLARE_SOA_COLUMN(TpcInnerParamDe, tpcInnerParamDe, float); //! TPC inner-wall momentum for deuteron candidate (GeV/c) +DECLARE_SOA_COLUMN(TofExpMomDe, tofExpMomDe, float); //! TOF expected momentum for deuteron candidate (GeV/c) DECLARE_SOA_COLUMN(NSigmaTofKa, nSigmaTofKa, float); //! TOF nσ for kaon hypothesis DECLARE_SOA_COLUMN(NSigmaTofPi, nSigmaTofPi, float); //! TOF nσ for pion hypothesis DECLARE_SOA_COLUMN(NItsClusters, nItsClusters, float); //! Number of ITS clusters used in the track fit @@ -145,6 +148,9 @@ DECLARE_SOA_TABLE(HfCandCdLite, "AOD", "HFCANDCDLITE", full::NSigmaTpcPr, full::NSigmaItsDe, full::NSigmaTofDe, + full::TofBetaDe, + full::TpcInnerParamDe, + full::TofExpMomDe, full::CtRec, full::CandidateSelFlag, full::CandidateSign, @@ -175,6 +181,9 @@ DECLARE_SOA_TABLE(HfCandCdFull, "AOD", "HFCANDCDFULL", full::NSigmaTpcPr, full::NSigmaItsDe, full::NSigmaTofDe, + full::TofBetaDe, + full::TpcInnerParamDe, + full::TofExpMomDe, full::NSigmaTpcPi, full::NSigmaTofPi, full::NSigmaTpcKa, @@ -235,8 +244,8 @@ struct HfTaskCd { using CdCandidates = soa::Filtered>; using CdCandidatesMc = soa::Filtered>; using McParticles3ProngMatched = soa::Join; - using HFTracks = soa::Join; - using HFTracksMc = soa::Join; + using HFTracks = soa::Join; + using HFTracksMc = soa::Join; Filter filterSelectCandidates = aod::hf_sel_candidate_cd::isSelCdToDeKPi >= selectionFlagCd || aod::hf_sel_candidate_cd::isSelCdToPiKDe >= selectionFlagCd; Preslice candCdPerCollision = aod::hf_cand::collisionId; @@ -518,13 +527,18 @@ struct HfTaskCd { float nSigmaTpcDe = 0.f, nSigmaTpcKa = 0.f, nSigmaTpcPi = 0.f, nSigmaTpcPr = 0.f; float nSigmaItsDe = 0.f; float nSigmaTofDe = 0.f, nSigmaTofKa = 0.f, nSigmaTofPi = 0.f; + float tofBetaDe = -999.f; + float tpcInnerParamDe = -999.f; + float tofExpMomDe = -999.f; float dcaDeuteron = 0.f, dcaKaon = 0.f, dcaPion = 0.f; const bool selDeKPi = (candidate.isSelCdToDeKPi() >= selectionFlagCd); const bool selPiKDe = (candidate.isSelCdToPiKDe() >= selectionFlagCd); + auto prong0 = candidate.template prong0_as(); auto prong1 = candidate.template prong1_as(); + auto prong2 = candidate.template prong2_as(); auto prong0Its = tracksWithItsPid.iteratorAt(candidate.prong0Id() - tracksWithItsPid.offset()); auto prong2Its = tracksWithItsPid.iteratorAt(candidate.prong2Id() - tracksWithItsPid.offset()); @@ -540,6 +554,9 @@ struct HfTaskCd { nSigmaTpcDe = candidate.nSigTpcDe0(); nSigmaTpcPr = candidate.nSigTpcPr0(); nSigmaTofDe = candidate.nSigTofDe0(); + tofBetaDe = (prong0.hasTOF() && prong0.beta() > 0.f) ? prong0.beta() : -999.f; + tpcInnerParamDe = prong0.tpcInnerParam(); + tofExpMomDe = prong0.hasTOF() ? prong0.tofExpMom() : -999.f; nSigmaTpcPi = candidate.nSigTpcPi2(); nSigmaTofPi = candidate.nSigTofPi2(); nSigmaItsDe = prong0Its.itsNSigmaDe(); @@ -553,6 +570,9 @@ struct HfTaskCd { nSigmaTpcDe = candidate.nSigTpcDe2(); nSigmaTpcPr = candidate.nSigTpcPr2(); nSigmaTofDe = candidate.nSigTofDe2(); + tofBetaDe = (prong2.hasTOF() && prong2.beta() > 0.f) ? prong2.beta() : -999.f; + tpcInnerParamDe = prong2.tpcInnerParam(); + tofExpMomDe = prong2.hasTOF() ? prong2.tofExpMom() : -999.f; nSigmaTpcPi = candidate.nSigTpcPi0(); nSigmaTofPi = candidate.nSigTofPi0(); nSigmaItsDe = prong2Its.itsNSigmaDe(); @@ -591,6 +611,9 @@ struct HfTaskCd { nSigmaTpcPr, nSigmaItsDe, nSigmaTofDe, + tofBetaDe, + tpcInnerParamDe, + tofExpMomDe, candidate.ct(o2::constants::physics::MassCDeuteron) * cmToMum, candFlag, candSign, @@ -622,6 +645,9 @@ struct HfTaskCd { nSigmaTpcPr, nSigmaItsDe, nSigmaTofDe, + tofBetaDe, + tpcInnerParamDe, + tofExpMomDe, nSigmaTpcPi, nSigmaTofPi, nSigmaTpcKa, @@ -833,6 +859,9 @@ struct HfTaskCd { float nSigmaTpcDe = 0.f, nSigmaTpcKa = 0.f, nSigmaTpcPi = 0.f, nSigmaTpcPr = 0.f; float nSigmaItsDe = 0.f; float nSigmaTofDe = 0.f, nSigmaTofKa = 0.f, nSigmaTofPi = 0.f; + float tofBetaDe = -999.f; + float tpcInnerParamDe = -999.f; + float tofExpMomDe = -999.f; float dcaDeuteron = 0.f, dcaKaon = 0.f, dcaPion = 0.f; // int itsNClusterSizeDe = 0; @@ -870,6 +899,9 @@ struct HfTaskCd { nSigmaTpcDe = candidate.nSigTpcDe0(); nSigmaTpcPr = candidate.nSigTpcPr0(); nSigmaTofDe = candidate.nSigTofDe0(); + tofBetaDe = (prong0.hasTOF() && prong0.beta() > 0.f) ? prong0.beta() : -999.f; + tpcInnerParamDe = prong0.tpcInnerParam(); + tofExpMomDe = prong0.hasTOF() ? prong0.tofExpMom() : -999.f; nSigmaTpcPi = candidate.nSigTpcPi2(); nSigmaTofPi = candidate.nSigTofPi2(); nSigmaItsDe = prong0Its.itsNSigmaDe(); @@ -888,6 +920,9 @@ struct HfTaskCd { nSigmaTpcDe = candidate.nSigTpcDe2(); nSigmaTpcPr = candidate.nSigTpcPr2(); nSigmaTofDe = candidate.nSigTofDe2(); + tofBetaDe = (prong2.hasTOF() && prong2.beta() > 0.f) ? prong2.beta() : -999.f; + tpcInnerParamDe = prong2.tpcInnerParam(); + tofExpMomDe = prong2.hasTOF() ? prong2.tofExpMom() : -999.f; nSigmaTpcPi = candidate.nSigTpcPi0(); nSigmaTofPi = candidate.nSigTofPi0(); nSigmaItsDe = prong2Its.itsNSigmaDe(); @@ -945,6 +980,9 @@ struct HfTaskCd { nSigmaTpcPr, nSigmaItsDe, nSigmaTofDe, + tofBetaDe, + tpcInnerParamDe, + tofExpMomDe, candidate.ct(o2::constants::physics::MassCDeuteron), candFlag, candSign, @@ -977,6 +1015,9 @@ struct HfTaskCd { nSigmaTpcPr, nSigmaItsDe, nSigmaTofDe, + tofBetaDe, + tpcInnerParamDe, + tofExpMomDe, nSigmaTpcPi, nSigmaTofPi, nSigmaTpcKa,