Skip to content

Commit a5bd6d1

Browse files
zchochulZuzanna
andauthored
[PWGCF] fix: change in the mixed events fot pPhi task (#10464)
Co-authored-by: Zuzanna <01150674@pw.edu.pl>
1 parent 6160396 commit a5bd6d1

File tree

1 file changed

+63
-60
lines changed

1 file changed

+63
-60
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackPhi.cxx

Lines changed: 63 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ struct FemtoUniversePairTaskTrackPhi {
185185
HistogramRegistry registryDCA{"registryDCA", {}, OutputObjHandlingPolicy::AnalysisObject, false, true};
186186
HistogramRegistry registryMCpT{"registryMCpT", {}, OutputObjHandlingPolicy::AnalysisObject, false, true};
187187

188+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfBinsVtx, ConfBinsMult}, true};
189+
188190
EfficiencyConfigurableGroup effConfGroup;
189191
EfficiencyCalculator<TH1> efficiencyCalculator{&effConfGroup};
190192

@@ -466,14 +468,9 @@ struct FemtoUniversePairTaskTrackPhi {
466468
}
467469

468470
template <typename PartitionType, typename PartType, typename MCParticles = std::nullptr_t>
469-
void doSameEvent(FilteredFDCollision const& col, PartType const& parts, PartitionType& groupPartsOne, PartitionType& groupPartsTwo, [[maybe_unused]] MCParticles mcParts = nullptr)
471+
void doSameEvent(PartitionType groupPartsTrack, PartitionType groupPartsPhi, PartType parts, float magFieldTesla, int multCol, [[maybe_unused]] MCParticles mcParts = nullptr)
470472
{
471-
const auto& magFieldTesla = col.magField();
472-
const int multCol = col.multNtr();
473-
474-
eventHisto.fillQA(col);
475-
476-
for (auto const& phicandidate : groupPartsTwo) {
473+
for (auto const& phicandidate : groupPartsPhi) {
477474
// TODO: add phi meson minv cut here
478475
const auto& posChild = parts.iteratorAt(phicandidate.index() - 2);
479476
float tpcNSigmaKp = trackCuts.getNsigmaTPC(posChild, o2::track::PID::Kaon);
@@ -498,7 +495,7 @@ struct FemtoUniversePairTaskTrackPhi {
498495
trackHistoPartPhi.fillQA<false, false>(phicandidate);
499496
}
500497

501-
for (auto const& track : groupPartsOne) {
498+
for (auto const& track : groupPartsTrack) {
502499
float tpcNSigmaPi = trackCuts.getNsigmaTPC(track, o2::track::PID::Pion);
503500
float tofNSigmaPi = trackCuts.getNsigmaTOF(track, o2::track::PID::Pion);
504501
float tpcNSigmaKa = trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon);
@@ -535,9 +532,7 @@ struct FemtoUniversePairTaskTrackPhi {
535532
}
536533

537534
/// Now build the combinations
538-
for (auto const& [track, phicandidate] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
539-
// TODO: add phi inv mass cut here
540-
535+
for (auto const& [track, phicandidate] : combinations(CombinationsFullIndexPolicy(groupPartsTrack, groupPartsPhi))) {
541536
if (ConfTrackIsIdentified) {
542537
if (!isParticleNSigmaAccepted(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
543538
continue;
@@ -597,74 +592,67 @@ struct FemtoUniversePairTaskTrackPhi {
597592
// }
598593
}
599594

595+
template <typename PartitionType, typename PartType, typename MCParticles = std::nullptr_t>
596+
void doMixedEvent(PartitionType groupPartsTrack, PartitionType groupPartsPhi, PartType parts, float magFieldTesla, int multCol, [[maybe_unused]] MCParticles mcParts = nullptr)
597+
{
598+
for (auto const& [track, phicandidate] : combinations(CombinationsFullIndexPolicy(groupPartsTrack, groupPartsPhi))) {
599+
if (ConfTrackIsIdentified) {
600+
if (!isParticleNSigmaAccepted(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
601+
continue;
602+
}
603+
if (ConfTrackIsRejected) {
604+
if (isParticleNSigmaRejected(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
605+
continue;
606+
}
607+
}
608+
}
609+
610+
if (ConfCPRIsEnabled) {
611+
if (pairCloseRejection.isClosePair(track, phicandidate, parts, magFieldTesla, femto_universe_container::EventType::mixed)) {
612+
continue;
613+
}
614+
}
615+
616+
weight = efficiencyCalculator.getWeight(ParticleNo::ONE, phicandidate.pt()) * efficiencyCalculator.getWeight(ParticleNo::TWO, track.pt());
617+
618+
if constexpr (std::is_same<PartType, FemtoRecoParticles>::value)
619+
mixedEventCont.setPair<true>(track, phicandidate, multCol, ConfUse3D, weight);
620+
else
621+
mixedEventCont.setPair<false>(track, phicandidate, multCol, ConfUse3D, weight);
622+
}
623+
}
624+
600625
void processSameEvent(FilteredFDCollision const& col, FilteredFemtoFullParticles const& parts)
601626
{
602627
auto thegroupPartsTrack = partsTrack->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
603628
auto thegroupPartsPhi = partsPhi->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
604629
// auto thegroupPartsPhiDaugh = partsPhiDaugh->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
605630
// auto thegroupPartsKaons = partsKaons->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
606631

607-
doSameEvent(col, parts, thegroupPartsTrack, thegroupPartsPhi);
632+
doSameEvent(thegroupPartsTrack, thegroupPartsPhi, parts, col.magField(), col.multNtr());
608633
}
609634
PROCESS_SWITCH(FemtoUniversePairTaskTrackPhi, processSameEvent, "Enable processing same event", true);
610635

611-
template <typename PartitionType, typename PartType, typename MCParticles = std::nullptr_t>
612-
void doMixedEvent(FilteredFDCollisions const& cols, PartType const& parts, PartitionType& partitionPhi, PartitionType& partitionTrack, [[maybe_unused]] MCParticles mcParts = nullptr)
636+
void processMixedEvent(FilteredFDCollisions const& cols, FilteredFemtoFullParticles const& parts)
613637
{
614-
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfBinsVtx, ConfBinsMult}, true};
638+
for (auto const& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
615639

616-
auto mixedCollProcessFunc = [&](auto& collision1, auto& collision2) -> void {
617-
const int multCol = collision1.multNtr();
640+
const int multiplicityCol = collision1.multNtr();
641+
mixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinning.getBin({collision1.posZ(), multiplicityCol}));
618642

619-
auto groupPartsPhi = partitionPhi->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
620-
auto groupPartsTrack = partitionTrack->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
643+
auto groupPartsTrack = partsTrack->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
644+
auto groupPartsPhi = partsPhi->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
621645

622646
const auto& magFieldTesla1 = collision1.magField();
623647
const auto& magFieldTesla2 = collision2.magField();
624648

625649
if (magFieldTesla1 != magFieldTesla2) {
626-
return;
627-
}
628-
629-
for (const auto& [phicandidate, track] : combinations(CombinationsFullIndexPolicy(groupPartsPhi, groupPartsTrack))) {
630-
// TODO: move here phi meson mass cut
631-
632-
if (ConfTrackIsIdentified) {
633-
if (!isParticleNSigmaAccepted(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
634-
continue;
635-
}
636-
if (ConfTrackIsRejected) {
637-
if (isParticleNSigmaRejected(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
638-
continue;
639-
}
640-
}
641-
}
642-
643-
if (ConfCPRIsEnabled) {
644-
if (pairCloseRejection.isClosePair(track, phicandidate, parts, magFieldTesla1, femto_universe_container::EventType::mixed)) {
645-
continue;
646-
}
647-
}
648-
649-
weight = efficiencyCalculator.getWeight(ParticleNo::ONE, phicandidate.pt()) * efficiencyCalculator.getWeight(ParticleNo::TWO, track.pt());
650-
651-
if constexpr (std::is_same<PartType, FemtoRecoParticles>::value)
652-
mixedEventCont.setPair<true>(track, phicandidate, multCol, ConfUse3D, weight);
653-
else
654-
mixedEventCont.setPair<false>(track, phicandidate, multCol, ConfUse3D, weight);
650+
continue;
655651
}
656-
};
657652

658-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, ConfNEventsMix, -1, cols, cols)) {
659-
mixedCollProcessFunc(collision1, collision2);
660-
mixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinning.getBin({collision1.posZ(), collision1.multNtr()}));
653+
doMixedEvent(groupPartsTrack, groupPartsPhi, parts, magFieldTesla1, multiplicityCol);
661654
}
662655
}
663-
664-
void processMixedEvent(FilteredFDCollisions const& cols, FilteredFemtoFullParticles const& parts)
665-
{
666-
doMixedEvent(cols, parts, partsPhi, partsTrack);
667-
}
668656
PROCESS_SWITCH(FemtoUniversePairTaskTrackPhi, processMixedEvent, "Enable processing mixed events", true);
669657

670658
///--------------------------------------------MC-------------------------------------------------///
@@ -674,14 +662,29 @@ struct FemtoUniversePairTaskTrackPhi {
674662
auto thegroupPartsPhi = partsPhiMCReco->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
675663
// auto thegroupPartsPhiDaugh = partsPhiDaugh->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
676664
// auto thegroupPartsKaons = partsKaons->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
677-
678-
doSameEvent(col, parts, thegroupPartsTrack, thegroupPartsPhi, mcparts);
665+
doSameEvent(thegroupPartsTrack, thegroupPartsPhi, parts, col.magField(), col.multNtr(), mcparts);
679666
}
680667
PROCESS_SWITCH(FemtoUniversePairTaskTrackPhi, processSameEventMCReco, "Enable processing same event for MC Reco", true);
681668

682669
void processMixedEventMCReco(FilteredFDCollisions const& cols, FemtoRecoParticles const& parts, aod::FdMCParticles const& mcparts)
683670
{
684-
doMixedEvent(cols, parts, partsPhiMCReco, partsTrackMCReco, mcparts);
671+
for (auto const& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
672+
673+
const int multiplicityCol = collision1.multNtr();
674+
mixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinning.getBin({collision1.posZ(), multiplicityCol}));
675+
676+
const auto& magFieldTesla1 = collision1.magField();
677+
const auto& magFieldTesla2 = collision2.magField();
678+
679+
if (magFieldTesla1 != magFieldTesla2) {
680+
continue;
681+
}
682+
683+
auto groupPartsTrack = partsTrackMCReco->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
684+
auto groupPartsPhi = partsPhiMCReco->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
685+
686+
doMixedEvent(groupPartsTrack, groupPartsPhi, parts, magFieldTesla1, multiplicityCol, mcparts);
687+
}
685688
}
686689
PROCESS_SWITCH(FemtoUniversePairTaskTrackPhi, processMixedEventMCReco, "Enable processing mixed events for MC Reco", false);
687690

0 commit comments

Comments
 (0)