Skip to content

Commit 1f52070

Browse files
authored
[PWGCF] Change mixing to use centrality when needed in V0 task (#8486)
1 parent 7b0f900 commit 1f52070

File tree

1 file changed

+73
-17
lines changed

1 file changed

+73
-17
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackV0Extended.cxx

Lines changed: 73 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
/// \author Shirajum Monira, WUT Warsaw, shirajum.monira.dokt@pw.edu.pl
1616

1717
#include <vector>
18+
#include <string>
19+
#include <memory>
1820
#include "Framework/AnalysisTask.h"
1921
#include "Framework/runDataProcessing.h"
2022
#include "Framework/HistogramRegistry.h"
@@ -152,6 +154,8 @@ struct femtoUniversePairTaskTrackV0Extended {
152154
HistogramRegistry registryMCtruth{"MCtruthHistos", {}, OutputObjHandlingPolicy::AnalysisObject, false, true};
153155
HistogramRegistry registryMCreco{"MCrecoHistos", {}, OutputObjHandlingPolicy::AnalysisObject, false, true};
154156

157+
HistogramRegistry MixQaRegistry{"MixQaRegistry", {}, OutputObjHandlingPolicy::AnalysisObject};
158+
155159
std::unique_ptr<TFile> plocalEffFile;
156160
std::unique_ptr<TH1> plocalEffp1;
157161
std::unique_ptr<TH1> plocalEffp2;
@@ -220,6 +224,8 @@ struct femtoUniversePairTaskTrackV0Extended {
220224
posChildV0Type2.init(&qaRegistry, ConfChildTempFitVarpTBins, ConfChildTempFitVarBins, false, 0, true, "posChildV0Type2");
221225
negChildV0Type2.init(&qaRegistry, ConfChildTempFitVarpTBins, ConfChildTempFitVarBins, false, 0, true, "negChildV0Type2");
222226

227+
MixQaRegistry.add("MixingQA/hMECollisionBins", ";bin;Entries", kTH1F, {{120, -0.5, 119.5}});
228+
223229
// MC truth
224230
registryMCtruth.add("plus/MCtruthLambda", "MC truth Lambdas;#it{p}_{T} (GeV/c); #eta", {HistType::kTH2F, {{500, 0, 5}, {400, -1.0, 1.0}}});
225231
registryMCtruth.add("minus/MCtruthLambda", "MC truth Lambdas;#it{p}_{T} (GeV/c); #eta", {HistType::kTH2F, {{500, 0, 5}, {400, -1.0, 1.0}}});
@@ -555,10 +561,10 @@ struct femtoUniversePairTaskTrackV0Extended {
555561
template <typename PartType, typename PartitionType, typename MCParticles = std::nullptr_t>
556562
void doMixedEvent(FilteredFDCollisions& cols, PartType& parts, PartitionType& partitionOne, PartitionType& partitionTwo, [[maybe_unused]] MCParticles mcParts = nullptr)
557563
{
558-
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfVtxBins, ConfMultBins}, true};
559-
560-
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
564+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinningMult{{ConfVtxBins, ConfMultBins}, true};
565+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultV0M> colBinningCent{{ConfVtxBins, ConfMultBins}, true};
561566

567+
auto mixedCollProcessFunc = [&](auto& collision1, auto& collision2) -> void {
562568
const int multCol = ConfUseCent ? collision1.multV0M() : collision1.multNtr();
563569

564570
auto groupPartsOne = partitionOne->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
@@ -568,7 +574,7 @@ struct femtoUniversePairTaskTrackV0Extended {
568574
const auto& magFieldTesla2 = collision2.magField();
569575

570576
if (magFieldTesla1 != magFieldTesla2) {
571-
continue;
577+
return;
572578
}
573579

574580
for (auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
@@ -603,6 +609,18 @@ struct femtoUniversePairTaskTrackV0Extended {
603609
else
604610
mixedEventCont.setPair<false>(p1, p2, multCol, ConfUse3D, weight);
605611
}
612+
};
613+
614+
if (ConfUseCent) {
615+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningCent, 5, -1, cols, cols)) {
616+
mixedCollProcessFunc(collision1, collision2);
617+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningCent.getBin({collision1.posZ(), collision1.multV0M()}));
618+
}
619+
} else {
620+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningMult, 5, -1, cols, cols)) {
621+
mixedCollProcessFunc(collision1, collision2);
622+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningMult.getBin({collision1.posZ(), collision1.multNtr()}));
623+
}
606624
}
607625
}
608626

@@ -621,10 +639,10 @@ struct femtoUniversePairTaskTrackV0Extended {
621639
/// This function processes the mixed event for V0 - V0
622640
void processMixedEventV0(FilteredFDCollisions& cols, FemtoFullParticles& parts)
623641
{
624-
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfVtxBins, ConfMultBins}, true};
625-
626-
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
642+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinningMult{{ConfVtxBins, ConfMultBins}, true};
643+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultV0M> colBinningCent{{ConfVtxBins, ConfMultBins}, true};
627644

