From 6db908a49ce3ac2eca2fb47a31bdc3edbb5c1970 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Fri, 27 Jun 2025 22:26:01 +0200 Subject: [PATCH 1/3] Fix event selection for generated signals --- PWGHF/D2H/DataModel/ReducedDataModel.h | 20 +- .../dataCreatorCharmHadPiReduced.cxx | 218 +++++++++++------- .../dataCreatorJpsiHadReduced.cxx | 72 ++++-- .../TableProducer/candidateCreator2Prong.cxx | 2 +- .../TableProducer/candidateCreator3Prong.cxx | 2 +- .../TableProducer/candidateCreatorCascade.cxx | 2 +- PWGHF/TableProducer/candidateCreatorDstar.cxx | 2 +- .../candidateCreatorSigmac0plusplus.cxx | 3 +- .../candidateCreatorXicToXiPiPi.cxx | 2 +- PWGHF/Tasks/taskMcValidation.cxx | 2 +- 10 files changed, 219 insertions(+), 106 deletions(-) diff --git a/PWGHF/D2H/DataModel/ReducedDataModel.h b/PWGHF/D2H/DataModel/ReducedDataModel.h index c23a22efcad..2675e4b70fe 100644 --- a/PWGHF/D2H/DataModel/ReducedDataModel.h +++ b/PWGHF/D2H/DataModel/ReducedDataModel.h @@ -832,7 +832,10 @@ DECLARE_SOA_TABLE(HfMcGenRedB0s, "AOD", "HFMCGENREDB0", //! Generation-level MC hf_b0_mc::EtaProng0, hf_b0_mc::PtProng1, hf_b0_mc::YProng1, - hf_b0_mc::EtaProng1); + hf_b0_mc::EtaProng1, + hf_reduced_collision::HfCollisionRejectionMap, + cent::CentFT0C, + cent::CentFT0M); // store all configurables values used in the first part of the workflow // so we can use them in the B0 part @@ -923,7 +926,10 @@ DECLARE_SOA_TABLE(HfMcGenRedBps, "AOD", "HFMCGENREDBP", //! Generation-level MC hf_bplus_mc::EtaProng0, hf_bplus_mc::PtProng1, hf_bplus_mc::YProng1, - hf_bplus_mc::EtaProng1); + hf_bplus_mc::EtaProng1, + hf_reduced_collision::HfCollisionRejectionMap, + cent::CentFT0C, + cent::CentFT0M); // store all configurables values used in the first part of the workflow // so we can use them in the Bplus part @@ -1025,7 +1031,10 @@ DECLARE_SOA_TABLE(HfMcGenRedBss, "AOD", "HFMCGENREDBS", //! Generation-level MC hf_bs_mc::EtaProng0, hf_bs_mc::PtProng1, hf_bs_mc::YProng1, - hf_bs_mc::EtaProng1); + hf_bs_mc::EtaProng1, + hf_reduced_collision::HfCollisionRejectionMap, + cent::CentFT0C, + cent::CentFT0M); // store all configurables values used in the first part of the workflow // so we can use them in the Bs part @@ -1109,7 +1118,10 @@ DECLARE_SOA_TABLE(HfMcGenRedLbs, "AOD", "HFMCGENREDLB", //! Generation-level MC hf_lb_mc::EtaProng0, hf_lb_mc::PtProng1, hf_lb_mc::YProng1, - hf_lb_mc::EtaProng1); + hf_lb_mc::EtaProng1, + hf_reduced_collision::HfCollisionRejectionMap, + cent::CentFT0C, + cent::CentFT0M); // store all configurables values used in the first part of the workflow // so we can use them in the B0 part diff --git a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx index 9f3f1e6fb6d..d2bad73b298 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx @@ -55,6 +55,7 @@ #include #include #include +#include "Framework/RunningWorkflowInfo.h" #include #include @@ -62,8 +63,6 @@ #include #include -#include - #include #include #include @@ -149,9 +148,20 @@ struct HfDataCreatorCharmHadPiReduced { Produces rowHfLcPiMcCheckReduced; Produces rowHfLbMcGenReduced; + // generic configurables + struct : o2::framework::ConfigurableGroup { + // event selection + Configurable skipRejectedCollisions{"skipRejectedCollisions", true, "skips collisions rejected by the event selection, instead of flagging only"}; + // magnetic field setting from CCDB + Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + Configurable ccdbPathGrpMag{"ccdbPathGrpMag", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object (Run 3)"}; + // pair selection + Configurable invMassWindowCharmHadPi{"invMassWindowCharmHadPi", 0.3, "invariant-mass window for CharmHad-Pi pair preselections (GeV/c2)"}; + // MC extra + Configurable checkDecayTypeMc{"checkDecayTypeMc", false, "flag to enable MC checks on decay type"}; + } configs; // vertexing struct : o2::framework::ConfigurableGroup { - // Configurable bz{"bz", 5., "magnetic field"}; Configurable propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"}; Configurable useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"}; Configurable useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"}; @@ -168,8 +178,7 @@ struct HfDataCreatorCharmHadPiReduced { Configurable> binsPtPion{"binsPtPion", std::vector{hf_cuts_single_track::vecBinsPtTrack}, "track pT bin limits for pion DCA XY pT-dependent cut"}; Configurable> cutsTrackPionDCA{"cutsTrackPionDCA", {hf_cuts_single_track::CutsTrack[0], hf_cuts_single_track::NBinsPtTrack, hf_cuts_single_track::NCutVarsTrack, hf_cuts_single_track::labelsPtTrack, hf_cuts_single_track::labelsCutVarTrack}, "Single-track selections per pT bin for pions"}; } trackPionConfigurations; - Configurable invMassWindowCharmHadPi{"invMassWindowCharmHadPi", 0.3, "invariant-mass window for CharmHad-Pi pair preselections (GeV/c2)"}; - + // HF flags struct : o2::framework::ConfigurableGroup { Configurable selectionFlagDplus{"selectionFlagDplus", 7, "Selection Flag for D+"}; Configurable selectionFlagDs{"selectionFlagDs", 7, "Selection Flag for Ds"}; @@ -177,15 +186,10 @@ struct HfDataCreatorCharmHadPiReduced { Configurable selectionFlagD0bar{"selectionFlagD0bar", 1, "Selection Flag for D0bar"}; Configurable selectionFlagLc{"selectionFlagLc", 1, "Selection Flag for Lc"}; } hfflagConfigurations; - // magnetic field setting from CCDB - Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; - Configurable ccdbPathGrpMag{"ccdbPathGrpMag", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object (Run 3)"}; - - // MC extra - Configurable checkDecayTypeMc{"checkDecayTypeMc", false, "flag to enable MC checks on decay type"}; HfHelper hfHelper; o2::hf_evsel::HfEventSelection hfEvSel; + o2::hf_evsel::HfEventSelectionMc hfEvSelMc; // CCDB service Service ccdb; @@ -224,6 +228,7 @@ struct HfDataCreatorCharmHadPiReduced { using CollisionsWCent = soa::Join; using CollisionsWCentAndMcLabels = soa::Join; using CollisionsWCentAndQvectors = soa::Join; + using BCsInfo = soa::Join; Filter filterSelectDplusCandidates = (aod::hf_sel_candidate_dplus::isSelDplusToPiKPi >= hfflagConfigurations.selectionFlagDplus); Filter filterSelectDsCandidates = (aod::hf_sel_candidate_ds::isSelDsToKKPi >= hfflagConfigurations.selectionFlagDs || aod::hf_sel_candidate_ds::isSelDsToPiKK >= hfflagConfigurations.selectionFlagDs); @@ -240,6 +245,7 @@ struct HfDataCreatorCharmHadPiReduced { Preslice candsLcPerCollisionWithMl = aod::track_association::collisionId; Preslice trackIndicesPerCollision = aod::track_association::collisionId; PresliceUnsorted colPerMcCollision = aod::mccollisionlabel::mcCollisionId; + Preslice mcParticlesPerMcCollision = aod::mcparticle::mcCollisionId; std::shared_ptr hCandidatesD0, hCandidatesDPlus, hCandidatesDs, hCandidatesLc; HistogramRegistry registry{"registry"}; @@ -247,7 +253,7 @@ struct HfDataCreatorCharmHadPiReduced { std::array arrPDGResonantDsPhiPi = {kPhi, kPiPlus}; // Ds± → Phi π± std::array arrPDGResonantDKstarK = {kK0Star892, kKPlus}; // Ds± → K*(892)0bar K± and D± → K*(892)0bar K± - void init(InitContext const&) + void init(InitContext& initContext) { std::array doProcess = {doprocessDplusPiData, doprocessDplusPiDataWithMl, doprocessDplusPiMc, doprocessDplusPiMcWithMl, doprocessDsPiData, doprocessDsPiDataWithMl, doprocessDsPiMc, doprocessDsPiMcWithMl, @@ -272,8 +278,8 @@ struct HfDataCreatorCharmHadPiReduced { massC = MassLambdaCPlus; massB = MassLambdaB0; } - invMass2ChHadPiMin = (massB - invMassWindowCharmHadPi) * (massB - invMassWindowCharmHadPi); - invMass2ChHadPiMax = (massB + invMassWindowCharmHadPi) * (massB + invMassWindowCharmHadPi); + invMass2ChHadPiMin = (massB - configs.invMassWindowCharmHadPi) * (massB - configs.invMassWindowCharmHadPi); + invMass2ChHadPiMax = (massB + configs.invMassWindowCharmHadPi) * (massB + configs.invMassWindowCharmHadPi); // Initialize fitter if (doprocessDplusPiData || doprocessDplusPiDataWithMl || doprocessDplusPiMc || doprocessDplusPiMcWithMl || @@ -298,7 +304,7 @@ struct HfDataCreatorCharmHadPiReduced { } // Configure CCDB access - ccdb->setURL(ccdbUrl); + ccdb->setURL(configs.ccdbUrl); ccdb->setCaching(true); ccdb->setLocalObjectValidityChecking(); runNumber = 0; @@ -354,6 +360,16 @@ struct HfDataCreatorCharmHadPiReduced { // init HF event selection helper hfEvSel.init(registry); + if (doprocessDplusPiMc || doprocessDplusPiMcWithMl || doprocessDsPiMc || doprocessDsPiMcWithMl || doprocessD0PiMc || doprocessD0PiMcWithMl || doprocessLcPiMc || doprocessLcPiMcWithMl) { + const auto& workflows = initContext.services().get(); + for (const DeviceSpec& device : workflows.devices) { + if (device.name.compare("hf-data-creator-charm-had-pi-reduced") == 0) { + // init HF event selection helper + hfEvSelMc.init(device, registry); + break; + } + } + } } /// Pion selection (D Pi <-- B0) @@ -471,7 +487,7 @@ struct HfDataCreatorCharmHadPiReduced { } // additional checks for correlated backgrounds - if (checkDecayTypeMc) { + if (configs.checkDecayTypeMc) { // B0 → Ds- π+ → (K- K+ π-) π+ if (!flag) { indexRec = RecoDecay::getMatchedMCRec(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2], vecDaughtersB[3]}, Pdg::kB0, std::array{-kKPlus, +kKPlus, -kPiPlus, +kPiPlus}, true, &sign, 3); @@ -598,7 +614,7 @@ struct HfDataCreatorCharmHadPiReduced { } // additional checks for correlated backgrounds - if (checkDecayTypeMc) { + if (configs.checkDecayTypeMc) { // B0 → Ds- π+ → (K- K+ π-) π+ if (!flag) { indexRec = RecoDecay::getMatchedMCRec(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2], vecDaughtersB[3]}, Pdg::kB0, std::array{-kKPlus, +kKPlus, -kPiPlus, +kPiPlus}, true, &sign, 3); @@ -738,7 +754,7 @@ struct HfDataCreatorCharmHadPiReduced { } } // additional checks for correlated backgrounds - if (checkDecayTypeMc) { + if (configs.checkDecayTypeMc) { if (!flag) { // B+ → D0(bar) K+ → (K+ π-) K+ indexRec = RecoDecay::getMatchedMCRec(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2]}, Pdg::kBPlus, std::array{+kKPlus, +kKPlus, -kPiPlus}, true, &sign, 2); @@ -837,7 +853,7 @@ struct HfDataCreatorCharmHadPiReduced { } // additional checks for correlated backgrounds - if (checkDecayTypeMc) { + if (configs.checkDecayTypeMc) { // Lb → Lc+ K- → (p K- π+) K- if (!flag) { indexRec = RecoDecay::getMatchedMCRec(particlesMc, std::array{vecDaughtersB[0], vecDaughtersB[1], vecDaughtersB[2], vecDaughtersB[3]}, Pdg::kLambdaB0, std::array{+kProton, -kKPlus, +kPiPlus, -kKPlus}, true, &sign, 3); @@ -921,15 +937,22 @@ struct HfDataCreatorCharmHadPiReduced { } } - template + template void runDataCreation(Coll const& collision, CCharmCands const& candsC, aod::TrackAssoc const& trackIndices, TTracks const&, PParticles const& particlesMc, uint64_t const& indexCollisionMaxNumContrib, - aod::BCsWithTimestamps const&) + BBCs const&) { + registry.fill(HIST("hEvents"), 1 + Event::Processed); + float centrality = -1.f; + auto hfRejMap= hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); + if (configs.skipRejectedCollisions && hfRejMap!= 0) { + return; + } + // helpers for ReducedTables filling int indexHfReducedCollision = hfReducedCollision.lastIndex() + 1; // std::map where the key is the track.globalIndex() and @@ -945,7 +968,7 @@ struct HfDataCreatorCharmHadPiReduced { auto bc = collision.template bc_as(); if (runNumber != bc.runNumber()) { LOG(info) << ">>>>>>>>>>>> Current run number: " << runNumber; - o2::parameters::GRPMagField* grpo = ccdb->getForTimeStamp(ccdbPathGrpMag, bc.timestamp()); + o2::parameters::GRPMagField* grpo = ccdb->getForTimeStamp(configs.ccdbPathGrpMag, bc.timestamp()); if (grpo == nullptr) { LOGF(fatal, "Run 3 GRP object (type o2::parameters::GRPMagField) is not available in CCDB for run=%d at timestamp=%llu", bc.runNumber(), bc.timestamp()); } @@ -1280,14 +1303,12 @@ struct HfDataCreatorCharmHadPiReduced { } } // candsC loop - registry.fill(HIST("hEvents"), 1 + Event::Processed); if (!fillHfReducedCollision) { registry.fill(HIST("hEvents"), 1 + Event::NoCharmHadPiSelected); return; } registry.fill(HIST("hEvents"), 1 + Event::CharmHadPiSelected); - float centrality = -1.f; - uint32_t hfRejMap = hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); + // fill collision table if it contains a DPi pair a minima hfReducedCollision(collision.posX(), collision.posY(), collision.posZ(), collision.numContrib(), hfRejMap, bz); hfReducedCollExtra(collision.covXX(), collision.covXY(), collision.covYY(), @@ -1304,10 +1325,35 @@ struct HfDataCreatorCharmHadPiReduced { } template - void runMcGen(aod::McParticles const& particlesMc) + void runMcGen(aod::McCollision const& mcCollision, + aod::McParticles const& particlesMc, + CollisionsWCentAndMcLabels const& collisions, + BCsInfo const&) { + // Check event selection + float centDummy{-1.f}, centFT0C{-1.f}, centFT0M{-1.f}; + const auto collSlice = collisions.sliceBy(colPerMcCollision, mcCollision.globalIndex()); + auto hfRejMap= hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centDummy); + if (configs.skipRejectedCollisions && hfRejMap!= 0) { + return; + } + + // get centrality + float centrality{-1}; + float multiplicity{0.f}; + for (const auto& collision : collSlice) { + float collMult = collision.numContrib(); + if (collMult > multiplicity) { + centFT0C = collision.centFT0C(); + centFT0M = collision.centFT0M(); + multiplicity = collMult; + } + } + + const auto mcParticlesPerMcColl = particlesMc.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); + // Match generated particles. - for (const auto& particle : particlesMc) { + for (const auto& particle : mcParticlesPerMcColl) { int8_t sign{0}; int8_t flag{0}; if constexpr (decayChannel == DecayChannel::B0ToDminusPi) { @@ -1342,7 +1388,7 @@ struct HfDataCreatorCharmHadPiReduced { } rowHfB0McGenReduced(flag, -1 /*channel*/, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } else if constexpr (decayChannel == DecayChannel::BsToDsminusPi) { // Bs → Ds- π+ if (RecoDecay::isMatchedMCGen(particlesMc, particle, Pdg::kBS, std::array{-static_cast(Pdg::kDS), +kPiPlus}, true)) { @@ -1368,7 +1414,7 @@ struct HfDataCreatorCharmHadPiReduced { } // additional checks for correlated backgrounds - if (checkDecayTypeMc) { + if (configs.checkDecayTypeMc) { // B0 → Ds- π+ if (!flag) { if (RecoDecay::isMatchedMCGen(particlesMc, particle, Pdg::kB0, std::array{-static_cast(Pdg::kDS), +kPiPlus}, true)) { @@ -1417,7 +1463,7 @@ struct HfDataCreatorCharmHadPiReduced { } rowHfBsMcGenReduced(flag, -1 /*channel*/, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } else if constexpr (decayChannel == DecayChannel::BplusToD0barPi) { // B+ → D0bar π+ if (RecoDecay::isMatchedMCGen(particlesMc, particle, Pdg::kBPlus, std::array{-static_cast(Pdg::kD0), +kPiPlus}, true)) { @@ -1450,7 +1496,7 @@ struct HfDataCreatorCharmHadPiReduced { } rowHfBpMcGenReduced(flag, -1 /*channel*/, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } else if constexpr (decayChannel == DecayChannel::LbToLcplusPi) { // Lb → Lc+ π- if (RecoDecay::isMatchedMCGen(particlesMc, particle, Pdg::kLambdaB0, std::array{static_cast(Pdg::kLambdaCPlus), -kPiPlus}, true)) { @@ -1483,7 +1529,7 @@ struct HfDataCreatorCharmHadPiReduced { } rowHfLbMcGenReduced(flag, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } } // gen } @@ -1499,7 +1545,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1529,7 +1575,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1559,7 +1605,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1589,7 +1635,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1619,7 +1665,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1649,7 +1695,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1679,7 +1725,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1709,7 +1755,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1739,7 +1785,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1769,7 +1815,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1799,7 +1845,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1829,7 +1875,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1859,7 +1905,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Lb workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, invMassWindowCharmHadPi.value); + rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1889,7 +1935,7 @@ struct HfDataCreatorCharmHadPiReduced { { // store configurables needed for Lb workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, invMassWindowCharmHadPi.value); + rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1919,12 +1965,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1945,7 +1991,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processDplusPiMc, "Process DplusPi with MC info and without ML info", false); @@ -1954,12 +2002,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B0 workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigB0(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -1980,7 +2028,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processDplusPiMcWithMl, "Process DplusPi with MC info and with ML info", false); @@ -1989,12 +2039,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2015,7 +2065,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processDsPiMc, "Process DsPi with MC info and without ML info", false); @@ -2024,12 +2076,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for Bs workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBs(hfflagConfigurations.selectionFlagDs.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2050,7 +2102,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processDsPiMcWithMl, "Process DsPi with MC info and with ML info", false); @@ -2059,12 +2113,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2085,7 +2139,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processD0PiMc, "Process D0Pi with MC info and without ML info", false); @@ -2094,12 +2150,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, invMassWindowCharmHadPi.value); + rowCandidateConfigBplus(hfflagConfigurations.selectionFlagD0.value, hfflagConfigurations.selectionFlagD0bar.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2120,7 +2176,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processD0PiMcWithMl, "Process D0Pi with MC info and with ML info", false); @@ -2129,12 +2187,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for Lb workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigLb(hfflagConfigurations.selectionFlagDplus.value, invMassWindowCharmHadPi.value); + rowCandidateConfigLb(hfflagConfigurations.selectionFlagDplus.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2155,7 +2213,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processLcPiMc, "Process LcPi with MC info and without ML info", false); @@ -2164,12 +2224,12 @@ struct HfDataCreatorCharmHadPiReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for Lb workflow if (!isHfCandBhadConfigFilled) { - rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, invMassWindowCharmHadPi.value); + rowCandidateConfigLb(hfflagConfigurations.selectionFlagLc.value, configs.invMassWindowCharmHadPi.value); isHfCandBhadConfigFilled = true; } @@ -2190,7 +2250,9 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorCharmHadPiReduced, processLcPiMcWithMl, "Process LcPi with MC info and with ML info", false); diff --git a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx index ed6321fe4ba..c278c93d8ed 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx @@ -52,6 +52,7 @@ #include #include #include +#include "Framework/RunningWorkflowInfo.h" #include #include @@ -122,6 +123,7 @@ struct HfDataCreatorJpsiHadReduced { Produces rowCandidateConfigBplus; Produces rowCandidateConfigBs; + Configurable skipRejectedCollisions{"skipRejectedCollisions", true, "skips collisions rejected by the event selection, instead of flagging only"}; Configurable propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"}; Configurable useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"}; Configurable useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"}; @@ -162,10 +164,12 @@ struct HfDataCreatorJpsiHadReduced { using TracksSel = soa::Join; using TracksPidWithSelAndMc = soa::Join; using CollisionsWCMcLabels = soa::Join; + using BCsInfo = soa::Join; Preslice candsJpsiPerCollision = aod::track_association::collisionId; Preslice trackIndicesPerCollision = aod::track_association::collisionId; PresliceUnsorted colPerMcCollision = aod::mccollisionlabel::mcCollisionId; + Preslice mcParticlesPerMcCollision = aod::mcparticle::mcCollisionId; o2::base::Propagator::MatCorrType noMatCorr = o2::base::Propagator::MatCorrType::USEMatCorrNONE; int runNumber; @@ -174,13 +178,15 @@ struct HfDataCreatorJpsiHadReduced { bool isHfCandBhadConfigFilled = false; o2::hf_evsel::HfEventSelection hfEvSel; + o2::hf_evsel::HfEventSelectionMc hfEvSelMc; + o2::vertexing::DCAFitterN<2> df2; o2::vertexing::DCAFitterN<3> df3; o2::vertexing::DCAFitterN<4> df4; HistogramRegistry registry{"registry"}; - void init(InitContext const&) + void init(InitContext& initContext) { std::array doProcess = {doprocessJpsiKData, doprocessJpsiKMc, doprocessJpsiPhiData, doprocessJpsiPhiMc}; if (std::accumulate(doProcess.begin(), doProcess.end(), 0) != 1) { @@ -270,6 +276,19 @@ struct HfDataCreatorJpsiHadReduced { invMass2JpsiHadMin = (MassBS - invMassWindowJpsiHad) * (MassBS - invMassWindowJpsiHad); invMass2JpsiHadMax = (MassBS + invMassWindowJpsiHad) * (MassBS + invMassWindowJpsiHad); } + + // init HF event selection helper + hfEvSel.init(registry); + if (doprocessJpsiKMc || doprocessJpsiPhiMc) { + const auto& workflows = initContext.services().get(); + for (const DeviceSpec& device : workflows.devices) { + if (device.name.compare("hf-data-creator-jpsi-had-reduced") == 0) { + // init HF event selection helper + hfEvSelMc.init(device, registry); + break; + } + } + } } /// Topological cuts @@ -512,10 +531,23 @@ struct HfDataCreatorJpsiHadReduced { } template - void runMcGen(aod::McParticles const& particlesMc) + void runMcGen(aod::McCollision const& mcCollision, + aod::McParticles const& particlesMc, + CollisionsWCMcLabels const& collisions, + BCsInfo const&) { + // Check event selection + float centDummy{-1.f}, centFT0C{-1.f}, centFT0M{-1.f}; + const auto collSlice = collisions.sliceBy(colPerMcCollision, mcCollision.globalIndex()); + auto hfRejMap = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centDummy); + if (skipRejectedCollisions && hfRejMap!= 0) { + return; + } + + const auto mcParticlesPerMcColl = particlesMc.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); + // Match generated particles. - for (const auto& particle : particlesMc) { + for (const auto& particle : mcParticlesPerMcColl) { int8_t sign{0}, flag{0}, channel{0}; if constexpr (decChannel == DecayChannel::BplusToJpsiK) { // B+ → J/Psi K+ → (µ+µ-) K+ @@ -556,7 +588,7 @@ struct HfDataCreatorJpsiHadReduced { } rowHfBpMcGenReduced(flag, channel, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } else if constexpr (decChannel == DecayChannel::BsToJpsiPhi) { // Bs → J/Psi phi → (µ+µ-) (K+K-) if (RecoDecay::isMatchedMCGen(particlesMc, particle, Pdg::kBS, std::array{static_cast(Pdg::kJPsi), +kKPlus, -kKPlus}, true, &sign, 2)) { @@ -596,22 +628,29 @@ struct HfDataCreatorJpsiHadReduced { } rowHfBsMcGenReduced(flag, channel, ptParticle, yParticle, etaParticle, ptProngs[0], yProngs[0], etaProngs[0], - ptProngs[1], yProngs[1], etaProngs[1]); + ptProngs[1], yProngs[1], etaProngs[1], hfRejMap, centFT0C, centFT0M); } } // gen } // Jpsi candidate selection - template + template void runDataCreation(Coll const& collision, JpsiCands const& candsJpsi, aod::TrackAssoc const& trackIndices, TTracks const&, PParticles const& particlesMc, uint64_t const& indexCollisionMaxNumContrib, - aod::BCsWithTimestamps const&) + BBCs const&) { + registry.fill(HIST("hEvents"), 1 + Event::Processed); + float centrality = -1.f; + auto hfRejMap = hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); + if (skipRejectedCollisions && hfRejMap != 0) { + return; + } + // helpers for ReducedTables filling int indexHfReducedCollision = hfReducedCollision.lastIndex() + 1; // std::map where the key is the track.globalIndex() and @@ -959,14 +998,11 @@ struct HfDataCreatorJpsiHadReduced { } } // candsJpsi loop - registry.fill(HIST("hEvents"), 1 + Event::Processed); if (!fillHfReducedCollision) { registry.fill(HIST("hEvents"), 1 + Event::NoCharmHadPiSelected); return; } registry.fill(HIST("hEvents"), 1 + Event::CharmHadPiSelected); - float centrality = -1.f; - uint16_t hfRejMap = hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); // fill collision table if it contains a J/Psi K pair at minimum hfReducedCollision(collision.posX(), collision.posY(), collision.posZ(), collision.numContrib(), hfRejMap, bz); hfReducedCollExtra(collision.covXX(), collision.covXY(), collision.covYY(), @@ -1047,8 +1083,8 @@ struct HfDataCreatorJpsiHadReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { @@ -1073,7 +1109,9 @@ struct HfDataCreatorJpsiHadReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorJpsiHadReduced, processJpsiKMc, "Process J/Psi K with MC info", false); @@ -1082,8 +1120,8 @@ struct HfDataCreatorJpsiHadReduced { aod::TrackAssoc const& trackIndices, TracksPidWithSelAndMc const& tracks, aod::McParticles const& particlesMc, - aod::BCsWithTimestamps const& bcs, - McCollisions const&) + BCsInfo const& bcs, + McCollisions const& mcCollisions) { // store configurables needed for B+ workflow if (!isHfCandBhadConfigFilled) { @@ -1108,7 +1146,9 @@ struct HfDataCreatorJpsiHadReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - runMcGen(particlesMc); + for (const auto& mcCollision: mcCollisions) { + runMcGen(mcCollision, particlesMc, collisions, bcs); + } } PROCESS_SWITCH(HfDataCreatorJpsiHadReduced, processJpsiPhiMc, "Process J/Psi phi with MC info", false); }; diff --git a/PWGHF/TableProducer/candidateCreator2Prong.cxx b/PWGHF/TableProducer/candidateCreator2Prong.cxx index 895b8804cb9..700804d4ea5 100644 --- a/PWGHF/TableProducer/candidateCreator2Prong.cxx +++ b/PWGHF/TableProducer/candidateCreator2Prong.cxx @@ -1015,7 +1015,7 @@ struct HfCandidateCreator2ProngExpressions { const auto mcParticlesPerMcColl = mcParticles.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); // Slice the collisions table to get the collision info for the current MC collision float centrality{-1.f}; - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; int nSplitColl = 0; if constexpr (centEstimator == CentralityEstimator::FT0C) { const auto collSlice = collInfos.sliceBy(colPerMcCollisionFT0C, mcCollision.globalIndex()); diff --git a/PWGHF/TableProducer/candidateCreator3Prong.cxx b/PWGHF/TableProducer/candidateCreator3Prong.cxx index 38c9bc0a30f..017752f248d 100644 --- a/PWGHF/TableProducer/candidateCreator3Prong.cxx +++ b/PWGHF/TableProducer/candidateCreator3Prong.cxx @@ -1304,7 +1304,7 @@ struct HfCandidateCreator3ProngExpressions { const auto mcParticlesPerMcColl = mcParticles.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); // Slice the collisions table to get the collision info for the current MC collision float centrality{-1.f}; - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; int nSplitColl = 0; if constexpr (centEstimator == CentralityEstimator::FT0C) { const auto collSlice = collInfos.sliceBy(colPerMcCollisionFT0C, mcCollision.globalIndex()); diff --git a/PWGHF/TableProducer/candidateCreatorCascade.cxx b/PWGHF/TableProducer/candidateCreatorCascade.cxx index a7eb6ccc794..20e16710463 100644 --- a/PWGHF/TableProducer/candidateCreatorCascade.cxx +++ b/PWGHF/TableProducer/candidateCreatorCascade.cxx @@ -564,7 +564,7 @@ struct HfCandidateCreatorCascadeMc { const auto mcParticlesPerMcColl = mcParticles.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); // Slice the collisions table to get the collision info for the current MC collision float centrality{-1.f}; - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; int nSplitColl = 0; if constexpr (centEstimator == CentralityEstimator::FT0C) { const auto collSlice = collInfos.sliceBy(colPerMcCollisionFT0C, mcCollision.globalIndex()); diff --git a/PWGHF/TableProducer/candidateCreatorDstar.cxx b/PWGHF/TableProducer/candidateCreatorDstar.cxx index a6795dc8274..9036717104b 100644 --- a/PWGHF/TableProducer/candidateCreatorDstar.cxx +++ b/PWGHF/TableProducer/candidateCreatorDstar.cxx @@ -732,7 +732,7 @@ struct HfCandidateCreatorDstarExpressions { const auto mcParticlesPerMcColl = mcParticles.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); // Slice the collisions table to get the collision info for the current MC collision float centrality{-1.f}; - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; int nSplitColl = 0; if constexpr (centEstimator == CentralityEstimator::FT0C) { const auto collSlice = collInfos.sliceBy(colPerMcCollisionFT0C, mcCollision.globalIndex()); diff --git a/PWGHF/TableProducer/candidateCreatorSigmac0plusplus.cxx b/PWGHF/TableProducer/candidateCreatorSigmac0plusplus.cxx index 5767422b24f..e66702055d8 100644 --- a/PWGHF/TableProducer/candidateCreatorSigmac0plusplus.cxx +++ b/PWGHF/TableProducer/candidateCreatorSigmac0plusplus.cxx @@ -586,9 +586,8 @@ struct HfCandidateSigmac0plusplusMc { /// In case of need, readapt the code templetizing the function auto mcCollision = particle.mcCollision(); float centrality{-1.f}; - uint16_t rejectionMask{0}; const auto collSlice = collInfos.sliceBy(colPerMcCollision, mcCollision.globalIndex()); - rejectionMask = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centrality); + auto rejectionMask = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centrality); hfEvSelMc.fillHistograms(mcCollision, rejectionMask, 0); if (rejectionMask != 0) { // at least one event selection not satisfied --> reject gen particles from this collision diff --git a/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx b/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx index 7063f970f44..18ef07264db 100644 --- a/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx +++ b/PWGHF/TableProducer/candidateCreatorXicToXiPiPi.cxx @@ -1088,7 +1088,7 @@ struct HfCandidateCreatorXicToXiPiPiExpressions { const auto mcParticlesPerMcColl = mcParticles.sliceBy(mcParticlesPerMcCollision, mcCollision.globalIndex()); // Slice the collisions table to get the collision info for the current MC collision float centrality{-1.f}; - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; int nSplitColl = 0; if constexpr (centEstimator == o2::hf_centrality::CentralityEstimator::FT0C) { const auto collSlice = collInfos.sliceBy(colPerMcCollisionFT0C, mcCollision.globalIndex()); diff --git a/PWGHF/Tasks/taskMcValidation.cxx b/PWGHF/Tasks/taskMcValidation.cxx index 865a3a58d85..5feaf4f186b 100644 --- a/PWGHF/Tasks/taskMcValidation.cxx +++ b/PWGHF/Tasks/taskMcValidation.cxx @@ -287,7 +287,7 @@ struct HfTaskMcValidationGen { if (storeOccupancy) { occupancy = getOccupancyGenColl(recoCollisions, OccupancyEstimator::Its); } - uint16_t rejectionMask{0}; + uint32_t rejectionMask{0u}; if constexpr (centEstimator == CentralityEstimator::FT0C) { rejectionMask = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, recoCollisions, centrality); } else if constexpr (centEstimator == CentralityEstimator::FT0M) { From 3d34bbc6774d4bf72a27748d8666aa5d201e1b48 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Mon, 30 Jun 2025 09:18:34 +0200 Subject: [PATCH 2/3] Remove unused variable --- PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx index d2bad73b298..76e1b3589d4 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx @@ -1339,7 +1339,6 @@ struct HfDataCreatorCharmHadPiReduced { } // get centrality - float centrality{-1}; float multiplicity{0.f}; for (const auto& collision : collSlice) { float collMult = collision.numContrib(); From c93ae35b9ecbfaf1c3d073d82b1b936295abe812 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Mon, 30 Jun 2025 07:21:28 +0000 Subject: [PATCH 3/3] Please consider the following formatting changes --- .../dataCreatorCharmHadPiReduced.cxx | 26 +++++++++---------- .../dataCreatorJpsiHadReduced.cxx | 8 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx index 76e1b3589d4..ea593bd5ee0 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx @@ -38,6 +38,7 @@ #include "Common/DataModel/Qvectors.h" #include "Common/DataModel/TrackSelectionTables.h" +#include "Framework/RunningWorkflowInfo.h" #include #include #include @@ -55,7 +56,6 @@ #include #include #include -#include "Framework/RunningWorkflowInfo.h" #include #include @@ -948,8 +948,8 @@ struct HfDataCreatorCharmHadPiReduced { { registry.fill(HIST("hEvents"), 1 + Event::Processed); float centrality = -1.f; - auto hfRejMap= hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); - if (configs.skipRejectedCollisions && hfRejMap!= 0) { + auto hfRejMap = hfEvSel.getHfCollisionRejectionMask(collision, centrality, ccdb, registry); + if (configs.skipRejectedCollisions && hfRejMap != 0) { return; } @@ -1333,8 +1333,8 @@ struct HfDataCreatorCharmHadPiReduced { // Check event selection float centDummy{-1.f}, centFT0C{-1.f}, centFT0M{-1.f}; const auto collSlice = collisions.sliceBy(colPerMcCollision, mcCollision.globalIndex()); - auto hfRejMap= hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centDummy); - if (configs.skipRejectedCollisions && hfRejMap!= 0) { + auto hfRejMap = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centDummy); + if (configs.skipRejectedCollisions && hfRejMap != 0) { return; } @@ -1990,7 +1990,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2027,7 +2027,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2064,7 +2064,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2101,7 +2101,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2138,7 +2138,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2175,7 +2175,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2212,7 +2212,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -2249,7 +2249,7 @@ struct HfDataCreatorCharmHadPiReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } diff --git a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx index c278c93d8ed..39f3aa45231 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorJpsiHadReduced.cxx @@ -34,6 +34,7 @@ #include "Common/DataModel/PIDResponseTPC.h" #include "Common/DataModel/TrackSelectionTables.h" +#include "Framework/RunningWorkflowInfo.h" #include #include #include @@ -52,7 +53,6 @@ #include #include #include -#include "Framework/RunningWorkflowInfo.h" #include #include @@ -540,7 +540,7 @@ struct HfDataCreatorJpsiHadReduced { float centDummy{-1.f}, centFT0C{-1.f}, centFT0M{-1.f}; const auto collSlice = collisions.sliceBy(colPerMcCollision, mcCollision.globalIndex()); auto hfRejMap = hfEvSelMc.getHfMcCollisionRejectionMask(mcCollision, collSlice, centDummy); - if (skipRejectedCollisions && hfRejMap!= 0) { + if (skipRejectedCollisions && hfRejMap != 0) { return; } @@ -1109,7 +1109,7 @@ struct HfDataCreatorJpsiHadReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } } @@ -1146,7 +1146,7 @@ struct HfDataCreatorJpsiHadReduced { } // handle normalization by the right number of collisions hfCollisionCounter(collisions.tableSize(), zvtxColl, sel8Coll, zvtxAndSel8Coll, zvtxAndSel8CollAndSoftTrig, allSelColl); - for (const auto& mcCollision: mcCollisions) { + for (const auto& mcCollision : mcCollisions) { runMcGen(mcCollision, particlesMc, collisions, bcs); } }