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..12238d7eb65 100644 --- a/PWGHF/Utils/utilsDerivedData.h +++ b/PWGHF/Utils/utilsDerivedData.h @@ -168,11 +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(), - mcCollision.centFT0M()); + centFT0M); } if (conf->fillMcCollId.value) { rowMcCollId(