645+
auto mixedCollProcessFunc = [&](auto& collision1, auto& collision2) -> void {
628646
const int multCol = ConfUseCent ? collision1.multV0M() : collision1.multNtr();
629647

630648
auto groupPartsOne = partsTwo->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
@@ -634,16 +652,18 @@ struct femtoUniversePairTaskTrackV0Extended {
634652
const auto& magFieldTesla2 = collision2.magField();
635653

636654
if (magFieldTesla1 != magFieldTesla2) {
637-
continue;
655+
return;
638656
}
639657

640658
for (auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
641659
// Lambda invariant mass cut for p1
642-
if (!invMLambda(p1.mLambda(), p1.mAntiLambda()))
660+
if (!invMLambda(p1.mLambda(), p1.mAntiLambda())) {
643661
continue;
662+
}
644663
// Lambda invariant mass cut for p2
645-
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
664+
if (!invMLambda(p2.mLambda(), p2.mAntiLambda())) {
646665
continue;
666+
}
647667

648668
const auto& posChild1 = parts.iteratorAt(p1.globalIndex() - 2);
649669
const auto& negChild1 = parts.iteratorAt(p1.globalIndex() - 1);
@@ -668,17 +688,29 @@ struct femtoUniversePairTaskTrackV0Extended {
668688
}
669689
mixedEventCont.setPair<false>(p1, p2, multCol, ConfUse3D);
670690
}
691+
};
692+
693+
if (ConfUseCent) {
694+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningCent, 5, -1, cols, cols)) {
695+
mixedCollProcessFunc(collision1, collision2);
696+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningCent.getBin({collision1.posZ(), collision1.multV0M()}));
697+
}
698+
} else {
699+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningMult, 5, -1, cols, cols)) {
700+
mixedCollProcessFunc(collision1, collision2);
701+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningMult.getBin({collision1.posZ(), collision1.multNtr()}));
702+
}
671703
}
672704
}
673705
PROCESS_SWITCH(femtoUniversePairTaskTrackV0Extended, processMixedEventV0, "Enable processing mixed events for V0 - V0", false);
674706

675707
/// This function processes MC mixed events for Track - V0
676708
void processMCMixedEvent(FilteredFDCollisions& cols, FemtoFullParticles& parts)
677709
{
678-
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfVtxBins, ConfMultBins}, true};
679-
680-
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
710+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinningMult{{ConfVtxBins, ConfMultBins}, true};
711+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultV0M> colBinningCent{{ConfVtxBins, ConfMultBins}, true};
681712

713+
auto mixedCollProcessFunc = [&](auto& collision1, auto& collision2) -> void {
682714
const int multCol = ConfUseCent ? collision1.multV0M() : collision1.multNtr();
683715

684716
auto groupPartsOne = partsOneMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
@@ -688,7 +720,7 @@ struct femtoUniversePairTaskTrackV0Extended {
688720
const auto& magFieldTesla2 = collision2.magField();
689721

690722
if (magFieldTesla1 != magFieldTesla2) {
691-
continue;
723+
return;
692724
}
693725
for (auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
694726
if (static_cast<int>(p1.pidcut()) != ConfTrkPDGCodePartOne)
@@ -703,6 +735,18 @@ struct femtoUniversePairTaskTrackV0Extended {
703735
}
704736
mixedEventCont.setPair<false>(p1, p2, multCol, ConfUse3D);
705737
}
738+
};
739+
740+
if (ConfUseCent) {
741+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningCent, 5, -1, cols, cols)) {
742+
mixedCollProcessFunc(collision1, collision2);
743+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningCent.getBin({collision1.posZ(), collision1.multV0M()}));
744+
}
745+
} else {
746+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningMult, 5, -1, cols, cols)) {
747+
mixedCollProcessFunc(collision1, collision2);
748+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningMult.getBin({collision1.posZ(), collision1.multNtr()}));
749+
}
706750
}
707751
}
708752

@@ -711,10 +755,10 @@ struct femtoUniversePairTaskTrackV0Extended {
711755
/// This function processes MC mixed events for V0 - V0
712756
void processMCMixedEventV0(FilteredFDCollisions& cols, FemtoFullParticles& parts)
713757
{
714-
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{ConfVtxBins, ConfMultBins}, true};
715-
716-
for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
758+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinningMult{{ConfVtxBins, ConfMultBins}, true};
759+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultV0M> colBinningCent{{ConfVtxBins, ConfMultBins}, true};
717760

761+
auto mixedCollProcessFunc = [&](auto& collision1, auto& collision2) -> void {
718762
const int multCol = ConfUseCent ? collision1.multV0M() : collision1.multNtr();
719763

720764
auto groupPartsOne = partsTwoMC->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
@@ -729,6 +773,18 @@ struct femtoUniversePairTaskTrackV0Extended {
729773
continue;
730774
mixedEventCont.setPair<false>(p1, p2, multCol, ConfUse3D);
731775
}
776+
};
777+
778+
if (ConfUseCent) {
779+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningCent, 5, -1, cols, cols)) {
780+
mixedCollProcessFunc(collision1, collision2);
781+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningCent.getBin({collision1.posZ(), collision1.multV0M()}));
782+
}
783+
} else {
784+
for (auto& [collision1, collision2] : soa::selfCombinations(colBinningMult, 5, -1, cols, cols)) {
785+
mixedCollProcessFunc(collision1, collision2);
786+
MixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinningMult.getBin({collision1.posZ(), collision1.multNtr()}));
787+
}
732788
}
733789
}
734790

0 commit comments

Comments
 (0)