diff --git a/PWGHF/HFC/DataModel/CorrelationTables.h b/PWGHF/HFC/DataModel/CorrelationTables.h index 62414101df2..83470e9f26c 100644 --- a/PWGHF/HFC/DataModel/CorrelationTables.h +++ b/PWGHF/HFC/DataModel/CorrelationTables.h @@ -149,6 +149,7 @@ DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! D DECLARE_SOA_COLUMN(DeltaY, deltaY, float); //! DeltaY between Lc and Hadrons DECLARE_SOA_COLUMN(PtLc, ptLc, float); //! Transverse momentum of Lc DECLARE_SOA_COLUMN(PtHadron, ptHadron, float); //! Transverse momentum of Hadron +DECLARE_SOA_COLUMN(PtSoftPi, ptSoftPi, float); //! Transverse momentum of Soft Pion DECLARE_SOA_COLUMN(ChargeCand, chargeCand, int); //! store charge of Lc and Sc DECLARE_SOA_COLUMN(MLc, mLc, float); //! Invariant mass of Lc DECLARE_SOA_COLUMN(MlScoreBkg, mlScoreBkg, float); //! ML background score for Lc selection @@ -157,6 +158,8 @@ DECLARE_SOA_COLUMN(SignalStatus, signalStatus, int); //! T DECLARE_SOA_COLUMN(PoolBin, poolBin, int); //! Pool Bin for the MixedEvent DECLARE_SOA_COLUMN(TrackDcaXY, trackDcaXY, float); //! DCA xy of the track DECLARE_SOA_COLUMN(TrackDcaZ, trackDcaZ, float); //! DCA z of the track +DECLARE_SOA_COLUMN(SoftPiDcaXY, softPiDcaXY, float); //! DCA xy of the soft pion +DECLARE_SOA_COLUMN(SoftPiDcaZ, softPiDcaZ, float); //! DCA z of the soft pion DECLARE_SOA_COLUMN(TrackTPCNClsCrossedRows, trackTPCNClsCrossedRows, int); //! Number of crossed TPC Rows DECLARE_SOA_COLUMN(TrackOrigin, trackOrigin, int); //! Number of crossed TPC Rows DECLARE_SOA_COLUMN(IsSignal, isSignal, bool); //! Used in MC-Rec, Lc Signal @@ -175,6 +178,18 @@ DECLARE_SOA_COLUMN(PiNsigmTOF, piNsigmTOF, float); //! A DECLARE_SOA_TABLE(PtLcFromScHPair, "AOD", "PTLCSCHPAIR", //! Sc-->Lc pT for paired Sc-proton aod::hf_correlation_lc_hadron::PtLc); +DECLARE_SOA_TABLE(ScRecoInfo, "AOD", "SCRECOINFO", //! Sc reco info + aod::hf_correlation_lc_hadron::MLc, + aod::hf_correlation_lc_hadron::PtSoftPi, + aod::hf_correlation_lc_hadron::SoftPiDcaXY, + aod::hf_correlation_lc_hadron::SoftPiDcaZ); + +DECLARE_SOA_TABLE(ScHadronRecoInfo, "AOD", "SCHADRECOINFO", //! Sc reco info + aod::hf_correlation_lc_hadron::MLc, + aod::hf_correlation_lc_hadron::PtSoftPi, + aod::hf_correlation_lc_hadron::SoftPiDcaXY, + aod::hf_correlation_lc_hadron::SoftPiDcaZ); + DECLARE_SOA_TABLE(PtLcFromSc, "AOD", "PTLCSC", //! Sc-->Lc pT aod::hf_correlation_lc_hadron::PtLc); diff --git a/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx index 144c344abbc..953e9e110dc 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx @@ -317,8 +317,10 @@ struct HfCorrelatorLcScHadrons { Produces entryCandHadronPairY; Produces entryCandHadronPairTrkPID; Produces entryCandHadronRecoInfo; + Produces entryScHadronRecoInfoExt; Produces entryCandHadronMlInfo; - Produces entryCandCandRecoInfo; + Produces entryCandRecoInfo; + Produces entryScRecoInfoExt; Produces entryCandHadronGenInfo; Produces entryCandCandGenInfo; Produces entryTrackRecoInfo; @@ -812,12 +814,17 @@ struct HfCorrelatorLcScHadrons { double yCand = -999.0; double etaCand = -999.0; double ptScProng0 = -999.0; + double ptSoftPi = -999.0; + double massPKPiLcFromSc = -999.0; + double massPiKPLcFromSc = -999.0; double ptCand = -999.0; double phiCand = -999.0; double massCandPKPi = -999.0; double massCandPiKP = -999.0; bool selLcPKPi = false; bool selLcPiKP = false; + float softPiAbsDcaXY = -999.0; + float softPiAbsDcaZ = -999.0; yCand = estimateY(candidate); etaCand = candidate.eta(); @@ -847,17 +854,21 @@ struct HfCorrelatorLcScHadrons { chargeCand = candidate.charge(); const auto& candidateLc = candidate.template prongLc_as(); ptScProng0 = candidateLc.pt(); + softPiAbsDcaXY = std::abs(candidate.softPiDcaXY()); + softPiAbsDcaZ = std::abs(candidate.softPiDcaZ()); selLcPKPi = (candidateLc.isSelLcToPKPi() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPKPiFromPDG()); selLcPiKP = (candidateLc.isSelLcToPiKP() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPiKPFromPDG()); if (selLcPKPi) { const auto& probs = candidateLc.mlProbLcToPKPi(); fillMlOutput(probs, outputMlPKPi); - massCandPKPi = std::abs(HfHelper::invMassScRecoLcToPKPi(candidate, candidateLc) - HfHelper::invMassLcToPKPi(candidateLc)); + massPKPiLcFromSc = HfHelper::invMassLcToPKPi(candidateLc); + massCandPKPi = std::abs(HfHelper::invMassScRecoLcToPKPi(candidate, candidateLc) - massPKPiLcFromSc); } if (selLcPiKP) { const auto& probs = candidateLc.mlProbLcToPiKP(); fillMlOutput(probs, outputMlPiKP); - massCandPiKP = std::abs(HfHelper::invMassScRecoLcToPiKP(candidate, candidateLc) - HfHelper::invMassLcToPiKP(candidateLc)); + massPiKPLcFromSc = HfHelper::invMassLcToPiKP(candidateLc); + massCandPiKP = std::abs(HfHelper::invMassScRecoLcToPiKP(candidate, candidateLc) - massPiKPLcFromSc); } if constexpr (IsMcRec) { // isSignal = @@ -870,12 +881,14 @@ struct HfCorrelatorLcScHadrons { auto trackPos1 = candidateLc.template prong0_as(); auto trackPos2 = candidateLc.template prong2_as(); signSoftPion = candidate.template prong1_as().sign(); + ptSoftPi = candidate.template prong1_as().pt(); if (calTrkEff && countCand == 1 && (isSignal || !calEffEventWithCand)) { calculateTrkEff(trackPos1, trackPos2, *mcParticles); } registry.fill(HIST("hPtProng1"), candidate.template prong1_as().pt()); } else { signSoftPion = candidate.template prong1_as().sign(); + ptSoftPi = candidate.template prong1_as().pt(); registry.fill(HIST("hPtProng1"), candidate.prong1().pt()); } registry.fill(HIST("hPtProng0"), ptScProng0); @@ -931,12 +944,13 @@ struct HfCorrelatorLcScHadrons { registry.fill(HIST("hPtVsMultiplicityMcRecNonPrompt"), ptCand, multiplicityFT0M); } - entryCandCandRecoInfo(massCandPKPi, ptCand, outputMlPKPi[0], outputMlPKPi[1], poolBin); + entryCandRecoInfo(massCandPKPi, ptCand, outputMlPKPi[0], outputMlPKPi[1], poolBin); entryCandCandGenInfo(isPrompt); if (!skipMixedEventTableFilling) { entryCand(candidate.phi(), etaCand, ptCand, massCandPKPi, poolBin, gCollisionId, timeStamp); entryCandCharge(chargeCand); entryPtLcFromSc(ptScProng0); + entryScRecoInfoExt(massPKPiLcFromSc, ptSoftPi, softPiAbsDcaXY, softPiAbsDcaZ); } } @@ -952,12 +966,13 @@ struct HfCorrelatorLcScHadrons { registry.fill(HIST("hPtCandSigNonPrompt"), ptCand); registry.fill(HIST("hPtVsMultiplicityMcRecNonPrompt"), ptCand, multiplicityFT0M); } - entryCandCandRecoInfo(massCandPiKP, ptCand, outputMlPiKP[0], outputMlPiKP[1], poolBin); + entryCandRecoInfo(massCandPiKP, ptCand, outputMlPiKP[0], outputMlPiKP[1], poolBin); entryCandCandGenInfo(isPrompt); if (!skipMixedEventTableFilling) { entryCand(candidate.phi(), etaCand, ptCand, massCandPiKP, poolBin, gCollisionId, timeStamp); entryCandCharge(chargeCand); entryPtLcFromSc(ptScProng0); + entryScRecoInfoExt(massPiKPLcFromSc, ptSoftPi, softPiAbsDcaXY, softPiAbsDcaZ); } } @@ -1016,10 +1031,12 @@ struct HfCorrelatorLcScHadrons { if (selLcPKPi) { fillCorrelationTable(fillTrkPID, track, candidate, outputMlPKPi, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPKPi, false); + entryScHadronRecoInfoExt(massPKPiLcFromSc, ptSoftPi, softPiAbsDcaXY, softPiAbsDcaZ); } if (selLcPiKP) { fillCorrelationTable(fillTrkPID, track, candidate, outputMlPiKP, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPiKP, false); + entryScHadronRecoInfoExt(massPiKPLcFromSc, ptSoftPi, softPiAbsDcaXY, softPiAbsDcaZ); } if (countCand == 1) {