Skip to content

Commit 12c9048

Browse files
Added multiplicity correlation based cuts for event selection
1 parent a9e5e4f commit 12c9048

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

PWGCF/EbyEFluctuations/Tasks/MeanptFluctuations.cxx

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

Comments
 (0)