From ba07756ac3ba627a8416771320819261e30381bb Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Mon, 23 Feb 2026 17:23:27 +0100 Subject: [PATCH 1/3] dev:table for pileup study --- PWGLF/DataModel/LFNonPromptCascadeTables.h | 9 ++++- PWGLF/Tasks/Strangeness/nonPromptCascade.cxx | 35 +++++++++++++++----- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/PWGLF/DataModel/LFNonPromptCascadeTables.h b/PWGLF/DataModel/LFNonPromptCascadeTables.h index d9ed41fe6bf..16c86667ad1 100644 --- a/PWGLF/DataModel/LFNonPromptCascadeTables.h +++ b/PWGLF/DataModel/LFNonPromptCascadeTables.h @@ -123,6 +123,7 @@ DECLARE_SOA_COLUMN(MultNTracksGlobal, multNTracksGlobal, int); DECLARE_SOA_COLUMN(ToiMask, toiMask, uint32_t); DECLARE_SOA_COLUMN(RunNumber, runNumber, int); DECLARE_SOA_COLUMN(NoSameBunchPileup, noSameBunchPileup, bool); +DECLARE_SOA_COLUMN(GlobalBC, globalBC, uint64_t); } // namespace NPCascadeTable DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE", @@ -447,7 +448,13 @@ DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen", NPCascadeTable::IsFromBeauty, NPCascadeTable::IsFromCharm, NPCascadeTable::MotherDecayDaughters) - +DECLARE_SOA_TABLE(NPPileUpTable, "AOD", "NPPileUpTABLE", + NPCascadeTable::RunNumber, + NPCascadeTable::GlobalBC, + aod::collision::NumContrib, + NPCascadeTable::MultNTracksGlobal, + NPCascadeTable::CentFT0M, + NPCascadeTable::MultFT0M); } // namespace o2::aod #endif // PWGLF_DATAMODEL_LFNONPROMPTCASCADETABLES_H_ diff --git a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx index bd9fa236ca6..9d317d32815 100644 --- a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx +++ b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx @@ -34,6 +34,7 @@ #include "Framework/HistogramRegistry.h" #include "Framework/runDataProcessing.h" #include "ReconstructionDataFormats/Vertex.h" +#include "Framework/O2DatabasePDGPlugin.h" #include "Math/Vector4D.h" #include "TDatabasePDG.h" @@ -175,12 +176,12 @@ std::vector gCandidatesNT; } // namespace struct NonPromptCascadeTask { - Produces NPCTable; Produces NPCTableMC; Produces NPCTableNT; Produces NPCTableMCNT; Produces NPCTableGen; + Produces NPPUTable; using TracksExtData = soa::Join; using TracksExtMC = soa::Join; @@ -227,6 +228,7 @@ struct NonPromptCascadeTask { std::array mProcessCounter = {0, 0}; // {Tracked, All} std::map mToiMap; // + Service pdgDB; HistogramRegistry mRegistryMults{"Multhistos"}; HistogramRegistry mRegistrydNdeta{"dNdetahistos"}; @@ -315,9 +317,10 @@ struct NonPromptCascadeTask { AxisSpec centAxisFV0{centBinning, "Centrality FV0 (%)"}; AxisSpec trackAxisMC{trackBinning, "NTracks MC"}; AxisSpec trackAxis{trackBinning, "NTracks Global Reco"}; + AxisSpec numContribAxis{trackBinning, "Num of Contrib"}; AxisSpec runsAxis{runsBinning, "Run Number"}; - mRegistryMults.add("hCentMultsRuns", "hCentMultsRuns", HistType::kTHnSparseF, {centAxisFT0M, multAxis, centAxisFV0, multAxisFV0, nTracksAxis, runsAxis}); + mRegistryMults.add("hCentMultsRuns", "hCentMultsRuns", HistType::kTHnSparseF, {centAxisFT0M, multAxis, numContribAxis, nTracksAxis, runsAxis}); // // dN/deta // @@ -411,11 +414,13 @@ struct NonPromptCascadeTask { for (const auto& coll : collisions) { float centFT0M = coll.centFT0M(); float multFT0M = coll.multFT0M(); - float centFV0A = coll.centFV0A(); - float multFV0A = coll.multFV0A(); + //float centFV0A = coll.centFV0A(); + //float multFV0A = coll.multFV0A(); float multNTracks = coll.multNTracksGlobal(); float run = mRunNumber; - mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, centFV0A, multFV0A, multNTracks, run); + float numContrib = coll.numContrib(); + auto bc = coll.template bc_as(); + mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib , multNTracks, run); } }; @@ -729,7 +734,7 @@ struct NonPromptCascadeTask { fillCandidatesVector(collisions, tracks, trackedCascades, gCandidates); fillMCtable(mcParticles, collisions, gCandidates); } - PROCESS_SWITCH(NonPromptCascadeTask, processTrackedCascadesMC, "process cascades from strangeness tracking: MC analysis", true); + PROCESS_SWITCH(NonPromptCascadeTask, processTrackedCascadesMC, "process cascades from strangeness tracking: MC analysis", false); void processCascadesMC(CollisionCandidatesRun3MC const& collisions, aod::Cascades const& cascades, aod::V0s const& /*v0s*/, TracksExtMC const& tracks, @@ -817,7 +822,7 @@ struct NonPromptCascadeTask { if (std::abs(mcp.eta()) > 0.5f) continue; int q = 0; - if (auto pdg = TDatabasePDG::Instance()->GetParticle(mcp.pdgCode())) { + if (auto pdg = pdgDB->GetParticle(mcp.pdgCode())) { q = int(std::round(pdg->Charge() / 3.0)); } if (q == 0) @@ -928,7 +933,7 @@ struct NonPromptCascadeTask { } int q = 0; - if (auto pdgEntry = TDatabasePDG::Instance()->GetParticle(mcPar.pdgCode())) { + if (auto pdgEntry = pdgDB->GetParticle(mcPar.pdgCode())) { q = int(std::round(pdgEntry->Charge() / 3.0)); } if (q == 0) { @@ -971,6 +976,20 @@ struct NonPromptCascadeTask { } PROCESS_SWITCH(NonPromptCascadeTask, processdNdetaMC, "process mc dN/deta", false); + + void processPileUp(CollisionCandidatesRun3 const& collisions, aod::BCsWithTimestamps const&) { + std::cout << "Processing pile up" << std::endl; + for (const auto& coll : collisions) { + float centFT0M = coll.centFT0M(); + float multFT0M = coll.multFT0M(); + auto bc = coll.template bc_as(); + uint64_t globalBC = bc.globalBC(); + NPPUTable(mRunNumber, globalBC, coll.numContrib(), coll.multNTracksGlobal(), centFT0M, multFT0M); + //NPPileUpTable(mRunNumber, globalBC, multNTracks, centFT0M, multFT0M); + } + }; + PROCESS_SWITCH(NonPromptCascadeTask, processPileUp, "pile up studies", true); + }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) From a6d1154a6a7cc20b75c317d846e05b1f4b0d54a8 Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Mon, 23 Feb 2026 17:24:28 +0100 Subject: [PATCH 2/3] clang --- PWGLF/Tasks/Strangeness/nonPromptCascade.cxx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx index 9d317d32815..6db22388ba9 100644 --- a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx +++ b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx @@ -24,7 +24,6 @@ #include "DCAFitter/DCAFitterN.h" #include "DataFormatsParameters/GRPMagField.h" #include "DataFormatsParameters/GRPObject.h" -#include "MathUtils/BetheBlochAleph.h" #include "DetectorsBase/Propagator.h" #include "DetectorsVertexing/PVertexer.h" #include "Framework/ASoA.h" @@ -32,9 +31,10 @@ #include "Framework/AnalysisDataModel.h" #include "Framework/AnalysisTask.h" #include "Framework/HistogramRegistry.h" +#include "Framework/O2DatabasePDGPlugin.h" #include "Framework/runDataProcessing.h" +#include "MathUtils/BetheBlochAleph.h" #include "ReconstructionDataFormats/Vertex.h" -#include "Framework/O2DatabasePDGPlugin.h" #include "Math/Vector4D.h" #include "TDatabasePDG.h" @@ -414,13 +414,13 @@ struct NonPromptCascadeTask { for (const auto& coll : collisions) { float centFT0M = coll.centFT0M(); float multFT0M = coll.multFT0M(); - //float centFV0A = coll.centFV0A(); - //float multFV0A = coll.multFV0A(); + // float centFV0A = coll.centFV0A(); + // float multFV0A = coll.multFV0A(); float multNTracks = coll.multNTracksGlobal(); float run = mRunNumber; float numContrib = coll.numContrib(); auto bc = coll.template bc_as(); - mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib , multNTracks, run); + mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib, multNTracks, run); } }; @@ -977,7 +977,8 @@ struct NonPromptCascadeTask { PROCESS_SWITCH(NonPromptCascadeTask, processdNdetaMC, "process mc dN/deta", false); - void processPileUp(CollisionCandidatesRun3 const& collisions, aod::BCsWithTimestamps const&) { + void processPileUp(CollisionCandidatesRun3 const& collisions, aod::BCsWithTimestamps const&) + { std::cout << "Processing pile up" << std::endl; for (const auto& coll : collisions) { float centFT0M = coll.centFT0M(); @@ -985,11 +986,10 @@ struct NonPromptCascadeTask { auto bc = coll.template bc_as(); uint64_t globalBC = bc.globalBC(); NPPUTable(mRunNumber, globalBC, coll.numContrib(), coll.multNTracksGlobal(), centFT0M, multFT0M); - //NPPileUpTable(mRunNumber, globalBC, multNTracks, centFT0M, multFT0M); + // NPPileUpTable(mRunNumber, globalBC, multNTracks, centFT0M, multFT0M); } }; PROCESS_SWITCH(NonPromptCascadeTask, processPileUp, "pile up studies", true); - }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) From a275ad71fa9b999ad974d695928d4bd398dd06df Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Mon, 23 Feb 2026 21:17:41 +0100 Subject: [PATCH 3/3] fix --- PWGLF/Tasks/Strangeness/nonPromptCascade.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx index 6db22388ba9..59a460d0324 100644 --- a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx +++ b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx @@ -419,7 +419,6 @@ struct NonPromptCascadeTask { float multNTracks = coll.multNTracksGlobal(); float run = mRunNumber; float numContrib = coll.numContrib(); - auto bc = coll.template bc_as(); mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib, multNTracks, run); } };