]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/macros/CreateTrackCutsPWGJE.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / macros / CreateTrackCutsPWGJE.C
CommitLineData
5c4489e2 1AliESDtrackCuts *CreateTrackCutsPWGJE(Int_t cutMode) {
e35f09aa 2
3 //
5c4489e2 4 // Macro to create track cuts for PWG Jet analysis
e35f09aa 5 // User can select a specific set by indicating cutMode
6 // cutMode has 8 digits: first 4 digits additional cuts, last 4 digits standard cuts
7 // additional cuts are variations of standard cuts (used for hybrid track selection and QA)
e49861e4 8 // Numbering starts from 1000 For standard and additional cut numbers
e35f09aa 9
10 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts");
11
12 TString tag;
13
14 Int_t mod = 10000;
15
16 Bool_t bStdCutsDefined = kFALSE;
17
18
19 //_____________________________________________________________________
20 // STANDARD CUTS
21
22 //Get standard cuts: last 4 digits of cutMode
23 Int_t stdCutMode = cutMode%mod;
24
25 if(stdCutMode == 1000) {
26
27 bStdCutsDefined = kTRUE;
28
29 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
30 trackCuts->SetMinNCrossedRowsTPC(120);
31 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
32 trackCuts->SetMaxChi2PerClusterITS(36);
33 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
46a305f3 34 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
e35f09aa 35
36 trackCuts->SetEtaRange(-0.9,0.9);
37 trackCuts->SetPtRange(0.15, 1e10);
38
39 tag = "Global track RAA analysis QM2011 + Chi2ITS<36";
40
41 }
42
43 if(stdCutMode == 1001) {
44
45 bStdCutsDefined = kTRUE;
46
47 // TPC
48 trackCuts->SetMinNClustersTPC(90);
49 trackCuts->SetMaxChi2PerClusterTPC(4);
50 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
51 trackCuts->SetAcceptKinkDaughters(kFALSE);
52 trackCuts->SetRequireTPCRefit(kTRUE);
53 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
54 // ITS
55 trackCuts->SetRequireITSRefit(kTRUE);
56 //accept secondaries
57 trackCuts->SetMaxDCAToVertexXY(2.4);
58 trackCuts->SetMaxDCAToVertexZ(3.2);
59 trackCuts->SetDCAToVertex2D(kTRUE);
60 //reject fakes
61 trackCuts->SetMaxChi2PerClusterITS(36);
62
63 trackCuts->SetRequireSigmaToVertex(kFALSE);
64
65 trackCuts->SetEtaRange(-0.9,0.9);
66 trackCuts->SetPtRange(0.15, 100.);
67
68
69 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=90, noSPD requirement";
70
71 }
72
73 if(stdCutMode == 1002) {
74
75 bStdCutsDefined = kTRUE;
76
77 // TPC
78 trackCuts->SetMinNClustersTPC(80);
79 trackCuts->SetMaxChi2PerClusterTPC(4);
80 trackCuts->SetAcceptKinkDaughters(kFALSE);
81 trackCuts->SetRequireTPCRefit(kTRUE);
82 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
83 // ITS
84 trackCuts->SetRequireITSRefit(kTRUE);
85 //accept secondaries
86 trackCuts->SetMaxDCAToVertexXY(2.4);
87 trackCuts->SetMaxDCAToVertexZ(3.2);
88 trackCuts->SetDCAToVertex2D(kTRUE);
89 //reject fakes
90 trackCuts->SetMaxChi2PerClusterITS(36);
91
92 trackCuts->SetRequireSigmaToVertex(kFALSE);
93
94 trackCuts->SetEtaRange(-0.9,0.9);
95 trackCuts->SetPtRange(0.15, 100.);
96
97
98 tag = "Global tracks jet analysis with ITSrefit and Ncls=80, noSPD requirement";
99
100 }
101
d3a3f33d 102 if(stdCutMode == 1003) {
103
104 bStdCutsDefined = kTRUE;
105
106 // tight global tracks
107 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1);
108 trackCuts->SetMinNClustersTPC(0);
109 trackCuts->SetMinNCrossedRowsTPC(120);
110 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
111 trackCuts->SetMaxDCAToVertexXY(2.4);
112 trackCuts->SetMaxDCAToVertexZ(3.2);
113 trackCuts->SetDCAToVertex2D(kTRUE);
114 trackCuts->SetMaxChi2PerClusterITS(36);
115 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
116
117 tag = "Global tracks ITSTPC2010 + NCrossedRows + loose ITS";
118
119 }
dc6bbd38 120
121 if(stdCutMode == 1004) {
122
123 bStdCutsDefined = kTRUE;
124
125 // TPC
126 trackCuts->SetMinNClustersTPC(70);
127 trackCuts->SetMaxChi2PerClusterTPC(4);
128 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
129 trackCuts->SetAcceptKinkDaughters(kFALSE);
130 trackCuts->SetRequireTPCRefit(kTRUE);
131 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
132 // ITS
133 trackCuts->SetRequireITSRefit(kTRUE);
134 //accept secondaries
135 trackCuts->SetMaxDCAToVertexXY(2.4);
136 trackCuts->SetMaxDCAToVertexZ(3.2);
137 trackCuts->SetDCAToVertex2D(kTRUE);
138 //reject fakes
139 trackCuts->SetMaxChi2PerClusterITS(36);
140
141 trackCuts->SetRequireSigmaToVertex(kFALSE);
142
143 trackCuts->SetEtaRange(-0.9,0.9);
144 trackCuts->SetPtRange(0.15, 100.);
145
146 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement";
147
148 }
65c43de8 149 if(stdCutMode == 1005) {
150
151 bStdCutsDefined = kTRUE;
152
153 // TPC
154 trackCuts->SetMinNClustersTPC(70);
155 trackCuts->SetMaxChi2PerClusterTPC(4);
156 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
157 trackCuts->SetAcceptKinkDaughters(kFALSE);
158 trackCuts->SetRequireTPCRefit(kTRUE);
159 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
160 // ITS
161 trackCuts->SetRequireITSRefit(kTRUE);
162 //accept secondaries
163 trackCuts->SetMaxDCAToVertexXY(2.4);
164 trackCuts->SetMaxDCAToVertexZ(3.2);
165 trackCuts->SetDCAToVertex2D(kTRUE);
166 //reject fakes
167 trackCuts->SetMaxChi2PerClusterITS(36);
168
169 trackCuts->SetRequireSigmaToVertex(kFALSE);
170
171 trackCuts->SetEtaRange(-0.9,0.9);
172 trackCuts->SetPtRange(0.15, 1E+15.);
173
174 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement, no upper pt cut";
175
176 }
e49861e4 177
46a305f3 178 if(stdCutMode == 1006) {
179
180 bStdCutsDefined = kTRUE;
181
182 // TPC
183 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
184 trackCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
185 trackCuts->SetMinNClustersTPC(70);
186 trackCuts->SetMaxChi2PerClusterTPC(4);
187 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
188 trackCuts->SetAcceptKinkDaughters(kFALSE);
189 trackCuts->SetRequireTPCRefit(kTRUE);
190 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
191 // ITS
192 trackCuts->SetRequireITSRefit(kTRUE);
193 //accept secondaries
194 trackCuts->SetMaxDCAToVertexXY(2.4);
195 trackCuts->SetMaxDCAToVertexZ(3.2);
196 trackCuts->SetDCAToVertex2D(kTRUE);
197 //reject fakes
198 trackCuts->SetMaxChi2PerClusterITS(36);
199 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
200
201 trackCuts->SetRequireSigmaToVertex(kFALSE);
202
203 trackCuts->SetEtaRange(-0.9,0.9);
204 trackCuts->SetPtRange(0.15, 1E+15.);
205
206 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=PtDep, noSPD requirement, no upper pt cut, golden chi2";
207
208 }
dc6bbd38 209
e49861e4 210 if(stdCutMode == 1007) {
211
212 bStdCutsDefined = kTRUE;
213
346e5a93 214 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1);
e49861e4 215 //accept secondaries
216 trackCuts->SetMaxDCAToVertexXY(2.4);
217 trackCuts->SetMaxDCAToVertexZ(3.2);
218 trackCuts->SetDCAToVertex2D(kTRUE);
219
220 //
221 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
222
223 trackCuts->SetEtaRange(-0.9,0.9);
224 trackCuts->SetPtRange(0.15, 1E+15.);
225
226 tag = "Global tracks with AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE)";
227
228 }
dc6bbd38 229
f8bd6b9f 230 if(stdCutMode == 1008) {
231
232 bStdCutsDefined = kTRUE;
233
346e5a93 234 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1);
f8bd6b9f 235 //accept secondaries
236 trackCuts->SetMaxDCAToVertexXY(2.4);
237 trackCuts->SetMaxDCAToVertexZ(3.2);
238 trackCuts->SetDCAToVertex2D(kTRUE);
239
240 //
241 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
0f3190ef 242 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
f8bd6b9f 243
dfa18756 244 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
f8bd6b9f 245
246 tag = "Global tracks 2011 with NCrossedRows cut";
247
248 }
249
d3a3f33d 250
e35f09aa 251 if(stdCutMode == 2000) {
252
253 bStdCutsDefined = kTRUE;
254
255 // TPC
256 trackCuts->SetMinNClustersTPC(90);
257 trackCuts->SetMaxChi2PerClusterTPC(4);
258 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
259 trackCuts->SetAcceptKinkDaughters(kFALSE);
260 trackCuts->SetRequireTPCRefit(kTRUE);
261 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
262 //accept secondaries
263 trackCuts->SetMaxDCAToVertexXY(2.4);
264 trackCuts->SetMaxDCAToVertexZ(3.2);
265 trackCuts->SetDCAToVertex2D(kTRUE);
266
267 trackCuts->SetRequireSigmaToVertex(kFALSE);
268
269 trackCuts->SetEtaRange(-0.9,0.9);
270 trackCuts->SetPtRange(0.15, 100.);
271
272
273 tag = "Global tracks jet analysis, loose cuts, NClsIter1=90, no ITS requirements";
274
275 }
276
277 if(stdCutMode == 2001) {
278
279 bStdCutsDefined = kTRUE;
280
281 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
2461511f 282 // trackCuts->SetRequireTPCRefit(kTRUE);
e35f09aa 283 trackCuts->SetMinNClustersTPC(70);
284
285 trackCuts->SetEtaRange(-0.9,0.9);
286 trackCuts->SetPtRange(0.15, 100.);
287
288
289 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
290
291 }
292
d3a3f33d 293 if(stdCutMode == 2002) {
294
295 bStdCutsDefined = kTRUE;
296
297 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
2461511f 298 // trackCuts->SetRequireTPCRefit(kTRUE);
d3a3f33d 299 trackCuts->SetMinNClustersTPC(0);
300 trackCuts->SetMinNCrossedRowsTPC(120);
301 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
302
303 trackCuts->SetEtaRange(-0.9,0.9);
304 trackCuts->SetPtRange(0.15, 100.);
305
306
307 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
308
309 }
310
e35f09aa 311 if(!bStdCutsDefined) {
312 printf("last 4 digits do not represent a predefined set of standard cuts. Returning 0\n");
313 return 0;
314
315 }
316
317
318 //_____________________________________________________________________
319 // ADDITIONAL CUTS
320
321 //Get additional cut mode: first 4 digits of cutMode
322 Int_t addCutMode = (int)((float)cutMode/(float)mod);
323
324 if(addCutMode == 1000) {
325
326 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
327
328 tag += " + additonal: SPD any requirement";
329
330 }
331
332 if(addCutMode == 1001) {
333
334 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
335
336 tag += " + additional: w/o hits in SPD";
337
338 }
339
340 if(addCutMode == 1002) {
341
342 trackCuts->SetMaxChi2PerClusterITS(1E10);
343
344 tag += " + additional: maxITSChi2=1e10";
345
346 }
347
348 if(addCutMode == 1003) {
349
350 trackCuts->SetMinNClustersTPC(0);
351 trackCuts->SetMinNCrossedRowsTPC(0);
352 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.);
353
354 tag += " + additional: minClusters=0 minCrossedRows=0 minCrossedRowsOverFindable=0";
355
356 }
357
d3a3f33d 358 if(addCutMode == 1004) {
359
360 trackCuts->SetRequireITSRefit(kFALSE);
361
362 tag += " + additional: ITSrefit=kFALSE";
363
364 }
365
bebff67a 366 if(addCutMode == 1005) {
367
368 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
369
370 tag += " + additional: no SPD requirement (kOff)";
371
372 }
373
e35f09aa 374 Printf("Created track cuts for: %s", tag.Data());
375
376 return trackCuts;
377
378}