59fc24a8e0547c83cee09920543021891208ec9c
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / macros / makeTFile4CutsLctopKpi.C
1 #include <Riostream.h>
2 #include <TFile.h>
3 #include <AliRDHFCutsLctopKpi.h>
4 #include <AliAODPidHF.h>
5 #include <TClonesArray.h>
6 #include <TParameter.h>
7
8
9 //Use:
10 //Set hard coded commentet with //set this!!
11 // root[] .L makeInput...C++
12 // root[] makeInputAliAnalysisTaskSE...()
13 //similar macros for the other D mesons
14
15 //Author: Rosa Romita, r.romita@gsi.de
16
17
18 //macro to make a .root file which contains an AliRDHFCutsLctopKpi for AliAnalysisTaskSELambdac task
19
20 void makeInputAliAnalysisTaskSELctopKpi(){
21
22   AliRDHFCutsLctopKpi* RDHFLctopKpiProd=new AliRDHFCutsLctopKpi();
23   RDHFLctopKpiProd->SetName("LctopKpiProdCuts");
24   RDHFLctopKpiProd->SetTitle("Production cuts for Lc analysis");
25
26   AliRDHFCutsLctopKpi* RDHFLctopKpiAn=new AliRDHFCutsLctopKpi();
27   RDHFLctopKpiAn->SetName("LctopKpiAnalysisCuts");
28   RDHFLctopKpiAn->SetTitle("Analysis cuts for Lc analysis");
29
30   AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
31   esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
32   //default
33   esdTrackCuts->SetRequireTPCRefit(kTRUE);
34   esdTrackCuts->SetRequireITSRefit(kTRUE);
35   esdTrackCuts->SetMinNClustersITS(4); // default is 5
36   esdTrackCuts->SetMinNClustersTPC(70);
37   esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
38                                          AliESDtrackCuts::kAny); 
39  // default is kBoth, otherwise kAny
40   esdTrackCuts->SetMinDCAToVertexXY(0.);
41   esdTrackCuts->SetPtRange(0.3,1.e10);
42
43
44   RDHFLctopKpiProd->AddTrackCuts(esdTrackCuts);
45   RDHFLctopKpiAn->AddTrackCuts(esdTrackCuts);
46
47   const Int_t nvars=12;
48
49   const Int_t nptbins=4;
50   Float_t* ptbins;
51   ptbins=new Float_t[nptbins+1];
52   ptbins[0]=0.;
53   ptbins[1]=2.;
54   ptbins[2]=3.;
55   ptbins[3]=4.;
56   ptbins[4]=9999.;
57   
58
59   Float_t** prodcutsval;
60   prodcutsval=new Float_t*[nvars];
61   for(Int_t iv=0;iv<nvars;iv++){
62     prodcutsval[iv]=new Float_t[nptbins];
63   }
64
65   for(Int_t ipt=0;ipt<nptbins;ipt++){
66     prodcutsval[0][ipt]=0.18;
67     prodcutsval[1][ipt]=0.4;
68     prodcutsval[2][ipt]=0.5;
69     prodcutsval[3][ipt]=0.;
70     prodcutsval[4][ipt]=0.;
71     prodcutsval[5][ipt]=0.01;
72     prodcutsval[6][ipt]=0.06;
73     prodcutsval[7][ipt]=0.005;
74     prodcutsval[8][ipt]=0.;
75     prodcutsval[9][ipt]=0.;
76     prodcutsval[10][ipt]=0.;
77     prodcutsval[11][ipt]=0.05;
78   }
79
80   RDHFLctopKpiProd->SetPtBins(nptbins+1,ptbins);
81   RDHFLctopKpiProd->SetCuts(nvars,nptbins,prodcutsval);
82
83   Float_t** anacutsval;
84   anacutsval=new Float_t*[nvars];
85   for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
86   for(Int_t ipt2=0;ipt2<nptbins;ipt2++){
87    anacutsval[0][ipt2]=0.18;
88    anacutsval[1][ipt2]=0.6;
89    anacutsval[3][ipt2]=0.;
90    anacutsval[4][ipt2]=0.;
91    anacutsval[5][ipt2]=0.01;
92    anacutsval[6][ipt2]=0.03;
93    anacutsval[9][ipt2]=0.;
94    anacutsval[10][ipt2]=0.;
95    anacutsval[11][ipt2]=0.05;
96   }
97
98   anacutsval[2][0]=0.6;
99   anacutsval[2][1]=0.8;
100   anacutsval[2][2]=1.;
101   anacutsval[2][3]=1.2;
102
103   anacutsval[7][0]=0.005;
104   anacutsval[7][1]=0.015;
105   anacutsval[7][2]=0.018;
106   anacutsval[7][3]=0.018;
107
108   anacutsval[8][0]=0.6;
109   anacutsval[8][1]=0.8;
110   anacutsval[8][2]=1.;
111   anacutsval[8][3]=1.2;
112
113   anacutsval[11][0]=0.04;
114   anacutsval[11][1]=0.04;
115   anacutsval[11][2]=0.03;
116   anacutsval[11][3]=0.03;
117
118
119   RDHFLctopKpiAn->SetPtBins(nptbins+1,ptbins);
120   RDHFLctopKpiAn->SetCuts(nvars,nptbins,anacutsval);
121
122  //  RDHFLc->SetRecoKF(); //set this if you want to recompute the secondary vertex with the KF package
123     //pid settings
124     //1. kaon: default one
125   AliAODPidHF* pidObjK=new AliAODPidHF();
126   Double_t sigmasK[5]={3.,1.,1.,3.,2.};
127   pidObjK->SetSigma(sigmasK);
128   pidObjK->SetAsym(kTRUE);
129   pidObjK->SetMatch(1);
130   pidObjK->SetTPC(kTRUE);
131   pidObjK->SetTOF(kTRUE);
132   pidObjK->SetITS(kTRUE);
133   Double_t plimK[2]={0.5,0.8};
134   pidObjK->SetPLimit(plimK,2);
135   
136   RDHFLctopKpiProd->SetPidHF(pidObjK);
137   RDHFLctopKpiAn->SetPidHF(pidObjK);
138
139     //2. pion 
140   AliAODPidHF* pidObjpi=new AliAODPidHF();
141   pidObjpi->SetTPC(kTRUE);
142   Double_t sigmaspi[5]={3.,0.,0.,0.,0.};
143   pidObjpi->SetSigma(sigmaspi);
144
145   RDHFLctopKpiProd->SetPidpion(pidObjpi);
146   RDHFLctopKpiAn->SetPidpion(pidObjpi);
147
148   // 3. proton
149   AliAODPidHF* pidObjp=new AliAODPidHF();
150   Double_t sigmasp[5]={3.,1.,1.,3.,2.};
151   pidObjp->SetSigma(sigmasp);
152   pidObjp->SetAsym(kTRUE);
153   pidObjp->SetMatch(1);
154   pidObjp->SetTPC(kTRUE);
155   pidObjp->SetTOF(kTRUE);
156   pidObjp->SetITS(kTRUE);
157   Double_t plimp[2]={1.,2.};
158   pidObjp->SetPLimit(plimp,2);
159
160   RDHFLctopKpiProd->SetPidprot(pidObjp);
161   RDHFLctopKpiAn->SetPidprot(pidObjp);
162
163   Bool_t pidflag=kTRUE;
164   RDHFLctopKpiAn->SetUsePID(pidflag);
165   RDHFLctopKpiProd->SetUsePID(pidflag);
166   if(pidflag) cout<<"PID is used"<<endl;
167   else cout<<"PID is not used"<<endl;
168
169   RDHFLctopKpiProd->SetMinPtCandidate(-1.);
170   RDHFLctopKpiAn->SetMinPtCandidate(-1.);
171   RDHFLctopKpiProd->SetMaxPtCandidate(10000.);
172   RDHFLctopKpiAn->SetMaxPtCandidate(10000.);
173   cout<<"This is the object I'm going to save:"<<endl;
174   RDHFLctopKpiProd->PrintAll();
175   RDHFLctopKpiAn->PrintAll();
176   TFile* fout=new TFile("cuts4LctopKpi.root","RECREATE"); 
177   fout->cd();
178   RDHFLctopKpiProd->Write();
179   RDHFLctopKpiAn->Write();
180   fout->Close();
181   delete fout;
182   delete pidObjp;
183   delete pidObjpi;
184   delete pidObjK;
185   delete RDHFLctopKpiProd;
186   delete RDHFLctopKpiAn;
187
188 }