1 AliESDtrackCuts *CreateTrackCutsPWGJE(Int_t cutMode) {
4 // Macro to create track cuts for PWG Jet analysis
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)
8 // Numbering starts from 1000 For standard and additional cut numbers
10 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts");
16 Bool_t bStdCutsDefined = kFALSE;
19 //_____________________________________________________________________
22 //Get standard cuts: last 4 digits of cutMode
23 Int_t stdCutMode = cutMode%mod;
25 if(stdCutMode == 1000) {
27 bStdCutsDefined = kTRUE;
29 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
30 trackCuts->SetMinNCrossedRowsTPC(120);
31 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
32 trackCuts->SetMaxChi2PerClusterITS(36);
33 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
34 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
36 trackCuts->SetEtaRange(-0.9,0.9);
37 trackCuts->SetPtRange(0.15, 1e10);
39 tag = "Global track RAA analysis QM2011 + Chi2ITS<36";
43 if(stdCutMode == 1001) {
45 bStdCutsDefined = kTRUE;
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);
55 trackCuts->SetRequireITSRefit(kTRUE);
57 trackCuts->SetMaxDCAToVertexXY(2.4);
58 trackCuts->SetMaxDCAToVertexZ(3.2);
59 trackCuts->SetDCAToVertex2D(kTRUE);
61 trackCuts->SetMaxChi2PerClusterITS(36);
63 trackCuts->SetRequireSigmaToVertex(kFALSE);
65 trackCuts->SetEtaRange(-0.9,0.9);
66 trackCuts->SetPtRange(0.15, 100.);
69 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=90, noSPD requirement";
73 if(stdCutMode == 1002) {
75 bStdCutsDefined = kTRUE;
78 trackCuts->SetMinNClustersTPC(80);
79 trackCuts->SetMaxChi2PerClusterTPC(4);
80 trackCuts->SetAcceptKinkDaughters(kFALSE);
81 trackCuts->SetRequireTPCRefit(kTRUE);
82 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
84 trackCuts->SetRequireITSRefit(kTRUE);
86 trackCuts->SetMaxDCAToVertexXY(2.4);
87 trackCuts->SetMaxDCAToVertexZ(3.2);
88 trackCuts->SetDCAToVertex2D(kTRUE);
90 trackCuts->SetMaxChi2PerClusterITS(36);
92 trackCuts->SetRequireSigmaToVertex(kFALSE);
94 trackCuts->SetEtaRange(-0.9,0.9);
95 trackCuts->SetPtRange(0.15, 100.);
98 tag = "Global tracks jet analysis with ITSrefit and Ncls=80, noSPD requirement";
102 if(stdCutMode == 1003) {
104 bStdCutsDefined = kTRUE;
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);
117 tag = "Global tracks ITSTPC2010 + NCrossedRows + loose ITS";
121 if(stdCutMode == 1004) {
123 bStdCutsDefined = kTRUE;
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);
133 trackCuts->SetRequireITSRefit(kTRUE);
135 trackCuts->SetMaxDCAToVertexXY(2.4);
136 trackCuts->SetMaxDCAToVertexZ(3.2);
137 trackCuts->SetDCAToVertex2D(kTRUE);
139 trackCuts->SetMaxChi2PerClusterITS(36);
141 trackCuts->SetRequireSigmaToVertex(kFALSE);
143 trackCuts->SetEtaRange(-0.9,0.9);
144 trackCuts->SetPtRange(0.15, 100.);
146 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement";
149 if(stdCutMode == 1005) {
151 bStdCutsDefined = kTRUE;
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);
161 trackCuts->SetRequireITSRefit(kTRUE);
163 trackCuts->SetMaxDCAToVertexXY(2.4);
164 trackCuts->SetMaxDCAToVertexZ(3.2);
165 trackCuts->SetDCAToVertex2D(kTRUE);
167 trackCuts->SetMaxChi2PerClusterITS(36);
169 trackCuts->SetRequireSigmaToVertex(kFALSE);
171 trackCuts->SetEtaRange(-0.9,0.9);
172 trackCuts->SetPtRange(0.15, 1E+15.);
174 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=70, noSPD requirement, no upper pt cut";
178 if(stdCutMode == 1006) {
180 bStdCutsDefined = kTRUE;
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);
192 trackCuts->SetRequireITSRefit(kTRUE);
194 trackCuts->SetMaxDCAToVertexXY(2.4);
195 trackCuts->SetMaxDCAToVertexZ(3.2);
196 trackCuts->SetDCAToVertex2D(kTRUE);
198 trackCuts->SetMaxChi2PerClusterITS(36);
199 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
201 trackCuts->SetRequireSigmaToVertex(kFALSE);
203 trackCuts->SetEtaRange(-0.9,0.9);
204 trackCuts->SetPtRange(0.15, 1E+15.);
206 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=PtDep, noSPD requirement, no upper pt cut, golden chi2";
210 if(stdCutMode == 1007) {
212 bStdCutsDefined = kTRUE;
214 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1);
216 trackCuts->SetMaxDCAToVertexXY(2.4);
217 trackCuts->SetMaxDCAToVertexZ(3.2);
218 trackCuts->SetDCAToVertex2D(kTRUE);
221 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
223 trackCuts->SetEtaRange(-0.9,0.9);
224 trackCuts->SetPtRange(0.15, 1E+15.);
226 tag = "Global tracks with AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE)";
230 if(stdCutMode == 1008) {
232 bStdCutsDefined = kTRUE;
234 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,1);
236 trackCuts->SetMaxDCAToVertexXY(2.4);
237 trackCuts->SetMaxDCAToVertexZ(3.2);
238 trackCuts->SetDCAToVertex2D(kTRUE);
241 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
242 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
244 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
246 tag = "Global tracks 2011 with NCrossedRows cut";
251 if(stdCutMode == 2000) {
253 bStdCutsDefined = kTRUE;
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);
263 trackCuts->SetMaxDCAToVertexXY(2.4);
264 trackCuts->SetMaxDCAToVertexZ(3.2);
265 trackCuts->SetDCAToVertex2D(kTRUE);
267 trackCuts->SetRequireSigmaToVertex(kFALSE);
269 trackCuts->SetEtaRange(-0.9,0.9);
270 trackCuts->SetPtRange(0.15, 100.);
273 tag = "Global tracks jet analysis, loose cuts, NClsIter1=90, no ITS requirements";
277 if(stdCutMode == 2001) {
279 bStdCutsDefined = kTRUE;
281 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
282 // trackCuts->SetRequireTPCRefit(kTRUE);
283 trackCuts->SetMinNClustersTPC(70);
285 trackCuts->SetEtaRange(-0.9,0.9);
286 trackCuts->SetPtRange(0.15, 100.);
289 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
293 if(stdCutMode == 2002) {
295 bStdCutsDefined = kTRUE;
297 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
298 // trackCuts->SetRequireTPCRefit(kTRUE);
299 trackCuts->SetMinNClustersTPC(0);
300 trackCuts->SetMinNCrossedRowsTPC(120);
301 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
303 trackCuts->SetEtaRange(-0.9,0.9);
304 trackCuts->SetPtRange(0.15, 100.);
307 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
311 if(!bStdCutsDefined) {
312 printf("last 4 digits do not represent a predefined set of standard cuts. Returning 0\n");
318 //_____________________________________________________________________
321 //Get additional cut mode: first 4 digits of cutMode
322 Int_t addCutMode = (int)((float)cutMode/(float)mod);
324 if(addCutMode == 1000) {
326 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
328 tag += " + additonal: SPD any requirement";
332 if(addCutMode == 1001) {
334 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
336 tag += " + additional: w/o hits in SPD";
340 if(addCutMode == 1002) {
342 trackCuts->SetMaxChi2PerClusterITS(1E10);
344 tag += " + additional: maxITSChi2=1e10";
348 if(addCutMode == 1003) {
350 trackCuts->SetMinNClustersTPC(0);
351 trackCuts->SetMinNCrossedRowsTPC(0);
352 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.);
354 tag += " + additional: minClusters=0 minCrossedRows=0 minCrossedRowsOverFindable=0";
358 if(addCutMode == 1004) {
360 trackCuts->SetRequireITSRefit(kFALSE);
362 tag += " + additional: ITSrefit=kFALSE";
366 if(addCutMode == 1005) {
368 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
370 tag += " + additional: no SPD requirement (kOff)";
374 Printf("Created track cuts for: %s", tag.Data());