Skip to content

Commit 5d78278

Browse files
committed
Add CFMultiplicitySet to support multiple auxilary multiplicities/centralities
1 parent ef10e98 commit 5d78278

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

PWGCF/DataModel/CorrelationsDerived.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,15 @@ using CFTrackWithLabel = CFTracksWithLabel::iterator;
8686
//------transient CF-filter to CF-2prong-filter
8787
DECLARE_SOA_TABLE(CFCollRefs, "AOD", "CFCOLLREF", o2::soa::Index<>, track::CollisionId); //! Transient cf collision index table
8888

89+
//------multiplicity set
90+
namespace cfmultiplicityset
91+
{
92+
DECLARE_SOA_COLUMN(Multiplicities, multiplicities, std::vector<float>); //! List of auxiliary multiplicities
93+
}
94+
DECLARE_SOA_TABLE(CFMultiplicitySets, "AOD", "CFMULTSET", cfmultiplicityset::Multiplicities); //! Auxilary multiplicity set table
95+
96+
using CFMultiplicitySet = CFMultiplicitySets::iterator;
97+
8998
// Reco
9099

91100
using CFCollRef = CFCollRefs::iterator;

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,9 +548,43 @@ struct MultiplicitySelector {
548548
PROCESS_SWITCH(MultiplicitySelector, processMCGen, "Select MC particle count as multiplicity", false);
549549
};
550550

551+
struct MultiplicitySetBuilder {
552+
Produces<aod::CFMultiplicitySets> output;
553+
std::vector<float> multiplicities{};
554+
555+
enum MultiplicityEstimators : uint8_t {
556+
kCentFT0C = BIT(0),
557+
kMultFV0A = BIT(1),
558+
kMultNTracksPV = BIT(2),
559+
kMultNTracksGlobal = BIT(3),
560+
};
561+
562+
O2_DEFINE_CONFIGURABLE(cfgEstimatorBitMask, uint16_t, 0, "BitMask for multiplicity estimators to be included in the CFMultiplicitySet tables.");
563+
564+
using CollisionWithCents = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::PVMults, aod::FV0Mults, aod::MultsGlobal>;
565+
void processEstimators([[maybe_unused]] CollisionWithCents const& cents, aod::CFCollRefs const& cfcollisions)
566+
{
567+
for (const auto& cfcollision : cfcollisions) {
568+
const auto& collision = cfcollision.collision_as<CollisionWithCents>();
569+
multiplicities.clear();
570+
if (cfgEstimatorBitMask & kCentFT0C)
571+
multiplicities.push_back(collision.centFT0C());
572+
if (cfgEstimatorBitMask & kMultFV0A)
573+
multiplicities.push_back(collision.multFV0A());
574+
if (cfgEstimatorBitMask & kMultNTracksPV)
575+
multiplicities.push_back(collision.multNTracksPV());
576+
if (cfgEstimatorBitMask & kMultNTracksGlobal)
577+
multiplicities.push_back(collision.multNTracksGlobal());
578+
output(multiplicities);
579+
}
580+
}
581+
PROCESS_SWITCH(MultiplicitySetBuilder, processEstimators, "Process auxiliary multiplicity/centrality estimators", false);
582+
};
583+
551584
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
552585
{
553586
return WorkflowSpec{
554587
adaptAnalysisTask<FilterCF>(cfgc),
555-
adaptAnalysisTask<MultiplicitySelector>(cfgc)};
588+
adaptAnalysisTask<MultiplicitySelector>(cfgc),
589+
adaptAnalysisTask<MultiplicitySetBuilder>(cfgc)};
556590
}

0 commit comments

Comments
 (0)