@@ -108,13 +108,28 @@ struct DiHadronCor {
108108 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" };
109109 O2_DEFINE_CONFIGURABLE (cfgMultPVT0CCutEnabled, bool , false , " Enable PV multiplicity vs T0C centrality cut" )
110110 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" };
111- O2_DEFINE_CONFIGURABLE (cfgMultMultHighCutFunction , std::string, " [0]+[1]*x + 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
112- O2_DEFINE_CONFIGURABLE (cfgMultMultLowCutFunction , std::string, " [0]+[1]*x - 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
111+ O2_DEFINE_CONFIGURABLE (cfgMultMultPVHighCutFunction , std::string, " [0]+[1]*x + 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
112+ O2_DEFINE_CONFIGURABLE (cfgMultMultPVLowCutFunction , std::string, " [0]+[1]*x - 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
113113 O2_DEFINE_CONFIGURABLE (cfgMultGlobalPVCutEnabled, bool , false , " Enable global multiplicity vs PV multiplicity cut" )
114114 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" };
115+ 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" );
116+ 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" );
117+ O2_DEFINE_CONFIGURABLE (cfgMultMultV0ACutEnabled, bool , false , " Enable global multiplicity vs V0A multiplicity cut" )
118+ 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" };
115119 std::vector<double > multT0CCutPars;
116120 std::vector<double > multPVT0CCutPars;
117121 std::vector<double > multGlobalPVCutPars;
122+ std::vector<double > multMultV0ACutPars;
123+ TF1* fMultPVT0CCutLow = nullptr ;
124+ TF1* fMultPVT0CCutHigh = nullptr ;
125+ TF1* fMultT0CCutLow = nullptr ;
126+ TF1* fMultT0CCutHigh = nullptr ;
127+ TF1* fMultGlobalPVCutLow = nullptr ;
128+ TF1* fMultGlobalPVCutHigh = nullptr ;
129+ TF1* fMultMultV0ACutLow = nullptr ;
130+ TF1* fMultMultV0ACutHigh = nullptr ;
131+ TF1* fT0AV0AMean = nullptr ;
132+ TF1* fT0AV0ASigma = nullptr ;
118133 } cfgFuncParas;
119134
120135 SliceCache cache;
@@ -183,16 +198,6 @@ struct DiHadronCor {
183198 // persistent caches
184199 std::vector<float > efficiencyAssociatedCache;
185200
186- // Additional Event selection cuts - Copy from flowGenericFramework.cxx
187- TF1* fMultPVT0CCutLow = nullptr ;
188- TF1* fMultPVT0CCutHigh = nullptr ;
189- TF1* fMultT0CCutLow = nullptr ;
190- TF1* fMultT0CCutHigh = nullptr ;
191- TF1* fMultGlobalPVCutLow = nullptr ;
192- TF1* fMultGlobalPVCutHigh = nullptr ;
193- TF1* fT0AV0AMean = nullptr ;
194- TF1* fT0AV0ASigma = nullptr ;
195-
196201 void init (InitContext&)
197202 {
198203 if (cfgCentTableUnavailable && !cfgSelCollByNch) {
@@ -229,25 +234,31 @@ struct DiHadronCor {
229234 cfgFuncParas.multT0CCutPars = cfgFuncParas.cfgMultT0CCutPars ;
230235 cfgFuncParas.multPVT0CCutPars = cfgFuncParas.cfgMultPVT0CCutPars ;
231236 cfgFuncParas.multGlobalPVCutPars = cfgFuncParas.cfgMultGlobalPVCutPars ;
232- fMultPVT0CCutLow = new TF1 (" fMultPVT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
233- fMultPVT0CCutLow ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
234- fMultPVT0CCutHigh = new TF1 (" fMultPVT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
235- fMultPVT0CCutHigh ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
236-
237- fMultT0CCutLow = new TF1 (" fMultT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
238- fMultT0CCutLow ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
239- fMultT0CCutHigh = new TF1 (" fMultT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
240- fMultT0CCutHigh ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
241-
242- fMultGlobalPVCutLow = new TF1 (" fMultGlobalPVCutLow" , cfgFuncParas.cfgMultMultLowCutFunction ->c_str (), 0 , 4000 );
243- fMultGlobalPVCutLow ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
244- fMultGlobalPVCutHigh = new TF1 (" fMultGlobalPVCutHigh" , cfgFuncParas.cfgMultMultHighCutFunction ->c_str (), 0 , 4000 );
245- fMultGlobalPVCutHigh ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
246-
247- fT0AV0AMean = new TF1 (" fT0AV0AMean" , " [0]+[1]*x" , 0 , 200000 );
248- fT0AV0AMean ->SetParameters (-1601.0581 , 9.417652e-01 );
249- fT0AV0ASigma = new TF1 (" fT0AV0ASigma" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x" , 0 , 200000 );
250- fT0AV0ASigma ->SetParameters (463.4144 , 6.796509e-02 , -9.097136e-07 , 7.971088e-12 , -2.600581e-17 );
237+ cfgFuncParas.multMultV0ACutPars = cfgFuncParas.cfgMultMultV0ACutPars ;
238+ cfgFuncParas.fMultPVT0CCutLow = new TF1 (" fMultPVT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
239+ cfgFuncParas.fMultPVT0CCutLow ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
240+ cfgFuncParas.fMultPVT0CCutHigh = new TF1 (" fMultPVT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
241+ cfgFuncParas.fMultPVT0CCutHigh ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
242+
243+ cfgFuncParas.fMultT0CCutLow = new TF1 (" fMultT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
244+ cfgFuncParas.fMultT0CCutLow ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
245+ cfgFuncParas.fMultT0CCutHigh = new TF1 (" fMultT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
246+ cfgFuncParas.fMultT0CCutHigh ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
247+
248+ cfgFuncParas.fMultGlobalPVCutLow = new TF1 (" fMultGlobalPVCutLow" , cfgFuncParas.cfgMultMultPVLowCutFunction ->c_str (), 0 , 4000 );
249+ cfgFuncParas.fMultGlobalPVCutLow ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
250+ cfgFuncParas.fMultGlobalPVCutHigh = new TF1 (" fMultGlobalPVCutHigh" , cfgFuncParas.cfgMultMultPVHighCutFunction ->c_str (), 0 , 4000 );
251+ cfgFuncParas.fMultGlobalPVCutHigh ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
252+
253+ cfgFuncParas.fMultMultV0ACutLow = new TF1 (" fMultMultV0ACutLow" , cfgFuncParas.cfgMultMultV0ALowCutFunction ->c_str (), 0 , 4000 );
254+ cfgFuncParas.fMultMultV0ACutLow ->SetParameters (&(cfgFuncParas.multMultV0ACutPars [0 ]));
255+ cfgFuncParas.fMultMultV0ACutHigh = new TF1 (" fMultMultV0ACutHigh" , cfgFuncParas.cfgMultMultV0AHighCutFunction ->c_str (), 0 , 4000 );
256+ cfgFuncParas.fMultMultV0ACutHigh ->SetParameters (&(cfgFuncParas.multMultV0ACutPars [0 ]));
257+
258+ cfgFuncParas.fT0AV0AMean = new TF1 (" fT0AV0AMean" , " [0]+[1]*x" , 0 , 200000 );
259+ cfgFuncParas.fT0AV0AMean ->SetParameters (-1601.0581 , 9.417652e-01 );
260+ cfgFuncParas.fT0AV0ASigma = new TF1 (" fT0AV0ASigma" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x" , 0 , 200000 );
261+ cfgFuncParas.fT0AV0ASigma ->SetParameters (463.4144 , 6.796509e-02 , -9.097136e-07 , 7.971088e-12 , -2.600581e-17 );
251262 }
252263
253264 std::string hCentTitle = " Centrality distribution, Estimator " + std::to_string (cfgCentEstimator);
@@ -682,21 +693,27 @@ struct DiHadronCor {
682693 auto multNTracksPV = collision.multNTracksPV ();
683694 if (cfgEvSelMultCorrelation) {
684695 if (cfgFuncParas.cfgMultPVT0CCutEnabled ) {
685- if (multNTracksPV < fMultPVT0CCutLow ->Eval (centrality))
696+ if (multNTracksPV < cfgFuncParas. fMultPVT0CCutLow ->Eval (centrality))
686697 return 0 ;
687- if (multNTracksPV > fMultPVT0CCutHigh ->Eval (centrality))
698+ if (multNTracksPV > cfgFuncParas. fMultPVT0CCutHigh ->Eval (centrality))
688699 return 0 ;
689700 }
690701 if (cfgFuncParas.cfgMultT0CCutEnabled ) {
691- if (multTrk < fMultT0CCutLow ->Eval (centrality))
702+ if (multTrk < cfgFuncParas. fMultT0CCutLow ->Eval (centrality))
692703 return 0 ;
693- if (multTrk > fMultT0CCutHigh ->Eval (centrality))
704+ if (multTrk > cfgFuncParas. fMultT0CCutHigh ->Eval (centrality))
694705 return 0 ;
695706 }
696707 if (cfgFuncParas.cfgMultGlobalPVCutEnabled ) {
697- if (multTrk < fMultGlobalPVCutLow ->Eval (multNTracksPV))
708+ if (multTrk < cfgFuncParas.fMultGlobalPVCutLow ->Eval (multNTracksPV))
709+ return 0 ;
710+ if (multTrk > cfgFuncParas.fMultGlobalPVCutHigh ->Eval (multNTracksPV))
711+ return 0 ;
712+ }
713+ if (cfgFuncParas.cfgMultMultV0ACutEnabled ) {
714+ if (collision.multFV0A () < cfgFuncParas.fMultMultV0ACutLow ->Eval (multTrk))
698715 return 0 ;
699- if (multTrk > fMultGlobalPVCutHigh ->Eval (multNTracksPV ))
716+ if (collision. multFV0A () > cfgFuncParas. fMultMultV0ACutHigh ->Eval (multTrk ))
700717 return 0 ;
701718 }
702719 }
@@ -705,7 +722,7 @@ struct DiHadronCor {
705722
706723 // V0A T0A 5 sigma cut
707724 float sigma = 5.0 ;
708- if (cfgEvSelV0AT0ACut && (std::fabs (collision.multFV0A () - fT0AV0AMean ->Eval (collision.multFT0A ())) > sigma * fT0AV0ASigma ->Eval (collision.multFT0A ())))
725+ if (cfgEvSelV0AT0ACut && (std::fabs (collision.multFV0A () - cfgFuncParas. fT0AV0AMean ->Eval (collision.multFT0A ())) > sigma * cfgFuncParas. fT0AV0ASigma ->Eval (collision.multFT0A ())))
709726 return 0 ;
710727 if (fillCounter && cfgEvSelV0AT0ACut)
711728 registry.fill (HIST (" hEventCountSpecific" ), 11.5 );
0 commit comments