Skip to content

Commit b1ad0dc

Browse files
JStaaalibuild
andauthored
[PWGCF] Added a check on MC Rec collisions corresponding to MC Gen collisions (#11412)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 6de5d91 commit b1ad0dc

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

PWGCF/MultiparticleCorrelations/Tasks/threeParticleCorrelations.cxx

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,14 @@ struct ThreeParticleCorrelations {
8888
aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr,
8989
aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr, aod::pidTOFbeta>>;
9090

91-
// Table aliases - MC
91+
// Table aliases - MC Gen
9292
using MyFilteredMCGenCollisions = soa::Filtered<soa::Join<aod::McCollisions, aod::McCollsExtra>>;
9393
using MyFilteredMCGenCollision = MyFilteredMCGenCollisions::iterator;
9494
using MyFilteredMCParticles = soa::Filtered<aod::McParticles>;
95-
using MyFilteredMCRecCollision = soa::Filtered<soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels, aod::McCollisionLabels>>::iterator;
95+
96+
// Table aliases - MC Rec
97+
using MCRecCollisions = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels, aod::McCollisionLabels>;
98+
using MyFilteredMCRecCollisions = soa::Filtered<MCRecCollisions>;
9699
using MyFilteredMCV0s = soa::Filtered<soa::Join<aod::V0Datas, aod::McV0Labels>>;
97100
using MyFilteredMCTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::McTrackLabels,
98101
aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr,
@@ -110,6 +113,7 @@ struct ThreeParticleCorrelations {
110113
// Mixed-events binning policy
111114
SliceCache cache;
112115
Preslice<MyFilteredMCParticles> perCol = aod::mcparticle::mcCollisionId;
116+
PresliceUnsorted<aod::McCollisionLabels> perMCCol = aod::mccollisionlabel::mcCollisionId;
113117

114118
ConfigurableAxis confCentBins{"confCentBins", {VARIABLE_WIDTH, 0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f}, "ME Centrality binning"};
115119
ConfigurableAxis confZvtxBins{"confZvtxBins", {VARIABLE_WIDTH, -7.0f, -5.0f, -3.0f, -1.0f, 0.0f, 1.0f, 3.0f, 5.0f, 7.0f}, "ME Zvtx binning"};
@@ -417,7 +421,6 @@ struct ThreeParticleCorrelations {
417421

418422
// Start of the Mixed-Event correlations
419423
for (const auto& [coll_1, v0_1, coll_2, track_2] : pairData) {
420-
421424
if (!acceptEvent(coll_1, false) || !acceptEvent(coll_2, false)) {
422425
return;
423426
}
@@ -481,9 +484,17 @@ struct ThreeParticleCorrelations {
481484
// End of the Mixed-Event Correlations
482485
}
483486

484-
void processMCSame(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&)
487+
void processMCSame(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&, soa::SmallGroups<MCRecCollisions> const& recCollisions)
485488
{
486489

490+
if (recCollisions.size() == 1) {
491+
for (const auto& recCollision : recCollisions) {
492+
if (!acceptEvent(recCollision, false)) {
493+
return;
494+
}
495+
}
496+
}
497+
487498
rQARegistry.fill(HIST("hEventCentrality_MC"), collision.bestCollisionCentFT0C());
488499
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
489500
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
@@ -541,14 +552,28 @@ struct ThreeParticleCorrelations {
541552
// End of the MC Same-Event Correlations
542553
}
543554

544-
void processMCMixed(MyFilteredMCGenCollisions const&, MyFilteredMCParticles const&)
555+
void processMCMixed(MyFilteredMCGenCollisions const&, MyFilteredMCParticles const&, MyFilteredMCRecCollisions const& recCollisions)
545556
{
546557

547558
// Start of the MC Mixed-events Correlations
548559
for (const auto& [coll_1, v0_1, coll_2, particle_2] : pairMC) {
560+
auto recCollsA1 = recCollisions.sliceBy(perMCCol, coll_1.globalIndex());
561+
auto recCollsA2 = recCollisions.sliceBy(perMCCol, coll_2.globalIndex());
562+
if (recCollsA1.size() == 1 && recCollsA2.size() == 1) {
563+
for (const auto& recColl_1 : recCollsA1) {
564+
if (!acceptEvent(recColl_1, false)) {
565+
return;
566+
}
567+
}
568+
for (const auto& recColl_2 : recCollsA2) {
569+
if (!acceptEvent(recColl_2, false)) {
570+
return;
571+
}
572+
}
573+
}
574+
549575
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, coll_1.globalIndex(), cache);
550576
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, coll_2.globalIndex(), cache);
551-
552577
for (const auto& [trigger, associate] : soa::combinations(soa::CombinationsFullIndexPolicy(groupMCTriggers, groupMCAssociates))) {
553578
if (trigger.isPhysicalPrimary() && associate.isPhysicalPrimary()) {
554579

@@ -579,9 +604,17 @@ struct ThreeParticleCorrelations {
579604
// End of the MC Mixed-events Correlations
580605
}
581606

582-
void processMCGen(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&)
607+
void processMCGen(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&, soa::SmallGroups<MCRecCollisions> const& recCollisions)
583608
{
584609

610+
if (recCollisions.size() == 1) {
611+
for (const auto& recCollision : recCollisions) {
612+
if (!acceptEvent(recCollision, false)) {
613+
return;
614+
}
615+
}
616+
}
617+
585618
auto groupMCTracks = mcTracks->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
586619
auto groupMCV0s = mcV0s->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
587620

@@ -621,7 +654,7 @@ struct ThreeParticleCorrelations {
621654
// End of the Monte-Carlo generated QA
622655
}
623656

624-
void processMCRec(MyFilteredMCRecCollision const& collision, MyFilteredMCV0s const& v0s, MyFilteredMCTracks const& tracks, aod::McCollisions const&, aod::McParticles const&)
657+
void processMCRec(MyFilteredMCRecCollisions::iterator const& collision, MyFilteredMCV0s const& v0s, MyFilteredMCTracks const& tracks, aod::McCollisions const&, aod::McParticles const&)
625658
{
626659

627660
if (!acceptEvent(collision, false) || !collision.has_mcCollision()) {

0 commit comments

Comments
 (0)