From cb3902e5307ede7ee4bf87d78e99b3b72fc84e66 Mon Sep 17 00:00:00 2001 From: Ravindra Singh <56298081+1994ra@users.noreply.github.com> Date: Fri, 14 Mar 2025 20:14:55 +0100 Subject: [PATCH 1/7] Bug fixed for the configrable yCandGenMax --- PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx index 00d10d40b20..91a1241e29b 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx @@ -145,7 +145,7 @@ struct HfCorrelatorLcHadronsSelection { continue; } double yL = RecoDecay::y(particle.pVector(), MassLambdaCPlus); - if (std::abs(yL) > yCandMax || particle.pt() < ptCandMin) { + if (std::abs(yL) > yCandGenMax || particle.pt() < ptCandMin) { isLcFound = false; continue; } @@ -775,7 +775,7 @@ struct HfCorrelatorLcHadrons { continue; } double yL = RecoDecay::y(particle.pVector(), MassLambdaCPlus); - if (std::abs(yL) > yCandMax || particle.pt() < ptCandMin) { + if (std::abs(yL) > yCandGenMax || particle.pt() < ptCandMin) { continue; } registry.fill(HIST("hLcBin"), poolBin); From c48c731ff030cd3a55376d128c5d48cb868d545a Mon Sep 17 00:00:00 2001 From: Ravindra Singh <56298081+1994ra@users.noreply.github.com> Date: Sat, 15 Mar 2025 00:07:25 +0100 Subject: [PATCH 2/7] [p --- PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx index 91a1241e29b..fcd40d29e2f 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx @@ -145,7 +145,7 @@ struct HfCorrelatorLcHadronsSelection { continue; } double yL = RecoDecay::y(particle.pVector(), MassLambdaCPlus); - if (std::abs(yL) > yCandGenMax || particle.pt() < ptCandMin) { + if (std::abs(yL) > yCandMax || particle.pt() < ptCandMin) { isLcFound = false; continue; } From 459f2be2c7c670f99a024e17988788acf1e490b9 Mon Sep 17 00:00:00 2001 From: Ravindra Singh <56298081+1994ra@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:07:56 +0100 Subject: [PATCH 3/7] PWGHF: Added flag to reject reflection for Lc at reco level --- .../HFC/TableProducer/correlatorLcHadrons.cxx | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx index fcd40d29e2f..cb6566d28e5 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx @@ -192,6 +192,7 @@ struct HfCorrelatorLcHadrons { Configurable> efficiencyLc{"efficiencyLc", {1., 1., 1., 1., 1., 1.}, "efficiency values for Lc"}; Configurable storeAutoCorrelationFlag{"storeAutoCorrelationFlag", false, "Store flag that indicates if the track is paired to its Lc mother instead of skipping it"}; Configurable correlateLcWithLeadingParticle{"correlateLcWithLeadingParticle", false, "Switch for correlation of Lc baryons with leading particle only"}; + Configurable rejectReflectionLc{"rejectReflectionLc", false, "allow to reject candidate reflection"}; Configurable pidTrkApplied{"pidTrkApplied", false, "Apply PID selection for associated tracks"}; Configurable> trkPIDspecies{"trkPIDspecies", std::vector{o2::track::PID::Proton, o2::track::PID::Pion, o2::track::PID::Kaon}, "Trk sel: Particles species for PID, proton, pion, kaon"}; Configurable> pidTPCMax{"pidTPCMax", std::vector{3., 0., 0.}, "maximum nSigma TPC"}; @@ -527,6 +528,9 @@ struct HfCorrelatorLcHadrons { auto trackPos1 = candidate.template prong0_as(); // positive daughter (negative for the antiparticles) auto trackPos2 = candidate.template prong2_as(); int8_t chargeLc = trackPos1.sign(); // charge of 1st prong will be the charge of Lc candidate + auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); + auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); + isLcSignal = TESTBIT(std::abs(candidate.flagMcMatchRec()), aod::hf_cand_3prong::DecayType::LcToPKPi); isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; isLcNonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; @@ -540,7 +544,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPhiMcRecSig"), RecoDecay::constrainAngle(candidate.phi(), -PIHalf)); registry.fill(HIST("hYMcRecSig"), hfHelper.yLc(candidate)); // LcToPKPi and LcToPiKP division - if (candidate.isSelLcToPKPi() >= selectionFlagLc) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPKPi()[classMl->at(iclass)]; } @@ -559,7 +563,7 @@ struct HfCorrelatorLcHadrons { entryLcCandRecoInfo(hfHelper.invMassLcToPKPi(candidate), candidate.pt() * chargeLc, outputMl[0], outputMl[1]); // 0: BkgBDTScore, 1:PromptBDTScore entryLcCandGenInfo(isLcPrompt); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPiKP()[classMl->at(iclass)]; } @@ -583,7 +587,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPhiMcRecBkg"), RecoDecay::constrainAngle(candidate.phi(), -PIHalf)); registry.fill(HIST("hYMcRecBkg"), hfHelper.yLc(candidate)); // LcToPKPi and LcToPiKP division - if (candidate.isSelLcToPKPi() >= selectionFlagLc) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPKPi()[classMl->at(iclass)]; } @@ -592,7 +596,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hMassLcVsPtMcRec"), hfHelper.invMassLcToPKPi(candidate), candidate.pt(), efficiencyWeightLc); registry.fill(HIST("hSelectionStatusLcToPKPiMcRec"), candidate.isSelLcToPKPi()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPiKP()[classMl->at(iclass)]; } @@ -682,7 +686,7 @@ struct HfCorrelatorLcHadrons { } } - if (candidate.isSelLcToPKPi() >= selectionFlagLc) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { entryLcHadronPair(getDeltaPhi(track.phi(), candidate.phi()), track.eta() - candidate.eta(), candidate.pt() * chargeLc, @@ -711,7 +715,7 @@ struct HfCorrelatorLcHadrons { } entryTrackRecoInfo(track.dcaXY(), track.dcaZ(), track.tpcNClsCrossedRows()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { entryLcHadronPair(getDeltaPhi(track.phi(), candidate.phi()), track.eta() - candidate.eta(), candidate.pt() * chargeLc, @@ -938,8 +942,11 @@ struct HfCorrelatorLcHadrons { // prompt and non-prompt division bool isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; bool isLcNonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; + auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); + auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); + if (isLcSignal) { - if (candidate.isSelLcToPKPi() >= selectionFlagLc) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { if (isLcPrompt) { registry.fill(HIST("hPtCandMcRecSigPrompt"), candidate.pt()); registry.fill(HIST("hPtVsMultiplicityMcRecPrompt"), candidate.pt(), 0); @@ -948,7 +955,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPtVsMultiplicityMcRecNonPrompt"), candidate.pt(), 0); } } - if (candidate.isSelLcToPiKP() >= selectionFlagLc) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { if (isLcPrompt) { registry.fill(HIST("hPtCandMcRecSigPrompt"), candidate.pt()); registry.fill(HIST("hPtVsMultiplicityMcRecPrompt"), candidate.pt(), 0); @@ -985,6 +992,8 @@ struct HfCorrelatorLcHadrons { int trackOrigin = -1; bool isLcSignal = std::abs(candidate.flagMcMatchRec()) == 1 << aod::hf_cand_3prong::DecayType::LcToPKPi; bool isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; + auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); + auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); if (pidTrkApplied) { if (!passPIDSelection(pAssoc, trkPIDspecies, pidTPCMax, pidTOFMax, tofPIDThreshold, forceTOF)) continue; @@ -999,7 +1008,7 @@ struct HfCorrelatorLcHadrons { } else { registry.fill(HIST("hFakeTracksMcRec"), pAssoc.pt()); } - if (candidate.isSelLcToPKPi() >= selectionFlagLc) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { entryLcHadronPair(getDeltaPhi(pAssoc.phi(), candidate.phi()), pAssoc.eta() - candidate.eta(), candidate.pt() * chargeLc, @@ -1017,7 +1026,7 @@ struct HfCorrelatorLcHadrons { entryLcHadronMlInfo(outputMl[0], outputMl[1]); entryTrackRecoInfo(pAssoc.dcaXY(), pAssoc.dcaZ(), pAssoc.tpcNClsCrossedRows()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { entryLcHadronPair(getDeltaPhi(pAssoc.phi(), candidate.phi()), pAssoc.eta() - candidate.eta(), candidate.pt() * chargeLc, From ca12f3add3517e83f25e77f2ea646f8b466c8496 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 18 Mar 2025 16:10:56 +0000 Subject: [PATCH 4/7] Please consider the following formatting changes --- PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx index cb6566d28e5..b65e1cf9fea 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx @@ -944,7 +944,7 @@ struct HfCorrelatorLcHadrons { bool isLcNonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); - + if (isLcSignal) { if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { if (isLcPrompt) { From 979f26d7d7e36ed4053652d80071aef6a2de6d0c Mon Sep 17 00:00:00 2001 From: Ravindra Singh <56298081+1994ra@users.noreply.github.com> Date: Tue, 15 Apr 2025 18:17:05 +0200 Subject: [PATCH 5/7] PWGHF: added table for DeltaY between Lc-hadrons --- PWGHF/HFC/DataModel/CorrelationTables.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PWGHF/HFC/DataModel/CorrelationTables.h b/PWGHF/HFC/DataModel/CorrelationTables.h index 1602099abfa..a757611bdf1 100644 --- a/PWGHF/HFC/DataModel/CorrelationTables.h +++ b/PWGHF/HFC/DataModel/CorrelationTables.h @@ -141,6 +141,7 @@ namespace hf_correlation_lc_hadron { DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); //! DeltaPhi between Lc and Hadrons DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! DeltaEta between Lc and Hadrons +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(MLc, mLc, float); //! Invariant mass of Lc @@ -212,7 +213,8 @@ DECLARE_SOA_TABLE(TrkRecInfoLc, "AOD", "TRKRECINFOLC", //! Tracks Reconstructed aod::hf_correlation_lc_hadron::TrackDcaXY, aod::hf_correlation_lc_hadron::TrackDcaZ, aod::hf_correlation_lc_hadron::TrackTPCNClsCrossedRows); - +DECLARE_SOA_TABLE(LcHadronPairY, "AOD", "LCHPAIRY", //! Lc candidates Generated Information + aod::hf_correlation_lc_hadron::DeltaY); // definition of columns and tables for Ds-Hadron correlation pairs namespace hf_correlation_ds_hadron { From 747799b5d39c198be05492533176124ac3fa6b39 Mon Sep 17 00:00:00 2001 From: Ravindra Singh <56298081+1994ra@users.noreply.github.com> Date: Tue, 15 Apr 2025 18:18:36 +0200 Subject: [PATCH 6/7] PWGHF: added table for DeltaY between Lc-hadrons --- .../HFC/TableProducer/correlatorLcHadrons.cxx | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx index 7d5520b5d6c..1a90ecf0d72 100644 --- a/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorLcHadrons.cxx @@ -160,6 +160,7 @@ struct HfCorrelatorLcHadronsSelection { // Lc-Hadron correlation pair builder - for real data and data-like analysis (i.e. reco-level w/o matching request via Mc truth) struct HfCorrelatorLcHadrons { Produces entryLcHadronPair; + Produces entryLcHadronPairY; Produces entryLcHadronPairTrkPID; Produces entryLcHadronRecoInfo; Produces entryLcHadronMlInfo; @@ -192,7 +193,6 @@ struct HfCorrelatorLcHadrons { Configurable> efficiencyLc{"efficiencyLc", {1., 1., 1., 1., 1., 1.}, "efficiency values for Lc"}; Configurable storeAutoCorrelationFlag{"storeAutoCorrelationFlag", false, "Store flag that indicates if the track is paired to its Lc mother instead of skipping it"}; Configurable correlateLcWithLeadingParticle{"correlateLcWithLeadingParticle", false, "Switch for correlation of Lc baryons with leading particle only"}; - Configurable rejectReflectionLc{"rejectReflectionLc", false, "allow to reject candidate reflection"}; Configurable pidTrkApplied{"pidTrkApplied", false, "Apply PID selection for associated tracks"}; Configurable> trkPIDspecies{"trkPIDspecies", std::vector{o2::track::PID::Proton, o2::track::PID::Pion, o2::track::PID::Kaon}, "Trk sel: Particles species for PID, proton, pion, kaon"}; Configurable> pidTPCMax{"pidTPCMax", std::vector{3., 0., 0.}, "maximum nSigma TPC"}; @@ -439,6 +439,7 @@ struct HfCorrelatorLcHadrons { track.pt() * track.sign(), poolBin, correlationStatus); + entryLcHadronPairY(track.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPKPi(candidate), false); entryLcHadronGenInfo(false, false, 0); entryLcHadronMlInfo(outputMl[0], outputMl[1]); @@ -454,6 +455,7 @@ struct HfCorrelatorLcHadrons { track.pt() * track.sign(), poolBin, correlationStatus); + entryLcHadronPairY(track.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPiKP(candidate), false); entryLcHadronGenInfo(false, false, 0); entryLcHadronMlInfo(outputMl[0], outputMl[1]); @@ -528,9 +530,6 @@ struct HfCorrelatorLcHadrons { auto trackPos1 = candidate.template prong0_as(); // positive daughter (negative for the antiparticles) auto trackPos2 = candidate.template prong2_as(); int8_t chargeLc = trackPos1.sign(); // charge of 1st prong will be the charge of Lc candidate - auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); - auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); - isLcSignal = TESTBIT(std::abs(candidate.flagMcMatchRec()), aod::hf_cand_3prong::DecayType::LcToPKPi); isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; isLcNonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; @@ -544,7 +543,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPhiMcRecSig"), RecoDecay::constrainAngle(candidate.phi(), -PIHalf)); registry.fill(HIST("hYMcRecSig"), hfHelper.yLc(candidate)); // LcToPKPi and LcToPiKP division - if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPKPi()[classMl->at(iclass)]; } @@ -563,7 +562,7 @@ struct HfCorrelatorLcHadrons { entryLcCandRecoInfo(hfHelper.invMassLcToPKPi(candidate), candidate.pt() * chargeLc, outputMl[0], outputMl[1]); // 0: BkgBDTScore, 1:PromptBDTScore entryLcCandGenInfo(isLcPrompt); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPiKP()[classMl->at(iclass)]; } @@ -587,7 +586,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPhiMcRecBkg"), RecoDecay::constrainAngle(candidate.phi(), -PIHalf)); registry.fill(HIST("hYMcRecBkg"), hfHelper.yLc(candidate)); // LcToPKPi and LcToPiKP division - if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPKPi()[classMl->at(iclass)]; } @@ -596,7 +595,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hMassLcVsPtMcRec"), hfHelper.invMassLcToPKPi(candidate), candidate.pt(), efficiencyWeightLc); registry.fill(HIST("hSelectionStatusLcToPKPiMcRec"), candidate.isSelLcToPKPi()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc) { for (unsigned int iclass = 0; iclass < classMl->size(); iclass++) { outputMl[iclass] = candidate.mlProbLcToPiKP()[classMl->at(iclass)]; } @@ -686,13 +685,14 @@ struct HfCorrelatorLcHadrons { } } - if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc) { entryLcHadronPair(getDeltaPhi(track.phi(), candidate.phi()), track.eta() - candidate.eta(), candidate.pt() * chargeLc, track.pt() * track.sign(), poolBin, correlationStatus); + entryLcHadronPairY(track.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPKPi(candidate), isLcSignal); if (fillTrkPID) { entryLcHadronPairTrkPID(track.tpcNSigmaPr(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), track.tofNSigmaPr(), track.tofNSigmaKa(), track.tofNSigmaPi()); @@ -715,13 +715,14 @@ struct HfCorrelatorLcHadrons { } entryTrackRecoInfo(track.dcaXY(), track.dcaZ(), track.tpcNClsCrossedRows()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc) { entryLcHadronPair(getDeltaPhi(track.phi(), candidate.phi()), track.eta() - candidate.eta(), candidate.pt() * chargeLc, track.pt() * track.sign(), poolBin, correlationStatus); + entryLcHadronPairY(track.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPiKP(candidate), isLcSignal); if (fillTrkPID) { entryLcHadronPairTrkPID(track.tpcNSigmaPr(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), track.tofNSigmaPr(), track.tofNSigmaKa(), track.tofNSigmaPi()); @@ -853,6 +854,7 @@ struct HfCorrelatorLcHadrons { particleAssoc.pt() * chargeAssoc / std::abs(chargeAssoc), poolBin, correlationStatus); + entryLcHadronPairY(particleAssoc.y() - yL); entryLcHadronRecoInfo(MassLambdaCPlus, true); entryLcHadronGenInfo(isLcPrompt, particleAssoc.isPhysicalPrimary(), trackOrigin); } // end inner loop @@ -893,6 +895,7 @@ struct HfCorrelatorLcHadrons { assocParticle.pt() * assocParticle.sign(), poolBin, correlationStatus); + entryLcHadronPairY(assocParticle.y() - hfHelper.yLc(trigLc)); entryLcHadronRecoInfo(hfHelper.invMassLcToPKPi(trigLc), false); entryLcHadronGenInfo(false, false, 0); if (fillTrkPID) { @@ -911,6 +914,7 @@ struct HfCorrelatorLcHadrons { assocParticle.pt() * assocParticle.sign(), poolBin, correlationStatus); + entryLcHadronPairY(assocParticle.y() - hfHelper.yLc(trigLc)); entryLcHadronRecoInfo(hfHelper.invMassLcToPiKP(trigLc), false); entryLcHadronGenInfo(false, false, 0); if (fillTrkPID) { @@ -942,11 +946,8 @@ struct HfCorrelatorLcHadrons { // prompt and non-prompt division bool isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; bool isLcNonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; - auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); - auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); - if (isLcSignal) { - if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc) { if (isLcPrompt) { registry.fill(HIST("hPtCandMcRecSigPrompt"), candidate.pt()); registry.fill(HIST("hPtVsMultiplicityMcRecPrompt"), candidate.pt(), 0); @@ -955,7 +956,7 @@ struct HfCorrelatorLcHadrons { registry.fill(HIST("hPtVsMultiplicityMcRecNonPrompt"), candidate.pt(), 0); } } - if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc) { if (isLcPrompt) { registry.fill(HIST("hPtCandMcRecSigPrompt"), candidate.pt()); registry.fill(HIST("hPtVsMultiplicityMcRecPrompt"), candidate.pt(), 0); @@ -992,8 +993,6 @@ struct HfCorrelatorLcHadrons { int trackOrigin = -1; bool isLcSignal = std::abs(candidate.flagMcMatchRec()) == 1 << aod::hf_cand_3prong::DecayType::LcToPKPi; bool isLcPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; - auto mcParticleProng0 = candidate.template prong0_as().template mcParticle_as(); - auto pdgCodeProng0 = std::abs(mcParticleProng0.pdgCode()); if (pidTrkApplied) { if (!passPIDSelection(pAssoc, trkPIDspecies, pidTPCMax, pidTOFMax, tofPIDThreshold, forceTOF)) continue; @@ -1008,13 +1007,14 @@ struct HfCorrelatorLcHadrons { } else { registry.fill(HIST("hFakeTracksMcRec"), pAssoc.pt()); } - if (candidate.isSelLcToPKPi() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kProton)) { + if (candidate.isSelLcToPKPi() >= selectionFlagLc) { entryLcHadronPair(getDeltaPhi(pAssoc.phi(), candidate.phi()), pAssoc.eta() - candidate.eta(), candidate.pt() * chargeLc, pAssoc.pt() * pAssoc.sign(), poolBin, correlationStatus); + entryLcHadronPairY(pAssoc.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPKPi(candidate), isLcSignal); entryLcHadronGenInfo(isLcPrompt, isPhysicalPrimary, trackOrigin); if (fillTrkPID) { @@ -1026,13 +1026,14 @@ struct HfCorrelatorLcHadrons { entryLcHadronMlInfo(outputMl[0], outputMl[1]); entryTrackRecoInfo(pAssoc.dcaXY(), pAssoc.dcaZ(), pAssoc.tpcNClsCrossedRows()); } - if (candidate.isSelLcToPiKP() >= selectionFlagLc && (!rejectReflectionLc || pdgCodeProng0 == kPiPlus)) { + if (candidate.isSelLcToPiKP() >= selectionFlagLc) { entryLcHadronPair(getDeltaPhi(pAssoc.phi(), candidate.phi()), pAssoc.eta() - candidate.eta(), candidate.pt() * chargeLc, pAssoc.pt() * pAssoc.sign(), poolBin, correlationStatus); + entryLcHadronPairY(pAssoc.y() - hfHelper.yLc(candidate)); entryLcHadronRecoInfo(hfHelper.invMassLcToPiKP(candidate), isLcSignal); entryLcHadronGenInfo(isLcPrompt, isPhysicalPrimary, trackOrigin); if (fillTrkPID) { @@ -1088,6 +1089,7 @@ struct HfCorrelatorLcHadrons { particleAssoc.pt() * chargeAssoc / std::abs(chargeAssoc), poolBin, correlationStatus); + entryLcHadronPairY(particleAssoc.y() - yL); entryLcHadronRecoInfo(MassLambdaCPlus, true); entryLcHadronGenInfo(isLcPrompt, particleAssoc.isPhysicalPrimary(), trackOrigin); } From 4d9cbd5d78084d680398e2ef5b489d4ac2e65d10 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 15 Apr 2025 16:19:04 +0000 Subject: [PATCH 7/7] Please consider the following formatting changes --- PWGHF/HFC/DataModel/CorrelationTables.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGHF/HFC/DataModel/CorrelationTables.h b/PWGHF/HFC/DataModel/CorrelationTables.h index a757611bdf1..0ffeeea8868 100644 --- a/PWGHF/HFC/DataModel/CorrelationTables.h +++ b/PWGHF/HFC/DataModel/CorrelationTables.h @@ -141,7 +141,7 @@ namespace hf_correlation_lc_hadron { DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); //! DeltaPhi between Lc and Hadrons DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! DeltaEta between Lc and Hadrons -DECLARE_SOA_COLUMN(DeltaY, deltaY, float); //! DeltaY between Lc and Hadrons +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(MLc, mLc, float); //! Invariant mass of Lc