From 77697c1c80d9baec73596b856d4c2e7d9a34ee99 Mon Sep 17 00:00:00 2001 From: Xufei Xue Date: Mon, 12 Oct 2026 00:07:27 +0800 Subject: [PATCH] Add isSelLcToPiKP handling in derived-data creator correlations Process Lc candidates selected via isSelLcToPiKP (proton on trailing prong) in addition to the existing isSelLcToPKPi branch. --- .../derivedDataCreatorCorrelationsReduced.cxx | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/PWGHF/HFC/TableProducer/derivedDataCreatorCorrelationsReduced.cxx b/PWGHF/HFC/TableProducer/derivedDataCreatorCorrelationsReduced.cxx index 5636a0b8fa6..df7ea3c4186 100644 --- a/PWGHF/HFC/TableProducer/derivedDataCreatorCorrelationsReduced.cxx +++ b/PWGHF/HFC/TableProducer/derivedDataCreatorCorrelationsReduced.cxx @@ -65,6 +65,7 @@ enum CandidateType { D0ToPiK, D0ToKPi, LcToPKPi, + LcToPiKP, Hadron }; @@ -121,7 +122,7 @@ struct HfDerivedDataCreatorCorrelationsReduced { Filter filterSelectDsCandidates = aod::hf_sel_candidate_ds::isSelDsToKKPi >= selectionFlag || aod::hf_sel_candidate_ds::isSelDsToPiKK >= selectionFlag; Filter filterSelectDplusCandidates = aod::hf_sel_candidate_dplus::isSelDplusToPiKPi >= selectionFlag; Filter filterSelectD0Candidates = aod::hf_sel_candidate_d0::isSelD0 >= selectionFlag || aod::hf_sel_candidate_d0::isSelD0bar >= selectionFlag; - Filter filterSelectLcCandidates = aod::hf_sel_candidate_lc::isSelLcToPKPi >= selectionFlag; + Filter filterSelectLcCandidates = aod::hf_sel_candidate_lc::isSelLcToPKPi >= selectionFlag || aod::hf_sel_candidate_lc::isSelLcToPiKP >= selectionFlag; Filter filterSelectTrkData = (nabs(aod::track::eta) < etaTrkMax) && (aod::track::pt > ptTrkMin) && (aod::track::pt < ptTrkMax) && (nabs(aod::track::dcaXY) < dcaXYTrkMax) && (nabs(aod::track::dcaZ) < dcaZTrkMax); Preslice candsDsPerColl = aod::hf_cand::collisionId; @@ -135,6 +136,7 @@ struct HfDerivedDataCreatorCorrelationsReduced { Partition selectedD0ToPiK = aod::hf_sel_candidate_d0::isSelD0 >= selectionFlag; Partition selectedD0ToKPi = aod::hf_sel_candidate_d0::isSelD0bar >= selectionFlag; Partition selectedLcToPKPi = aod::hf_sel_candidate_lc::isSelLcToPKPi >= selectionFlag; + Partition selectedLcToPiKP = aod::hf_sel_candidate_lc::isSelLcToPiKP >= selectionFlag; ConfigurableAxis binsInvMass{"binsInvMass", {300, 1.6, 2.2}, ""}; ConfigurableAxis binsMultFT0M{"binsMultFT0M", {100, 0., 10000.}, "Multiplicity as FT0M signal amplitude"}; @@ -222,6 +224,9 @@ struct HfDerivedDataCreatorCorrelationsReduced { if constexpr (CandType == CandidateType::LcToPKPi) { return HfHelper::invMassLcToPKPi(candidate); } + if constexpr (CandType == CandidateType::LcToPiKP) { + return HfHelper::invMassLcToPiKP(candidate); + } return -1.; } @@ -261,6 +266,11 @@ struct HfDerivedDataCreatorCorrelationsReduced { outputMl[iclass] = candidate.mlProbLcToPKPi()[classMl->at(iclass)]; } } + if constexpr (CandType == CandidateType::LcToPiKP) { + for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { + outputMl[iclass] = candidate.mlProbLcToPiKP()[classMl->at(iclass)]; + } + } return outputMl; } @@ -276,7 +286,7 @@ struct HfDerivedDataCreatorCorrelationsReduced { y = HfHelper::yDplus(candidate); } else if constexpr (CandType == CandidateType::D0ToPiK || CandType == CandidateType::D0ToKPi) { y = HfHelper::yD0(candidate); - } else if constexpr (CandType == CandidateType::LcToPKPi) { + } else if constexpr (CandType == CandidateType::LcToPKPi || CandType == CandidateType::LcToPiKP) { y = HfHelper::yLc(candidate); } else { return true; @@ -582,7 +592,8 @@ struct HfDerivedDataCreatorCorrelationsReduced { CandLcData const&) { auto candsLcToPKPi = selectedLcToPKPi->sliceByCached(aod::hf_cand::collisionId, coll.globalIndex(), cache); - if (forceCharmInCollision && candsLcToPKPi.size() < 1) { + auto candsLcToPiKP = selectedLcToPiKP->sliceByCached(aod::hf_cand::collisionId, coll.globalIndex(), cache); + if (forceCharmInCollision && candsLcToPKPi.size() < 1 && candsLcToPiKP.size() < 1) { return; } float cent{-1.}, mult{-1.}; @@ -591,6 +602,7 @@ struct HfDerivedDataCreatorCorrelationsReduced { } rowCollisions(mult, coll.numContrib(), cent, coll.posZ()); fillSameEvent(candsLcToPKPi, tracks, cent); + fillSameEvent(candsLcToPiKP, tracks, cent); } PROCESS_SWITCH(HfDerivedDataCreatorCorrelationsReduced, processLcSameEvent, "Process Same Event for Lc candidates", false); @@ -600,7 +612,8 @@ struct HfDerivedDataCreatorCorrelationsReduced { CandLcData const&) { auto candsLcToPKPi = selectedLcToPKPi->sliceByCached(aod::hf_cand::collisionId, coll.globalIndex(), cache); - if (forceCharmInCollision && candsLcToPKPi.size() < 1) { + auto candsLcToPiKP = selectedLcToPiKP->sliceByCached(aod::hf_cand::collisionId, coll.globalIndex(), cache); + if (forceCharmInCollision && candsLcToPKPi.size() < 1 && candsLcToPiKP.size() < 1) { return; } float cent{-1.}, mult{-1.}; @@ -609,6 +622,7 @@ struct HfDerivedDataCreatorCorrelationsReduced { } rowCollisions(mult, coll.numContrib(), cent, coll.posZ()); fillCharmMixedEvent(candsLcToPKPi); + fillCharmMixedEvent(candsLcToPiKP); fillTrkMixedEvent(tracks, cent); } PROCESS_SWITCH(HfDerivedDataCreatorCorrelationsReduced, processLcMixedEvent, "Process Mixed Event for Lc candidates", false);