From 3816ff6f513267e8eb778c4b3dc5d96750c2f7a3 Mon Sep 17 00:00:00 2001 From: Monalisa Melo Date: Mon, 2 Nov 2026 17:05:49 +0100 Subject: [PATCH 1/3] [PWGHF] support generator-only derived data without MC centrality --- .../derivedDataCreatorD0ToKPi.cxx | 3 ++- .../derivedDataCreatorDsToKKPi.cxx | 3 ++- PWGHF/Utils/utilsDerivedData.h | 20 ++++++++++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/PWGHF/TableProducer/derivedDataCreatorD0ToKPi.cxx b/PWGHF/TableProducer/derivedDataCreatorD0ToKPi.cxx index ad8e52744e1..212756317ee 100644 --- a/PWGHF/TableProducer/derivedDataCreatorD0ToKPi.cxx +++ b/PWGHF/TableProducer/derivedDataCreatorD0ToKPi.cxx @@ -105,6 +105,7 @@ struct HfDerivedDataCreatorD0ToKPi { using SelectedCandidatesMcKfMl = soa::Filtered>; using MatchedGenCandidatesMc = soa::Filtered>; using TypeMcCollisions = soa::Join; + using TypeMcGenCollisions = aod::McCollisions; Filter filterSelectCandidates = aod::hf_sel_candidate_d0::isSelD0 >= 1 || aod::hf_sel_candidate_d0::isSelD0bar >= 1; Filter filterMcGenMatching = (nabs(aod::hf_cand_mc_flag::flagMcMatchGen) == static_cast(o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK)) || (acceptCorrelatedBkgs && aod::hf_cand_mc_flag::flagMcMatchGen != 0); @@ -533,7 +534,7 @@ struct HfDerivedDataCreatorD0ToKPi { } PROCESS_SWITCH(HfDerivedDataCreatorD0ToKPi, processMcWithKFParticleMlAll, "Process MC with KFParticle and ML", false); - void processMcGenOnly(TypeMcCollisions const& mcCollisions, + void processMcGenOnly(TypeMcGenCollisions const& mcCollisions, MatchedGenCandidatesMc const& mcParticles) { rowsCommon.processMcParticles(mcCollisions, mcParticlesPerMcCollision, mcParticles, Mass); diff --git a/PWGHF/TableProducer/derivedDataCreatorDsToKKPi.cxx b/PWGHF/TableProducer/derivedDataCreatorDsToKKPi.cxx index c30f037d976..8d7a2fd1b63 100644 --- a/PWGHF/TableProducer/derivedDataCreatorDsToKKPi.cxx +++ b/PWGHF/TableProducer/derivedDataCreatorDsToKKPi.cxx @@ -100,6 +100,7 @@ struct HfDerivedDataCreatorDsToKKPi { using SelectedCandidatesMcMl = soa::Filtered>; using MatchedGenCandidatesMc = soa::Filtered>; using TypeMcCollisions = soa::Join; + using TypeMcGenCollisions = aod::McCollisions; Filter filterSelectCandidates = (aod::hf_sel_candidate_ds::isSelDsToKKPi & static_cast(BIT(aod::SelectionStep::RecoMl - 1))) != 0 || (aod::hf_sel_candidate_ds::isSelDsToPiKK & static_cast(BIT(aod::SelectionStep::RecoMl - 1))) != 0; // select candidates which passed all cuts at least up to RecoMl - 1 Filter filterMcGenMatching = (nabs(aod::hf_cand_mc_flag::flagMcMatchGen) == static_cast(hf_decay::hf_cand_3prong::DecayChannelMain::DsToPiKK)) || (acceptCorrelatedBkgs && aod::hf_cand_mc_flag::flagMcMatchGen != 0); @@ -411,7 +412,7 @@ struct HfDerivedDataCreatorDsToKKPi { } PROCESS_SWITCH(HfDerivedDataCreatorDsToKKPi, processMcMlAll, "Process MC with ML", false); - void processMcGenOnly(TypeMcCollisions const& mcCollisions, + void processMcGenOnly(TypeMcGenCollisions const& mcCollisions, MatchedGenCandidatesMc const& mcParticles) { rowsCommon.processMcParticles(mcCollisions, mcParticlesPerMcCollision, mcParticles, Mass); diff --git a/PWGHF/Utils/utilsDerivedData.h b/PWGHF/Utils/utilsDerivedData.h index f2b63291665..e33e315dde7 100644 --- a/PWGHF/Utils/utilsDerivedData.h +++ b/PWGHF/Utils/utilsDerivedData.h @@ -168,11 +168,21 @@ struct HfProducesDerivedData : o2::framework::ProducesGroup { void fillTablesMcCollision(TMcCollision const& mcCollision) { if (conf->fillMcCollBase.value) { - rowMcCollBase( - mcCollision.posX(), - mcCollision.posY(), - mcCollision.posZ(), - mcCollision.centFT0M()); + if constexpr (requires { mcCollision.centFT0M(); }) { + // MC general: input includes centrality + rowMcCollBase( + mcCollision.posX(), + mcCollision.posY(), + mcCollision.posZ(), + mcCollision.centFT0M()); + } else { + // Input without centrality: e.g. generator-only + rowMcCollBase( + mcCollision.posX(), + mcCollision.posY(), + mcCollision.posZ(), + -999.f); + } } if (conf->fillMcCollId.value) { rowMcCollId( From 4df08d904bff771bb9c7fce31e19c8c202f4d240 Mon Sep 17 00:00:00 2001 From: "M. Monalisa Melo Paulino" <71565863+monamelop@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:50:36 +0100 Subject: [PATCH 2/3] Update PWGHF/Utils/utilsDerivedData.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vít Kučera <26327373+vkucera@users.noreply.github.com> --- PWGHF/Utils/utilsDerivedData.h | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/PWGHF/Utils/utilsDerivedData.h b/PWGHF/Utils/utilsDerivedData.h index e33e315dde7..d1f80fcbe9f 100644 --- a/PWGHF/Utils/utilsDerivedData.h +++ b/PWGHF/Utils/utilsDerivedData.h @@ -168,21 +168,16 @@ struct HfProducesDerivedData : o2::framework::ProducesGroup { void fillTablesMcCollision(TMcCollision const& mcCollision) { if (conf->fillMcCollBase.value) { - if constexpr (requires { mcCollision.centFT0M(); }) { - // MC general: input includes centrality - rowMcCollBase( - mcCollision.posX(), - mcCollision.posY(), - mcCollision.posZ(), - mcCollision.centFT0M()); - } else { - // Input without centrality: e.g. generator-only - rowMcCollBase( - mcCollision.posX(), - mcCollision.posY(), - mcCollision.posZ(), - -999.f); - } + float centFT0M{-1.f}; // Input without centrality: e.g. generator-only + if constexpr (requires { mcCollision.centFT0M(); }) { + // MC general: input includes centrality + centFT0M = mcCollision.centFT0M(); + } + rowMcCollBase( + mcCollision.posX(), + mcCollision.posY(), + mcCollision.posZ(), + centFT0M); } if (conf->fillMcCollId.value) { rowMcCollId( From e6f970d03c8253051fef38b32bcbc011826d5549 Mon Sep 17 00:00:00 2001 From: Monalisa Melo Date: Mon, 2 Nov 2026 18:01:04 +0100 Subject: [PATCH 3/3] [PWGHF] Fix formatting in MC collision filling --- PWGHF/Utils/utilsDerivedData.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/PWGHF/Utils/utilsDerivedData.h b/PWGHF/Utils/utilsDerivedData.h index d1f80fcbe9f..12238d7eb65 100644 --- a/PWGHF/Utils/utilsDerivedData.h +++ b/PWGHF/Utils/utilsDerivedData.h @@ -168,16 +168,16 @@ struct HfProducesDerivedData : o2::framework::ProducesGroup { void fillTablesMcCollision(TMcCollision const& mcCollision) { if (conf->fillMcCollBase.value) { - float centFT0M{-1.f}; // Input without centrality: e.g. generator-only - if constexpr (requires { mcCollision.centFT0M(); }) { - // MC general: input includes centrality - centFT0M = mcCollision.centFT0M(); - } - rowMcCollBase( - mcCollision.posX(), - mcCollision.posY(), - mcCollision.posZ(), - centFT0M); + float centFT0M{-1.f}; // Input without centrality: e.g. generator-only + if constexpr (requires { mcCollision.centFT0M(); }) { + // MC general: input includes centrality + centFT0M = mcCollision.centFT0M(); + } + rowMcCollBase( + mcCollision.posX(), + mcCollision.posY(), + mcCollision.posZ(), + centFT0M); } if (conf->fillMcCollId.value) { rowMcCollId(