]>
Commit | Line | Data |
---|---|---|
d52f7b50 | 1 | #include <Riostream.h> |
2 | #include <TFile.h> | |
3 | #include <AliRDHFCutsD0toKpi.h> | |
4 | #include <TClonesArray.h> | |
5 | #include <TParameter.h> | |
cbedddce | 6 | |
cbedddce | 7 | |
8 | //Use: | |
9 | //Set hard coded commentet with //set this!! | |
3b79985d | 10 | // root[] .L makeInputD0tasks.C++ |
11 | // root[] makeInputAliAnalysisTaskSED0Mass() | |
12 | // root[] makeInputAliAnalysisTaskSESignificanceMaximization() | |
cbedddce | 13 | //similar macros for the other D mesons |
14 | ||
15 | //Author: Chiara Bianchin, cbianchi@pd.infn.it | |
16 | ||
3b79985d | 17 | |
18 | //macro to make a .root file which contains an AliRDHFCutsD0toKpi for AliAnalysisTaskSED0Mass task | |
19 | ||
20 | void makeInputAliAnalysisTaskSED0Mass(){ | |
21 | ||
22 | AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi(); | |
23 | RDHFD0toKpi->SetName("D0toKpiCuts"); | |
24 | RDHFD0toKpi->SetTitle("Cuts for D0 analysis"); | |
25 | ||
26 | AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts(); | |
27 | esdTrackCuts->SetRequireSigmaToVertex(kFALSE); | |
28 | //default | |
29 | esdTrackCuts->SetRequireTPCRefit(kTRUE); | |
30 | esdTrackCuts->SetRequireITSRefit(kTRUE); | |
0d4398a2 | 31 | //esdTrackCuts->SetMinNClustersITS(4); // default is 5 |
3b79985d | 32 | //esdTrackCuts->SetMinNClustersTPC(70); |
33 | esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, | |
34 | AliESDtrackCuts::kAny); | |
35 | // default is kBoth, otherwise kAny | |
36 | esdTrackCuts->SetMinDCAToVertexXY(0.); | |
37 | esdTrackCuts->SetPtRange(0.3,1.e10); | |
38 | ||
39 | ||
40 | RDHFD0toKpi->AddTrackCuts(esdTrackCuts); | |
41 | ||
42 | const Int_t nvars=9; | |
43 | ||
6b3e3c78 | 44 | const Int_t nptbins=11; |
3b79985d | 45 | Float_t* ptbins; |
46 | ptbins=new Float_t[nptbins+1]; | |
47 | ptbins[0]=0.; | |
48 | ptbins[1]=1.; | |
49 | ptbins[2]=2.; | |
50 | ptbins[3]=3.; | |
6b3e3c78 | 51 | ptbins[4]=4.; |
52 | ptbins[5]=5.; | |
53 | ptbins[6]=6.; | |
54 | ptbins[7]=8.; | |
55 | ptbins[8]=12.; | |
56 | ptbins[9]=16.; | |
57 | ptbins[10]=20.; | |
58 | ptbins[11]=24.; | |
59 | //ptbins[12]=99999.; | |
3b79985d | 60 | |
61 | RDHFD0toKpi->SetPtBins(nptbins+1,ptbins); | |
62 | ||
63 | ||
64 | Float_t** rdcutsvalmine; | |
65 | rdcutsvalmine=new Float_t*[nvars]; | |
66 | for(Int_t iv=0;iv<nvars;iv++){ | |
67 | rdcutsvalmine[iv]=new Float_t[nptbins]; | |
68 | } | |
69 | ||
70 | //setting my cut values | |
71 | //cuts order | |
72 | // printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]); | |
73 | // printf(" dca [cm] < %f\n",fD0toKpiCuts[1]); | |
74 | // printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]); | |
75 | // printf(" pTK [GeV/c] > %f\n",fD0toKpiCuts[3]); | |
76 | // printf(" pTpi [GeV/c] > %f\n",fD0toKpiCuts[4]); | |
77 | // printf(" |d0K| [cm] < %f\n",fD0toKpiCuts[5]); | |
78 | // printf(" |d0pi| [cm] < %f\n",fD0toKpiCuts[6]); | |
79 | // printf(" d0d0 [cm^2] < %f\n",fD0toKpiCuts[7]); | |
80 | // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]); | |
81 | ||
82 | /* | |
83 | //setting PPR cut values | |
84 | rdcutsvalPPR[0][0]=0.7; | |
85 | rdcutsvalPPR[1][0]=0.04; | |
86 | rdcutsvalPPR[2][0]=0.8; | |
87 | rdcutsvalPPR[3][0]=0.5; | |
88 | rdcutsvalPPR[4][0]=0.5; | |
89 | rdcutsvalPPR[5][0]=0.05; | |
90 | rdcutsvalPPR[6][0]=0.05; | |
91 | rdcutsvalPPR[7][0]=-0.0002; | |
92 | rdcutsvalPPR[8][0]=0.5; | |
93 | ||
94 | rdcutsvalPPR[0][1]=rdcutsvalPPR[0][2]=0.7; | |
95 | rdcutsvalPPR[1][1]=rdcutsvalPPR[1][2]=0.02; | |
96 | rdcutsvalPPR[2][1]=rdcutsvalPPR[2][2]=0.8; | |
97 | rdcutsvalPPR[3][1]=rdcutsvalPPR[3][2]=0.7; | |
98 | rdcutsvalPPR[4][1]=rdcutsvalPPR[4][2]=0.7; | |
99 | rdcutsvalPPR[5][1]=rdcutsvalPPR[5][2]=0.05; | |
100 | rdcutsvalPPR[6][1]=rdcutsvalPPR[6][2]=0.05; | |
101 | rdcutsvalPPR[7][1]=rdcutsvalPPR[7][2]=-0.0002; | |
102 | rdcutsvalPPR[8][1]=rdcutsvalPPR[8][2]=0.6; | |
103 | ||
104 | rdcutsvalPPR[0][3]=0.7; | |
105 | rdcutsvalPPR[1][3]=0.02; | |
106 | rdcutsvalPPR[2][3]=0.8; | |
107 | rdcutsvalPPR[3][3]=0.7; | |
108 | rdcutsvalPPR[4][3]=0.7; | |
109 | rdcutsvalPPR[5][3]=0.05; | |
110 | rdcutsvalPPR[6][3]=0.05; | |
111 | rdcutsvalPPR[7][3]=-0.0001; | |
112 | rdcutsvalPPR[8][3]=0.8; | |
113 | ||
114 | rdcutsvalPPR[0][4]=0.7; | |
115 | rdcutsvalPPR[1][4]=0.02; | |
116 | rdcutsvalPPR[2][4]=0.8; | |
117 | rdcutsvalPPR[3][4]=0.7; | |
118 | rdcutsvalPPR[4][4]=0.7; | |
119 | rdcutsvalPPR[5][4]=0.05; | |
120 | rdcutsvalPPR[6][4]=0.05; | |
121 | rdcutsvalPPR[7][4]=-0.00005; | |
122 | rdcutsvalPPR[8][4]=0.8; | |
123 | */ | |
6b3e3c78 | 124 | Double_t arrcuts[9]={0.2,0.03,0.8,0.3,0.3,0.1,0.1,-0.0004,0.7}; |
d52f7b50 | 125 | //cout<<"here"<<endl; |
3b79985d | 126 | //setting my cut values |
6b3e3c78 | 127 | |
128 | //0-1 GeV | |
129 | rdcutsvalmine[0][0]=arrcuts[0]; | |
130 | rdcutsvalmine[1][0]=arrcuts[1]; | |
131 | rdcutsvalmine[2][0]=arrcuts[2]; | |
132 | rdcutsvalmine[3][0]=arrcuts[3]; | |
133 | rdcutsvalmine[4][0]=arrcuts[4]; | |
134 | rdcutsvalmine[5][0]=arrcuts[5]; | |
135 | rdcutsvalmine[6][0]=arrcuts[6]; | |
136 | rdcutsvalmine[7][0]=arrcuts[7]; | |
137 | rdcutsvalmine[8][0]=arrcuts[8]; | |
138 | ||
139 | //1-2 GeV | |
140 | arrcuts[1]=0.02; arrcuts[3]=arrcuts[4]=0.4; arrcuts[7]=-0.00032; arrcuts[8]=0.8; | |
141 | rdcutsvalmine[0][1]=arrcuts[0]; | |
142 | rdcutsvalmine[1][1]=arrcuts[1]; | |
143 | rdcutsvalmine[2][1]=arrcuts[2]; | |
144 | rdcutsvalmine[3][1]=arrcuts[3]; | |
145 | rdcutsvalmine[4][1]=arrcuts[4]; | |
146 | rdcutsvalmine[5][1]=arrcuts[5]; | |
147 | rdcutsvalmine[6][1]=arrcuts[6]; | |
148 | rdcutsvalmine[7][1]=arrcuts[7]; | |
149 | rdcutsvalmine[8][1]=arrcuts[8]; | |
150 | ||
151 | //2-3 GeV | |
152 | arrcuts[3]=arrcuts[4]=0.7; arrcuts[7]=-0.00026; | |
153 | rdcutsvalmine[0][2]=arrcuts[0]; | |
154 | rdcutsvalmine[1][2]=arrcuts[1]; | |
155 | rdcutsvalmine[2][2]=arrcuts[2]; | |
156 | rdcutsvalmine[3][2]=arrcuts[3]; | |
157 | rdcutsvalmine[4][2]=arrcuts[4]; | |
158 | rdcutsvalmine[5][2]=arrcuts[5]; | |
159 | rdcutsvalmine[6][2]=arrcuts[6]; | |
160 | rdcutsvalmine[7][2]=arrcuts[7]; | |
161 | rdcutsvalmine[8][2]=arrcuts[8]; | |
162 | ||
163 | ||
164 | //3-4 GeV - 4-5 GeV | |
165 | arrcuts[7]=-0.00015; | |
166 | rdcutsvalmine[0][3]=rdcutsvalmine[0][4]=arrcuts[0]; | |
167 | rdcutsvalmine[1][3]=rdcutsvalmine[1][4]=arrcuts[1]; | |
168 | rdcutsvalmine[2][3]=rdcutsvalmine[2][4]=arrcuts[2]; | |
169 | rdcutsvalmine[3][3]=rdcutsvalmine[3][4]=arrcuts[3]; | |
170 | rdcutsvalmine[4][3]=rdcutsvalmine[4][4]=arrcuts[4]; | |
171 | rdcutsvalmine[5][3]=rdcutsvalmine[5][4]=arrcuts[5]; | |
172 | rdcutsvalmine[6][3]=rdcutsvalmine[6][4]=arrcuts[6]; | |
173 | rdcutsvalmine[7][3]=rdcutsvalmine[7][4]=arrcuts[7]; | |
174 | rdcutsvalmine[8][3]=rdcutsvalmine[8][4]=arrcuts[8]; | |
175 | ||
176 | ||
177 | //5-6 GeV - 6-8 GeV - 8-12 GeV - 12-16 GeV | |
d52f7b50 | 178 | arrcuts[1]=0.015; arrcuts[7]=-0.0001; |
6b3e3c78 | 179 | |
180 | rdcutsvalmine[0][5]=rdcutsvalmine[0][6]=rdcutsvalmine[0][7]=rdcutsvalmine[0][8]=arrcuts[0]; | |
181 | rdcutsvalmine[1][5]=rdcutsvalmine[1][6]=rdcutsvalmine[1][7]=rdcutsvalmine[1][8]=arrcuts[1]; | |
182 | rdcutsvalmine[2][5]=rdcutsvalmine[2][6]=rdcutsvalmine[2][7]=rdcutsvalmine[2][8]=arrcuts[2]; | |
183 | rdcutsvalmine[3][5]=rdcutsvalmine[3][6]=rdcutsvalmine[3][7]=rdcutsvalmine[3][8]=arrcuts[3]; | |
184 | rdcutsvalmine[4][5]=rdcutsvalmine[4][6]=rdcutsvalmine[4][7]=rdcutsvalmine[4][8]=arrcuts[4]; | |
185 | rdcutsvalmine[5][5]=rdcutsvalmine[5][6]=rdcutsvalmine[5][7]=rdcutsvalmine[5][8]=arrcuts[5]; | |
186 | rdcutsvalmine[6][5]=rdcutsvalmine[6][6]=rdcutsvalmine[6][7]=rdcutsvalmine[6][8]=arrcuts[6]; | |
187 | rdcutsvalmine[7][5]=rdcutsvalmine[7][6]=rdcutsvalmine[7][7]=rdcutsvalmine[7][8]=arrcuts[7]; | |
188 | rdcutsvalmine[8][5]=rdcutsvalmine[8][6]=rdcutsvalmine[8][7]=rdcutsvalmine[8][8]=arrcuts[8]; | |
189 | ||
190 | //16-20 GeV - 20-24 GeV --to be optimized | |
191 | arrcuts[7]=0.0001; arrcuts[8]=0.7; | |
192 | rdcutsvalmine[0][9]=rdcutsvalmine[0][10]=arrcuts[0]; | |
193 | rdcutsvalmine[1][9]=rdcutsvalmine[1][10]=arrcuts[1]; | |
194 | rdcutsvalmine[2][9]=rdcutsvalmine[2][10]=arrcuts[2]; | |
195 | rdcutsvalmine[3][9]=rdcutsvalmine[3][10]=arrcuts[3]; | |
196 | rdcutsvalmine[4][9]=rdcutsvalmine[4][10]=arrcuts[4]; | |
197 | rdcutsvalmine[5][9]=rdcutsvalmine[5][10]=arrcuts[5]; | |
198 | rdcutsvalmine[6][9]=rdcutsvalmine[6][10]=arrcuts[6]; | |
199 | rdcutsvalmine[7][9]=rdcutsvalmine[7][10]=arrcuts[7]; | |
200 | rdcutsvalmine[8][9]=rdcutsvalmine[8][10]=arrcuts[8]; | |
3b79985d | 201 | |
202 | RDHFD0toKpi->SetCuts(nvars,nptbins,rdcutsvalmine); | |
6b3e3c78 | 203 | |
204 | Bool_t pidflag=kTRUE; | |
205 | RDHFD0toKpi->SetUsePID(pidflag); | |
206 | if(pidflag) cout<<"PID is used"<<endl; | |
207 | else cout<<"PID is not used"<<endl; | |
208 | ||
d52f7b50 | 209 | //pid settings |
6b3e3c78 | 210 | AliAODPidHF* pidObj=new AliAODPidHF(); |
211 | //pidObj->SetName("pid4D0"); | |
212 | Int_t mode=1; | |
213 | const Int_t nlims=2; | |
214 | Double_t plims[nlims]={0.6,0.8}; //TPC limits in momentum [GeV/c] | |
215 | Bool_t compat=kTRUE; //effective only for this mode | |
216 | Bool_t asym=kTRUE; | |
217 | Double_t sigmas[5]={2.,1.,0.,3.,0.}; //to be checked and to be modified with new implementation of setters by Rossella | |
218 | pidObj->SetAsym(asym);// if you want to use the asymmetric bands in TPC | |
219 | pidObj->SetMatch(mode); | |
220 | pidObj->SetPLimit(plims,nlims); | |
221 | pidObj->SetSigma(sigmas); | |
222 | pidObj->SetCompat(compat); | |
223 | pidObj->SetTPC(kTRUE); | |
224 | pidObj->SetTOF(kTRUE); | |
225 | RDHFD0toKpi->SetPidHF(pidObj); | |
226 | ||
227 | RDHFD0toKpi->SetUseDefaultPID(kFALSE); //to use the AliAODPidHF | |
228 | ||
d52f7b50 | 229 | //activate pileup rejection |
230 | RDHFD0toKpi->SetOptPileup(AliRDHFCuts::kRejectPileupEvent); | |
231 | ||
3b79985d | 232 | cout<<"This is the odject I'm going to save:"<<endl; |
233 | RDHFD0toKpi->PrintAll(); | |
d52f7b50 | 234 | TFile* fout=new TFile("D0toKpiCutsStdpileup.root","recreate"); //set this!! |
3b79985d | 235 | fout->cd(); |
236 | RDHFD0toKpi->Write(); | |
237 | fout->Close(); | |
238 | ||
239 | } | |
240 | ||
241 | //macro to make a .root file (for significance maximization) which contains an AliRDHFCutsD0toKpi with loose set of cuts and TParameter with the tighest value of these cuts | |
242 | ||
243 | void makeInputAliAnalysisTaskSESignificanceMaximization(){ | |
cbedddce | 244 | |
245 | AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi(); | |
246 | RDHFD0toKpi->SetName("loosercuts"); | |
247 | RDHFD0toKpi->SetTitle("Cuts for significance maximization"); | |
248 | ||
249 | AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts(); | |
250 | esdTrackCuts->SetRequireSigmaToVertex(kFALSE); | |
251 | //default | |
252 | esdTrackCuts->SetRequireTPCRefit(kTRUE); | |
253 | esdTrackCuts->SetRequireITSRefit(kTRUE); | |
0d4398a2 | 254 | //esdTrackCuts->SetMinNClustersITS(4); |
cbedddce | 255 | |
256 | esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); | |
257 | esdTrackCuts->SetMinDCAToVertexXY(0.); | |
258 | esdTrackCuts->SetEtaRange(-0.9,0.9); | |
259 | esdTrackCuts->SetPtRange(0.1,1.e10); | |
260 | ||
261 | RDHFD0toKpi->AddTrackCuts(esdTrackCuts); | |
262 | ||
263 | const Int_t nvars=9; | |
264 | ||
d52f7b50 | 265 | const Int_t nptbins=10; //change this when adding pt bins! |
cbedddce | 266 | Float_t ptbins[nptbins+1]; |
267 | ptbins[0]=0.; | |
6b3e3c78 | 268 | ptbins[1]=0.5; |
269 | ptbins[2]=1.; | |
270 | ptbins[3]=2.; | |
271 | ptbins[4]=3.; | |
272 | ptbins[5]=4.; | |
273 | ptbins[6]=5.; | |
274 | ptbins[7]=6.; | |
275 | ptbins[8]=8.; | |
276 | ptbins[9]=12.; | |
d52f7b50 | 277 | //ptbins[10]=16.; |
278 | ptbins[10]=9999.; | |
279 | ||
cbedddce | 280 | |
281 | RDHFD0toKpi->SetPtBins(nptbins+1,ptbins); | |
282 | ||
283 | ||
284 | Float_t** rdcutsvalmine; | |
285 | rdcutsvalmine=new Float_t*[nvars]; | |
286 | for(Int_t iv=0;iv<nvars;iv++){ | |
287 | rdcutsvalmine[iv]=new Float_t[nptbins]; | |
288 | } | |
289 | ||
290 | //setting my cut values | |
291 | //cuts order | |
292 | // printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]); | |
293 | // printf(" dca [cm] < %f\n",fD0toKpiCuts[1]); | |
294 | // printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]); | |
295 | // printf(" pTK [GeV/c] > %f\n",fD0toKpiCuts[3]); | |
296 | // printf(" pTpi [GeV/c] > %f\n",fD0toKpiCuts[4]); | |
297 | // printf(" |d0K| [cm] < %f\n",fD0toKpiCuts[5]); | |
298 | // printf(" |d0pi| [cm] < %f\n",fD0toKpiCuts[6]); | |
299 | // printf(" d0d0 [cm^2] < %f\n",fD0toKpiCuts[7]); | |
300 | // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]); | |
301 | ||
d52f7b50 | 302 | /* |
303 | //setting PPR cut values | |
304 | rdcutsvalPPR[0][0]=0.7; | |
305 | rdcutsvalPPR[1][0]=0.04; | |
306 | rdcutsvalPPR[2][0]=0.8; | |
307 | rdcutsvalPPR[3][0]=0.5; | |
308 | rdcutsvalPPR[4][0]=0.5; | |
309 | rdcutsvalPPR[5][0]=0.05; | |
310 | rdcutsvalPPR[6][0]=0.05; | |
311 | rdcutsvalPPR[7][0]=-0.0002; | |
312 | rdcutsvalPPR[8][0]=0.5; | |
313 | ||
314 | rdcutsvalPPR[0][1]=rdcutsvalPPR[0][2]=0.7; | |
315 | rdcutsvalPPR[1][1]=rdcutsvalPPR[1][2]=0.02; | |
316 | rdcutsvalPPR[2][1]=rdcutsvalPPR[2][2]=0.8; | |
317 | rdcutsvalPPR[3][1]=rdcutsvalPPR[3][2]=0.7; | |
318 | rdcutsvalPPR[4][1]=rdcutsvalPPR[4][2]=0.7; | |
319 | rdcutsvalPPR[5][1]=rdcutsvalPPR[5][2]=0.05; | |
320 | rdcutsvalPPR[6][1]=rdcutsvalPPR[6][2]=0.05; | |
321 | rdcutsvalPPR[7][1]=rdcutsvalPPR[7][2]=-0.0002; | |
322 | rdcutsvalPPR[8][1]=rdcutsvalPPR[8][2]=0.6; | |
323 | ||
324 | rdcutsvalPPR[0][3]=0.7; | |
325 | rdcutsvalPPR[1][3]=0.02; | |
326 | rdcutsvalPPR[2][3]=0.8; | |
327 | rdcutsvalPPR[3][3]=0.7; | |
328 | rdcutsvalPPR[4][3]=0.7; | |
329 | rdcutsvalPPR[5][3]=0.05; | |
330 | rdcutsvalPPR[6][3]=0.05; | |
331 | rdcutsvalPPR[7][3]=-0.0001; | |
332 | rdcutsvalPPR[8][3]=0.8; | |
333 | ||
334 | rdcutsvalPPR[0][4]=0.7; | |
335 | rdcutsvalPPR[1][4]=0.02; | |
336 | rdcutsvalPPR[2][4]=0.8; | |
337 | rdcutsvalPPR[3][4]=0.7; | |
338 | rdcutsvalPPR[4][4]=0.7; | |
339 | rdcutsvalPPR[5][4]=0.05; | |
340 | rdcutsvalPPR[6][4]=0.05; | |
341 | rdcutsvalPPR[7][4]=-0.00005; | |
342 | rdcutsvalPPR[8][4]=0.8; | |
343 | */ | |
344 | /* | |
345 | //setting my cut values | |
346 | ||
347 | Float_t passcut[9]={0.7,0.04,0.8,0.7,0.7,0.1,0.1,-0.00015,0.5}; | |
348 | ||
349 | //setting my cut values | |
350 | //0-1 | |
351 | rdcutsvalmine[0][0]=passcut[0];//0.7; | |
352 | rdcutsvalmine[1][0]=passcut[1];//0.04; | |
353 | rdcutsvalmine[2][0]=passcut[2];//0.8; | |
354 | rdcutsvalmine[3][0]=passcut[3];//0.5; | |
355 | rdcutsvalmine[4][0]=passcut[4];//0.5; | |
356 | rdcutsvalmine[5][0]=passcut[5];//0.05; | |
357 | rdcutsvalmine[6][0]=passcut[6];//0.05; | |
358 | rdcutsvalmine[7][0]=passcut[7];//-0.00025; | |
359 | rdcutsvalmine[8][0]=passcut[8];//0.7; | |
360 | ||
361 | //1-2;2-3 | |
362 | passcut[1]=0.02; | |
363 | passcut[8]=0.7; | |
364 | rdcutsvalmine[0][1]=rdcutsvalmine[0][2]=passcut[0];//0.7; | |
365 | rdcutsvalmine[1][1]=rdcutsvalmine[1][2]=passcut[1];//0.02; | |
366 | rdcutsvalmine[2][1]=rdcutsvalmine[2][2]=passcut[2];//0.8; | |
367 | rdcutsvalmine[3][1]=rdcutsvalmine[3][2]=passcut[3];//0.7; | |
368 | rdcutsvalmine[4][1]=rdcutsvalmine[4][2]=passcut[4];//0.7; | |
369 | rdcutsvalmine[5][1]=rdcutsvalmine[5][2]=passcut[5];//1.; | |
370 | rdcutsvalmine[6][1]=rdcutsvalmine[6][2]=passcut[6];//1.; | |
371 | rdcutsvalmine[7][1]=rdcutsvalmine[7][2]=passcut[7];//-0.00025; | |
372 | rdcutsvalmine[8][1]=rdcutsvalmine[8][2]=passcut[8];//0.8; | |
373 | ||
374 | //3-5 | |
375 | passcut[7]=-0.00005; | |
376 | passcut[8]=0.6; | |
377 | rdcutsvalmine[0][3]=passcut[0];//0.7; | |
378 | rdcutsvalmine[1][3]=passcut[1];//0.02; | |
379 | rdcutsvalmine[2][3]=passcut[2];//0.8; | |
380 | rdcutsvalmine[3][3]=passcut[3];//0.7; | |
381 | rdcutsvalmine[4][3]=passcut[4];//0.7; | |
382 | rdcutsvalmine[5][3]=passcut[5];//0.05; | |
383 | rdcutsvalmine[6][3]=passcut[6];//0.05; | |
384 | rdcutsvalmine[7][3]=passcut[7];//-0.00015; | |
385 | rdcutsvalmine[8][3]=passcut[8];//0.8; | |
386 | ||
387 | //5-8 | |
388 | passcut[7]=-0.00001; | |
389 | passcut[8]=0.6; | |
390 | rdcutsvalmine[0][4]=passcut[0];//0.7; | |
391 | rdcutsvalmine[1][4]=passcut[1];//0.02; | |
392 | rdcutsvalmine[2][4]=passcut[2];//0.8; | |
393 | rdcutsvalmine[3][4]=passcut[3];//0.7; | |
394 | rdcutsvalmine[4][4]=passcut[4];//0.7; | |
395 | rdcutsvalmine[5][4]=passcut[5];//0.05; | |
396 | rdcutsvalmine[6][4]=passcut[6];//0.05; | |
397 | rdcutsvalmine[7][4]=passcut[7];//-0.00015; | |
398 | rdcutsvalmine[8][4]=passcut[8];//0.9; | |
399 | ||
400 | //8-12 | |
401 | passcut[7]=-0.00000; | |
402 | rdcutsvalmine[0][5]=passcut[0]; | |
403 | rdcutsvalmine[1][5]=passcut[1]; | |
404 | rdcutsvalmine[2][5]=passcut[2]; | |
405 | rdcutsvalmine[3][5]=passcut[3]; | |
406 | rdcutsvalmine[4][5]=passcut[4]; | |
407 | rdcutsvalmine[5][5]=passcut[5]; | |
408 | rdcutsvalmine[6][5]=passcut[6]; | |
409 | rdcutsvalmine[7][5]=passcut[7]; | |
410 | rdcutsvalmine[8][5]=passcut[8]; | |
411 | ||
412 | //>12 | |
413 | passcut[7]=-0.00000; | |
414 | rdcutsvalmine[0][6]=passcut[0]; | |
415 | rdcutsvalmine[1][6]=passcut[1]; | |
416 | rdcutsvalmine[2][6]=passcut[2]; | |
417 | rdcutsvalmine[3][6]=passcut[3]; | |
418 | rdcutsvalmine[4][6]=passcut[4]; | |
419 | rdcutsvalmine[5][6]=passcut[5]; | |
420 | rdcutsvalmine[6][6]=passcut[6]; | |
421 | rdcutsvalmine[7][6]=passcut[7]; | |
422 | rdcutsvalmine[8][6]=passcut[8]; | |
423 | */ | |
424 | ||
425 | Float_t cutsMatrixD0toKpiStand[nptbins][nvars]={{0.2,400.*1E-4,0.7,0.3,0.3,1000.*1E-4,1000.*1E-4,-0.00005,0.85},/* pt<0.5*/ | |
426 | {0.2,400.*1E-4,0.7,0.3,0.3,1000.*1E-4,1000.*1E-4,-0.00005,0.85},/* 0.5<pt<1*/ | |
427 | {0.2,400.*1E-4,0.7,0.4,0.4,1000.*1E-4,1000.*1E-4,-0.00005,0.85},/* 1<pt<2 */ | |
428 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00005,0.7},/* 2<pt<3 */ | |
429 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00005,0.7},/* 3<pt<4 */ | |
430 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00005,0.7},/* 4<pt<5 */ | |
431 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00005,0.7},/* 5<pt<6 */ | |
432 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,-0.00005,0.7},/* 6<pt<8 */ | |
433 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,0.0002,0.7},/* 8<pt<12 */ | |
434 | {0.2,400.*1E-4,0.7,0.7,0.7,1000.*1E-4,1000.*1E-4,0.0002,0.7}};/*pt>12 */ | |
435 | ||
6b3e3c78 | 436 | |
437 | //CREATE TRANSPOSE MATRIX...REVERSE INDICES as required by AliRDHFCuts | |
d52f7b50 | 438 | Float_t **cutsMatrixTransposeStand=new Float_t*[nvars]; |
439 | for(Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=new Float_t[nptbins]; | |
6b3e3c78 | 440 | for (Int_t ibin=0;ibin<nptbins;ibin++){ |
441 | for (Int_t ivar = 0; ivar<nvars; ivar++){ | |
d52f7b50 | 442 | cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpiStand[ibin][ivar]; |
6b3e3c78 | 443 | } |
444 | } | |
d52f7b50 | 445 | RDHFD0toKpi->SetCuts(nvars,nptbins,cutsMatrixTransposeStand); |
cbedddce | 446 | |
cbedddce | 447 | |
448 | Int_t nvarsforopt=RDHFD0toKpi->GetNVarsForOpt(); | |
d52f7b50 | 449 | Int_t dim=3; //set this!! |
cbedddce | 450 | Bool_t *boolforopt; |
451 | boolforopt=new Bool_t[nvars]; | |
452 | if(dim>nvarsforopt){ | |
453 | cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl; | |
454 | return; | |
455 | } else { | |
456 | if(dim==nvarsforopt){ | |
457 | boolforopt=RDHFD0toKpi->GetVarsForOpt(); | |
458 | }else{ | |
459 | TString *names; | |
460 | names=new TString[nvars]; | |
461 | TString answer=""; | |
462 | Int_t checktrue=0; | |
463 | names=RDHFD0toKpi->GetVarNames(); | |
464 | for(Int_t i=0;i<nvars;i++){ | |
465 | cout<<names[i]<<" for opt? (y/n)"<<endl; | |
466 | cin>>answer; | |
467 | if(answer=="y") { | |
468 | boolforopt[i]=kTRUE; | |
469 | checktrue++; | |
470 | } | |
471 | else boolforopt[i]=kFALSE; | |
472 | } | |
473 | if (checktrue!=dim) { | |
474 | cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl; | |
475 | return; | |
476 | } | |
477 | RDHFD0toKpi->SetVarsForOpt(dim,boolforopt); | |
478 | } | |
479 | } | |
480 | ||
481 | ||
482 | Float_t tighterval[dim][nptbins]; | |
d52f7b50 | 483 | //dca <- this |
cbedddce | 484 | //costhetastar |
485 | //d0d0 <-this | |
486 | //costhetapoint <-this | |
487 | ||
488 | ||
d52f7b50 | 489 | //number of steps for each variable is 4 now |
cbedddce | 490 | //set this!! |
491 | // tighterval[0][0]=0.01; | |
d52f7b50 | 492 | tighterval[0][0]=100e-4; |
493 | tighterval[1][0]=-0.0006; | |
494 | tighterval[2][0]=1.; | |
cbedddce | 495 | |
496 | // tighterval[0][1]=0.01; | |
d52f7b50 | 497 | tighterval[0][1]=100e-4; |
498 | tighterval[1][1]=-0.0007; //try with tighter in this bin | |
499 | tighterval[2][1]=1.; | |
cbedddce | 500 | |
501 | // tighterval[0][2]=0.01; | |
d52f7b50 | 502 | tighterval[0][2]=100e-4; |
503 | tighterval[1][2]=-0.0006; | |
504 | tighterval[2][2]=1.; | |
cbedddce | 505 | |
506 | // tighterval[0][3]=0.01; | |
d52f7b50 | 507 | tighterval[0][3]=100e-4; |
508 | tighterval[1][3]=-0.0006; | |
509 | tighterval[2][3]=0.95; | |
cbedddce | 510 | |
511 | // tighterval[0][4]=0.01; | |
d52f7b50 | 512 | tighterval[0][4]=100e-4; |
513 | tighterval[1][4]=-0.0006; | |
514 | tighterval[2][4]=0.95; | |
6b3e3c78 | 515 | |
516 | // tighterval[0][5]=0.01; | |
d52f7b50 | 517 | tighterval[0][5]=100e-4; |
518 | tighterval[1][5]=-0.0006; | |
519 | tighterval[2][5]=0.95; | |
6b3e3c78 | 520 | |
521 | // tighterval[0][6]=0.01; | |
d52f7b50 | 522 | tighterval[0][6]=100e-4; |
523 | tighterval[1][6]=-0.0006; | |
524 | tighterval[2][6]=0.95; | |
6b3e3c78 | 525 | |
526 | // tighterval[0][6]=0.01; | |
d52f7b50 | 527 | tighterval[0][7]=100e-4; |
528 | tighterval[1][7]=-0.0006; | |
529 | tighterval[2][7]=0.95; | |
6b3e3c78 | 530 | |
531 | // tighterval[0][6]=0.01; | |
d52f7b50 | 532 | tighterval[0][8]=100e-4; |
533 | tighterval[1][8]=-0.0006; | |
534 | tighterval[2][8]=0.95; | |
6b3e3c78 | 535 | |
536 | // tighterval[0][6]=0.01; | |
d52f7b50 | 537 | tighterval[0][9]=100e-4; |
538 | tighterval[1][9]=-0.0006; | |
539 | tighterval[2][9]=0.95; | |
cbedddce | 540 | |
541 | ||
542 | TString name=""; | |
543 | Int_t arrdim=dim*nptbins; | |
544 | cout<<"Will save "<<arrdim<<" TParameter<float>"<<endl; | |
545 | TClonesArray max("TParameter<float>",arrdim); | |
3b79985d | 546 | for(Int_t ival=0;ival<dim;ival++){ |
547 | for(Int_t jpt=0;jpt<nptbins;jpt++){ | |
548 | name=Form("par%dptbin%d",ival,jpt); | |
549 | cout<<"Setting "<<name.Data()<<" to "<<tighterval[ival][jpt]<<endl; | |
550 | new(max[jpt*dim+ival])TParameter<float>(name.Data(),tighterval[ival][jpt]); | |
cbedddce | 551 | } |
552 | } | |
6b3e3c78 | 553 | Bool_t flagPID=kTRUE; |
554 | RDHFD0toKpi->SetUsePID(flagPID); | |
d52f7b50 | 555 | RDHFD0toKpi->PrintAll(); |
6b3e3c78 | 556 | printf("Use PID? %s\n",flagPID ? "yes" : "no"); |
557 | ||
d52f7b50 | 558 | |
6b3e3c78 | 559 | //pid settings |
560 | AliAODPidHF* pidObj=new AliAODPidHF(); | |
561 | //pidObj->SetName("pid4D0"); | |
562 | Int_t mode=1; | |
563 | const Int_t nlims=2; | |
564 | Double_t plims[nlims]={0.6,0.8}; //TPC limits in momentum [GeV/c] | |
565 | Bool_t compat=kTRUE; //effective only for this mode | |
566 | Bool_t asym=kTRUE; | |
567 | Double_t sigmas[5]={2.,1.,0.,3.,0.}; //to be checked and to be modified with new implementation of setters by Rossella | |
568 | pidObj->SetAsym(asym);// if you want to use the asymmetric bands in TPC | |
569 | pidObj->SetMatch(mode); | |
570 | pidObj->SetPLimit(plims,nlims); | |
571 | pidObj->SetSigma(sigmas); | |
572 | pidObj->SetCompat(compat); | |
573 | pidObj->SetTPC(kTRUE); | |
574 | pidObj->SetTOF(kTRUE); | |
575 | RDHFD0toKpi->SetPidHF(pidObj); | |
576 | ||
6b3e3c78 | 577 | RDHFD0toKpi->SetUseDefaultPID(kFALSE); //to use the AliAODPidHF |
d52f7b50 | 578 | |
579 | //activate pileup rejection | |
580 | RDHFD0toKpi->SetOptPileup(AliRDHFCuts::kRejectPileupEvent); | |
581 | ||
6b3e3c78 | 582 | |
d52f7b50 | 583 | TFile* fout=new TFile("cuts4SignifMaxim10binspileup.root","recreate"); //set this!! |
cbedddce | 584 | fout->cd(); |
585 | RDHFD0toKpi->Write(); | |
586 | max.Write(); | |
587 | fout->Close(); | |
588 | ||
589 | } | |
3b79985d | 590 |