Skip to content

Commit 3aeea1a

Browse files
authored
[PWGLF] Add new mix event process function to check biases in phi meson flow … (#11317)
1 parent e1c88d5 commit 3aeea1a

File tree

1 file changed

+112
-5
lines changed

1 file changed

+112
-5
lines changed

PWGLF/Tasks/Resonances/phipbpb.cxx

Lines changed: 112 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ struct phipbpb {
216216

217217
histos.add("hSparseV2SameEventCosDeltaPhi", "hSparseV2SameEventCosDeltaPhi", HistType::kTHnSparseD, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
218218
histos.add("hSparseV2MixedEventCosDeltaPhi", "hSparseV2MixedEventCosDeltaPhi", HistType::kTHnSparseD, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
219+
histos.add("hSparseV2MixEPAngleCosDeltaPhi", "hSparseV2MixEPAngleCosDeltaPhi", HistType::kTHnSparseD, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
219220

220221
histos.add("hSparseV2SameEventCos2DeltaPhi", "hSparseV2SameEventCos2DeltaPhi", HistType::kTHnSparseD, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
221222
histos.add("hSparseV2MixedEventCos2DeltaPhi", "hSparseV2MixedEventCos2DeltaPhi", HistType::kTHnSparseD, {thnAxisInvMass, thnAxisPt, thnAxisV2, thnAxisCentrality});
@@ -461,7 +462,8 @@ struct phipbpb {
461462
ConfigurableAxis axisEPAngle{"axisEPAngle", {6, -TMath::Pi() / 2, TMath::Pi() / 2}, "event plane angle"};
462463
ConfigurableAxis axisOccup{"axisOccup", {20, -0.5, 40000.0}, "occupancy axis"};
463464

464-
using BinningTypeVertexContributor = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C, o2::aod::evsel::NumTracksInTimeRange>;
465+
// using BinningTypeVertexContributor = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C, o2::aod::evsel::NumTracksInTimeRange>;
466+
using BinningTypeVertexContributor = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C, o2::aod::epcalibrationtable::PsiFT0C>;
465467
ROOT::Math::PxPyPzMVector PhiMesonMother, KaonPlus, KaonMinus, fourVecDauCM;
466468
ROOT::Math::XYZVector threeVecDauCM, threeVecDauCMXY, eventplaneVec, eventplaneVecNorm, beamvector;
467469
int currentRunNumber = -999;
@@ -711,10 +713,115 @@ struct phipbpb {
711713
}
712714
}
713715
PROCESS_SWITCH(phipbpb, processSameEvent, "Process Same event", true);
716+
717+
BinningTypeVertexContributor binningOnEPAngle{{axisVertex, axisMultiplicityClass, axisEPAngle}, true};
718+
Preslice<aod::Tracks> tracksPerCollision = aod::track::collisionId;
719+
void processMEAcc(EventCandidates const& collisions, TrackCandidates const& tracks)
720+
{
721+
for (auto& [collision1, collision2] : selfCombinations(binningOnEPAngle, cfgNoMixedEvents, -1, collisions, collisions)) {
722+
723+
if (!collision1.sel8() || !collision1.triggereventep() || !collision1.selection_bit(aod::evsel::kNoSameBunchPileup)) {
724+
continue;
725+
}
726+
if (!collision2.sel8() || !collision2.triggereventep() || !collision2.selection_bit(aod::evsel::kNoSameBunchPileup)) {
727+
continue;
728+
}
729+
int occupancy1 = collision1.trackOccupancyInTimeRange();
730+
int occupancy2 = collision2.trackOccupancyInTimeRange();
731+
if (occupancy1 > cfgCutOccupancy) {
732+
continue;
733+
}
734+
if (occupancy2 > cfgCutOccupancy) {
735+
continue;
736+
}
737+
if (additionalEvsel && !collision1.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
738+
continue;
739+
}
740+
if (additionalEvsel && !collision2.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
741+
continue;
742+
}
743+
if (additionalEvselITS && !collision1.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
744+
continue;
745+
}
746+
if (additionalEvselITS && !collision2.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
747+
continue;
748+
}
749+
auto centrality = collision1.centFT0C();
750+
auto psiFT0C = collision1.psiFT0C();
751+
auto QFT0C = collision1.qFT0C();
752+
o2::aod::ITSResponse itsResponse;
753+
auto grouptrack1 = tracks.sliceBy(tracksPerCollision, collision2.globalIndex());
754+
auto grouptrack2 = tracks.sliceBy(tracksPerCollision, collision2.globalIndex());
755+
for (auto& [t1, t2] : soa::combinations(o2::soa::CombinationsFullIndexPolicy(grouptrack1, grouptrack2))) {
756+
if (t2.index() <= t1.index()) {
757+
continue;
758+
}
759+
if (t1.sign() * t2.sign() > 0) {
760+
continue;
761+
}
762+
if (!selectionTrack(t1)) {
763+
continue;
764+
}
765+
if (ispTdepPID && !isTOFOnly && !selectionPIDpTdependent(t1)) {
766+
continue;
767+
}
768+
if (!ispTdepPID && !isTOFOnly && !selectionPID(t1)) {
769+
continue;
770+
}
771+
if (isTOFOnly && !selectionPID2(t1)) {
772+
continue;
773+
}
774+
if (useGlobalTrack && t1.p() < 1.0 && !(itsResponse.nSigmaITS<o2::track::PID::Kaon>(t1) > -2.5 && itsResponse.nSigmaITS<o2::track::PID::Kaon>(t1) < 2.5)) {
775+
continue;
776+
}
777+
778+
if (!selectionTrack(t2)) {
779+
continue;
780+
}
781+
if (ispTdepPID && !isTOFOnly && !selectionPIDpTdependent(t2)) {
782+
continue;
783+
}
784+
if (!ispTdepPID && !isTOFOnly && !selectionPID(t2)) {
785+
continue;
786+
}
787+
if (isTOFOnly && !selectionPID2(t2)) {
788+
continue;
789+
}
790+
if (useGlobalTrack && t2.p() < 1.0 && !(itsResponse.nSigmaITS<o2::track::PID::Kaon>(t2) > -2.5 && itsResponse.nSigmaITS<o2::track::PID::Kaon>(t2) < 2.5)) {
791+
continue;
792+
}
793+
794+
if (!selectionPair(t1, t2)) {
795+
continue;
796+
}
797+
if (removefaketrak && isFakeKaon(t1)) {
798+
continue;
799+
}
800+
if (removefaketrak && isFakeKaon(t2)) {
801+
continue;
802+
}
803+
804+
KaonPlus = ROOT::Math::PxPyPzMVector(t1.px(), t1.py(), t1.pz(), massKa);
805+
KaonMinus = ROOT::Math::PxPyPzMVector(t2.px(), t2.py(), t2.pz(), massKa);
806+
PhiMesonMother = KaonPlus + KaonMinus;
807+
auto phiminuspsi = GetPhiInRange(PhiMesonMother.Phi() - psiFT0C);
808+
auto v2 = TMath::Cos(2.0 * phiminuspsi);
809+
if (TMath::Abs(PhiMesonMother.Rapidity()) > confRapidity) {
810+
continue;
811+
}
812+
if (useSP) {
813+
histos.fill(HIST("hSparseV2MixEPAngleCosDeltaPhi"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2 * QFT0C, centrality);
814+
} else {
815+
histos.fill(HIST("hSparseV2MixEPAngleCosDeltaPhi"), PhiMesonMother.M(), PhiMesonMother.Pt(), v2, centrality);
816+
}
817+
}
818+
}
819+
}
820+
PROCESS_SWITCH(phipbpb, processMEAcc, "Process ME Acceptance", true);
714821
void processMixedEventOpti(EventCandidates const& collisions, TrackCandidates const& tracks)
715822
{
716823
auto tracksTuple = std::make_tuple(tracks);
717-
BinningTypeVertexContributor binningOnPositions{{axisVertex, axisMultiplicityClass, axisOccup}, true};
824+
BinningTypeVertexContributor binningOnPositions{{axisVertex, axisMultiplicityClass, axisEPAngle}, true};
718825
SameKindPair<EventCandidates, TrackCandidates, BinningTypeVertexContributor> pair{binningOnPositions, cfgNoMixedEvents, -1, collisions, tracksTuple, &cache};
719826
for (auto& [collision1, tracks1, collision2, tracks2] : pair) {
720827
// if (!collision1.sel8() || !collision1.triggereventep() || !collision1.selection_bit(aod::evsel::kNoTimeFrameBorder) || !collision1.selection_bit(aod::evsel::kNoITSROFrameBorder) || !collision1.selection_bit(aod::evsel::kNoSameBunchPileup) || !collision1.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV) || !collision1.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
@@ -729,9 +836,9 @@ struct phipbpb {
729836
if (!collision2.sel8() || !collision2.triggereventep() || !collision2.selection_bit(aod::evsel::kNoSameBunchPileup)) {
730837
continue;
731838
}
732-
if (collision1.bcId() == collision2.bcId()) {
733-
continue;
734-
}
839+
// if (collision1.bcId() == collision2.bcId()) {
840+
// continue;
841+
// }
735842
o2::aod::ITSResponse itsResponse;
736843
int occupancy1 = collision1.trackOccupancyInTimeRange();
737844
int occupancy2 = collision2.trackOccupancyInTimeRange();

0 commit comments

Comments
 (0)