]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/CreateTrackCutsPWG4.C
Additional protections, corrected ownership of the reco. parameters (needed to run...
[u/mrichter/AliRoot.git] / PWG4 / macros / CreateTrackCutsPWG4.C
CommitLineData
e35f09aa 1AliESDtrackCuts *CreateTrackCutsPWG4(Int_t cutMode) {
2
3 //
4 // Macro to create track cuts for PWG4 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
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);
34
35 trackCuts->SetEtaRange(-0.9,0.9);
36 trackCuts->SetPtRange(0.15, 1e10);
37
38 tag = "Global track RAA analysis QM2011 + Chi2ITS<36";
39
40 }
41
42 if(stdCutMode == 1001) {
43
44 bStdCutsDefined = kTRUE;
45
46 // TPC
47 trackCuts->SetMinNClustersTPC(90);
48 trackCuts->SetMaxChi2PerClusterTPC(4);
49 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
50 trackCuts->SetAcceptKinkDaughters(kFALSE);
51 trackCuts->SetRequireTPCRefit(kTRUE);
52 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
53 // ITS
54 trackCuts->SetRequireITSRefit(kTRUE);
55 //accept secondaries
56 trackCuts->SetMaxDCAToVertexXY(2.4);
57 trackCuts->SetMaxDCAToVertexZ(3.2);
58 trackCuts->SetDCAToVertex2D(kTRUE);
59 //reject fakes
60 trackCuts->SetMaxChi2PerClusterITS(36);
61
62 trackCuts->SetRequireSigmaToVertex(kFALSE);
63
64 trackCuts->SetEtaRange(-0.9,0.9);
65 trackCuts->SetPtRange(0.15, 100.);
66
67
68 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=90, noSPD requirement";
69
70 }
71
72 if(stdCutMode == 1002) {
73
74 bStdCutsDefined = kTRUE;
75
76 // TPC
77 trackCuts->SetMinNClustersTPC(80);
78 trackCuts->SetMaxChi2PerClusterTPC(4);
79 trackCuts->SetAcceptKinkDaughters(kFALSE);
80 trackCuts->SetRequireTPCRefit(kTRUE);
81 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
82 // ITS
83 trackCuts->SetRequireITSRefit(kTRUE);
84 //accept secondaries
85 trackCuts->SetMaxDCAToVertexXY(2.4);
86 trackCuts->SetMaxDCAToVertexZ(3.2);
87 trackCuts->SetDCAToVertex2D(kTRUE);
88 //reject fakes
89 trackCuts->SetMaxChi2PerClusterITS(36);
90
91 trackCuts->SetRequireSigmaToVertex(kFALSE);
92
93 trackCuts->SetEtaRange(-0.9,0.9);
94 trackCuts->SetPtRange(0.15, 100.);
95
96
97 tag = "Global tracks jet analysis with ITSrefit and Ncls=80, noSPD requirement";
98
99 }
100
101 if(stdCutMode == 2000) {
102
103 bStdCutsDefined = kTRUE;
104
105 // TPC
106 trackCuts->SetMinNClustersTPC(90);
107 trackCuts->SetMaxChi2PerClusterTPC(4);
108 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
109 trackCuts->SetAcceptKinkDaughters(kFALSE);
110 trackCuts->SetRequireTPCRefit(kTRUE);
111 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
112 //accept secondaries
113 trackCuts->SetMaxDCAToVertexXY(2.4);
114 trackCuts->SetMaxDCAToVertexZ(3.2);
115 trackCuts->SetDCAToVertex2D(kTRUE);
116
117 trackCuts->SetRequireSigmaToVertex(kFALSE);
118
119 trackCuts->SetEtaRange(-0.9,0.9);
120 trackCuts->SetPtRange(0.15, 100.);
121
122
123 tag = "Global tracks jet analysis, loose cuts, NClsIter1=90, no ITS requirements";
124
125 }
126
127 if(stdCutMode == 2001) {
128
129 bStdCutsDefined = kTRUE;
130
131 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
132 trackCuts->SetMinNClustersTPC(70);
133
134 trackCuts->SetEtaRange(-0.9,0.9);
135 trackCuts->SetPtRange(0.15, 100.);
136
137
138 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
139
140 }
141
142 if(!bStdCutsDefined) {
143 printf("last 4 digits do not represent a predefined set of standard cuts. Returning 0\n");
144 return 0;
145
146 }
147
148
149 //_____________________________________________________________________
150 // ADDITIONAL CUTS
151
152 //Get additional cut mode: first 4 digits of cutMode
153 Int_t addCutMode = (int)((float)cutMode/(float)mod);
154
155 if(addCutMode == 1000) {
156
157 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
158
159 tag += " + additonal: SPD any requirement";
160
161 }
162
163 if(addCutMode == 1001) {
164
165 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
166
167 tag += " + additional: w/o hits in SPD";
168
169 }
170
171 if(addCutMode == 1002) {
172
173 trackCuts->SetMaxChi2PerClusterITS(1E10);
174
175 tag += " + additional: maxITSChi2=1e10";
176
177 }
178
179 if(addCutMode == 1003) {
180
181 trackCuts->SetMinNClustersTPC(0);
182 trackCuts->SetMinNCrossedRowsTPC(0);
183 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.);
184
185 tag += " + additional: minClusters=0 minCrossedRows=0 minCrossedRowsOverFindable=0";
186
187 }
188
189 Printf("Created track cuts for: %s", tag.Data());
190
191 return trackCuts;
192
193}