@@ -48,12 +48,18 @@ struct ThreeParticleCorrelations {
4848 float trackPtMin = 0.2 , trackPtMax = 3.0 ;
4949 float trackEtaMax = 0.8 ;
5050
51- Configurable<float > zvtxMax{" zvtxMax" , 10.0 , " Maximum collision Z-vertex position (cm)" };
52-
5351 // Track PID parameters
5452 double pionID = 0.0 , kaonID = 1.0 , protonID = 2.0 ;
5553 float nSigma0 = 0.0 , nSigma1 = 1.0 , nSigma2 = 2.0 , nSigma4 = 4.0 , nSigma5 = 5.0 ;
5654
55+ // Event selection parameters
56+ struct : ConfigurableGroup {
57+ std::string prefix = " EventSelection" ;
58+ Configurable<float > zvtxMax{" zvtxMax" , 10.0 , " Maximum collision Z-vertex position (cm)" };
59+ Configurable<int > occupMin{" occupMin" , 0 , " Minimum collision occupancy" };
60+ Configurable<int > occupMax{" occupMax" , 15000 , " Maximum collision occupancy" };
61+ } evSelGroup;
62+
5763 // V0 filter parameters
5864 struct : ConfigurableGroup {
5965 std::string prefix = " V0Selection" ;
@@ -77,7 +83,7 @@ struct ThreeParticleCorrelations {
7783
7884 // Lambda invariant mass fit
7985 Configurable<float > invMassNSigma{" invMassNSigma" , 4.0 , " Number of standard deviations from the mean of the Lambda invariant mass peak" };
80- double dGaussSigma = 0.0019 ;
86+ double dGaussSigma = 0.002 ;
8187
8288 // Histogram registry
8389 HistogramRegistry rMECorrRegistry{" MECorrRegistry" , {}, OutputObjHandlingPolicy::AnalysisObject, false , true };
@@ -88,8 +94,8 @@ struct ThreeParticleCorrelations {
8894
8995 // Collision & Event filters
9096 Filter collCent = aod::cent::centFT0C > centMin&& aod::cent::centFT0C < centMax;
91- Filter collZvtx = nabs(aod::collision::posZ) < zvtxMax;
92- Filter mcCollZvtx = nabs(aod::mccollision::posZ) < zvtxMax;
97+ Filter collZvtx = nabs(aod::collision::posZ) < evSelGroup. zvtxMax;
98+ Filter mcCollZvtx = nabs(aod::mccollision::posZ) < evSelGroup. zvtxMax;
9399 Filter evSelect = aod::evsel::sel8 == true ;
94100
95101 // Track filters
@@ -184,6 +190,7 @@ struct ThreeParticleCorrelations {
184190 const AxisSpec centralityAxis{confCentBins};
185191 const AxisSpec fineCentralityAxis{fineCentBins};
186192 const AxisSpec zvtxAxis{confZvtxBins};
193+ const AxisSpec occupancyAxis{200 , 0 , 20000 };
187194 const AxisSpec dPhiAxis{36 , (-1 . / 2 ) * constants::math::PI, (3 . / 2 ) * constants::math::PI};
188195 const AxisSpec dEtaAxis{32 , -1.52 , 1.52 };
189196 const AxisSpec v0PtAxis{114 , 0.6 , 12 };
@@ -193,14 +200,17 @@ struct ThreeParticleCorrelations {
193200 const AxisSpec lambdaInvMassAxis{100 , 1.08 , 1.16 };
194201
195202 // QA & PID
196- rQARegistry.add (" hNEvents" , " hNEvents" , {HistType::kTH1D , {{3 , 0 , 3 }}});
203+ rQARegistry.add (" hNEvents" , " hNEvents" , {HistType::kTH1D , {{5 , 0 , 5 }}});
197204 rQARegistry.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (1 , " All" );
198205 rQARegistry.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (2 , " kIsGoodZvtxFT0vsPV" );
199206 rQARegistry.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (3 , " kNoSameBunchPileup" );
207+ rQARegistry.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (4 , " Occupancy window" );
208+ rQARegistry.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (5 , " kNoCollInTimeRangeStandard" );
200209
201210 rQARegistry.add (" hEventCentrality" , " hEventCentrality" , {HistType::kTH1D , {{fineCentralityAxis}}});
202211 rQARegistry.add (" hEventCentrality_MC" , " hEventCentrality_MC" , {HistType::kTH1D , {{fineCentralityAxis}}});
203212 rQARegistry.add (" hEventZvtx" , " hEventZvtx" , {HistType::kTH1D , {{zvtxAxis}}});
213+ rQARegistry.add (" hEventOccupancy" , " hEventOccupancy" , {HistType::kTH1D , {{occupancyAxis}}});
204214 rQARegistry.add (" hEventBfield" , " hEventBfield" , {HistType::kTH1D , {{2 , -1 , 1 }}});
205215 rQARegistry.add (" hTrackPt" , " hTrackPt" , {HistType::kTH1D , {{100 , 0 , 4 }}});
206216 rQARegistry.add (" hTrackEta" , " hTrackEta" , {HistType::kTH1D , {{100 , -1 , 1 }}});
@@ -215,6 +225,9 @@ struct ThreeParticleCorrelations {
215225 rQARegistry.add (" hPtKaon_Corrected" , " hPtKaon_Corrected" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
216226 rQARegistry.add (" hPtProton_Corrected" , " hPtProton_Corrected" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
217227 rQARegistry.add (" hPtV0_Corrected" , " hPtV0_Corrected" , {HistType::kTH3D , {{v0PtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
228+ rQARegistry.add (" hPtPion_Looped" , " hPtPion_Looped" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
229+ rQARegistry.add (" hPtKaon_Looped" , " hPtKaon_Looped" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
230+ rQARegistry.add (" hPtProton_Looped" , " hPtProton_Looped" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
218231 rQARegistry.add (" hPtPion_MC" , " hPtPion_MC" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
219232 rQARegistry.add (" hPtKaon_MC" , " hPtKaon_MC" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
220233 rQARegistry.add (" hPtProton_MC" , " hPtProton_MC" , {HistType::kTH3D , {{trackPtAxis}, {fineCentralityAxis}, {2 , -2 , 2 }}});
@@ -364,6 +377,7 @@ struct ThreeParticleCorrelations {
364377 void processSame (MyFilteredCollision const & collision, aod::V0Datas const & v0s, MyFilteredTracks const & tracks, aod::BCsWithTimestamps const &)
365378 {
366379
380+ rQARegistry.fill (HIST (" hEventOccupancy" ), collision.trackOccupancyInTimeRange ());
367381 if (!acceptEvent (collision, true )) {
368382 return ;
369383 }
@@ -444,6 +458,14 @@ struct ThreeParticleCorrelations {
444458 deltaPhi = RecoDecay::constrainAngle (trigger.phi () - associate.phi (), -constants::math::PIHalf);
445459 deltaEta = trigger.eta () - associate.eta ();
446460
461+ if (assocPID[0 ] == pionID) { // Pions
462+ rQARegistry.fill (HIST (" hPtPion_Looped" ), associate.pt (), collision.centFT0C (), associate.sign (), ratioCorrection (hCorrectionPions, associate, collision.centFT0C ()) / trackEff (hEffPions, associate, collision.centFT0C ()));
463+ } else if (assocPID[0 ] == kaonID) { // Kaons
464+ rQARegistry.fill (HIST (" hPtKaon_Looped" ), associate.pt (), collision.centFT0C (), associate.sign (), ratioCorrection (hCorrectionKaons, associate, collision.centFT0C ()) / trackEff (hEffKaons, associate, collision.centFT0C ()));
465+ } else if (assocPID[0 ] == protonID) { // Protons
466+ rQARegistry.fill (HIST (" hPtProton_Looped" ), associate.pt (), collision.centFT0C (), associate.sign (), ratioCorrection (hCorrectionProtons, associate, collision.centFT0C ()) / trackEff (hEffProtons, associate, collision.centFT0C ()));
467+ }
468+
447469 if (candMass >= MassLambda0 - invMassNSigma * dGaussSigma && candMass <= MassLambda0 + invMassNSigma * dGaussSigma) {
448470 if (assocPID[0 ] == pionID) { // Pions
449471 rSECorrRegistry.fill (HIST (" hSameLambdaPion_SGNL" ), deltaPhi, deltaEta, collision.centFT0C (), collision.posZ (), triggSign, associate.sign (), ratioCorrection (hCorrectionPions, associate, collision.centFT0C ()) / (trackEff (hEffPions, associate, collision.centFT0C ()) * v0Efficiency));
@@ -1002,6 +1024,21 @@ struct ThreeParticleCorrelations {
10021024 rQARegistry.fill (HIST (" hNEvents" ), 2.5 );
10031025 }
10041026
1027+ int occupEstim = col.trackOccupancyInTimeRange ();
1028+ if (occupEstim <= evSelGroup.occupMin || occupEstim >= evSelGroup.occupMax ) { // Occupancy window
1029+ return false ;
1030+ }
1031+ if (FillHist) {
1032+ rQARegistry.fill (HIST (" hNEvents" ), 3.5 );
1033+ }
1034+
1035+ if (!col.selection_bit (aod::evsel::kNoCollInTimeRangeStandard )) { // kNoCollInTimeRangeStandard
1036+ return false ;
1037+ }
1038+ if (FillHist) {
1039+ rQARegistry.fill (HIST (" hNEvents" ), 4.5 );
1040+ }
1041+
10051042 return true ;
10061043 }
10071044
0 commit comments