Skip to content

Commit 8a6c1a4

Browse files
committed
add global vs multV0A cut
1 parent 056d337 commit 8a6c1a4

File tree

1 file changed

+55
-38
lines changed

1 file changed

+55
-38
lines changed

PWGCF/TwoParticleCorrelations/Tasks/diHadronCor.cxx

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)