3 #include <AliRDHFCutsDplustoKpipi.h>
4 #include <TClonesArray.h>
5 #include <TParameter.h>
7 //macro to make a .root file which contains an AliRDHFCutsDplustoKpipi with loose set of cuts (for significance maximization) and TParameter with the tighest value of these cuts
8 //Needed for AliAnalysisTaskSEDplus, AliCFTaskVertexingHF3Prong, AliAnalysisTaskSESignificance
11 //Set hard coded commented with //set this!!
13 //.L makeTFile4CutsDplustoKpipi.C
14 // makeInputAliAnalysisTaskSEDplus()
15 // makeInputAliAnalysisTaskSESignificanceMaximization()
17 //similar macros for the other D mesons
19 //Author: Chiara Bianchin, cbianchi@pd.infn.it
20 // Giacomo Ortona, ortona@to.infn.it
21 // Renu Bala [Dplus Analysis and CF]
23 void makeInputAliAnalysisTaskSEDplusPP(){
25 // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g");
28 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
29 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
31 esdTrackCuts->SetRequireTPCRefit(kTRUE);
32 esdTrackCuts->SetRequireITSRefit(kTRUE);
33 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
34 esdTrackCuts->SetMinNClustersTPC(70);
35 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
36 AliESDtrackCuts::kAny);
37 // default is kBoth, otherwise kAny
38 esdTrackCuts->SetMinDCAToVertexXY(0.);
39 esdTrackCuts->SetPtRange(0.3,1.e10);
43 const Int_t nptbins=14;
45 ptbins=new Float_t[nptbins+1];
66 anacutsval=new Float_t*[nvars];
68 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
69 //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
71 for(Int_t ipt=0;ipt<nptbins;ipt++){
72 anacutsval[ic][ipt]=0.2;
75 for(Int_t ipt=3;ipt<nptbins;ipt++){
76 anacutsval[ic][ipt]=0.4;
83 for(Int_t ipt=3;ipt<nptbins;ipt++){
84 anacutsval[ic][ipt]=0.4;
92 for(Int_t ipt=0;ipt<nptbins;ipt++){
93 anacutsval[ic][ipt]=0.;
97 for(Int_t ipt=0;ipt<nptbins;ipt++){
98 anacutsval[ic][ipt]=0.;
102 for(Int_t ipt=0;ipt<nptbins;ipt++){
103 anacutsval[ic][ipt]=0.01;
108 for(Int_t ipt=5;ipt<nptbins;ipt++){
109 anacutsval[ic][ipt]=0.023333;
112 anacutsval[6][0]=0.022100;
113 anacutsval[6][1]=0.022100;
114 anacutsval[6][2]=0.034;
115 anacutsval[6][3]=0.020667;
116 anacutsval[6][4]=0.020667;
120 for(Int_t ipt=5;ipt<nptbins;ipt++){
121 anacutsval[ic][ipt]=0.115;
124 anacutsval[7][0]=0.08;
125 anacutsval[7][1]=0.08;
126 anacutsval[7][2]=0.09;
127 anacutsval[7][3]=0.095;
128 anacutsval[7][4]=0.095;
131 for(Int_t ipt=3;ipt<nptbins;ipt++){
132 anacutsval[ic][ipt]=0.5;
135 anacutsval[8][0]=0.5;
136 anacutsval[8][1]=0.5;
137 anacutsval[8][2]=1.0;
141 for(Int_t ipt=9;ipt<nptbins;ipt++){
142 anacutsval[ic][ipt]=0.90;
145 anacutsval[9][0]=0.95;
146 anacutsval[9][1]=0.95;
147 anacutsval[9][2]=0.95;
148 anacutsval[9][3]=0.95;
149 anacutsval[9][4]= 0.95;
150 anacutsval[9][5]=0.92;
151 anacutsval[9][6]=0.92;
152 anacutsval[9][7]=0.92;
153 anacutsval[9][8]=0.92;
157 for(Int_t ipt=3;ipt<nptbins;ipt++){
158 anacutsval[ic][ipt]=0.000883;
161 anacutsval[10][0]=0.0055;
162 anacutsval[10][1]=0.0055;
163 anacutsval[10][2]= 0.0028;
169 for(Int_t ipt=0;ipt<nptbins;ipt++){
170 anacutsval[ic][ipt]=10000000000.;
174 for(Int_t ipt=0;ipt<nptbins;ipt++){
175 anacutsval[ic][ipt]=0.;
179 for(Int_t ipt=0;ipt<nptbins;ipt++){
180 anacutsval[ic][ipt]=0.;
186 AliRDHFCutsDplustoKpipi* analysiscuts=new AliRDHFCutsDplustoKpipi();
187 analysiscuts->SetName("AnalysisCuts");
188 analysiscuts->SetTitle("Cuts for Dplus Analysis and CF");
189 analysiscuts->SetPtBins(nptbins+1,ptbins);
190 analysiscuts->SetCuts(nvars,nptbins,anacutsval);
191 analysiscuts->AddTrackCuts(esdTrackCuts);
192 analysiscuts->SetUsePID(kTRUE);
193 analysiscuts->SetUseImpParProdCorrCut(kFALSE);
194 cout<<"This is the odject I'm going to save:"<<nptbins<<endl;
196 analysiscuts->PrintAll();
197 TFile* fout=new TFile("DplustoKpipiCuts.root","recreate");
199 analysiscuts->Write();
210 void makeInputAliAnalysisTaskSEDplusPbPb(){
212 // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG3/vertexingH/macros -g");
214 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
215 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
217 esdTrackCuts->SetRequireTPCRefit(kTRUE);
218 esdTrackCuts->SetRequireITSRefit(kTRUE);
219 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
220 esdTrackCuts->SetMinNClustersTPC(70);
221 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
222 AliESDtrackCuts::kAny);
223 // default is kBoth, otherwise kAny
224 esdTrackCuts->SetMinDCAToVertexXY(0.);
225 esdTrackCuts->SetPtRange(0.8,1.e10);
228 //centrality selection (Pb-Pb)
229 Float_t minc=0.,maxc=20.;
230 const Int_t nptbins=12;
232 ptbins=new Float_t[nptbins+1];
246 const Int_t nvars=14;
251 Float_t** anacutsval;
252 anacutsval=new Float_t*[nvars];
253 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
257 for(Int_t ipt=0;ipt<nptbins;ipt++){
258 anacutsval[ic][ipt]=0.2;
264 for(Int_t ipt=7;ipt<nptbins;ipt++){
265 anacutsval[1][ipt]=1.0;
268 anacutsval[1][0]=0.8;
269 anacutsval[1][1]=0.8;
270 anacutsval[1][2]=0.8;
271 anacutsval[1][3]=0.8;
272 anacutsval[1][4]=0.9;
273 anacutsval[1][5]=0.9;
274 anacutsval[1][6]=0.8;
280 for(Int_t ipt=0;ipt<nptbins;ipt++){
281 anacutsval[ic][ipt]=0.8;
288 for(Int_t ipt=0;ipt<nptbins;ipt++){
289 anacutsval[ic][ipt]=0.;
292 for(Int_t ipt=0;ipt<nptbins;ipt++){
293 anacutsval[ic][ipt]=0.;
296 for(Int_t ipt=0;ipt<nptbins;ipt++){
297 anacutsval[ic][ipt]=0.01;
302 for(Int_t ipt=5;ipt<nptbins;ipt++){
303 anacutsval[ic][ipt]=0.023333;
305 anacutsval[6][0]=0.022100;
306 anacutsval[6][1]=0.022100;
307 anacutsval[6][2]=0.034;
308 anacutsval[6][3]=0.020667;
309 anacutsval[6][4]=0.020667;
313 for(Int_t ipt=7;ipt<nptbins;ipt++){
314 anacutsval[ic][ipt]=0.19;
317 anacutsval[7][0]=0.08;
318 anacutsval[7][1]=0.08;
319 anacutsval[7][2]=0.17;
320 anacutsval[7][3]=0.14;
321 anacutsval[7][4]=0.14;
322 anacutsval[7][5]=0.19;
323 anacutsval[7][6]=0.14;
329 for(Int_t ipt=5;ipt<nptbins;ipt++){
330 anacutsval[ic][ipt]=2.0;
333 anacutsval[8][0]=0.8;
334 anacutsval[8][1]=0.8;
335 anacutsval[8][2]=1.1;
336 anacutsval[8][3]=0.5;
337 anacutsval[8][4]=0.5;
342 for(Int_t ipt=7;ipt<nptbins;ipt++){
343 anacutsval[ic][ipt]=0.997;
346 anacutsval[9][0]=0.995;
347 anacutsval[9][1]=0.995;
348 anacutsval[9][2]=0.997;
349 anacutsval[9][3]=0.998;
350 anacutsval[9][4]= 0.998;
351 anacutsval[9][5]=0.995;
352 anacutsval[9][6]=0.995;
360 for(Int_t ipt=3;ipt<nptbins;ipt++){
361 anacutsval[ic][ipt]=0.000883;
364 anacutsval[10][0]=0.0055;
365 anacutsval[10][1]=0.0055;
366 anacutsval[10][2]= 0.0028;
371 for(Int_t ipt=0;ipt<nptbins;ipt++){
372 anacutsval[ic][ipt]=10000000000.;
377 for(Int_t ipt=7;ipt<nptbins;ipt++){
378 anacutsval[ic][ipt]=0.;
381 anacutsval[12][0]=0.;
382 anacutsval[12][1]=0.;
384 anacutsval[12][2]=0.;
385 anacutsval[12][3]=12.;
386 anacutsval[12][4]=12.;
387 anacutsval[12][5]=12.0;
388 anacutsval[12][6]=10.;
393 for(Int_t ipt=7;ipt<nptbins;ipt++){
394 anacutsval[ic][ipt]=0.;
397 anacutsval[13][0]=0.;
398 anacutsval[13][1]=0.;
400 anacutsval[13][2]=0.;
401 anacutsval[13][3]=0.998571;
402 anacutsval[13][4]=0.998571;
403 anacutsval[13][5]=0.998571;
404 anacutsval[13][6]=0.997143;
409 AliRDHFCutsDplustoKpipi* analysiscuts=new AliRDHFCutsDplustoKpipi();
410 analysiscuts->SetName("AnalysisCuts");
411 analysiscuts->SetTitle("Cuts for Dplus Analysis and CF");
412 analysiscuts->SetPtBins(nptbins+1,ptbins);
413 analysiscuts->SetCuts(nvars,nptbins,anacutsval);
414 analysiscuts->AddTrackCuts(esdTrackCuts);
416 analysiscuts->SetUsePID(kTRUE);
417 analysiscuts->SetUseImpParProdCorrCut(kFALSE);
418 analysiscuts->SetOptPileup(kFALSE);
419 analysiscuts->SetUseAOD049(kTRUE);
420 analysiscuts->SetMinCentrality(minc);
421 analysiscuts->SetMaxCentrality(maxc);
422 cent=Form("%.0f%.0f",minc,maxc);
423 analysiscuts->SetUseCentrality(AliRDHFCuts::kCentV0M); //kCentOff,kCentV0M,kCentTRK,kCentTKL,kCentCL1,kCentInvalid
424 analysiscuts->SetMinPtCandidate(3.);
425 analysiscuts->SetMaxPtCandidate(10000.);
426 cout<<"This is the odject I'm going to save:"<<nptbins<<endl;
428 analysiscuts->PrintAll();
429 TFile* fout=new TFile("DplustoKpipiCuts.root","recreate");
431 analysiscuts->Write();
438 void makeInputAliAnalysisTaskSESignificanceMaximization(){
440 AliRDHFCutsDplustoKpipi* RDHFDplustoKpipi=new AliRDHFCutsDplustoKpipi();
441 RDHFDplustoKpipi->SetName("loosercuts");
442 RDHFDplustoKpipi->SetTitle("Cuts for significance maximization");
444 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
445 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
447 esdTrackCuts->SetRequireTPCRefit(kTRUE);
448 esdTrackCuts->SetRequireITSRefit(kTRUE);
449 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
450 esdTrackCuts->SetMinNClustersTPC(70);
451 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
452 AliESDtrackCuts::kAny);
453 // default is kBoth, otherwise kAny
454 esdTrackCuts->SetMinDCAToVertexXY(0.);
455 esdTrackCuts->SetPtRange(0.3,1.e10);
457 RDHFDplustoKpipi->AddTrackCuts(esdTrackCuts);
459 const Int_t nvars=12;
461 const Int_t nptbins=4;
463 ptbins=new Float_t[nptbins+1];
470 RDHFDplustoKpipi->SetPtBins(nptbins+1,ptbins);
472 //setting my cut values
474 Float_t** prodcutsval;
475 prodcutsval=new Float_t*[nvars];
476 for(Int_t ic=0;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];}
477 for(Int_t ipt=0;ipt<nptbins;ipt++){
478 prodcutsval[0][ipt]=0.2;
479 prodcutsval[1][ipt]=0.4;
480 prodcutsval[2][ipt]=0.4;
481 prodcutsval[3][ipt]=0.;
482 prodcutsval[4][ipt]=0.;
483 prodcutsval[5][ipt]=0.01;
484 prodcutsval[6][ipt]=0.06;
485 prodcutsval[7][ipt]=0.02;
486 prodcutsval[8][ipt]=0.;
487 prodcutsval[9][ipt]=0.85;
488 prodcutsval[10][ipt]=0.;
489 prodcutsval[11][ipt]=10000000.0;
493 RDHFDplustoKpipi->SetCuts(nvars,nptbins,prodcutsval);
495 Int_t nvarsforopt=RDHFDplustoKpipi->GetNVarsForOpt();
496 const Int_t dim=5; //set this!!
498 boolforopt=new Bool_t[nvars];
500 cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;
503 if(dim==nvarsforopt){
504 boolforopt=RDHFDplustoKpipi->GetVarsForOpt();
507 names=new TString[nvars];
510 names=RDHFDplustoKpipi->GetVarNames();
511 for(Int_t i=0;i<nvars;i++){
512 cout<<names[i]<<" for opt? (y/n)"<<endl;
518 else boolforopt[i]=kFALSE;
520 if (checktrue!=dim) {
521 cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl;
524 RDHFDplustoKpipi->SetVarsForOpt(dim,boolforopt);
529 Float_t tighterval[dim][nptbins];
536 //number of steps for each variable is 4 now
539 // tighterval[var][ptbin]
540 tighterval[0][0]=0.022100;
541 tighterval[0][1]=0.034;
542 tighterval[0][2]=0.020667;
543 tighterval[0][3]=0.023333;
545 tighterval[1][0]=0.08;
546 tighterval[1][1]=0.09;
547 tighterval[1][2]=0.095;
548 tighterval[1][3]=0.115;
555 tighterval[3][0]=0.979;
556 tighterval[3][1]=0.9975;
557 tighterval[3][2]=0.995;
558 tighterval[3][3]=0.9975;
560 tighterval[4][0]=0.0055;
561 tighterval[4][1]=0.0028;
562 tighterval[4][2]=0.000883;
563 tighterval[4][3]=0.000883;
566 Int_t arrdim=dim*nptbins;
567 TClonesArray max("TParameter<float>",arrdim);
568 for (Int_t ipt=0;ipt<nptbins;ipt++){
569 for(Int_t ival=0;ival<dim;ival++){
570 name=Form("par%dptbin%d",ival,ipt);
571 new(max[ipt*dim+ival])TParameter<float>(name.Data(),tighterval[ival][ipt]);
575 TFile* fout=new TFile("cuts4SignifMaximDplus.root","recreate"); //set this!!
577 RDHFDplustoKpipi->Write();