3 #include <AliRDHFCutsD0toKpi.h>
4 #include <TClonesArray.h>
5 #include <TParameter.h>
7 //macro to make a .root file which contains an AliRDHFCutsD0toKpi with loose set of cuts (for significance maximization) and TParameter with the tighest value of these cuts
8 //Needed for AliAnalysisTaskSESignificance
11 //Set hard coded commentet with //set this!!
12 //.x makeTFile4CutsD0toKpi.C++
14 //similar macros for the other D mesons
16 //Author: Chiara Bianchin, cbianchi@pd.infn.it
18 void makeTFile4CutsD0toKpi(){
20 AliRDHFCutsD0toKpi* RDHFD0toKpi=new AliRDHFCutsD0toKpi();
21 RDHFD0toKpi->SetName("loosercuts");
22 RDHFD0toKpi->SetTitle("Cuts for significance maximization");
24 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
25 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
27 esdTrackCuts->SetRequireTPCRefit(kTRUE);
28 esdTrackCuts->SetRequireITSRefit(kTRUE);
29 esdTrackCuts->SetMinNClustersITS(4);
31 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
32 esdTrackCuts->SetMinDCAToVertexXY(0.);
33 esdTrackCuts->SetEtaRange(-0.9,0.9);
34 esdTrackCuts->SetPtRange(0.1,1.e10);
36 RDHFD0toKpi->AddTrackCuts(esdTrackCuts);
40 const Int_t nptbins=5;
41 Float_t ptbins[nptbins+1];
49 RDHFD0toKpi->SetPtBins(nptbins+1,ptbins);
52 Float_t** rdcutsvalmine;
53 rdcutsvalmine=new Float_t*[nvars];
54 for(Int_t iv=0;iv<nvars;iv++){
55 rdcutsvalmine[iv]=new Float_t[nptbins];
58 //setting my cut values
60 // printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]);
61 // printf(" dca [cm] < %f\n",fD0toKpiCuts[1]);
62 // printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]);
63 // printf(" pTK [GeV/c] > %f\n",fD0toKpiCuts[3]);
64 // printf(" pTpi [GeV/c] > %f\n",fD0toKpiCuts[4]);
65 // printf(" |d0K| [cm] < %f\n",fD0toKpiCuts[5]);
66 // printf(" |d0pi| [cm] < %f\n",fD0toKpiCuts[6]);
67 // printf(" d0d0 [cm^2] < %f\n",fD0toKpiCuts[7]);
68 // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]);
71 //setting PPR cut values
72 rdcutsvalPPR[0][0]=0.7;
73 rdcutsvalPPR[1][0]=0.04;
74 rdcutsvalPPR[2][0]=0.8;
75 rdcutsvalPPR[3][0]=0.5;
76 rdcutsvalPPR[4][0]=0.5;
77 rdcutsvalPPR[5][0]=0.05;
78 rdcutsvalPPR[6][0]=0.05;
79 rdcutsvalPPR[7][0]=-0.0002;
80 rdcutsvalPPR[8][0]=0.5;
82 rdcutsvalPPR[0][1]=rdcutsvalPPR[0][2]=0.7;
83 rdcutsvalPPR[1][1]=rdcutsvalPPR[1][2]=0.02;
84 rdcutsvalPPR[2][1]=rdcutsvalPPR[2][2]=0.8;
85 rdcutsvalPPR[3][1]=rdcutsvalPPR[3][2]=0.7;
86 rdcutsvalPPR[4][1]=rdcutsvalPPR[4][2]=0.7;
87 rdcutsvalPPR[5][1]=rdcutsvalPPR[5][2]=0.05;
88 rdcutsvalPPR[6][1]=rdcutsvalPPR[6][2]=0.05;
89 rdcutsvalPPR[7][1]=rdcutsvalPPR[7][2]=-0.0002;
90 rdcutsvalPPR[8][1]=rdcutsvalPPR[8][2]=0.6;
92 rdcutsvalPPR[0][3]=0.7;
93 rdcutsvalPPR[1][3]=0.02;
94 rdcutsvalPPR[2][3]=0.8;
95 rdcutsvalPPR[3][3]=0.7;
96 rdcutsvalPPR[4][3]=0.7;
97 rdcutsvalPPR[5][3]=0.05;
98 rdcutsvalPPR[6][3]=0.05;
99 rdcutsvalPPR[7][3]=-0.0001;
100 rdcutsvalPPR[8][3]=0.8;
102 rdcutsvalPPR[0][4]=0.7;
103 rdcutsvalPPR[1][4]=0.02;
104 rdcutsvalPPR[2][4]=0.8;
105 rdcutsvalPPR[3][4]=0.7;
106 rdcutsvalPPR[4][4]=0.7;
107 rdcutsvalPPR[5][4]=0.05;
108 rdcutsvalPPR[6][4]=0.05;
109 rdcutsvalPPR[7][4]=-0.00005;
110 rdcutsvalPPR[8][4]=0.8;
112 //setting my cut values
114 rdcutsvalmine[0][0]=0.065;
115 rdcutsvalmine[1][0]=0.04;
116 rdcutsvalmine[2][0]=0.8;
117 rdcutsvalmine[3][0]=0.7;
118 rdcutsvalmine[4][0]=0.7;
119 rdcutsvalmine[5][0]=1000.*1E-4;
120 rdcutsvalmine[6][0]=1000.*1E-4;
121 rdcutsvalmine[7][0]=-0.0004;
122 rdcutsvalmine[8][0]=0.71;
124 rdcutsvalmine[0][1]=0.065;
125 rdcutsvalmine[1][1]=0.04;
126 rdcutsvalmine[2][1]=0.8;
127 rdcutsvalmine[3][1]=0.7;
128 rdcutsvalmine[4][1]=0.7;
129 rdcutsvalmine[5][1]=1.;
130 rdcutsvalmine[6][1]=1.;
131 rdcutsvalmine[7][1]=-0.0003;
132 rdcutsvalmine[8][1]=0.79;
134 rdcutsvalmine[0][2]=0.65;
135 rdcutsvalmine[1][2]=200.*1E-4;
136 rdcutsvalmine[2][2]=0.8;
137 rdcutsvalmine[3][2]=0.7;
138 rdcutsvalmine[4][2]=0.7;
139 rdcutsvalmine[5][2]=1000.*1E-4;
140 rdcutsvalmine[6][2]=1000.*1E-4;
141 rdcutsvalmine[7][2]=-0.0001;
142 rdcutsvalmine[8][2]=0.83;
144 rdcutsvalmine[0][3]=0.65;
145 rdcutsvalmine[1][3]=200.*1E-4;
146 rdcutsvalmine[2][3]=0.8;
147 rdcutsvalmine[3][3]=0.7;
148 rdcutsvalmine[4][3]=0.7;
149 rdcutsvalmine[5][3]=1000.*1E-4;
150 rdcutsvalmine[6][3]=1000.*1E-4;
151 rdcutsvalmine[7][3]=-0.00005;
152 rdcutsvalmine[8][3]=0.78;
154 rdcutsvalmine[0][4]=0.65;
155 rdcutsvalmine[1][4]=200.*1E-4;
156 rdcutsvalmine[2][4]=0.8;
157 rdcutsvalmine[3][4]=0.7;
158 rdcutsvalmine[4][4]=0.7;
159 rdcutsvalmine[5][4]=1000.*1E-4;
160 rdcutsvalmine[6][4]=1000.*1E-4;
161 rdcutsvalmine[7][4]=-0.00001;
162 rdcutsvalmine[8][4]=0.79;
165 RDHFD0toKpi->SetCuts(nvars,nptbins,rdcutsvalmine);
167 Int_t nvarsforopt=RDHFD0toKpi->GetNVarsForOpt();
168 Int_t dim=2; //set this!!
170 boolforopt=new Bool_t[nvars];
172 cout<<"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;
175 if(dim==nvarsforopt){
176 boolforopt=RDHFD0toKpi->GetVarsForOpt();
179 names=new TString[nvars];
182 names=RDHFD0toKpi->GetVarNames();
183 for(Int_t i=0;i<nvars;i++){
184 cout<<names[i]<<" for opt? (y/n)"<<endl;
190 else boolforopt[i]=kFALSE;
192 if (checktrue!=dim) {
193 cout<<"Error! You set "<<checktrue<<" kTRUE instead of "<<dim<<endl;
196 RDHFD0toKpi->SetVarsForOpt(dim,boolforopt);
201 Float_t tighterval[dim][nptbins];
205 //costhetapoint <-this
208 //number of steps for each variable is 4 now
210 // tighterval[0][0]=0.01;
211 // tighterval[1][0]=0.8;
212 tighterval[0][0]=-0.0007;
213 tighterval[1][0]=0.99;
215 // tighterval[0][1]=0.01;
216 // tighterval[1][1]=0.8;
217 tighterval[0][1]=-0.0006;
218 tighterval[1][1]=0.99;
220 // tighterval[0][2]=0.01;
221 // tighterval[1][2]=0.8;
222 tighterval[0][2]=-0.0004;
223 tighterval[1][2]=0.99;
225 // tighterval[0][3]=0.01;
226 // tighterval[1][3]=0.8;
227 tighterval[0][3]=-0.00035;
228 tighterval[1][3]=0.98;
230 // tighterval[0][4]=0.01;
231 // tighterval[1][4]=0.8;
232 tighterval[0][4]=-0.0003;
233 tighterval[1][4]=0.99;
237 Int_t arrdim=dim*nptbins;
238 cout<<"Will save "<<arrdim<<" TParameter<float>"<<endl;
239 TClonesArray max("TParameter<float>",arrdim);
240 for(Int_t i=0;i<dim;i++){
241 for(Int_t j=0;j<nptbins;j++){
242 name=Form("par%dptbin%d",i,j);
243 cout<<"Setting "<<name.Data()<<" to "<<tighterval[i][j]<<endl;
244 new(max[i*nptbins+j])TParameter<float>(name.Data(),tighterval[i][j]);
248 TFile* fout=new TFile("cuts4SignifMaxim.root","recreate"); //set this!!
250 RDHFD0toKpi->Write();