@@ -49,7 +49,8 @@ struct ThreeParticleCorrelations {
4949 float pionPtMin = 0.3 , pionPtMax = 2.3 , kaonPtMin = 0.5 , kaonPtMax = 2.5 , protonPtMin = 0.5 , protonPtMax = 2.5 ;
5050 float pionPtMid = 1.5 , kaonPtMid1 = 1.5 , kaonPtMid2 = 2.0 , protonPtMid = 0.7 ;
5151
52- float dEtaMin = 0.05 , dPhiStarMin = 0.11 ;
52+ float dEtaMax = 0.05 , dEtaMin = 0.022 ;
53+ float dPhiStarMinOS = 0.075 , dPhiStarMinSS = 0.12 ;
5354 float rMin = 0.8 , rMax = 2.5 ;
5455
5556 // Lambda invariant mass fit
@@ -91,7 +92,7 @@ struct ThreeParticleCorrelations {
9192 // Table aliases - MC Rec
9293 using MCRecCollisions = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels, aod::McCollisionLabels>;
9394 using MyFilteredMCRecCollisions = soa::Filtered<MCRecCollisions>;
94- using MyFilteredMCV0s = soa::Filtered<soa:: Join<aod::V0Datas, aod::McV0Labels> >;
95+ using MyMCV0s = soa::Join<aod::V0Datas, aod::McV0Labels>;
9596 using MyFilteredMCTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::McTrackLabels,
9697 aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr,
9798 aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr, aod::pidTOFbeta>>;
@@ -205,6 +206,10 @@ struct ThreeParticleCorrelations {
205206 rPhiStarRegistry.add (" hSEProtonPostCut_SS" , " hSEProtonPostCut_SS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
206207 rPhiStarRegistry.add (" hSEProtonPostCut_SSP" , " hSEProtonPostCut_SSP" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
207208 rPhiStarRegistry.add (" hSEProtonPostCut_SSN" , " hSEProtonPostCut_SSN" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
209+ rPhiStarRegistry.add (" hSEPhiStarMean_OS" , " hSEPhiStarMean_OS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
210+ rPhiStarRegistry.add (" hSEPhiStarMean_SS" , " hSEPhiStarMean_SS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
211+ rPhiStarRegistry.add (" hSEPhiStarMean_SSP" , " hSEPhiStarMean_SSP" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
212+ rPhiStarRegistry.add (" hSEPhiStarMean_SSN" , " hSEPhiStarMean_SSN" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
208213
209214 rPhiStarRegistry.add (" hMEProtonPreCut_OS" , " hMEProtonPreCut_OS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
210215 rPhiStarRegistry.add (" hMEProtonPreCut_SS" , " hMEProtonPreCut_SS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
@@ -214,6 +219,10 @@ struct ThreeParticleCorrelations {
214219 rPhiStarRegistry.add (" hMEProtonPostCut_SS" , " hMEProtonPostCut_SS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
215220 rPhiStarRegistry.add (" hMEProtonPostCut_SSP" , " hMEProtonPostCut_SSP" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
216221 rPhiStarRegistry.add (" hMEProtonPostCut_SSN" , " hMEProtonPostCut_SSN" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
222+ rPhiStarRegistry.add (" hMEPhiStarMean_OS" , " hMEPhiStarMean_OS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
223+ rPhiStarRegistry.add (" hMEPhiStarMean_SS" , " hMEPhiStarMean_SS" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
224+ rPhiStarRegistry.add (" hMEPhiStarMean_SSP" , " hMEPhiStarMean_SSP" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
225+ rPhiStarRegistry.add (" hMEPhiStarMean_SSN" , " hMEPhiStarMean_SSN" , {HistType::kTH2D , {{121 , -0.3025 , 0.3025 }, {101 , -0.0505 , 0.0505 }}});
217226
218227 // Efficiency
219228 rMCRegistry.add (" hGenerated" , " hGenerated" , {HistType::kTH3D , {{trackPtAxis}, {trackEtaAxis}, {centralityAxis}}});
@@ -658,7 +667,7 @@ struct ThreeParticleCorrelations {
658667 // End of the Monte-Carlo generated QA
659668 }
660669
661- void processMCRec (MyFilteredMCRecCollisions::iterator const & collision, MyFilteredMCV0s const & v0s, MyFilteredMCTracks const & tracks, aod::McCollisions const &, aod::McParticles const &)
670+ void processMCRec (MyFilteredMCRecCollisions::iterator const & collision, MyMCV0s const & v0s, MyFilteredMCTracks const & tracks, aod::McCollisions const &, aod::McParticles const &)
662671 {
663672
664673 if (!acceptEvent (collision, false ) || !collision.has_mcCollision ()) {
@@ -749,7 +758,7 @@ struct ThreeParticleCorrelations {
749758
750759 for (const auto & v0 : v0s) {
751760
752- if (!v0.has_mcParticle ()) {
761+ if (!v0.has_mcParticle () || v0. pt () < v0PtMin || v0. pt () > v0PtMax || std::abs (v0. eta ()) > v0EtaMax ) {
753762 continue ;
754763 }
755764 auto particle = v0.mcParticle ();
@@ -881,36 +890,38 @@ struct ThreeParticleCorrelations {
881890 template <class CollCand >
882891 bool acceptEvent (const CollCand& collision, bool FillHist) // Event filter
883892 {
893+
884894 if (FillHist) {
885895 rQARegistry.fill (HIST (" hNEvents" ), 0.5 );
886896 }
887897
888898 if (!collision.selection_bit (aod::evsel::kNoSameBunchPileup )) { // kNoSameBunchPileup
889- return false ;
899+ return kFALSE ;
890900 }
891901 if (FillHist) {
892902 rQARegistry.fill (HIST (" hNEvents" ), 1.5 );
893903 }
894904
895905 if (!collision.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV )) { // kIsGoodZvtxFT0vsPV
896- return false ;
906+ return kFALSE ;
897907 }
898908 if (FillHist) {
899909 rQARegistry.fill (HIST (" hNEvents" ), 2.5 );
900910 }
901911
902- return true ;
912+ return kTRUE ;
903913 }
904914
905915 template <class V0Cand >
906916 bool v0Filters (const V0Cand& v0, bool MCRec) // V0 filter
907917 {
908- if (!MCRec) { // Data
909- if (v0.pt () < v0PtMin || v0.pt () > v0PtMax)
910- return false ;
911- if (std::abs (v0.eta ()) > v0EtaMax)
912- return false ;
913918
919+ if (v0.pt () < v0PtMin || v0.pt () > v0PtMax)
920+ return kFALSE ;
921+ if (std::abs (v0.eta ()) > v0EtaMax)
922+ return kFALSE ;
923+
924+ if (!MCRec) { // Data
914925 if (v0Sign (v0) == 1 ) {
915926 const auto & posDaughter = v0.template posTrack_as <MyFilteredTracks>();
916927 if (std::abs (posDaughter.tpcNSigmaPr ()) > nSigma4) {
@@ -923,11 +934,6 @@ struct ThreeParticleCorrelations {
923934 }
924935 }
925936 } else { // MC Reconstructed
926- if (v0.pt () < v0PtMin || v0.pt () > v0PtMax)
927- return false ;
928- if (std::abs (v0.eta ()) > v0EtaMax)
929- return false ;
930-
931937 if (v0Sign (v0) == 1 ) {
932938 const auto & posDaughter = v0.template posTrack_as <MyFilteredMCTracks>();
933939 if (std::abs (posDaughter.tpcNSigmaPr ()) > nSigma4) {
@@ -1075,6 +1081,7 @@ struct ThreeParticleCorrelations {
10751081 bool radialDistanceFilter (const V0Cand& v0, const TrackCand& track, double B, bool Mix)
10761082 {
10771083
1084+ bool pass = true ;
10781085 if (confRDSwitch) {
10791086
10801087 auto proton = v0.template posTrack_as <MyFilteredTracks>();
@@ -1083,15 +1090,18 @@ struct ThreeParticleCorrelations {
10831090 }
10841091
10851092 double dEta = proton.eta () - track.eta ();
1086- if (std::abs (dEta) > dEtaMin ) {
1087- return kTRUE ;
1093+ if (std::abs (dEta) > dEtaMax ) {
1094+ return pass ;
10881095 }
10891096
10901097 double dPhiStar;
10911098 double dPhi = proton.phi () - track.phi ();
10921099 double phaseProton = (-0.3 * B * proton.sign ()) / (2 * proton.pt ());
10931100 double phaseTrack = (-0.3 * B * track.sign ()) / (2 * track.pt ());
10941101
1102+ double dPhiStarMean = 0 ;
1103+
1104+ // Start of the TPC radius loop
10951105 for (double r = rMin; r <= rMax; r += 0.01 ) {
10961106 dPhiStar = RecoDecay::constrainAngle (dPhi + std::asin (phaseProton * r) - std::asin (phaseTrack * r), -constants::math::PIHalf);
10971107
@@ -1122,11 +1132,19 @@ struct ThreeParticleCorrelations {
11221132 }
11231133 }
11241134
1125- if (std::abs (dPhiStar) < dPhiStarMin) {
1126- return kFALSE ;
1135+ if (std::abs (dEta) < dEtaMin) {
1136+ if (proton.sign () * track.sign () == -1 ) { // OS (Electric charge)
1137+ if (std::abs (dPhiStar) < dPhiStarMinOS) {
1138+ pass = false ;
1139+ }
1140+ } else if (proton.sign () * track.sign () == 1 ) { // SS (Electric charge)
1141+ if (std::abs (dPhiStar) < dPhiStarMinSS) {
1142+ pass = false ;
1143+ }
1144+ }
11271145 }
11281146
1129- if (r == rMin) {
1147+ if (r == rMin && pass ) {
11301148 if (!Mix) { // Same-event
11311149 if (proton.sign () * track.sign () == -1 ) { // OS (Electric charge)
11321150 rPhiStarRegistry.fill (HIST (" hSEProtonPostCut_OS" ), dPhiStar, dEta);
@@ -1152,10 +1170,38 @@ struct ThreeParticleCorrelations {
11521170 }
11531171 }
11541172 }
1173+
1174+ dPhiStarMean += (dPhiStar / 170 );
1175+ }
1176+ // End of the TPC radius loop
1177+
1178+ if (!Mix) { // Same-event
1179+ if (proton.sign () * track.sign () == -1 ) { // OS (Electric charge)
1180+ rPhiStarRegistry.fill (HIST (" hSEPhiStarMean_OS" ), dPhiStarMean, dEta);
1181+ } else if (proton.sign () * track.sign () == 1 ) { // SS (Electric charge)
1182+ rPhiStarRegistry.fill (HIST (" hSEPhiStarMean_SS" ), dPhiStarMean, dEta);
1183+ if (proton.sign () == 1 ) { // Positive
1184+ rPhiStarRegistry.fill (HIST (" hSEPhiStarMean_SSP" ), dPhiStarMean, dEta);
1185+ } else if (proton.sign () == -1 ) { // Negative
1186+ rPhiStarRegistry.fill (HIST (" hSEPhiStarMean_SSN" ), dPhiStarMean, dEta);
1187+ }
1188+ }
1189+
1190+ } else { // Mixed-event
1191+ if (proton.sign () * track.sign () == -1 ) { // OS (Electric charge)
1192+ rPhiStarRegistry.fill (HIST (" hMEPhiStarMean_OS" ), dPhiStarMean, dEta);
1193+ } else if (proton.sign () * track.sign () == 1 ) { // SS (Electric charge)
1194+ rPhiStarRegistry.fill (HIST (" hMEPhiStarMean_SS" ), dPhiStarMean, dEta);
1195+ if (proton.sign () == 1 ) { // Positive
1196+ rPhiStarRegistry.fill (HIST (" hMEPhiStarMean_SSP" ), dPhiStarMean, dEta);
1197+ } else if (proton.sign () == -1 ) { // Negative
1198+ rPhiStarRegistry.fill (HIST (" hMEPhiStarMean_SSN" ), dPhiStarMean, dEta);
1199+ }
1200+ }
11551201 }
11561202 }
11571203
1158- return kTRUE ;
1204+ return pass ;
11591205 }
11601206};
11611207
0 commit comments