@@ -110,8 +110,23 @@ struct FlowTask {
110110 Configurable<std::vector<std::string>> cfgUserDefineGFWName{" cfgUserDefineGFWName" , std::vector<std::string>{" Ch02Gap22" , " Ch12Gap22" }, " User defined GFW Name" };
111111 Configurable<GFWCorrConfigs> cfgUserPtVnCorrConfig{" cfgUserPtVnCorrConfig" , {{" refP {2} refN {-2}" , " refP {3} refN {-3}" }, {" ChGap22" , " ChGap32" }, {0 , 0 }, {3 , 3 }}, " Configurations for vn-pt correlations" };
112112 Configurable<std::vector<int >> cfgRunRemoveList{" cfgRunRemoveList" , std::vector<int >{-1 }, " excluded run numbers" };
113- Configurable<std::vector<double >> cfgTrackDensityP0{" cfgTrackDensityP0" , std::vector<double >{0.7217476707 , 0.7384792571 , 0.7542625668 , 0.7640680200 , 0.7701951667 , 0.7755299053 , 0.7805901710 , 0.7849446786 , 0.7957356586 , 0.8113039262 , 0.8211968966 , 0.8280558878 , 0.8329342135 }, " parameter 0 for track density efficiency correction" };
114- Configurable<std::vector<double >> cfgTrackDensityP1{" cfgTrackDensityP1" , std::vector<double >{-2.169488e-05 , -2.191913e-05 , -2.295484e-05 , -2.556538e-05 , -2.754463e-05 , -2.816832e-05 , -2.846502e-05 , -2.843857e-05 , -2.705974e-05 , -2.477018e-05 , -2.321730e-05 , -2.203315e-05 , -2.109474e-05 }, " parameter 1 for track density efficiency correction" };
113+ struct : ConfigurableGroup {
114+ Configurable<std::vector<double >> cfgTrackDensityP0{" cfgTrackDensityP0" , std::vector<double >{0.7217476707 , 0.7384792571 , 0.7542625668 , 0.7640680200 , 0.7701951667 , 0.7755299053 , 0.7805901710 , 0.7849446786 , 0.7957356586 , 0.8113039262 , 0.8211968966 , 0.8280558878 , 0.8329342135 }, " parameter 0 for track density efficiency correction" };
115+ Configurable<std::vector<double >> cfgTrackDensityP1{" cfgTrackDensityP1" , std::vector<double >{-2.169488e-05 , -2.191913e-05 , -2.295484e-05 , -2.556538e-05 , -2.754463e-05 , -2.816832e-05 , -2.846502e-05 , -2.843857e-05 , -2.705974e-05 , -2.477018e-05 , -2.321730e-05 , -2.203315e-05 , -2.109474e-05 }, " parameter 1 for track density efficiency correction" };
116+ 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" );
117+ 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" );
118+ O2_DEFINE_CONFIGURABLE (cfgMultT0CCutEnabled, bool , false , " Enable Global multiplicity vs T0C centrality cut" )
119+ 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" };
120+ O2_DEFINE_CONFIGURABLE (cfgMultPVT0CCutEnabled, bool , false , " Enable PV multiplicity vs T0C centrality cut" )
121+ 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" };
122+ O2_DEFINE_CONFIGURABLE (cfgMultMultHighCutFunction, std::string, " [0]+[1]*x + 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
123+ O2_DEFINE_CONFIGURABLE (cfgMultMultLowCutFunction, std::string, " [0]+[1]*x - 5.*([2]+[3]*x)" , " Functional for multiplicity correlation cut" );
124+ O2_DEFINE_CONFIGURABLE (cfgMultGlobalPVCutEnabled, bool , false , " Enable global multiplicity vs PV multiplicity cut" )
125+ 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" };
126+ std::vector<double > multT0CCutPars;
127+ std::vector<double > multPVT0CCutPars;
128+ std::vector<double > multGlobalPVCutPars;
129+ } cfgFuncParas;
115130
116131 ConfigurableAxis axisPtHist{" axisPtHist" , {100 , 0 ., 10 .}, " pt axis for histograms" };
117132 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH, 0.2 , 0.25 , 0.3 , 0.35 , 0.4 , 0.45 , 0.5 , 0.55 , 0.6 , 0.65 , 0.7 , 0.75 , 0.8 , 0.85 , 0.9 , 0.95 , 1 , 1.1 , 1.2 , 1.3 , 1.4 , 1.5 , 1.6 , 1.7 , 1.8 , 1.9 , 2 , 2.2 , 2.4 , 2.6 , 2.8 , 3 , 3.5 , 4 , 5 , 6 , 8 , 10 }, " pt axis for histograms" };
@@ -184,10 +199,12 @@ struct FlowTask {
184199 TF1* funcV4;
185200
186201 // Additional Event selection cuts - Copy from flowGenericFramework.cxx
187- TF1* fMultPVCutLow = nullptr ;
188- TF1* fMultPVCutHigh = nullptr ;
189- TF1* fMultCutLow = nullptr ;
190- TF1* fMultCutHigh = nullptr ;
202+ TF1* fMultPVT0CCutLow = nullptr ;
203+ TF1* fMultPVT0CCutHigh = nullptr ;
204+ TF1* fMultT0CCutLow = nullptr ;
205+ TF1* fMultT0CCutHigh = nullptr ;
206+ TF1* fMultGlobalPVCutLow = nullptr ;
207+ TF1* fMultGlobalPVCutHigh = nullptr ;
191208 TF1* fT0AV0AMean = nullptr ;
192209 TF1* fT0AV0ASigma = nullptr ;
193210
@@ -448,16 +465,24 @@ struct FlowTask {
448465 }
449466 fGFW ->CreateRegions ();
450467
451- if (cfgUseAdditionalEventCut) {
452- fMultPVCutLow = new TF1 (" fMultPVCutLow" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x - 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)" , 0 , 100 );
453- fMultPVCutLow ->SetParameters (3257.29 , -121.848 , 1.98492 , -0.0172128 , 6.47528e-05 , 154.756 , -1.86072 , -0.0274713 , 0.000633499 , -3.37757e-06 );
454- fMultPVCutHigh = new TF1 (" fMultPVCutHigh" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x + 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)" , 0 , 100 );
455- fMultPVCutHigh ->SetParameters (3257.29 , -121.848 , 1.98492 , -0.0172128 , 6.47528e-05 , 154.756 , -1.86072 , -0.0274713 , 0.000633499 , -3.37757e-06 );
456-
457- fMultCutLow = new TF1 (" fMultCutLow" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)" , 0 , 100 );
458- fMultCutLow ->SetParameters (1654.46 , -47.2379 , 0.449833 , -0.0014125 , 150.773 , -3.67334 , 0.0530503 , -0.000614061 , 3.15956e-06 );
459- fMultCutHigh = new TF1 (" fMultCutHigh" , " [0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)" , 0 , 100 );
460- fMultCutHigh ->SetParameters (1654.46 , -47.2379 , 0.449833 , -0.0014125 , 150.773 , -3.67334 , 0.0530503 , -0.000614061 , 3.15956e-06 );
468+ if (cfgEvSelMultCorrelation) {
469+ cfgFuncParas.multT0CCutPars = cfgFuncParas.cfgMultT0CCutPars ;
470+ cfgFuncParas.multPVT0CCutPars = cfgFuncParas.cfgMultPVT0CCutPars ;
471+ cfgFuncParas.multGlobalPVCutPars = cfgFuncParas.cfgMultGlobalPVCutPars ;
472+ fMultPVT0CCutLow = new TF1 (" fMultPVT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
473+ fMultPVT0CCutLow ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
474+ fMultPVT0CCutHigh = new TF1 (" fMultPVT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
475+ fMultPVT0CCutHigh ->SetParameters (&(cfgFuncParas.multPVT0CCutPars [0 ]));
476+
477+ fMultT0CCutLow = new TF1 (" fMultT0CCutLow" , cfgFuncParas.cfgMultCentLowCutFunction ->c_str (), 0 , 100 );
478+ fMultT0CCutLow ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
479+ fMultT0CCutHigh = new TF1 (" fMultT0CCutHigh" , cfgFuncParas.cfgMultCentHighCutFunction ->c_str (), 0 , 100 );
480+ fMultT0CCutHigh ->SetParameters (&(cfgFuncParas.multT0CCutPars [0 ]));
481+
482+ fMultGlobalPVCutLow = new TF1 (" fMultGlobalPVCutLow" , cfgFuncParas.cfgMultMultLowCutFunction ->c_str (), 0 , 4000 );
483+ fMultGlobalPVCutLow ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
484+ fMultGlobalPVCutHigh = new TF1 (" fMultGlobalPVCutHigh" , cfgFuncParas.cfgMultMultHighCutFunction ->c_str (), 0 , 4000 );
485+ fMultGlobalPVCutHigh ->SetParameters (&(cfgFuncParas.multGlobalPVCutPars [0 ]));
461486
462487 fT0AV0AMean = new TF1 (" fT0AV0AMean" , " [0]+[1]*x" , 0 , 200000 );
463488 fT0AV0AMean ->SetParameters (-1601.0581 , 9.417652e-01 );
@@ -470,8 +495,8 @@ struct FlowTask {
470495 hFindPtBin = new TH1D (" hFindPtBin" , " hFindPtBin" , pTEffBins.size () - 1 , &pTEffBins[0 ]);
471496 funcEff.resize (pTEffBins.size () - 1 );
472497 // LHC24g3 Eff
473- std::vector<double > f1p0 = cfgTrackDensityP0;
474- std::vector<double > f1p1 = cfgTrackDensityP1;
498+ std::vector<double > f1p0 = cfgFuncParas. cfgTrackDensityP0 ;
499+ std::vector<double > f1p1 = cfgFuncParas. cfgTrackDensityP1 ;
475500 for (uint ifunc = 0 ; ifunc < pTEffBins.size () - 1 ; ifunc++) {
476501 funcEff[ifunc] = new TF1 (Form (" funcEff%i" , ifunc), " [0]+[1]*x" , 0 , 3000 );
477502 funcEff[ifunc]->SetParameters (f1p0[ifunc], f1p1[ifunc]);
@@ -656,14 +681,24 @@ struct FlowTask {
656681 registry.fill (HIST (" hEventCountSpecific" ), 9.5 );
657682
658683 if (cfgEvSelMultCorrelation) {
659- if (multNTracksPV < fMultPVCutLow ->Eval (centrality))
660- return 0 ;
661- if (multNTracksPV > fMultPVCutHigh ->Eval (centrality))
662- return 0 ;
663- if (multTrk < fMultCutLow ->Eval (centrality))
664- return 0 ;
665- if (multTrk > fMultCutHigh ->Eval (centrality))
666- return 0 ;
684+ if (cfgFuncParas.cfgMultPVT0CCutEnabled ) {
685+ if (multNTracksPV < fMultPVT0CCutLow ->Eval (centrality))
686+ return 0 ;
687+ if (multNTracksPV > fMultPVT0CCutHigh ->Eval (centrality))
688+ return 0 ;
689+ }
690+ if (cfgFuncParas.cfgMultT0CCutEnabled ) {
691+ if (multTrk < fMultT0CCutLow ->Eval (centrality))
692+ return 0 ;
693+ if (multTrk > fMultT0CCutHigh ->Eval (centrality))
694+ return 0 ;
695+ }
696+ if (cfgFuncParas.cfgMultGlobalPVCutEnabled ) {
697+ if (multTrk < fMultGlobalPVCutLow ->Eval (multNTracksPV))
698+ return 0 ;
699+ if (multTrk > fMultGlobalPVCutHigh ->Eval (multNTracksPV))
700+ return 0 ;
701+ }
667702 }
668703 if (cfgEvSelMultCorrelation)
669704 registry.fill (HIST (" hEventCountSpecific" ), 10.5 );
0 commit comments