@@ -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