Skip to content

Commit dd749bb

Browse files
authored
[PWGCF] outlier cut support for MC reco (#13805)
1 parent 6245789 commit dd749bb

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ struct FilterCF {
316316
/// event selections
317317
/// \param tracks The collection of tracks, filtered by selection criteria
318318
/// \param bcs The collection of bunch crossings with timestamps
319-
template <typename T1>
319+
template <typename C1, typename T1>
320320
void processMCT(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
321-
soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CFMultiplicities> const& allCollisions,
321+
C1 const& allCollisions,
322322
T1 const& tracks,
323323
aod::BCsWithTimestamps const&)
324324
{
@@ -403,10 +403,24 @@ struct FilterCF {
403403
continue;
404404
}
405405

406-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
406+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
407407
// NOTE works only when we store all MC collisions (as we do here)
408408
outputCollisions(bc.runNumber(), collision.posZ(), collision.multiplicity(), bc.timestamp());
409409
outputMcCollisionLabels(collision.mcCollisionId());
410+
411+
if constexpr (std::experimental::is_detected<HasMultTables, C1>::value) {
412+
multiplicities.clear();
413+
if (cfgEstimatorBitMask & aod::cfmultset::CentFT0C)
414+
multiplicities.push_back(collision.centFT0C());
415+
if (cfgEstimatorBitMask & aod::cfmultset::MultFV0A)
416+
multiplicities.push_back(collision.multFV0A());
417+
if (cfgEstimatorBitMask & aod::cfmultset::MultNTracksPV)
418+
multiplicities.push_back(collision.multNTracksPV());
419+
if (cfgEstimatorBitMask & aod::cfmultset::MultNTracksGlobal)
420+
multiplicities.push_back(collision.multNTracksGlobal());
421+
outputMultSets(multiplicities);
422+
}
423+
410424
if (cfgTransientTables)
411425
outputCollRefs(collision.globalIndex());
412426

@@ -451,6 +465,16 @@ struct FilterCF {
451465
}
452466
PROCESS_SWITCH(FilterCF, processMCPid, "Process MC with PID", false);
453467

468+
void processMCMults(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
469+
soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CFMultiplicities, aod::CentFT0Cs, aod::PVMults, aod::FV0Mults, aod::MultsGlobal> const& allCollisions,
470+
soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::McTrackLabels, aod::TrackSelection>> const& tracks,
471+
aod::BCsWithTimestamps const& bcs)
472+
{
473+
processMCT(mcCollisions, allParticles, allCollisions, tracks, bcs);
474+
}
475+
476+
PROCESS_SWITCH(FilterCF, processMCMults, "Process MC with multiplicity sets", false);
477+
454478
void processMCGen(aod::McCollisions::iterator const& mcCollision, aod::McParticles const& particles)
455479
{
456480
float multiplicity = 0.0f;

0 commit comments

Comments
 (0)