]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/macros/makeTFile4CutsD0toKpi.C
Update (Chiara)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / macros / makeTFile4CutsD0toKpi.C
CommitLineData
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
20void 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
243void 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