6 #include <TClonesArray.h>
7 #include <TParameter.h>
24 gSystem->Load(
"libANALYSISalice");
27 gSystem->Load(
"libPWGHFvertexingHF");
31 RDHFCharm4Prong->SetName(
"Charm4ProngCuts");
32 RDHFCharm4Prong->SetTitle(
"Cuts for D0 analysis");
34 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
35 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
37 esdTrackCuts->SetRequireTPCRefit(kTRUE);
38 esdTrackCuts->SetRequireITSRefit(kTRUE);
39 esdTrackCuts->SetMinNClustersITS(4);
41 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
42 AliESDtrackCuts::kAny);
44 esdTrackCuts->SetMinDCAToVertexXY(0.);
45 esdTrackCuts->SetPtRange(0.3,1.e10);
63 RDHFCharm4Prong->
SetPtBins(nptbins+1,ptbins);
67 rdcutsvalmine=
new Float_t*[nvars];
68 for(
Int_t iv=0;iv<nvars;iv++){
85 rdcutsvalmine[0][0]=0.2;
86 rdcutsvalmine[1][0]=0.025;
87 rdcutsvalmine[2][0]=0.0900;
88 rdcutsvalmine[3][0]=0.0900;
89 rdcutsvalmine[4][0]=0.0600;
90 rdcutsvalmine[5][0]=0.995;
91 rdcutsvalmine[6][0]=0.;
92 rdcutsvalmine[7][0]=0.1;
93 rdcutsvalmine[8][0]=0.;
95 rdcutsvalmine[0][1]=0.2;
96 rdcutsvalmine[1][1]=0.015;
97 rdcutsvalmine[2][1]=0.1200;
98 rdcutsvalmine[3][1]=0.1000;
99 rdcutsvalmine[4][1]=0.0850;
100 rdcutsvalmine[5][1]=0.99;
101 rdcutsvalmine[6][1]=0.;
102 rdcutsvalmine[7][1]=0.1;
103 rdcutsvalmine[8][1]=0.;
105 rdcutsvalmine[0][2]=0.2;
106 rdcutsvalmine[1][2]=0.025;
107 rdcutsvalmine[2][2]=0.0975;
108 rdcutsvalmine[3][2]=0.0900;
109 rdcutsvalmine[4][2]=0.0800;
110 rdcutsvalmine[5][2]=0.99;
111 rdcutsvalmine[6][2]=0.;
112 rdcutsvalmine[7][2]=0.1;
113 rdcutsvalmine[8][2]=0.;
115 rdcutsvalmine[0][3]=0.2;
116 rdcutsvalmine[1][3]=0.015;
117 rdcutsvalmine[2][3]=0.0975;
118 rdcutsvalmine[3][3]=0.0700;
119 rdcutsvalmine[4][3]=0.0750;
120 rdcutsvalmine[5][3]=0.9825;
121 rdcutsvalmine[6][3]=0.;
122 rdcutsvalmine[7][3]=0.1;
123 rdcutsvalmine[8][3]=0.;
125 rdcutsvalmine[0][4]=rdcutsvalmine[0][3];
126 rdcutsvalmine[1][4]=rdcutsvalmine[1][3];
127 rdcutsvalmine[2][4]=rdcutsvalmine[2][3];
128 rdcutsvalmine[3][4]=rdcutsvalmine[3][3];
129 rdcutsvalmine[4][4]=rdcutsvalmine[4][3];
130 rdcutsvalmine[5][4]=rdcutsvalmine[5][3];
131 rdcutsvalmine[6][4]=rdcutsvalmine[6][3];
132 rdcutsvalmine[7][4]=rdcutsvalmine[7][3];
133 rdcutsvalmine[8][4]=rdcutsvalmine[8][3];
135 RDHFCharm4Prong->
SetCuts(nvars,nptbins,rdcutsvalmine);
136 cout<<
"This is the odject I'm going to save:"<<endl;
138 TFile*
fout=
new TFile(
"Charm4ProngCutsDef_16GeV.root",
"recreate");
140 RDHFCharm4Prong->Write();
157 gSystem->Load(
"libANALYSISalice");
160 gSystem->Load(
"libPWGHFvertexingHF");
164 RDHFCharm4Prong->SetName(
"loosercuts");
165 RDHFCharm4Prong->SetTitle(
"Cuts for significance maximization");
167 AliESDtrackCuts* esdTrackCuts=
new AliESDtrackCuts();
168 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
170 esdTrackCuts->SetRequireTPCRefit(kTRUE);
171 esdTrackCuts->SetRequireITSRefit(kTRUE);
175 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
176 esdTrackCuts->SetMinDCAToVertexXY(0.);
177 esdTrackCuts->SetEtaRange(-0.8,0.8);
178 esdTrackCuts->SetPtRange(0.3,1.e10);
193 RDHFCharm4Prong->
SetPtBins(nptbins+1,ptbins);
196 rdcutsvalmine=
new Float_t*[nvars];
197 for(
Int_t iv=0;iv<nvars;iv++){
213 Float_t cutsMatrixD0toKpipipiStand[
nptbins][nvars]={{0.2,0.04,0.04,0.04,0.04,0.90,0.,0.1,0.},
215 {0.2,0.04,0.04,0.04,0.04,0.90,0.,0.1,0.},
217 {0.2,0.04,0.04,0.04,0.04,0.90,0.,0.1,0.},
219 {0.2,0.04,0.04,0.04,0.04,0.90,0.,0.1,0.},
221 {0.2,0.04,0.04,0.04,0.04,0.90,0.,0.1,0.}};
225 for(
Int_t iv=0;iv<nvars;iv++)cutsMatrixTransposeStand[iv]=
new Float_t[nptbins];
227 for (
Int_t ivar = 0; ivar<nvars; ivar++){
228 cutsMatrixTransposeStand[ivar][ibin]=cutsMatrixD0toKpipipiStand[ibin][ivar];
231 RDHFCharm4Prong->
SetCuts(nvars,nptbins,cutsMatrixTransposeStand);
236 boolforopt=
new Bool_t[nvars];
238 cout<<
"Number of variables for optimization has probably changed, check and edit accordingly"<<endl;
241 if(dim==nvarsforopt){
249 for(
Int_t i=0;i<nvars;i++){
250 cout<<names[i]<<
" for opt? (y/n)"<<endl;
256 else boolforopt[i]=kFALSE;
258 if (checktrue!=dim) {
259 cout<<
"Error! You set "<<checktrue<<
" kTRUE instead of "<<dim<<endl;
274 tighterval[0][0]=0.025;
275 tighterval[1][0]=0.09;
276 tighterval[2][0]=0.09;
277 tighterval[3][0]=0.06;
278 tighterval[4][0]=0.955;
280 tighterval[0][1]=0.015;
281 tighterval[1][1]=0.12;
282 tighterval[2][1]=0.10;
283 tighterval[3][1]=0.085;
284 tighterval[4][1]=0.99;
286 tighterval[0][2]=0.025;
287 tighterval[1][2]=0.0975;
288 tighterval[2][2]=0.09;
289 tighterval[3][2]=0.08;
290 tighterval[4][2]=0.99;
292 tighterval[0][3]=0.015;
293 tighterval[1][3]=0.0975;
294 tighterval[2][3]=0.07;
295 tighterval[3][3]=0.075;
296 tighterval[4][3]=0.9825;
298 tighterval[0][4]=0.015;
299 tighterval[1][4]=0.0975;
300 tighterval[2][4]=0.07;
301 tighterval[3][4]=0.075;
302 tighterval[4][4]=0.9825;
306 cout<<
"Will save "<<arrdim<<
" TParameter<float>"<<endl;
307 TClonesArray max(
"TParameter<float>",arrdim);
308 for(
Int_t ival=0;ival<dim;ival++){
310 name=Form(
"par%dptbin%d",ival,jpt);
311 cout<<
"Setting "<<name.Data()<<
" to "<<tighterval[ival][jpt]<<endl;
320 printf(
"Use PID? %s\n",flagPID ?
"yes" :
"no");
364 TFile*
fout=
new TFile(
"Charm4ProngCutsForMaxim.root",
"recreate");
366 RDHFCharm4Prong->Write();
TString * GetVarNames() const
void SetCuts(Int_t nVars, Int_t nPtBins, Float_t **cutsRD)
void MakeCuts4Charm4Prong()
Bool_t * GetVarsForOpt() const
void MakeCuts4Charm4ProngForMaxim()
Int_t GetNVarsForOpt() const
void SetVarsForOpt(Int_t nVars, Bool_t *forOpt)
void SetUsePID(Bool_t flag=kTRUE)
virtual void PrintAll() const
void SetRemoveDaughtersFromPrim(Bool_t removeDaughtersPrim)
void SetPtBins(Int_t nPtBinLimits, Float_t *ptBinLimits)
void AddTrackCuts(const AliESDtrackCuts *cuts)
TFile * fout
input train file
void SetOptPileup(Int_t opt=0)