diff --git a/PWGHF/HFC/DataModel/CorrelationTables.h b/PWGHF/HFC/DataModel/CorrelationTables.h index 69860d9d178..c39a16ea784 100644 --- a/PWGHF/HFC/DataModel/CorrelationTables.h +++ b/PWGHF/HFC/DataModel/CorrelationTables.h @@ -172,6 +172,12 @@ DECLARE_SOA_COLUMN(KaNsigmTOF, kaNsigmTOF, float); //! A DECLARE_SOA_COLUMN(PiNsigmTOF, piNsigmTOF, float); //! Associated Particle TOF nSigma Pion } // namespace hf_correlation_lc_hadron +DECLARE_SOA_TABLE(PtLcFromScHPair, "AOD", "PTLCSCHPAIR", //! Sc-->Lc pT for paired Sc-proton + aod::hf_correlation_lc_hadron::PtLc); + +DECLARE_SOA_TABLE(PtLcFromSc, "AOD", "PTLCSC", //! Sc-->Lc pT + aod::hf_correlation_lc_hadron::PtLc); + DECLARE_SOA_TABLE(LcHadronPair, "AOD", "LCHPAIR", //! Lc-Hadrons pairs Informations aod::hf_correlation_lc_hadron::DeltaPhi, aod::hf_correlation_lc_hadron::DeltaEta, diff --git a/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx index 5b53c48e75a..a0dcfbd9f90 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcScHadrons.cxx @@ -311,6 +311,8 @@ struct HfCorrelatorLcScHadronsSelection { // Lc-Hadron correlation pair builder - for real data and data-like analysis (i.e. reco-level w/o matching request via Mc truth) struct HfCorrelatorLcScHadrons { + Produces entryPtLcFromSc; + Produces entryPtLcFromScPair; Produces entryCandHadronPair; Produces entryCandHadronPairY; Produces entryCandHadronPairTrkPID; @@ -708,7 +710,7 @@ struct HfCorrelatorLcScHadrons { template void fillCorrelationTable(bool trkPidFill, TrackType const& track, CandType const& candidate, const std::vector& outMl, int binPool, int8_t correlStatus, - double yCand, int signCand, McPart const& mcParticles) + double yCand, int signCand, float ptLcFromSc, McPart const& mcParticles) { bool isPhysicalPrimary = false; int trackOrigin = -1; @@ -723,6 +725,7 @@ struct HfCorrelatorLcScHadrons { cent); entryCandHadronPairY(track.rapidity(MassProton) - yCand); entryCandHadronMlInfo(outMl[0], outMl[1]); + entryPtLcFromScPair(ptLcFromSc); entryTrackRecoInfo(track.dcaXY(), track.dcaZ(), track.tpcNClsCrossedRows()); entryPairCandCharge(signCand); if (trkPidFill) { @@ -798,7 +801,7 @@ struct HfCorrelatorLcScHadrons { double efficiencyWeightCand = 1.; double yCand = -999.0; double etaCand = -999.0; - double ptCandLc = -999.0; + double ptScProng0 = -999.0; double ptCand = -999.0; double phiCand = -999.0; double massCandPKPi = -999.0; @@ -833,7 +836,7 @@ struct HfCorrelatorLcScHadrons { if constexpr (IsCandSc) { chargeCand = candidate.charge(); const auto& candidateLc = candidate.template prongLc_as(); - ptCandLc = candidateLc.pt(); + ptScProng0 = candidateLc.pt(); selLcPKPi = (candidateLc.isSelLcToPKPi() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPKPiFromPDG()); selLcPiKP = (candidateLc.isSelLcToPiKP() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPiKPFromPDG()); if (selLcPKPi) { @@ -865,7 +868,7 @@ struct HfCorrelatorLcScHadrons { signSoftPion = candidate.template prong1_as().sign(); registry.fill(HIST("hPtProng1"), candidate.prong1().pt()); } - registry.fill(HIST("hPtProng0"), ptCandLc); + registry.fill(HIST("hPtProng0"), ptScProng0); if (chargeCand == ChargeZero) { chargeCand = (signSoftPion < ChargeZero) ? AssignedChargeSc0 : -AssignedChargeSc0; // to distingush sc0 from anti-sc0, charge set to +1 and -1 @@ -923,6 +926,7 @@ struct HfCorrelatorLcScHadrons { if (!skipMixedEventTableFilling) { entryCand(candidate.phi(), etaCand, ptCand, massCandPKPi, poolBin, gCollisionId, timeStamp); entryCandCharge(chargeCand); + entryPtLcFromSc(ptScProng0); } } @@ -943,6 +947,7 @@ struct HfCorrelatorLcScHadrons { if (!skipMixedEventTableFilling) { entryCand(candidate.phi(), etaCand, ptCand, massCandPiKP, poolBin, gCollisionId, timeStamp); entryCandCharge(chargeCand); + entryPtLcFromSc(ptScProng0); } } @@ -999,11 +1004,11 @@ struct HfCorrelatorLcScHadrons { } if (selLcPKPi) { - fillCorrelationTable(fillTrkPID, track, candidate, outputMlPKPi, poolBin, correlationStatus, yCand, chargeCand, *mcParticles); + fillCorrelationTable(fillTrkPID, track, candidate, outputMlPKPi, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPKPi, false); } if (selLcPiKP) { - fillCorrelationTable(fillTrkPID, track, candidate, outputMlPiKP, poolBin, correlationStatus, yCand, chargeCand, *mcParticles); + fillCorrelationTable(fillTrkPID, track, candidate, outputMlPiKP, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPiKP, false); } @@ -1036,6 +1041,7 @@ struct HfCorrelatorLcScHadrons { double yCand = -999.; double ptCand = -999.; + double ptScProng0 = -999.; int8_t chargeCand = 3; double massCandPKPi = -999.0; double massCandPiKP = -999.0; @@ -1064,6 +1070,7 @@ struct HfCorrelatorLcScHadrons { if constexpr (IsCandSc) { const auto& candidateLc = candidate.template prongLc_as(); chargeCand = candidate.charge(); + ptScProng0 = candidateLc.pt(); selLcPKPi = (candidateLc.isSelLcToPKPi() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPKPiFromPDG()); selLcPiKP = (candidateLc.isSelLcToPiKP() >= selectionFlagLc) && (candidate.statusSpreadLcMinvPiKPFromPDG()); @@ -1119,7 +1126,7 @@ struct HfCorrelatorLcScHadrons { } if (selLcPKPi) { - fillCorrelationTable(fillTrkPID, assocParticle, candidate, outputMlPKPi, poolBin, correlationStatus, yCand, chargeCand, *mcParticles); + fillCorrelationTable(fillTrkPID, assocParticle, candidate, outputMlPKPi, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPKPi, false); if (isPrompt) { @@ -1132,7 +1139,7 @@ struct HfCorrelatorLcScHadrons { } if (selLcPiKP) { - fillCorrelationTable(fillTrkPID, assocParticle, candidate, outputMlPiKP, poolBin, correlationStatus, yCand, chargeCand, *mcParticles); + fillCorrelationTable(fillTrkPID, assocParticle, candidate, outputMlPiKP, poolBin, correlationStatus, yCand, chargeCand, ptScProng0, *mcParticles); entryCandHadronRecoInfo(massCandPiKP, false); if (isPrompt) {