]>
Commit | Line | Data |
---|---|---|
5c4489e2 | 1 | AliESDtrackCuts *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 | } |