Skip to content

Commit d98d464

Browse files
JStaaalibuild
andauthored
[PWGCF] Fixed a bug for MC Gen events needing to have exactly one MC Rec event (#13951)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 78d60ec commit d98d464

File tree

1 file changed

+107
-126
lines changed

1 file changed

+107
-126
lines changed

PWGCF/MultiparticleCorrelations/Tasks/threeParticleCorrelations.cxx

Lines changed: 107 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -593,75 +593,70 @@ struct ThreeParticleCorrelations {
593593
void processMCSame(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&, soa::SmallGroups<MCRecCollisions> const& recCollisions)
594594
{
595595

596-
if (recCollisions.size() == 1) {
597-
for (const auto& recCollision : recCollisions) {
598-
if (!acceptEvent(recCollision, false)) {
599-
return;
600-
}
601-
}
602-
}
596+
if (recCollisions.size() == 1 && acceptEvent(recCollisions.begin(), false)) {
603597

604-
rQARegistry.fill(HIST("hEventCentrality_MC"), collision.bestCollisionCentFT0C());
605-
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
606-
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
598+
rQARegistry.fill(HIST("hEventCentrality_MC"), collision.bestCollisionCentFT0C());
599+
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
600+
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
607601

608-
// Start of the MC Track QA
609-
for (const auto& track : groupMCAssociates) {
610-
if (track.isPhysicalPrimary()) {
602+
// Start of the MC Track QA
603+
for (const auto& track : groupMCAssociates) {
604+
if (track.isPhysicalPrimary()) {
611605

612-
if (track.pdgCode() > 0) {
613-
assocSign = 1;
614-
} else if (track.pdgCode() < 0) {
615-
assocSign = -1;
616-
}
606+
if (track.pdgCode() > 0) {
607+
assocSign = 1;
608+
} else if (track.pdgCode() < 0) {
609+
assocSign = -1;
610+
}
617611

618-
if (std::abs(track.pdgCode()) == kPiPlus) { // Pions
619-
rQARegistry.fill(HIST("hPtPion_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
620-
} else if (std::abs(track.pdgCode()) == kKPlus) { // Kaons
621-
rQARegistry.fill(HIST("hPtKaon_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
622-
} else if (std::abs(track.pdgCode()) == kProton) { // Protons
623-
rQARegistry.fill(HIST("hPtProton_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
612+
if (std::abs(track.pdgCode()) == kPiPlus) { // Pions
613+
rQARegistry.fill(HIST("hPtPion_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
614+
} else if (std::abs(track.pdgCode()) == kKPlus) { // Kaons
615+
rQARegistry.fill(HIST("hPtKaon_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
616+
} else if (std::abs(track.pdgCode()) == kProton) { // Protons
617+
rQARegistry.fill(HIST("hPtProton_MC"), track.pt(), collision.bestCollisionCentFT0C(), assocSign);
618+
}
624619
}
625620
}
626-
}
627-
// End of the MC Track QA
621+
// End of the MC Track QA
628622

629-
// Start of the MC Same-Event correlations
630-
for (const auto& trigger : groupMCTriggers) {
631-
if (trigger.isPhysicalPrimary()) {
623+
// Start of the MC Same-Event correlations
624+
for (const auto& trigger : groupMCTriggers) {
625+
if (trigger.isPhysicalPrimary()) {
632626

633-
if (trigger.pdgCode() > 0) {
634-
triggSign = 1;
635-
} else if (trigger.pdgCode() < 0) {
636-
triggSign = -1;
637-
}
638-
rQARegistry.fill(HIST("hPtV0_MC"), trigger.pt(), collision.bestCollisionCentFT0C(), triggSign);
639-
rQARegistry.fill(HIST("hNLambdas"), triggSign, trigger.pt(), collision.bestCollisionCentFT0C());
627+
if (trigger.pdgCode() > 0) {
628+
triggSign = 1;
629+
} else if (trigger.pdgCode() < 0) {
630+
triggSign = -1;
631+
}
632+
rQARegistry.fill(HIST("hPtV0_MC"), trigger.pt(), collision.bestCollisionCentFT0C(), triggSign);
633+
rQARegistry.fill(HIST("hNLambdas"), triggSign, trigger.pt(), collision.bestCollisionCentFT0C());
640634

641-
for (const auto& associate : groupMCAssociates) {
642-
if (associate.isPhysicalPrimary()) {
635+
for (const auto& associate : groupMCAssociates) {
636+
if (associate.isPhysicalPrimary()) {
643637

644-
if (associate.pdgCode() > 0) {
645-
assocSign = 1;
646-
} else if (associate.pdgCode() < 0) {
647-
assocSign = -1;
648-
}
638+
if (associate.pdgCode() > 0) {
639+
assocSign = 1;
640+
} else if (associate.pdgCode() < 0) {
641+
assocSign = -1;
642+
}
649643

650-
deltaPhi = RecoDecay::constrainAngle(trigger.phi() - associate.phi(), -constants::math::PIHalf);
651-
deltaEta = trigger.eta() - associate.eta();
644+
deltaPhi = RecoDecay::constrainAngle(trigger.phi() - associate.phi(), -constants::math::PIHalf);
645+
deltaEta = trigger.eta() - associate.eta();
652646

653-
if (std::abs(associate.pdgCode()) == kPiPlus) {
654-
rSECorrRegistry.fill(HIST("hSameLambdaPion_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
655-
} else if (std::abs(associate.pdgCode()) == kKPlus) {
656-
rSECorrRegistry.fill(HIST("hSameLambdaKaon_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
657-
} else if (std::abs(associate.pdgCode()) == kProton) {
658-
rSECorrRegistry.fill(HIST("hSameLambdaProton_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
647+
if (std::abs(associate.pdgCode()) == kPiPlus) {
648+
rSECorrRegistry.fill(HIST("hSameLambdaPion_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
649+
} else if (std::abs(associate.pdgCode()) == kKPlus) {
650+
rSECorrRegistry.fill(HIST("hSameLambdaKaon_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
651+
} else if (std::abs(associate.pdgCode()) == kProton) {
652+
rSECorrRegistry.fill(HIST("hSameLambdaProton_MC"), deltaPhi, deltaEta, collision.bestCollisionCentFT0C(), collision.posZ(), triggSign, assocSign);
653+
}
659654
}
660655
}
661656
}
662657
}
658+
// End of the MC Same-Event Correlations
663659
}
664-
// End of the MC Same-Event Correlations
665660
}
666661

667662
void processMCMixed(MyFilteredMCGenCollisions const&, MyFilteredMCParticles const&, MyFilteredMCRecCollisions const& recCollisions)
@@ -671,44 +666,35 @@ struct ThreeParticleCorrelations {
671666
for (const auto& [coll_1, v0_1, coll_2, particle_2] : pairMC) {
672667
auto recCollsA1 = recCollisions.sliceBy(perMCCol, coll_1.globalIndex());
673668
auto recCollsA2 = recCollisions.sliceBy(perMCCol, coll_2.globalIndex());
674-
if (recCollsA1.size() == 1 && recCollsA2.size() == 1) {
675-
for (const auto& recColl_1 : recCollsA1) {
676-
if (!acceptEvent(recColl_1, false)) {
677-
continue;
678-
}
679-
}
680-
for (const auto& recColl_2 : recCollsA2) {
681-
if (!acceptEvent(recColl_2, false)) {
682-
continue;
683-
}
684-
}
685-
}
686-
687-
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, coll_1.globalIndex(), cache);
688-
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, coll_2.globalIndex(), cache);
689-
for (const auto& [trigger, associate] : soa::combinations(soa::CombinationsFullIndexPolicy(groupMCTriggers, groupMCAssociates))) {
690-
if (trigger.isPhysicalPrimary() && associate.isPhysicalPrimary()) {
691-
692-
if (trigger.pdgCode() > 0) {
693-
triggSign = 1;
694-
} else if (trigger.pdgCode() < 0) {
695-
triggSign = -1;
696-
}
697-
if (associate.pdgCode() > 0) {
698-
assocSign = 1;
699-
} else if (associate.pdgCode() < 0) {
700-
assocSign = -1;
701-
}
669+
if (recCollsA1.size() == 1 && recCollsA2.size() == 1 && acceptEvent(recCollsA1.begin(), false) && acceptEvent(recCollsA2.begin(), false)) {
670+
671+
LOGF(info, "Size_1 = %i, Size_2 = %i", recCollsA1.size(), recCollsA1.size());
672+
auto groupMCTriggers = mcTriggers->sliceByCached(aod::mcparticle::mcCollisionId, coll_1.globalIndex(), cache);
673+
auto groupMCAssociates = mcAssociates->sliceByCached(aod::mcparticle::mcCollisionId, coll_2.globalIndex(), cache);
674+
for (const auto& [trigger, associate] : soa::combinations(soa::CombinationsFullIndexPolicy(groupMCTriggers, groupMCAssociates))) {
675+
if (trigger.isPhysicalPrimary() && associate.isPhysicalPrimary()) {
676+
677+
if (trigger.pdgCode() > 0) {
678+
triggSign = 1;
679+
} else if (trigger.pdgCode() < 0) {
680+
triggSign = -1;
681+
}
682+
if (associate.pdgCode() > 0) {
683+
assocSign = 1;
684+
} else if (associate.pdgCode() < 0) {
685+
assocSign = -1;
686+
}
702687

703-
deltaPhi = RecoDecay::constrainAngle(trigger.phi() - associate.phi(), -constants::math::PIHalf);
704-
deltaEta = trigger.eta() - associate.eta();
688+
deltaPhi = RecoDecay::constrainAngle(trigger.phi() - associate.phi(), -constants::math::PIHalf);
689+
deltaEta = trigger.eta() - associate.eta();
705690

706-
if (std::abs(associate.pdgCode()) == kPiPlus) {
707-
rMECorrRegistry.fill(HIST("hMixLambdaPion_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
708-
} else if (std::abs(associate.pdgCode()) == kKPlus) {
709-
rMECorrRegistry.fill(HIST("hMixLambdaKaon_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
710-
} else if (std::abs(associate.pdgCode()) == kProton) {
711-
rMECorrRegistry.fill(HIST("hMixLambdaProton_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
691+
if (std::abs(associate.pdgCode()) == kPiPlus) {
692+
rMECorrRegistry.fill(HIST("hMixLambdaPion_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
693+
} else if (std::abs(associate.pdgCode()) == kKPlus) {
694+
rMECorrRegistry.fill(HIST("hMixLambdaKaon_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
695+
} else if (std::abs(associate.pdgCode()) == kProton) {
696+
rMECorrRegistry.fill(HIST("hMixLambdaProton_MC"), deltaPhi, deltaEta, coll_1.bestCollisionCentFT0C(), coll_1.posZ(), triggSign, assocSign);
697+
}
712698
}
713699
}
714700
}
@@ -719,51 +705,46 @@ struct ThreeParticleCorrelations {
719705
void processMCGen(MyFilteredMCGenCollision const& collision, MyFilteredMCParticles const&, soa::SmallGroups<MCRecCollisions> const& recCollisions)
720706
{
721707

722-
if (recCollisions.size() == 1) {
723-
for (const auto& recCollision : recCollisions) {
724-
if (!acceptEvent(recCollision, false)) {
725-
return;
726-
}
727-
}
728-
}
729-
730-
auto groupMCTracks = mcTracks->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
731-
auto groupMCV0s = mcV0s->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
732-
733-
// Start of the Monte-Carlo generated QA
734-
for (const auto& particle : groupMCTracks) {
735-
if (particle.isPhysicalPrimary()) {
736-
737-
// Track efficiency - Generated
738-
rMCRegistry.fill(HIST("hGenerated"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
739-
if (particle.pdgCode() == kPiPlus) { // Pos pions
740-
rMCRegistry.fill(HIST("hGenPionP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
741-
} else if (particle.pdgCode() == kPiMinus) { // Neg pions
742-
rMCRegistry.fill(HIST("hGenPionN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
743-
} else if (particle.pdgCode() == kKPlus) { // Pos kaons
744-
rMCRegistry.fill(HIST("hGenKaonP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
745-
} else if (particle.pdgCode() == kKMinus) { // Neg kaons
746-
rMCRegistry.fill(HIST("hGenKaonN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
747-
} else if (particle.pdgCode() == kProton) { // Pos protons
748-
rMCRegistry.fill(HIST("hGenProtonP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
749-
} else if (particle.pdgCode() == kProtonBar) { // Neg protons
750-
rMCRegistry.fill(HIST("hGenProtonN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
708+
if (recCollisions.size() == 1 && acceptEvent(recCollisions.begin(), false)) {
709+
710+
auto groupMCTracks = mcTracks->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
711+
auto groupMCV0s = mcV0s->sliceByCached(aod::mcparticle::mcCollisionId, collision.globalIndex(), cache);
712+
713+
// Start of the Monte-Carlo generated QA
714+
for (const auto& particle : groupMCTracks) {
715+
if (particle.isPhysicalPrimary()) {
716+
717+
// Track efficiency - Generated
718+
rMCRegistry.fill(HIST("hGenerated"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
719+
if (particle.pdgCode() == kPiPlus) { // Pos pions
720+
rMCRegistry.fill(HIST("hGenPionP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
721+
} else if (particle.pdgCode() == kPiMinus) { // Neg pions
722+
rMCRegistry.fill(HIST("hGenPionN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
723+
} else if (particle.pdgCode() == kKPlus) { // Pos kaons
724+
rMCRegistry.fill(HIST("hGenKaonP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
725+
} else if (particle.pdgCode() == kKMinus) { // Neg kaons
726+
rMCRegistry.fill(HIST("hGenKaonN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
727+
} else if (particle.pdgCode() == kProton) { // Pos protons
728+
rMCRegistry.fill(HIST("hGenProtonP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
729+
} else if (particle.pdgCode() == kProtonBar) { // Neg protons
730+
rMCRegistry.fill(HIST("hGenProtonN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
731+
}
751732
}
752733
}
753-
}
754734

755-
for (const auto& particle : groupMCV0s) {
756-
if (particle.isPhysicalPrimary()) {
735+
for (const auto& particle : groupMCV0s) {
736+
if (particle.isPhysicalPrimary()) {
757737

758-
// V0 efficiency - Generated
759-
if (particle.pdgCode() == kLambda0) { // Lambdas
760-
rMCRegistry.fill(HIST("hGenLambdaP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
761-
} else if (particle.pdgCode() == kLambda0Bar) { // AntiLambdas
762-
rMCRegistry.fill(HIST("hGenLambdaN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
738+
// V0 efficiency - Generated
739+
if (particle.pdgCode() == kLambda0) { // Lambdas
740+
rMCRegistry.fill(HIST("hGenLambdaP"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
741+
} else if (particle.pdgCode() == kLambda0Bar) { // AntiLambdas
742+
rMCRegistry.fill(HIST("hGenLambdaN"), particle.pt(), particle.eta(), collision.bestCollisionCentFT0C());
743+
}
763744
}
764745
}
746+
// End of the Monte-Carlo generated QA
765747
}
766-
// End of the Monte-Carlo generated QA
767748
}
768749

769750
void processMCRec(MyFilteredMCRecCollisions::iterator const& collision, MyMCV0s const& v0s, MyFilteredMCTracks const& tracks, aod::McCollisions const&, aod::McParticles const&)

0 commit comments

Comments
 (0)