@@ -82,7 +82,45 @@ struct MeanptFluctuations_QA_QnTable {
8282 Configurable<bool > cfgEvSelkNoTimeFrameBorder{" cfgEvSelkNoTimeFrameBorder" , true , " TimeFrame border event selection cut" };
8383 Configurable<int > cfgCentralityEstimator{" cfgCentralityEstimator" , 1 , " Centrlaity estimatore choice: 1-->FT0C, 2-->FT0A; 3-->FT0M, 4-->FV0A" };
8484
85+ O2_DEFINE_CONFIGURABLE (cfgEvSelMultCorrelation, bool , true , " Multiplicity correlation cut" )
86+ O2_DEFINE_CONFIGURABLE (cfgEvSelV0AT0ACut, bool , true , " V0A T0A 5 sigma cut" )
87+ struct : ConfigurableGroup {
88+ O2_DEFINE_CONFIGURABLE (cfgMultCentHighCutFunction, std::string, " [0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x + 10.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)" , " Functional for multiplicity correlation cut" );
89+ O2_DEFINE_CONFIGURABLE (cfgMultCentLowCutFunction, std::string, " [0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x - 3.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)" , " Functional for multiplicity correlation cut" );
90+ O2_DEFINE_CONFIGURABLE (cfgMultT0CCutEnabled, bool , false , " Enable Global multiplicity vs T0C centrality cut" )
91+ Configurable<std::vector<double >> cfgMultT0CCutPars{" cfgMultT0CCutPars" , std::vector<double >{143.04 , -4.58368 , 0.0766055 , -0.000727796 , 2.86153e-06 , 23.3108 , -0.36304 , 0.00437706 , -4.717e-05 , 1.98332e-07 }, " Global multiplicity vs T0C centrality cut parameter values" };
92+ O2_DEFINE_CONFIGURABLE (cfgMultPVT0CCutEnabled, bool , false , " Enable PV multiplicity vs T0C centrality cut" )
93+ Configurable<std::vector<double >> cfgMultPVT0CCutPars{" cfgMultPVT0CCutPars" , std::vector<double >{195.357 , -6.15194 , 0.101313 , -0.000955828 , 3.74793e-06 , 30.0326 , -0.43322 , 0.00476265 , -5.11206e-05 , 2.13613e-07 }, " PV multiplicity vs T0C centrality cut parameter values" };
94+
95+ O2_DEFINE_CONFIGURABLE (cfgMultMultPVHighCutFunction, std::string, " [0]+[1]*x + 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
96+ O2_DEFINE_CONFIGURABLE (cfgMultMultPVLowCutFunction, std::string, " [0]+[1]*x - 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
97+ O2_DEFINE_CONFIGURABLE (cfgMultGlobalPVCutEnabled, bool , false , " Enable global multiplicity vs PV multiplicity cut" )
98+ Configurable<std::vector<double >> cfgMultGlobalPVCutPars{" cfgMultGlobalPVCutPars" , std::vector<double >{-0.140809 , 0.734344 , 2.77495 , 0.0165935 }, " PV multiplicity vs T0C centrality cut parameter values" };
99+
100+ O2_DEFINE_CONFIGURABLE (cfgMultMultV0AHighCutFunction, std::string, " [0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x + 4.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)" , " Functional for multiplicity correlation cut" );
101+ O2_DEFINE_CONFIGURABLE (cfgMultMultV0ALowCutFunction, std::string, " [0] + [1]*x + [2]*x*x + [3]*x*x*x + [4]*x*x*x*x - 3.*([5] + [6]*x + [7]*x*x + [8]*x*x*x + [9]*x*x*x*x)" , " Functional for multiplicity correlation cut" );
102+ O2_DEFINE_CONFIGURABLE (cfgMultMultV0ACutEnabled, bool , false , " Enable global multiplicity vs V0A multiplicity cut" )
103+ Configurable<std::vector<double >> cfgMultMultV0ACutPars{" cfgMultMultV0ACutPars" , std::vector<double >{534.893 , 184.344 , 0.423539 , -0.00331436 , 5.34622e-06 , 871.239 , 53.3735 , -0.203528 , 0.000122758 , 5.41027e-07 }, " Global multiplicity vs V0A multiplicity cut parameter values" };
104+
105+ std::vector<double > multT0CCutPars;
106+ std::vector<double > multPVT0CCutPars;
107+ std::vector<double > multGlobalPVCutPars;
108+ std::vector<double > multMultV0ACutPars;
109+ TF1* fMultPVT0CCutLow = nullptr ;
110+ TF1* fMultPVT0CCutHigh = nullptr ;
111+ TF1* fMultT0CCutLow = nullptr ;
112+ TF1* fMultT0CCutHigh = nullptr ;
113+ TF1* fMultGlobalPVCutLow = nullptr ;
114+ TF1* fMultGlobalPVCutHigh = nullptr ;
115+ TF1* fMultMultV0ACutLow = nullptr ;
116+ TF1* fMultMultV0ACutHigh = nullptr ;
117+ TF1* fT0AV0AMean = nullptr ;
118+ TF1* fT0AV0ASigma = nullptr ;
119+
120+ } cfgFuncParas;
121+
85122 O2_DEFINE_CONFIGURABLE (cfgUse22sEventCut, bool , true , " Use 22s event cut on mult correlations" )
123+ O2_DEFINE_CONFIGURABLE (cfgUseSmallIonAdditionalEventCut, bool , true , " Use additional event cut on mult correlations for small ions" )
86124
87125 // Filter command***********
88126 Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
@@ -147,6 +185,33 @@ struct MeanptFluctuations_QA_QnTable {
147185 fMultMultPVCut ->SetParameters (-0.1 , 0.785 , -4.7e-05 );
148186 }
149187
188+ if (cfgEvSelMultCorrelation) {
189+ cfgFuncParas.multT0CCutPars = cfgFuncParas.cfgMultT0CCutPars ;
190+ cfgFuncParas.multPVT0CCutPars = cfgFuncParas.cfgMultPVT0CCutPars ;
191+ cfgFuncParas.multGlobalPVCutPars = cfgFuncParas.cfgMultGlobalPVCutPars ;
192+ cfgFuncParas.multMultV0ACutPars = cfgFuncParas.cfgMultMultV0ACutPars ;
193+ cfgFuncParas.fMultPVT0CCutLow = new TF1 (" fMultPVT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
194+ cfgFuncParas.fMultPVT0CCutLow ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
195+ cfgFuncParas.fMultPVT0CCutHigh = new TF1 (" fMultPVT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
196+ cfgFuncParas.fMultPVT0CCutHigh ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
197+ cfgFuncParas.fMultT0CCutLow = new TF1 (" fMultT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
198+ cfgFuncParas.fMultT0CCutLow ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
199+ cfgFuncParas.fMultT0CCutHigh = new TF1 (" fMultT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
200+ cfgFuncParas.fMultT0CCutHigh ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
201+ cfgFuncParas.fMultGlobalPVCutLow = new TF1 (" fMultGlobalPVCutLow" , cfgFuncParas.cfgMultMultPVLowCutFunction ->c_str (), 0 , 4000 );
202+ cfgFuncParas.fMultGlobalPVCutLow ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
203+ cfgFuncParas.fMultGlobalPVCutHigh = new TF1 (" fMultGlobalPVCutHigh" , cfgFuncParas.cfgMultMultPVHighCutFunction ->c_str (), 0 , 4000 );
204+ cfgFuncParas.fMultGlobalPVCutHigh ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
205+ cfgFuncParas.fMultMultV0ACutLow = new TF1 (" fMultMultV0ACutLow" , cfgFuncParas.cfgMultMultV0ALowCutFunction ->c_str (), 0 , 4000 );
206+ cfgFuncParas.fMultMultV0ACutLow ->SetParameters (&(cfgFuncParas.multMultV0ACutPars [0 ]));
207+ cfgFuncParas.fMultMultV0ACutHigh = new TF1 (" fMultMultV0ACutHigh" , cfgFuncParas.cfgMultMultV0AHighCutFunction ->c_str (), 0 , 4000 );
208+ cfgFuncParas.fMultMultV0ACutHigh ->SetParameters (&(cfgFuncParas.multMultV0ACutPars [0 ]));
209+ cfgFuncParas.fT0AV0AMean = new TF1 (" fT0AV0AMean" , " [0]+[1]*x" , 0 , 200000 );
210+ cfgFuncParas.fT0AV0AMean ->SetParameters (-1601.0581 , 9.417652e-01 );
211+ cfgFuncParas.fT0AV0ASigma = new TF1 (" fT0AV0ASigma" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x" , 0 , 200000 );
212+ cfgFuncParas.fT0AV0ASigma ->SetParameters (463.4144 , 6.796509e-02 , -9.097136e-07 , 7.971088e-12 , -2.600581e-17 );
213+ }
214+
150215 } // ! end init function
151216
152217 template <typename TCollision>
@@ -181,6 +246,48 @@ struct MeanptFluctuations_QA_QnTable {
181246 return 1 ;
182247 }
183248
249+ template <typename TCollision>
250+ bool eventSelected_smallion (TCollision collision, const int multTrk, const float centrality)
251+ {
252+ auto multNTracksPV = collision.multNTracksPV ();
253+
254+ if (cfgEvSelMultCorrelation) {
255+ if (cfgFuncParas.cfgMultPVT0CCutEnabled ) {
256+ if (multNTracksPV < cfgFuncParas.fMultPVT0CCutLow ->Eval (centrality))
257+ return 0 ;
258+ if (multNTracksPV > cfgFuncParas.fMultPVT0CCutHigh ->Eval (centrality))
259+ return 0 ;
260+ }
261+
262+ if (cfgFuncParas.cfgMultT0CCutEnabled ) {
263+ if (multTrk < cfgFuncParas.fMultT0CCutLow ->Eval (centrality))
264+ return 0 ;
265+ if (multTrk > cfgFuncParas.fMultT0CCutHigh ->Eval (centrality))
266+ return 0 ;
267+ }
268+
269+ if (cfgFuncParas.cfgMultGlobalPVCutEnabled ) {
270+ if (multTrk < cfgFuncParas.fMultGlobalPVCutLow ->Eval (multNTracksPV))
271+ return 0 ;
272+ if (multTrk > cfgFuncParas.fMultGlobalPVCutHigh ->Eval (multNTracksPV))
273+ return 0 ;
274+ }
275+
276+ if (cfgFuncParas.cfgMultMultV0ACutEnabled ) {
277+ if (collision.multFV0A () < cfgFuncParas.fMultMultV0ACutLow ->Eval (multTrk))
278+ return 0 ;
279+ if (collision.multFV0A () > cfgFuncParas.fMultMultV0ACutHigh ->Eval (multTrk))
280+ return 0 ;
281+ }
282+ }
283+
284+ float sigma = 5.0 ;
285+ if (cfgEvSelV0AT0ACut && (std::fabs (collision.multFV0A () - cfgFuncParas.fT0AV0AMean ->Eval (collision.multFT0A ())) > sigma * cfgFuncParas.fT0AV0ASigma ->Eval (collision.multFT0A ())))
286+ return 0 ;
287+
288+ return 1 ;
289+ }
290+
184291 Produces<aod::MultPtQn> mult_ptQn;
185292
186293 // void process(aod::Collision const& coll, aod::Tracks const& inputTracks)
@@ -205,6 +312,8 @@ struct MeanptFluctuations_QA_QnTable {
205312 const auto CentralityFT0C = coll.centFT0C ();
206313 if (cfgUse22sEventCut && !eventSelected (coll, inputTracks.size (), CentralityFT0C))
207314 return ;
315+ if (cfgUseSmallIonAdditionalEventCut && !eventSelected_smallion (coll, inputTracks.size (), CentralityFT0C))
316+ return ;
208317
209318 histos.fill (HIST (" hZvtx_after_sel" ), coll.posZ ());
210319
0 commit comments