Skip to content

Commit 3988b3d

Browse files
authored
[PWGCF] twoParticleCorrelationsMpi.cxx: add MC validation for templated event-by-event MPI proxy estimator (#17439)
1 parent 111214c commit 3988b3d

3 files changed

Lines changed: 222 additions & 42 deletions

File tree

PWGCF/DataModel/CorrelationsDerived.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ DECLARE_SOA_TABLE(CFMcCollisions, "AOD", "CFMCCOLLISION", //! Reduced MC collisi
2828
mccollision::PosZ, cfmccollision::Multiplicity);
2929
using CFMcCollision = CFMcCollisions::iterator;
3030

31+
namespace cfmccollisionextra
32+
{
33+
DECLARE_SOA_COLUMN(NMPI, nMPI, int); //! Number of multi-parton interactions from HepMC
34+
} // namespace cfmccollisionextra
35+
DECLARE_SOA_TABLE(CFMcCollisionExtras, "AOD", "CFMCCOLLEXTRA", //! Row-aligned extension of CFMcCollisions
36+
cfmccollisionextra::NMPI);
37+
using CFMcCollisionExtra = CFMcCollisionExtras::iterator;
38+
using CFMcCollisionsWithExtra = soa::Join<CFMcCollisions, CFMcCollisionExtras>;
39+
using CFMcCollisionWithExtra = CFMcCollisionsWithExtra::iterator;
40+
3141
namespace cfmcparticle
3242
{
3343
DECLARE_SOA_INDEX_COLUMN(CFMcCollision, cfMcCollision); //! Index to reduced MC collision

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct FilterCF {
125125
Produces<aod::CFTrackLabels> outputTrackLabels;
126126

127127
Produces<aod::CFMcCollisions> outputMcCollisions;
128+
Produces<aod::CFMcCollisionExtras> outputMcCollisionExtras;
128129
Produces<aod::CFMcParticles> outputMcParticles;
129130

130131
Produces<aod::CFCollRefs> outputCollRefs;
@@ -385,8 +386,8 @@ struct FilterCF {
385386
/// event selections
386387
/// \param tracks The collection of tracks, filtered by selection criteria
387388
/// \param bcs The collection of bunch crossings with timestamps
388-
template <typename C1, typename T1>
389-
void processMCT(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
389+
template <typename MCs, typename C1, typename T1>
390+
void processMCT(MCs const& mcCollisions, aod::McParticles const& allParticles,
390391
C1 const& allCollisions,
391392
T1 const& tracks,
392393
aod::BCsWithTimestamps const&)
@@ -459,6 +460,7 @@ struct FilterCF {
459460
}
460461
}
461462
outputMcCollisions(mcCollision.posZ(), multiplicity);
463+
outputMcCollisionExtras(mcCollision.nMPI());
462464
}
463465

464466
// PASS 2 on collisions: store collisions and tracks
@@ -517,7 +519,8 @@ struct FilterCF {
517519
// NOTE not filtering collisions here because in that case there can be tracks referring to MC particles which are not part of the selected MC collisions
518520
Preslice<aod::McParticles> perMcCollision = aod::mcparticle::mcCollisionId;
519521
Preslice<aod::Tracks> perCollision = aod::track::collisionId;
520-
void processMC(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
522+
using McCollisionsWithHepMC = soa::Join<aod::McCollisions, aod::HepMCXSections>;
523+
void processMC(McCollisionsWithHepMC const& mcCollisions, aod::McParticles const& allParticles,
521524
soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CFMultiplicities> const& allCollisions,
522525
soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::McTrackLabels, aod::TrackSelection>> const& tracks,
523526
aod::BCsWithTimestamps const& bcs)
@@ -527,7 +530,7 @@ struct FilterCF {
527530
PROCESS_SWITCH(FilterCF, processMC, "Process MC", false);
528531

529532
// NOTE not filtering collisions here because in that case there can be tracks referring to MC particles which are not part of the selected MC collisions
530-
void processMCPid(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
533+
void processMCPid(McCollisionsWithHepMC const& mcCollisions, aod::McParticles const& allParticles,
531534
soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CFMultiplicities> const& allCollisions,
532535
soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::McTrackLabels, aod::TrackSelection, aod::pidTPCPr, aod::pidTOFPr, aod::TracksDCA>> const& tracks,
533536
aod::BCsWithTimestamps const& bcs)
@@ -536,7 +539,7 @@ struct FilterCF {
536539
}
537540
PROCESS_SWITCH(FilterCF, processMCPid, "Process MC with PID", false);
538541

539-
void processMCMults(aod::McCollisions const& mcCollisions, aod::McParticles const& allParticles,
542+
void processMCMults(McCollisionsWithHepMC const& mcCollisions, aod::McParticles const& allParticles,
540543
soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CFMultiplicities, aod::CentFT0Cs, aod::PVMults, aod::FV0Mults, aod::MultsGlobal> const& allCollisions,
541544
soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::McTrackLabels, aod::TrackSelection>> const& tracks,
542545
aod::BCsWithTimestamps const& bcs)
@@ -546,7 +549,7 @@ struct FilterCF {
546549

547550
PROCESS_SWITCH(FilterCF, processMCMults, "Process MC with multiplicity sets", false);
548551

549-
void processMCGen(aod::McCollisions::iterator const& mcCollision, aod::McParticles const& particles)
552+
void processMCGen(McCollisionsWithHepMC::iterator const& mcCollision, aod::McParticles const& particles)
550553
{
551554
float multiplicity = 0.0f;
552555
for (auto& particle : particles) {
@@ -562,6 +565,7 @@ struct FilterCF {
562565
sign, particle.pdgCode(), particle.flags());
563566
}
564567
outputMcCollisions(mcCollision.posZ(), multiplicity);
568+
outputMcCollisionExtras(mcCollision.nMPI());
565569
}
566570
PROCESS_SWITCH(FilterCF, processMCGen, "Process MCGen", false);
567571
};

0 commit comments

Comments
 (0)