@@ -254,8 +254,6 @@ struct TwoParticleCorrelationsMpi {
254254
255255 using AodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms>>;
256256 using AodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection>>;
257- using FilteredMcParticles = soa::Filtered<aod::McParticles>;
258- using McCollisionsWithHepMC = soa::Join<aod::McCollisions, aod::HepMCXSections>;
259257
260258 using DerivedCollisions = soa::Filtered<aod::CFCollisions>;
261259 using DerivedTracks = soa::Filtered<aod::CFTracks>;
@@ -265,6 +263,9 @@ struct TwoParticleCorrelationsMpi {
265263 if (doprocessMCSameDerived && (doprocessSameDerived || doprocessSameDerivedMultSet)) {
266264 LOGF (fatal, " processMCSameDerived is mutually exclusive with the reconstructed derived same-event processes because it also fills those outputs" );
267265 }
266+ if (doprocessSameGenMC && doprocessMCSameDerived) {
267+ LOGF (fatal, " processSameGenMC and processMCSameDerived are mutually exclusive because both fill the generated same-event outputs" );
268+ }
268269 if (!cfgNuncSeedsTemplateFile.value .empty () && !cfgNuncSeedsTemplate.value .empty ()) {
269270 LOGF (fatal, " Configure only one template source: cfgNuncSeedsTemplateFile or cfgNuncSeedsTemplate" );
270271 }
@@ -1464,32 +1465,25 @@ struct TwoParticleCorrelationsMpi {
14641465 }
14651466 PROCESS_SWITCH (TwoParticleCorrelationsMpi, processSameAOD, " Process same event on AOD" , true );
14661467
1467- void processSameGenMC (McCollisionsWithHepMC::iterator const & mcCollision, FilteredMcParticles const & mcParticles, aod::BCsWithTimestamps const &)
1468+ void processSameGenMC (soa::Filtered<aod::CFMcCollisionsWithExtra>::iterator const & mcCollision,
1469+ soa::Filtered<aod::CFMcParticles> const & mcParticles,
1470+ soa::SmallGroups<aod::CFCollisionsWithLabel> const & collisions)
14681471 {
1469- if (std::abs (mcCollision.posZ ()) >= cfgCutVertex) {
1470- return ;
1471- }
1472- const auto bc = mcCollision.bc_as <aod::BCsWithTimestamps>();
1473- loadCcdbYieldTemplates (bc.timestamp ());
1474-
1475- int generatedMultiplicity = 0 ;
1476- for (const auto & particle : mcParticles) {
1477- if (!particle.isPhysicalPrimary ()) {
1478- continue ;
1479- }
1480- const auto * pdgParticle = pdg->GetParticle (particle.pdgCode ());
1481- if (pdgParticle && pdgParticle->Charge () != 0.0 ) {
1482- ++generatedMultiplicity;
1472+ if (!cfgNuncSeedsTemplate.value .empty ()) {
1473+ for (const auto & collision : collisions) {
1474+ loadCcdbYieldTemplates (collision.timestamp ());
1475+ break ;
14831476 }
14841477 }
14851478
1479+ const auto generatedMultiplicity = mcCollision.multiplicity ();
14861480 fillContainerEvent (same, generatedMultiplicity, CorrelationContainer::kCFStepAll );
14871481 EventSeedEstimate seedEstimate;
14881482 fillCorrelations<CorrelationContainer::kCFStepAll >(same, mcParticles, mcParticles, generatedMultiplicity, mcCollision.posZ (), 0 , 1 .0f , &seedEstimate);
14891483 finalizeEventSeedEstimate (seedEstimate);
14901484 fillGeneratedMCValidation (generatedMultiplicity, seedEstimate, mcCollision.nMPI ());
14911485 }
1492- PROCESS_SWITCH (TwoParticleCorrelationsMpi, processSameGenMC, " Process generated MC events and validate the template estimator against HepMC N MPI" , false );
1486+ PROCESS_SWITCH (TwoParticleCorrelationsMpi, processSameGenMC, " Process generated MC events from derived data and validate against the stored HepMC N MPI" , false );
14931487
14941488 template <class CollType , class TTracks1 , class TTracks2 >
14951489 void processSameDerivedT (CollType const & collision, TTracks1 const & tracks1, TTracks2 const & tracks2, const int * trueNMPI = nullptr )
0 commit comments