]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/macros/PlotITSTrackingEff.C
Allow to select events for QA from MC + fix in histo limits
[u/mrichter/AliRoot.git] / PWGPP / macros / PlotITSTrackingEff.C
CommitLineData
f8d0e078 1void PlotITSTrackingEff(TString filename="ITS.Performance.root",
2 TString part="Pi",
3 TString partforgraph="pions",
4 Int_t pdgcode=211,
5 Bool_t useAbsPdg=kTRUE,
6 Bool_t nofakes=kTRUE,
7 Bool_t askITSrefit=kTRUE,
8 Int_t minTPCcls=1)
9{
10 //
11 // Macro to plot ITS tracking efficiency from ITS.Performance.root
12 // A. Dainese
13 //
14
15 //Open File
16 if(gSystem->AccessPathName(filename.Data())) {
17 printf("file not found!\n");
18 return;
19 }
20 TFile *file= TFile::Open(filename.Data());
21 cout<<"Open File "<<filename<<endl;
22
23 TList *list = (TList*)file->Get("cOutputITS");
24 TNtuple *ntTracks = (TNtuple*)list->FindObject("fNtupleESDTracks");
25
26 //Getting and Addressing NTuples
27 Float_t pt,ptmes,eta,phi,pdg,d0True,d0TV,d0zTV,sigmad0zTV,d0All,d0Oth,sigmad0Oth,ITSflag,sigmad0TV,sigmad0All;
28 ntTracks->SetBranchAddress("pt",&ptmes);
29 ntTracks->SetBranchAddress("ptMC",&pt);
30 ntTracks->SetBranchAddress("eta",&eta);
31 ntTracks->SetBranchAddress("phi",&phi);
32 ntTracks->SetBranchAddress("pdgMC",&pdg);
33 ntTracks->SetBranchAddress("d0MC",&d0True);
34 ntTracks->SetBranchAddress("d0MCv",&d0TV);
35 ntTracks->SetBranchAddress("z0MCv",&d0zTV);
36 ntTracks->SetBranchAddress("sigmad0MCv",&sigmad0TV);
37 ntTracks->SetBranchAddress("sigmaz0MCv",&sigmad0zTV);
38 ntTracks->SetBranchAddress("d0",&d0All);
39 ntTracks->SetBranchAddress("sigmad0",&sigmad0All);
40 ntTracks->SetBranchAddress("ITSflag",&ITSflag);
41
42
43 TString titlegraph1,titlefile;
44 Int_t ntracks,nITSsel,nfakes=0;
45 const Int_t nPtBins=10;
46 Double_t meanpt[nPtBins];
47 ///////////////////////////////////////////////////////////////////////////
48 Double_t nprimgen[nPtBins];
49 Float_t nfiles=48.; if(!useAbsPdg) nfiles*=0.5;
50 for(Int_t j=0; j<nPtBins; j++) nprimgen[j]=nfiles*50.;// *18.;
51 // the factor 50 is for the cut |eta|<0.9
52 // the factor 18 is for the cut 0.9<|eta|<1.4
53 ///////////////////////////////////////////////////////////////////////////
54 Double_t n6ITSclspart[nPtBins],n5ITSclspart[nPtBins],n4ITSclspart[nPtBins],n3ITSclspart[nPtBins],n2ITSclspart[nPtBins],n1ITSclspart[nPtBins];
55 Double_t n6ITSclsparttoTPC[nPtBins],n5ITSclsparttoTPC[nPtBins],n4ITSclsparttoTPC[nPtBins],n3ITSclsparttoTPC[nPtBins],n2ITSclsparttoTPC[nPtBins];
56 Double_t nSPD[nPtBins],n2ITS[nPtBins],n3ITS[nPtBins],n4ITS[nPtBins],n5ITS[nPtBins],n6ITS[nPtBins],n456ITS[nPtBins],ptbinning[2*nPtBins],ntottr[nPtBins];
57 Double_t nTPCnorm6[nPtBins],n1ITSnorm6[nPtBins],n2ITSnorm6[nPtBins],n3ITSnorm6[nPtBins],n4ITSnorm6[nPtBins],n5ITSnorm6[nPtBins],n6ITSnorm6[nPtBins],n456ITSnorm6[nPtBins],n4ITSnorm5[nPtBins],n5ITSnorm5[nPtBins],n3ITSnorm4[nPtBins],n4ITSnorm4[nPtBins],n2ITSnorm3[nPtBins],n3ITSnorm3[nPtBins],n1ITSnorm2[nPtBins],n2ITSnorm2[nPtBins];
58 Double_t nSPDtoGen[nPtBins],n2ITStoGen[nPtBins],n3ITStoGen[nPtBins],n4ITStoGen[nPtBins],n5ITStoGen[nPtBins],n6ITStoGen[nPtBins],n456ITStoGen[nPtBins],nTPCtoGen[nPtBins];
59 Double_t nTPCto6cls[nPtBins],n1ITSto6cls[nPtBins],n2ITSto6cls[nPtBins],n3ITSto6cls[nPtBins],n4ITSto6cls[nPtBins],n5ITSto6cls[nPtBins],n4ITSto5cls[nPtBins],n5ITSto5cls[nPtBins],n3ITSto4cls[nPtBins],n4ITSto4cls[nPtBins],n2ITSto3cls[nPtBins],n3ITSto3cls[nPtBins],n1ITSto2cls[nPtBins],n2ITSto2cls[nPtBins],n6ITSto6cls[nPtBins],n456ITSto6cls[nPtBins];
60 Double_t n330[nPtBins],n331[nPtBins],n332[nPtBins],n313[nPtBins],n323[nPtBins],n133[nPtBins],n233[nPtBins],nOTHERS[nPtBins],nSSD[nPtBins],nSDD[nPtBins];
61
62 Double_t sigmnSPD[nPtBins],sigmn4ITS[nPtBins],sigmn5ITS[nPtBins],sigmn6ITS[nPtBins],sigmn456ITS[nPtBins],ptbinning[2*nPtBins],ntottr[nPtBins];
63 Double_t sigmnSPDtoGen[nPtBins],sigmn2ITStoGen[nPtBins],sigmn3ITStoGen[nPtBins],sigmn4ITStoGen[nPtBins],sigmn5ITStoGen[nPtBins],sigmn6ITStoGen[nPtBins],sigmn456ITStoGen[nPtBins],sigmnTPCtoGen[nPtBins];
64 Double_t sigmnTPCto6cls[nPtBins],sigmn1ITSto6cls[nPtBins],sigmn2ITSto6cls[nPtBins],sigmn3ITSto6cls[nPtBins],sigmn4ITSto6cls[nPtBins],sigmn5ITSto6cls[nPtBins],sigmn6ITSto6cls[nPtBins],sigmn456ITSto6cls[nPtBins],sigmn4ITSto5cls[nPtBins],sigmn5ITSto5cls[nPtBins],sigmn3ITSto4cls[nPtBins],sigmn4ITSto4cls[nPtBins],sigmn2ITSto3cls[nPtBins],sigmn3ITSto3cls[nPtBins],sigmn1ITSto2cls[nPtBins],sigmn2ITSto2cls[nPtBins];
65 Double_t sigmn330[nPtBins],sigmn331[nPtBins],sigmn332[nPtBins],sigmn313[nPtBins],sigmn323[nPtBins],sigmn133[nPtBins],sigmn233[nPtBins],sigmnOTHERS[nPtBins],sigmnSSD[nPtBins],sigmnSDD[nPtBins];
66 Double_t sigmn6ITSclsparttoTPC[nPtBins],sigmn5ITSclsparttoTPC[nPtBins],sigmn4ITSclsparttoTPC[nPtBins],sigmn3ITSclsparttoTPC[nPtBins],sigmn2ITSclsparttoTPC[nPtBins];
67
68 Double_t errx[nPtBins];
69
70 TGraphErrors *gr4,*gr5,*gr6,*gr456,*grSPDtoGen,*gr2toGen,*gr3toGen,*gr4toGen,*gr5toGen,*gr6toGen,*gr456toGen,*grTPCtoGen,*grTPCto6cls,*gr1to6cls,*gr2to6cls,*gr3to6cls,*gr4to6cls,*gr5to6cls,*gr6to6cls,*gr456to6cls,*gr4to5cls,*gr5to5cls,*gr3to4cls,*gr4to4cls,*gr2to3cls,*gr3to3cls,*gr1to2cls,*gr2to2cls,*gr330,*gr331,*gr332,*gr313,*gr323,*gr133,*gr233,*grOTHERS,*grSSD,*grSPD,*gr6clspart,*gr5clspart,*gr4clspart,*gr2ITSclsparttoTPC,*gr3ITSclsparttoTPC,*gr4ITSclsparttoTPC,*gr5ITSclsparttoTPC,*gr6ITSclsparttoTPC;
71
72 for(Int_t j=0;j<nPtBins;j++) {
73 n1ITSclspart[j]=0.;
74 n2ITSclspart[j]=0.;
75 n3ITSclspart[j]=0.;
76 n4ITSclspart[j]=0.;
77 n5ITSclspart[j]=0.;
78 n6ITSclspart[j]=0.;
79 nSPD[j]=0.;
80 n2ITS[j]=0.;
81 n3ITS[j]=0.;
82 n4ITS[j]=0.;
83 n5ITS[j]=0.;
84 n6ITS[j]=0.;
85 n456ITS[j]=0.;
86 n1ITSnorm6[j]=0.;
87 n2ITSnorm6[j]=0.;
88 n3ITSnorm6[j]=0.;
89 n4ITSnorm6[j]=0.;
90 n5ITSnorm6[j]=0.;
91 n6ITSnorm6[j]=0.;
92 n456ITSnorm6[j]=0.;
93 n4ITSnorm5[j]=0.;
94 n5ITSnorm5[j]=0.;
95 n3ITSnorm4[j]=0.;
96 n4ITSnorm4[j]=0.;
97 n2ITSnorm3[j]=0.;
98 n3ITSnorm3[j]=0.;
99 n1ITSnorm2[j]=0.;
100 n2ITSnorm2[j]=0.;
101 nSPDtoGen[j]=0.;
102 n2ITStoGen[j]=0.;
103 n3ITStoGen[j]=0.;
104 n4ITStoGen[j]=0.;
105 n5ITStoGen[j]=0.;
106 n6ITStoGen[j]=0.;
107 n456ITStoGen[j]=0.;
108 nTPCtoGen[j]=0.;
109 n1ITSto6cls[j]=0.;
110 n2ITSto6cls[j]=0.;
111 n3ITSto6cls[j]=0.;
112 n4ITSto6cls[j]=0.;
113 n5ITSto6cls[j]=0.;
114 n6ITSto6cls[j]=0.;
115 n4ITSto5cls[j]=0.;
116 n5ITSto5cls[j]=0.;
117 n3ITSto4cls[j]=0.;
118 n4ITSto4cls[j]=0.;
119 n2ITSto3cls[j]=0.;
120 n3ITSto3cls[j]=0.;
121 n1ITSto2cls[j]=0.;
122 n2ITSto2cls[j]=0.;
123 n456ITSto6cls[j]=0.;
124 nTPCto6cls[j]=0.;
125 n330[j]=0;
126 n331[j]=0;
127 n332[j]=0;
128 n313[j]=0;
129 n323[j]=0;
130 n133[j]=0;
131 n233[j]=0;
132 nOTHERS[j]=0;
133 nSDD[j]=0.;
134 nSSD[j]=0.;
135 errx[j]=0.;
136 ntottr[j]=0;
137 meanpt[j]=0;
138 }
139
140 ptbinning[0]=0.15;
141 ptbinning[1]=0.35;
142 ptbinning[2]=0.4;
143 ptbinning[3]=0.6;
144 ptbinning[4]=0.7;
145 ptbinning[5]=0.85;
146 ptbinning[6]=0.85;
147 ptbinning[7]=1.2;
148 ptbinning[8]=1.7;
149 ptbinning[9]=2.3;
150 ptbinning[10]=3.6;
151 ptbinning[11]=4.4;
152 ptbinning[12]=6.5;
153 ptbinning[13]=7.5;
154 ptbinning[14]=8.5;
155 ptbinning[15]=11.5;
156 ptbinning[16]=18.5;
157 ptbinning[17]=21.5;
158 ptbinning[18]=27.5;
159 ptbinning[19]=32.5;
160
161
162
163
164
165 // ------------ Starting Loop on Tracks ----------
166 ntracks=ntTracks->GetEntries();
167 printf("number of Tracks %d \n",ntracks);
168
169 for (Int_t j=0;j<ntracks;j++) {
170 if(j%10000==0) printf("Reading track %d\n",j);
171 ntTracks->GetEvent(j);
172 if(TMath::Abs(d0True)>1.) continue; // only primaries
173 if(TMath::Abs(eta)>0.9) continue; // only tracks with |etapart|<0.9
174 //if(TMath::Abs(eta)<0.9 || TMath::Abs(eta)>1.4) continue; // only tracks with 0.9<|etapart|<1.4
175 Float_t theta = 2.*TMath::ATan(TMath::Exp(-eta));
176 //if(TMath::Abs(TMath::Abs(phi)-0.5*TMath::Pi())>0.5 || TMath::Abs(theta-0.5*TMath::Pi())>0.5) continue;
177 //if(phi<(.5+0.25)*TMath::Pi() || phi>(.5+0.45)*TMath::Pi()) continue;
178 if(ITSflag<0) nfakes++;
179 //printf(" %d\n",ITSflag);
180 if(nofakes && ITSflag<0) continue; // reject fakes
181 ITSflag=TMath::Abs(ITSflag);
182 //printf("%d\n",ITSflag);
183 Int_t ITSflagorig=ITSflag;
184 Int_t nTPCcls = (Int_t)(ITSflag/100000);
185 ITSflag -= nTPCcls*100000;
186 Int_t nITSclspart = (Int_t)(ITSflag/10000);
187 ITSflag -= nITSclspart*10000;
188 //printf("%d\n",ITSflag);
189 Int_t nITSclsassign = (Int_t)(ITSflag/1000);
190 ITSflag -= nITSclsassign*1000;
191 //printf("%d\n",ITSflag);
192 //printf("%d\n",ITSflag);
193 nITSsel=ITSnCluster(ITSflag);
194
195
196 if(nTPCcls<=minTPCcls) continue;
197
198 if(useAbsPdg) pdg=TMath::Abs(pdg);
199 if(pdg!=pdgcode) continue;
200
201 for (Int_t k=0; k<nPtBins; k++) {
202 if(ptbinning[2*k]<pt&&pt<ptbinning[2*k+1]) {
203 //if(nITSclspart==3) {nITSclspart=5;}else{nITSclspart=-1;}
204 if(ptmes>0.) {
205 ntottr[k]+=1.;
206 meanpt[k]+=pt;
207 if(nITSclspart==6) n6ITSclspart[k]+=1.;
208 if(nITSclspart==5) n5ITSclspart[k]+=1.;
209 if(nITSclspart==4) n4ITSclspart[k]+=1.;
210 if(nITSclspart==3) n3ITSclspart[k]+=1.;
211 if(nITSclspart==2) n2ITSclspart[k]+=1.;
212 }
213 if(askITSrefit && sigmad0TV<0.) continue;
214 if(nITSclsassign!=nITSsel) cout<<" ERROR "<<ITSflag<<" "<<nITSclsassign<<" "<<nITSsel<<" "<<ITSflagorig<<endl;
215
216 if(nITSsel==2) n2ITS[k]+=1.;
217 if(nITSsel==3) n3ITS[k]+=1.;
218 if(nITSsel==4) n4ITS[k]+=1.;
219 if(nITSsel==5) n5ITS[k]+=1.;
220 if(nITSsel==6) n6ITS[k]+=1.;
221
222 if(((Int_t)ITSflag)%10==3) nSPD[k]+=1.; // both SPD
223
224 if(nITSclspart==6) {
225 if(nITSsel==1) n1ITSnorm6[k]+=1.;
226 if(nITSsel==2) n2ITSnorm6[k]+=1.;
227 if(nITSsel==3) n3ITSnorm6[k]+=1.;
228 if(nITSsel==4) n4ITSnorm6[k]+=1.;
229 if(nITSsel==5) n5ITSnorm6[k]+=1.;
230 if(nITSsel==6) n6ITSnorm6[k]+=1.;
231 }
232 if(nITSclspart==5) {
233 if(nITSsel==4) n4ITSnorm5[k]+=1.;
234 if(nITSsel==5) n5ITSnorm5[k]+=1.;
235 }
236 if(nITSclspart==4) {
237 if(nITSsel==3) n3ITSnorm4[k]+=1.;
238 if(nITSsel==4) n4ITSnorm4[k]+=1.;
239 }
240 if(nITSclspart==3) {
241 if(nITSsel==2) n2ITSnorm3[k]+=1.;
242 if(nITSsel==3) n3ITSnorm3[k]+=1.;
243 }
244 if(nITSclspart==2) {
245 if(nITSsel==1) n1ITSnorm2[k]+=1.;
246 if(nITSsel==2) n2ITSnorm2[k]+=1.;
247 }
248
249 if(k==nPtBins-1 && nITSclspart==5 && nITSsel==4) printf("nClustersPart %d nClustersTrack %d Map %d\n",nITSclspart,nITSsel,ITSflag);
250
251 //5 points array
252 if(nITSclspart==5) {
253 if(ITSflag==332) {
254 n332[k]+=1.;
255 } else if(ITSflag==331) {
256 n331[k]+=1.;
257 } else if(ITSflag==323) {
258 n323[k]+=1.;
259 } else if(ITSflag==313) {
260 n313[k]+=1.;
261 } else if(ITSflag==233) {
262 n233[k]+=1.;
263 } else if(ITSflag==133) {
264 n133[k]+=1.;
265 }
266 }
267 if(ITSflag==330) {
268 n330[k]+=1.;
269 } else if(ITSflag!=333) {
270 nOTHERS[k]+=1.;
271 }
272
273 }
274 }
275
276 } //end loop on tracks
277
278 printf("%d %d %d %d %d\n",n2ITS[9],n3ITS[9],n4ITS[9],n5ITS[9],n6ITS[9]);
279
280 for(Int_t k=0;k<nPtBins;k++) {
281 if(n6ITSclspart[k]<1) n6ITSclspart[k]=1.;
282 if(n5ITSclspart[k]<1) n5ITSclspart[k]=1.;
283 if(n4ITSclspart[k]<1) n4ITSclspart[k]=1.;
284 if(n3ITSclspart[k]<1) n3ITSclspart[k]=1.;
285 if(n2ITSclspart[k]<1) n2ITSclspart[k]=1.;
286 if(n1ITSclspart[k]<1) n1ITSclspart[k]=1.;
287
288 //cout<<n1ITSclspart[k]<<" "<<n2ITSclspart[k]<<" "<<n3ITSclspart[k]<<" "<<n4ITSclspart[k]<<" "<<n5ITSclspart[k]<<" "<<n6ITSclspart[k]<<endl;
289
290 if(ntottr[k]!=0) {
291 meanpt[k]=meanpt[k]/ntottr[k];
292
293 nSPDtoGen[k]=nSPD[k]/nprimgen[k];
294 n2ITStoGen[k]=n2ITS[k]/nprimgen[k];
295 n3ITStoGen[k]=n3ITS[k]/nprimgen[k];
296 n4ITStoGen[k]=n4ITS[k]/nprimgen[k];
297 n5ITStoGen[k]=n5ITS[k]/nprimgen[k];
298 n6ITStoGen[k]=n6ITS[k]/nprimgen[k];
299 nTPCtoGen[k]=ntottr[k]/nprimgen[k];
300 n456ITStoGen[k]=n4ITStoGen[k]+n5ITStoGen[k]+n6ITStoGen[k];
301
302 n1ITSto6cls[k]=n1ITSnorm6[k]/n6ITSclspart[k];
303 n2ITSto6cls[k]=n2ITSnorm6[k]/n6ITSclspart[k];
304 n3ITSto6cls[k]=n3ITSnorm6[k]/n6ITSclspart[k];
305 n4ITSto6cls[k]=n4ITSnorm6[k]/n6ITSclspart[k];
306 n5ITSto6cls[k]=n5ITSnorm6[k]/n6ITSclspart[k];
307 n6ITSto6cls[k]=n6ITSnorm6[k]/n6ITSclspart[k];
308 n4ITSto5cls[k]=n4ITSnorm5[k]/n5ITSclspart[k];
309 n5ITSto5cls[k]=n5ITSnorm5[k]/n5ITSclspart[k];
310 n3ITSto4cls[k]=n3ITSnorm4[k]/n4ITSclspart[k];
311 n4ITSto4cls[k]=n4ITSnorm4[k]/n4ITSclspart[k];
312 n2ITSto3cls[k]=n2ITSnorm3[k]/n3ITSclspart[k];
313 n3ITSto3cls[k]=n3ITSnorm3[k]/n3ITSclspart[k];
314 n1ITSto2cls[k]=n1ITSnorm2[k]/n2ITSclspart[k];
315 n2ITSto2cls[k]=n2ITSnorm2[k]/n2ITSclspart[k];
316
317 nTPCto6cls[k]=ntottr[k]/n6ITSclspart[k];
318 n456ITSto6cls[k]=n4ITSto6cls[k]+n5ITSto6cls[k]+n6ITSto6cls[k];
319 //cout<<meanpt[k]<<" "<<n6ITSnorm6[k]<<" "<<n6ITSclspart[k]<<endl;
320
321 n6ITSclsparttoTPC[k]=n6ITSclspart[k]/ntottr[k];
322 n5ITSclsparttoTPC[k]=n5ITSclspart[k]/ntottr[k];
323 n4ITSclsparttoTPC[k]=n4ITSclspart[k]/ntottr[k];
324 n3ITSclsparttoTPC[k]=n3ITSclspart[k]/ntottr[k];
325 n2ITSclsparttoTPC[k]=n2ITSclspart[k]/ntottr[k];
326
327 n4ITS[k]=n4ITS[k]/ntottr[k];
328 n5ITS[k]=n5ITS[k]/ntottr[k];
329 n6ITS[k]=n6ITS[k]/ntottr[k];
330
331 n330[k]=n330[k]/ntottr[k];
332 n331[k]=n331[k]/n5ITSclspart[k];
333 n332[k]=n332[k]/n5ITSclspart[k];
334 n313[k]=n313[k]/n5ITSclspart[k];
335 n323[k]=n323[k]/n5ITSclspart[k];
336 n133[k]=n133[k]/n5ITSclspart[k];
337 n233[k]=n233[k]/n5ITSclspart[k];
338 nOTHERS[k]=nOTHERS[k]/ntottr[k];
339 n456ITS[k]=n4ITS[k]+n5ITS[k]+n6ITS[k];
340 nSSD[k]=n133[k]+n233[k];
341 nSDD[k]=n323[k]+n313[k];
342
343
344 sigmn4ITS[k]=TMath::Sqrt(n4ITS[k]*(1-n4ITS[k])/ntottr[k]);
345 sigmn5ITS[k]=TMath::Sqrt(n5ITS[k]*(1-n5ITS[k])/ntottr[k]);
346 sigmn6ITS[k]=TMath::Sqrt(n6ITS[k]*(1-n6ITS[k])/ntottr[k]);
347 sigmn456ITS[k]=TMath::Sqrt(n456ITS[k]*(1-n456ITS[k])/ntottr[k]);
348
349 sigmn2ITSclsparttoTPC[k]=TMath::Sqrt(n2ITSclsparttoTPC[k]*(1-n2ITSclsparttoTPC[k])/ntottr[k]);
350 sigmn3ITSclsparttoTPC[k]=TMath::Sqrt(n3ITSclsparttoTPC[k]*(1-n3ITSclsparttoTPC[k])/ntottr[k]);
351 sigmn4ITSclsparttoTPC[k]=TMath::Sqrt(n4ITSclsparttoTPC[k]*(1-n4ITSclsparttoTPC[k])/ntottr[k]);
352 sigmn5ITSclsparttoTPC[k]=TMath::Sqrt(n5ITSclsparttoTPC[k]*(1-n5ITSclsparttoTPC[k])/ntottr[k]);
353 sigmn6ITSclsparttoTPC[k]=TMath::Sqrt(n6ITSclsparttoTPC[k]*(1-n6ITSclsparttoTPC[k])/ntottr[k]);
354
355 sigmnSPDtoGen[k]=TMath::Sqrt(nSPDtoGen[k]*(1-nSPDtoGen[k])/nprimgen[k]);
356 sigmn2ITStoGen[k]=TMath::Sqrt(n2ITStoGen[k]*(1-n2ITStoGen[k])/nprimgen[k]);
357 sigmn3ITStoGen[k]=TMath::Sqrt(n3ITStoGen[k]*(1-n3ITStoGen[k])/nprimgen[k]);
358 sigmn4ITStoGen[k]=TMath::Sqrt(n4ITStoGen[k]*(1-n4ITStoGen[k])/nprimgen[k]);
359 sigmn5ITStoGen[k]=TMath::Sqrt(n5ITStoGen[k]*(1-n5ITStoGen[k])/nprimgen[k]);
360 sigmn6ITStoGen[k]=TMath::Sqrt(n6ITStoGen[k]*(1-n6ITStoGen[k])/nprimgen[k]);
361 sigmn456ITStoGen[k]=TMath::Sqrt(n456ITStoGen[k]*(1-n456ITStoGen[k])/nprimgen[k]);
362 sigmnTPCtoGen[k]=TMath::Sqrt(nTPCtoGen[k]*(1-nTPCtoGen[k])/nprimgen[k]);
363 sigmnTPCto6cls[k]=TMath::Sqrt(nTPCto6cls[k]*(1-nTPCto6cls[k])/n6ITSclspart[k]);
364
365 sigmn1ITSto6cls[k]=TMath::Sqrt(n1ITSto6cls[k]*(1-n1ITSto6cls[k])/n6ITSclspart[k]);
366 sigmn2ITSto6cls[k]=TMath::Sqrt(n2ITSto6cls[k]*(1-n2ITSto6cls[k])/n6ITSclspart[k]);
367 sigmn3ITSto6cls[k]=TMath::Sqrt(n3ITSto6cls[k]*(1-n3ITSto6cls[k])/n6ITSclspart[k]);
368 sigmn4ITSto6cls[k]=TMath::Sqrt(n4ITSto6cls[k]*(1-n4ITSto6cls[k])/n6ITSclspart[k]);
369 sigmn5ITSto6cls[k]=TMath::Sqrt(n5ITSto6cls[k]*(1-n5ITSto6cls[k])/n6ITSclspart[k]);
370 sigmn6ITSto6cls[k]=TMath::Sqrt(n6ITSto6cls[k]*(1-n6ITSto6cls[k])/n6ITSclspart[k]);
371 sigmn4ITSto5cls[k]=TMath::Sqrt(n4ITSto5cls[k]*(1-n4ITSto5cls[k])/n5ITSclspart[k]);
372 sigmn5ITSto5cls[k]=TMath::Sqrt(n5ITSto5cls[k]*(1-n5ITSto5cls[k])/n5ITSclspart[k]);
373 sigmn3ITSto4cls[k]=TMath::Sqrt(n3ITSto4cls[k]*(1-n3ITSto4cls[k])/n4ITSclspart[k]);
374 sigmn4ITSto4cls[k]=TMath::Sqrt(n4ITSto4cls[k]*(1-n4ITSto4cls[k])/n4ITSclspart[k]);
375 sigmn2ITSto3cls[k]=TMath::Sqrt(n2ITSto3cls[k]*(1-n2ITSto3cls[k])/n3ITSclspart[k]);
376 sigmn3ITSto3cls[k]=TMath::Sqrt(n3ITSto3cls[k]*(1-n3ITSto3cls[k])/n3ITSclspart[k]);
377 sigmn1ITSto2cls[k]=TMath::Sqrt(n1ITSto2cls[k]*(1-n1ITSto2cls[k])/n2ITSclspart[k]);
378 sigmn2ITSto2cls[k]=TMath::Sqrt(n2ITSto2cls[k]*(1-n2ITSto2cls[k])/n2ITSclspart[k]);
379 sigmn456ITSto6cls[k]=TMath::Sqrt(n456ITSto6cls[k]*(1-n456ITSto6cls[k])/n6ITSclspart[k]);
380
381 sigmn330[k]=TMath::Sqrt(n330[k]*(1-n330[k])/ntottr[k]);
382 sigmn331[k]=TMath::Sqrt(n331[k]*(1-n331[k])/ntottr[k]);
383 sigmn332[k]=TMath::Sqrt(n332[k]*(1-n332[k])/ntottr[k]);
384 sigmn313[k]=TMath::Sqrt(n313[k]*(1-n313[k])/ntottr[k]);
385 sigmn323[k]=TMath::Sqrt(n323[k]*(1-n323[k])/ntottr[k]);
386 sigmn133[k]=TMath::Sqrt(n133[k]*(1-n133[k])/ntottr[k]);
387 sigmn233[k]=TMath::Sqrt(n233[k]*(1-n233[k])/ntottr[k]);
388
389
390 sigmnOTHERS[k]=TMath::Sqrt(nOTHERS[k]*(1-nOTHERS[k])/ntottr[k]);
391 sigmnSSD[k]=TMath::Sqrt((n133[k]+n233[k])*(1-n133[k]-n233[k])/ntottr[k]);
392 sigmnSDD[k]=TMath::Sqrt((n323[k]+n313[k])*(1-n323[k]-n313[k])/ntottr[k]);
393 } else {
394 meanpt[k]=(ptbinning[2*k+1]+ptbinning[2*k])/2.;
395 }
396
397 } // end loop on pt bins
398
399 //-------DRAWING TGRAPH--------
400
401 const int cWidth = 500;
402 const int cHeight = (int)(500*(29.7/21.));
403
404 TCanvas* ceff0 = new TCanvas("ceff0","ceff0",cWidth,cHeight);
405 ceff0->SetLogx();
406 ceff0->SetGridy();
407
408 gr4 = new TGraphErrors(nPtBins,meanpt,n4ITS,errx,sigmn4ITS);
409 gr4->SetName("mygraph04ITS");
410 gr4->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
411 gr4->SetLineColor(1);
412 gr4->SetLineWidth(1);
413 gr4->SetMarkerColor(2);
414 gr4->SetMarkerStyle(21);
415 gr4->SetMarkerSize(1);
416 gr4->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
417 gr4->GetYaxis()->SetTitle("ITS efficiency (normalized to TPC trks)");
418 gr4->SetMaximum(1.2);
419 gr4->SetMinimum(0.);
420 gr4->Draw("AP");
421
422 gr5 = new TGraphErrors(nPtBins,meanpt,n5ITS,errx,sigmn5ITS);
423 gr5->SetName("mygraph05ITS");
424 gr5->SetLineColor(1);
425 gr5->SetLineWidth(1);
426 gr5->SetMarkerColor(8);
427 gr5->SetMarkerStyle(21);
428 gr5->SetMarkerSize(1.);
429 gr5->SetTitle(titlegraph1);
430 gr5->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
431 gr5->GetYaxis()->SetTitle("");
432 gr5->Draw("P");
433
434 gr6 = new TGraphErrors(nPtBins,meanpt,n6ITS,errx,sigmn6ITS);
435 gr6->SetName("mygraph06ITS");
436 gr6->SetLineColor(1);
437 gr6->SetLineWidth(1);
438 gr6->SetMarkerColor(4);
439 gr6->SetMarkerStyle(21);
440 gr6->SetMarkerSize(1.);
441 gr6->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
442 gr6->GetYaxis()->SetTitle("");
443 gr6->Draw("P");
444
445 gr456 = new TGraphErrors(nPtBins,meanpt,n456ITS,errx,sigmn456ITS);
446 gr456->SetName("mygraph456ITS");
447 gr456->SetLineColor(1);
448 gr456->SetLineWidth(1);
449 gr456->SetMarkerColor(1);
450 gr456->SetMarkerStyle(21);
451 gr456->SetMarkerSize(1.);
452 gr456->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
453 gr456->GetYaxis()->SetTitle("");
454 gr456->Draw("P");
455
456 TLegend *l0 = new TLegend(0.5,0.5,0.9,0.9);
457 l0->SetFillStyle(0);
458 l0->SetBorderSize(0);
459 l0->AddEntry(gr4,"kTPCin + 4 ITS cls","p");
460 l0->AddEntry(gr5,"kTPCin + 5 ITS cls","p");
461 l0->AddEntry(gr6,"kTPCin + 6 ITS cls","p");
462 l0->AddEntry(gr456,"kTPCin + 4or5or6 ITS cls","p");
463 l0->Draw();
464
465 TCanvas* ceff1 = new TCanvas("ceff1","ceff1",cWidth,cHeight);
466 ceff1->SetLogx();
467 ceff1->SetGridy();
468
469 gr4toGen = new TGraphErrors(nPtBins,meanpt,n4ITStoGen,errx,sigmn4ITStoGen);
470 gr4toGen->SetName("mygraph04ITStoGen");
471 gr4toGen->SetTitle("Physical tracking efficiency (B=0.5T, no misal.)");
472 gr4toGen->SetLineColor(1);
473 gr4toGen->SetLineWidth(1);
474 gr4toGen->SetMarkerColor(2);
475 gr4toGen->SetMarkerStyle(24);
476 gr4toGen->SetMarkerSize(1.);
477 gr4toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
478 gr4toGen->GetYaxis()->SetTitle("Physical efficiency (normalized to generated)");
479 gr4toGen->SetMaximum(1.2);
480 gr4toGen->SetMinimum(0.);
481 gr4toGen->Draw("AP");
482
483 gr2toGen = new TGraphErrors(nPtBins,meanpt,n2ITStoGen,errx,sigmn2ITStoGen);
484 gr2toGen->SetName("mygraph02ITStoGen");
485 gr2toGen->SetLineColor(1);
486 gr2toGen->SetLineWidth(1);
487 gr2toGen->SetMarkerColor(1);
488 gr2toGen->SetMarkerStyle(20);
489 gr2toGen->SetMarkerSize(1.);
490 gr2toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
491 gr2toGen->GetYaxis()->SetTitle("");
492 gr2toGen->Draw("P");
493
494 gr3toGen = new TGraphErrors(nPtBins,meanpt,n3ITStoGen,errx,sigmn3ITStoGen);
495 gr3toGen->SetName("mygraph03ITStoGen");
496 gr3toGen->SetLineColor(1);
497 gr3toGen->SetLineWidth(1);
498 gr3toGen->SetMarkerColor(2);
499 gr3toGen->SetMarkerStyle(21);
500 gr3toGen->SetMarkerSize(1.);
501 gr3toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
502 gr3toGen->GetYaxis()->SetTitle("");
503 gr3toGen->Draw("P");
504
505 gr5toGen = new TGraphErrors(nPtBins,meanpt,n5ITStoGen,errx,sigmn5ITStoGen);
506 gr5toGen->SetName("mygraph05ITStoGen");
507 gr5toGen->SetLineColor(1);
508 gr5toGen->SetLineWidth(1);
509 gr5toGen->SetMarkerColor(8);
510 gr5toGen->SetMarkerStyle(24);
511 gr5toGen->SetMarkerSize(1.);
512 gr5toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
513 gr5toGen->GetYaxis()->SetTitle("");
514 gr5toGen->Draw("P");
515
516 gr6toGen = new TGraphErrors(nPtBins,meanpt,n6ITStoGen,errx,sigmn6ITStoGen);
517 gr6toGen->SetName("mygraph06ITStoGen");
518 gr6toGen->SetLineColor(1);
519 gr6toGen->SetLineWidth(1);
520 gr6toGen->SetMarkerColor(4);
521 gr6toGen->SetMarkerStyle(24);
522 gr6toGen->SetMarkerSize(1.);
523 gr6toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
524 gr6toGen->GetYaxis()->SetTitle("");
525 gr6toGen->Draw("P");
526
527 gr456toGen = new TGraphErrors(nPtBins,meanpt,n456ITStoGen,errx,sigmn456ITStoGen);
528 gr456toGen->SetName("mygraph0456ITStoGen");
529 gr456toGen->SetLineColor(1);
530 gr456toGen->SetLineWidth(1);
531 gr456toGen->SetMarkerColor(1);
532 gr456toGen->SetMarkerStyle(24);
533 gr456toGen->SetMarkerSize(1.);
534 gr456toGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
535 gr456toGen->GetYaxis()->SetTitle("");
536 //gr456toGen->Draw("P");
537
538
539 grTPCtoGen = new TGraphErrors(nPtBins,meanpt,nTPCtoGen,errx,sigmnTPCtoGen);
540 grTPCtoGen->SetName("mygraph0TPCtoGen");
541 grTPCtoGen->SetLineColor(1);
542 grTPCtoGen->SetLineWidth(1);
543 grTPCtoGen->SetMarkerColor(6);
544 grTPCtoGen->SetMarkerStyle(20);
545 grTPCtoGen->SetMarkerSize(1.);
546 grTPCtoGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
547 grTPCtoGen->GetYaxis()->SetTitle("");
548 grTPCtoGen->Draw("P");
549
550 grSPDtoGen = new TGraphErrors(nPtBins,meanpt,nSPDtoGen,errx,sigmnSPDtoGen);
551 grSPDtoGen->SetName("mygraph0SPDtoGen");
552 grSPDtoGen->SetLineColor(1);
553 grSPDtoGen->SetLineWidth(1);
554 grSPDtoGen->SetMarkerColor(9);
555 grSPDtoGen->SetMarkerStyle(22);
556 grSPDtoGen->SetMarkerSize(1.3);
557 grSPDtoGen->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
558 grSPDtoGen->GetYaxis()->SetTitle("");
559 grSPDtoGen->Draw("P");
560
561
562 TLegend *l1 = new TLegend(0.5,0.5,0.9,0.9);
563 l1->SetFillStyle(0);
564 l1->SetBorderSize(0);
565 l1->AddEntry(grTPCtoGen,"kTPCin","p");
566 l1->AddEntry(grSPDtoGen,"kTPCin + 2 SPD cls","p");
567 l1->AddEntry(gr2toGen,"kTPCin + 2 ITS cls","p");
568 l1->AddEntry(gr3toGen,"kTPCin + 3 ITS cls","p");
569 l1->AddEntry(gr4toGen,"kTPCin + 4 ITS cls","p");
570 l1->AddEntry(gr5toGen,"kTPCin + 5 ITS cls","p");
571 l1->AddEntry(gr6toGen,"kTPCin + 6 ITS cls","p");
572 //l1->AddEntry(gr456toGen,"kTPCin + 4or5or6 ITS cls","p");
573 l1->Draw();
574
575
576
577 TCanvas* ceff2_6 = new TCanvas("ceff2_6","ceff2_6",cWidth,cHeight);
578 ceff2_6->SetLogx();
579 ceff2_6->SetGridy();
580
581 gr4to6cls = new TGraphErrors(nPtBins,meanpt,n4ITSto6cls,errx,sigmn4ITSto6cls);
582 gr4to6cls->SetName("mygraph04ITSto6cls");
583 gr4to6cls->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
584 gr4to6cls->SetLineColor(1);
585 gr4to6cls->SetLineWidth(1);
586 gr4to6cls->SetMarkerColor(2);
587 gr4to6cls->SetMarkerStyle(24);
588 gr4to6cls->SetMarkerSize(1.);
589 gr4to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
590 gr4to6cls->GetYaxis()->SetTitle("ITS efficiency (normalized to kTPCin with 6 ITS cls)");
591 gr4to6cls->SetMaximum(1.2);
592 gr4to6cls->SetMinimum(0.);
593 gr4to6cls->Draw("AP");
594
595 gr5to6cls = new TGraphErrors(nPtBins,meanpt,n5ITSto6cls,errx,sigmn5ITSto6cls);
596 gr5to6cls->SetName("mygraph05ITSto6cls");
597 gr5to6cls->SetLineColor(1);
598 gr5to6cls->SetLineWidth(1);
599 gr5to6cls->SetMarkerColor(8);
600 gr5to6cls->SetMarkerStyle(25);
601 gr5to6cls->SetMarkerSize(1.);
602 gr5to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
603 gr5to6cls->GetYaxis()->SetTitle("");
604 gr5to6cls->Draw("P");
605
606 gr6to6cls = new TGraphErrors(nPtBins,meanpt,n6ITSto6cls,errx,sigmn6ITSto6cls);
607 gr6to6cls->SetName("mygraph06ITSto6cls");
608 gr6to6cls->SetLineColor(1);
609 gr6to6cls->SetLineWidth(1);
610 gr6to6cls->SetMarkerColor(4);
611 gr6to6cls->SetMarkerStyle(26);
612 gr6to6cls->SetMarkerSize(1.);
613 gr6to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
614 gr6to6cls->GetYaxis()->SetTitle("");
615 gr6to6cls->Draw("P");
616
617 gr3to6cls = new TGraphErrors(nPtBins,meanpt,n3ITSto6cls,errx,sigmn3ITSto6cls);
618 gr3to6cls->SetName("mygraph03ITSto6cls");
619 gr3to6cls->SetLineColor(1);
620 gr3to6cls->SetLineWidth(1);
621 gr3to6cls->SetMarkerColor(9);
622 gr3to6cls->SetMarkerStyle(27);
623 gr3to6cls->SetMarkerSize(1.);
624 gr3to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
625 gr3to6cls->GetYaxis()->SetTitle("");
626 gr3to6cls->Draw("P");
627
628 gr2to6cls = new TGraphErrors(nPtBins,meanpt,n2ITSto6cls,errx,sigmn2ITSto6cls);
629 gr2to6cls->SetName("mygraph02ITSto6cls");
630 gr2to6cls->SetLineColor(1);
631 gr2to6cls->SetLineWidth(1);
632 gr2to6cls->SetMarkerColor(1);
633 gr2to6cls->SetMarkerStyle(28);
634 gr2to6cls->SetMarkerSize(1.);
635 gr2to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
636 gr2to6cls->GetYaxis()->SetTitle("");
637 gr2to6cls->Draw("P");
638
639 gr1to6cls = new TGraphErrors(nPtBins,meanpt,n1ITSto6cls,errx,sigmn1ITSto6cls);
640 gr1to6cls->SetName("mygraph01ITSto6cls");
641 gr1to6cls->SetLineColor(1);
642 gr1to6cls->SetLineWidth(1);
643 gr1to6cls->SetMarkerColor(6);
644 gr1to6cls->SetMarkerStyle(29);
645 gr1to6cls->SetMarkerSize(1.);
646 gr1to6cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
647 gr1to6cls->GetYaxis()->SetTitle("");
648 gr1to6cls->Draw("P");
649
650
651 TLegend *l2_6 = new TLegend(0.5,0.5,0.9,0.9);
652 l2_6->SetFillStyle(0);
653 l2_6->SetBorderSize(0);
654 l2_6->AddEntry(gr6to6cls,"kTPCin + 6 ITS cls","p");
655 l2_6->AddEntry(gr5to6cls,"kTPCin + 5 ITS cls","p");
656 l2_6->AddEntry(gr4to6cls,"kTPCin + 4 ITS cls","p");
657 l2_6->AddEntry(gr3to6cls,"kTPCin + 3 ITS cls","p");
658 l2_6->AddEntry(gr2to6cls,"kTPCin + 2 ITS cls","p");
659 l2_6->AddEntry(gr1to6cls,"kTPCin + 1 ITS cls","p");
660 l2_6->Draw();
661
662 TCanvas* ceff2_5 = new TCanvas("ceff2_5","ceff2_5",cWidth,cHeight);
663 ceff2_5->SetLogx();
664 ceff2_5->SetGridy();
665
666 gr4to5cls = new TGraphErrors(nPtBins,meanpt,n4ITSto5cls,errx,sigmn4ITSto5cls);
667 gr4to5cls->SetName("mygraph04ITSto5cls");
668 gr4to5cls->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
669 gr4to5cls->SetLineColor(1);
670 gr4to5cls->SetLineWidth(1);
671 gr4to5cls->SetMarkerColor(2);
672 gr4to5cls->SetMarkerStyle(24);
673 gr4to5cls->SetMarkerSize(1.);
674 gr4to5cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
675 gr4to5cls->GetYaxis()->SetTitle("ITS efficiency (normalized to kTPCin with 5 ITS cls)");
676 gr4to5cls->SetMaximum(1.2);
677 gr4to5cls->SetMinimum(0.);
678 gr4to5cls->Draw("AP");
679
680 gr5to5cls = new TGraphErrors(nPtBins,meanpt,n5ITSto5cls,errx,sigmn5ITSto5cls);
681 gr5to5cls->SetName("mygraph05ITSto5cls");
682 gr5to5cls->SetLineColor(1);
683 gr5to5cls->SetLineWidth(1);
684 gr5to5cls->SetMarkerColor(1);
685 gr5to5cls->SetMarkerStyle(25);
686 gr5to5cls->SetMarkerSize(1.);
687 gr5to5cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
688 gr5to5cls->GetYaxis()->SetTitle("");
689 gr5to5cls->Draw("P");
690
691 TLegend *l2_5 = new TLegend(0.5,0.5,0.9,0.9);
692 l2_5->SetFillStyle(0);
693 l2_5->SetBorderSize(0);
694 l2_5->AddEntry(gr5to5cls,"kTPCin + 5 ITS cls","p");
695 l2_5->AddEntry(gr4to5cls,"kTPCin + 4 ITS cls","p");
696 l2_5->Draw();
697
698 TCanvas* ceff2_4 = new TCanvas("ceff2_4","ceff2_4",cWidth,cHeight);
699 ceff2_4->SetLogx();
700 ceff2_4->SetGridy();
701
702 gr4to4cls = new TGraphErrors(nPtBins,meanpt,n4ITSto4cls,errx,sigmn4ITSto4cls);
703 gr4to4cls->SetName("mygraph04ITSto4cls");
704 gr4to4cls->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
705 gr4to4cls->SetLineColor(1);
706 gr4to4cls->SetLineWidth(1);
707 gr4to4cls->SetMarkerColor(2);
708 gr4to4cls->SetMarkerStyle(24);
709 gr4to4cls->SetMarkerSize(1.);
710 gr4to4cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
711 gr4to4cls->GetYaxis()->SetTitle("ITS efficiency (normalized to kTPCin with 4 ITS cls)");
712 gr4to4cls->SetMaximum(1.2);
713 gr4to4cls->SetMinimum(0.);
714 gr4to4cls->Draw("AP");
715
716 gr3to4cls = new TGraphErrors(nPtBins,meanpt,n3ITSto4cls,errx,sigmn3ITSto4cls);
717 gr3to4cls->SetName("mygraph03ITSto4cls");
718 gr3to4cls->SetLineColor(1);
719 gr3to4cls->SetLineWidth(1);
720 gr3to4cls->SetMarkerColor(1);
721 gr3to4cls->SetMarkerStyle(25);
722 gr3to4cls->SetMarkerSize(1.);
723 gr3to4cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
724 gr3to4cls->GetYaxis()->SetTitle("");
725 gr3to4cls->Draw("P");
726
727 TLegend *l2_4 = new TLegend(0.5,0.5,0.9,0.9);
728 l2_4->SetFillStyle(0);
729 l2_4->SetBorderSize(0);
730 l2_4->AddEntry(gr4to4cls,"kTPCin + 4 ITS cls","p");
731 l2_4->AddEntry(gr3to4cls,"kTPCin + 3 ITS cls","p");
732 l2_4->Draw();
733
734 TCanvas* ceff2_3 = new TCanvas("ceff2_3","ceff2_3",cWidth,cHeight);
735 ceff2_3->SetLogx();
736 ceff2_3->SetGridy();
737
738 gr3to3cls = new TGraphErrors(nPtBins,meanpt,n3ITSto3cls,errx,sigmn3ITSto3cls);
739 gr3to3cls->SetName("mygraph03ITSto3cls");
740 gr3to3cls->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
741 gr3to3cls->SetLineColor(1);
742 gr3to3cls->SetLineWidth(1);
743 gr3to3cls->SetMarkerColor(2);
744 gr3to3cls->SetMarkerStyle(24);
745 gr3to3cls->SetMarkerSize(1.);
746 gr3to3cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
747 gr3to3cls->GetYaxis()->SetTitle("ITS efficiency (normalized to kTPCin with 3 ITS cls)");
748 gr3to3cls->SetMaximum(1.2);
749 gr3to3cls->SetMinimum(0.);
750 gr3to3cls->Draw("AP");
751
752 gr2to3cls = new TGraphErrors(nPtBins,meanpt,n2ITSto3cls,errx,sigmn2ITSto3cls);
753 gr2to3cls->SetName("mygraph02ITSto3cls");
754 gr2to3cls->SetLineColor(1);
755 gr2to3cls->SetLineWidth(1);
756 gr2to3cls->SetMarkerColor(1);
757 gr2to3cls->SetMarkerStyle(25);
758 gr2to3cls->SetMarkerSize(1.);
759 gr2to3cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
760 gr2to3cls->GetYaxis()->SetTitle("");
761 gr2to3cls->Draw("P");
762
763 TLegend *l2_3 = new TLegend(0.5,0.5,0.9,0.9);
764 l2_3->SetFillStyle(0);
765 l2_3->SetBorderSize(0);
766 l2_3->AddEntry(gr3to3cls,"kTPCin + 3 ITS cls","p");
767 l2_3->AddEntry(gr2to3cls,"kTPCin + 2 ITS cls","p");
768 l2_3->Draw();
769
770 TCanvas* ceff2_2 = new TCanvas("ceff2_2","ceff2_2",cWidth,cHeight);
771 ceff2_2->SetLogx();
772 ceff2_2->SetGridy();
773
774 gr1to2cls = new TGraphErrors(nPtBins,meanpt,n1ITSto2cls,errx,sigmn1ITSto2cls);
775 gr1to2cls->SetName("mygraph01ITSto2cls");
776 gr1to2cls->SetTitle("ITS tracking efficiency (B=0.5T, no misal.)");
777 gr1to2cls->SetLineColor(1);
778 gr1to2cls->SetLineWidth(1);
779 gr1to2cls->SetMarkerColor(2);
780 gr1to2cls->SetMarkerStyle(24);
781 gr1to2cls->SetMarkerSize(1.);
782 gr1to2cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
783 gr1to2cls->GetYaxis()->SetTitle("ITS efficiency (normalized to kTPCin with 2 ITS cls)");
784 gr1to2cls->SetMaximum(1.2);
785 gr1to2cls->SetMinimum(0.);
786 gr1to2cls->Draw("AP");
787
788 gr2to2cls = new TGraphErrors(nPtBins,meanpt,n2ITSto2cls,errx,sigmn2ITSto2cls);
789 gr2to2cls->SetName("mygraph02ITSto2cls");
790 gr2to2cls->SetLineColor(1);
791 gr2to2cls->SetLineWidth(1);
792 gr2to2cls->SetMarkerColor(1);
793 gr2to2cls->SetMarkerStyle(25);
794 gr2to2cls->SetMarkerSize(1.);
795 gr2to2cls->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
796 gr2to2cls->GetYaxis()->SetTitle("");
797 gr2to2cls->Draw("P");
798
799 TLegend *l2_2 = new TLegend(0.5,0.5,0.9,0.9);
800 l2_2->SetFillStyle(0);
801 l2_2->SetBorderSize(0);
802 l2_2->AddEntry(gr2to2cls,"kTPCin + 2 ITS cls","p");
803 l2_2->AddEntry(gr1to2cls,"kTPCin + 1 ITS cls","p");
804 l2_2->Draw();
805
806
807 TCanvas* ceff3 = new TCanvas("ceff3","ceff3",cWidth,cHeight);
808 ceff3->SetLogx();
809 ceff3->SetGridy();
810
811 gr4ITSclsparttoTPC = new TGraphErrors(nPtBins,meanpt,n4ITSclsparttoTPC,errx,sigmn4ITSclsparttoTPC);
812 gr4ITSclsparttoTPC->SetName("mygraph04ITSclsparttoTPC");
813 gr4ITSclsparttoTPC->SetTitle("Number of produced clusters (B=0.5T, no misal.)");
814 gr4ITSclsparttoTPC->SetLineColor(1);
815 gr4ITSclsparttoTPC->SetLineWidth(1);
816 gr4ITSclsparttoTPC->SetMarkerColor(2);
817 gr4ITSclsparttoTPC->SetMarkerStyle(22);
818 gr4ITSclsparttoTPC->SetMarkerSize(1.);
819 gr4ITSclsparttoTPC->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
820 gr4ITSclsparttoTPC->GetYaxis()->SetTitle("Fraction of primary kTPCin tracks producing N clusters");
821 gr4ITSclsparttoTPC->SetMaximum(1.2);
822 gr4ITSclsparttoTPC->SetMinimum(0.);
823 gr4ITSclsparttoTPC->Draw("AP");
824
825 gr5ITSclsparttoTPC = new TGraphErrors(nPtBins,meanpt,n5ITSclsparttoTPC,errx,sigmn5ITSclsparttoTPC);
826 gr5ITSclsparttoTPC->SetName("mygraph05ITSclsparttoTPC");
827 gr5ITSclsparttoTPC->SetLineColor(1);
828 gr5ITSclsparttoTPC->SetLineWidth(1);
829 gr5ITSclsparttoTPC->SetMarkerColor(8);
830 gr5ITSclsparttoTPC->SetMarkerStyle(22);
831 gr5ITSclsparttoTPC->SetMarkerSize(1.);
832 gr5ITSclsparttoTPC->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
833 gr5ITSclsparttoTPC->GetYaxis()->SetTitle("");
834 gr5ITSclsparttoTPC->Draw("P");
835
836 gr6ITSclsparttoTPC = new TGraphErrors(nPtBins,meanpt,n6ITSclsparttoTPC,errx,sigmn6ITSclsparttoTPC);
837 gr6ITSclsparttoTPC->SetName("mygraph06ITSITSclsparttoTPC");
838 gr6ITSclsparttoTPC->SetLineColor(1);
839 gr6ITSclsparttoTPC->SetLineWidth(1);
840 gr6ITSclsparttoTPC->SetMarkerColor(4);
841 gr6ITSclsparttoTPC->SetMarkerStyle(22);
842 gr6ITSclsparttoTPC->SetMarkerSize(1.);
843 gr6ITSclsparttoTPC->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
844 gr6ITSclsparttoTPC->GetYaxis()->SetTitle("");
845 gr6ITSclsparttoTPC->Draw("P");
846
847 gr3ITSclsparttoTPC = new TGraphErrors(nPtBins,meanpt,n3ITSclsparttoTPC,errx,sigmn3ITSclsparttoTPC);
848 gr3ITSclsparttoTPC->SetName("mygraph03ITSITSclsparttoTPC");
849 gr3ITSclsparttoTPC->SetLineColor(1);
850 gr3ITSclsparttoTPC->SetLineWidth(1);
851 gr3ITSclsparttoTPC->SetMarkerColor(6);
852 gr3ITSclsparttoTPC->SetMarkerStyle(22);
853 gr3ITSclsparttoTPC->SetMarkerSize(1.);
854 gr3ITSclsparttoTPC->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
855 gr3ITSclsparttoTPC->GetYaxis()->SetTitle("");
856 gr3ITSclsparttoTPC->Draw("P");
857
858 gr2ITSclsparttoTPC = new TGraphErrors(nPtBins,meanpt,n2ITSclsparttoTPC,errx,sigmn2ITSclsparttoTPC);
859 gr2ITSclsparttoTPC->SetName("mygraph06ITSITSclsparttoTPC");
860 gr2ITSclsparttoTPC->SetLineColor(1);
861 gr2ITSclsparttoTPC->SetLineWidth(1);
862 gr2ITSclsparttoTPC->SetMarkerColor(1);
863 gr2ITSclsparttoTPC->SetMarkerStyle(22);
864 gr2ITSclsparttoTPC->SetMarkerSize(1.);
865 gr2ITSclsparttoTPC->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
866 gr2ITSclsparttoTPC->GetYaxis()->SetTitle("");
867 gr2ITSclsparttoTPC->Draw("P");
868
869 TLegend *l3 = new TLegend(0.5,0.5,0.9,0.9);
870 l3->SetFillStyle(0);
871 l3->SetBorderSize(0);
872 l3->AddEntry(gr2ITSclsparttoTPC,"2 ITS cls","p");
873 l3->AddEntry(gr3ITSclsparttoTPC,"3 ITS cls","p");
874 l3->AddEntry(gr4ITSclsparttoTPC,"4 ITS cls","p");
875 l3->AddEntry(gr5ITSclsparttoTPC,"5 ITS cls","p");
876 l3->AddEntry(gr6ITSclsparttoTPC,"6 ITS cls","p");
877 l3->Draw();
878
879
880 ////////////--------------5 POINTS SCENARIO
881
882 TCanvas* fitting1 = new TCanvas("fitting1","5 Points Scenario tracks analysis",cWidth,cHeight);
883 fitting1->Divide(3,2);
884 fitting1->cd(1);
885 // gPad->SetLogy();
886 gPad->SetLogx();
887 gPad->SetGridx();
888 gPad->SetGridy();
889 gr133 = new TGraphErrors(nPtBins,meanpt,n133,errx,sigmn133);
890 gr133->SetName("mygraph133");
891 gr133->SetLineColor(1);
892 gr133->SetLineWidth(1);
893 gr133->SetMarkerColor(4);
894 gr133->SetMarkerStyle(21);
895 gr133->SetMarkerSize(.5);
896 titlegraph1="NTracks without SSD2 point for ";
897 //titlegraph1="d_{0}(r#phi) Resolution for ";
898 titlegraph1.Append(partforgraph);
899 // titlegraph1.Append(" using True Vertex");
900 gr133->SetTitle(titlegraph1);
901 gr133->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
902 gr133->GetYaxis()->SetTitle("");
903 gr133->Draw("AP");
904
905 fitting1->cd(4);
906 // gPad->SetLogy();
907 gPad->SetLogx();
908 gPad->SetGridx();
909 gPad->SetGridy();
910 gr233 = new TGraphErrors(nPtBins,meanpt,n233,errx,sigmn233);
911 gr233->SetName("mygraph233");
912 gr233->SetLineColor(1);
913 gr233->SetLineWidth(1);
914 gr233->SetMarkerColor(4);
915 gr233->SetMarkerStyle(21);
916 gr233->SetMarkerSize(.5);
917 //titlegraph1="d_{0}(r#phi) Resolution for ";
918 titlegraph1="NTracks without SSD1 point for ";
919 titlegraph1.Append(partforgraph);
920 // titlegraph1.Append(" using Reconstructed Vertex");
921 gr233->SetTitle(titlegraph1);
922 gr233->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
923 gr233->GetYaxis()->SetTitle("");
924 gr233->Draw("AP");
925
926 fitting1->cd(2);
927 // gPad->SetLogy();
928 gPad->SetLogx();
929 gPad->SetGridx();
930 gPad->SetGridy();
931 gr313 = new TGraphErrors(nPtBins,meanpt,n313,errx,sigmn313);
932 gr313->SetName("mygraph313");
933 gr313->SetLineColor(1);
934 gr313->SetLineWidth(1);
935 gr313->SetMarkerColor(4);
936 gr313->SetMarkerStyle(21);
937 gr313->SetMarkerSize(.5);
938 titlegraph1="NTracks without SDD2 point for ";
939 titlegraph1.Append(partforgraph);
940 // titlegraph1.Append(" using Vertex on the Fly");
941 gr313->SetTitle(titlegraph1);
942 gr313->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
943 gr313->GetYaxis()->SetTitle("");
944 gr313->Draw("AP");
945
946 fitting1->cd(5);
947 // gPad->SetLogy();
948 gPad->SetLogx();
949 gPad->SetGridx();
950 gPad->SetGridy();
951 gr323 = new TGraphErrors(nPtBins,meanpt,n323,errx,sigmn323);
952 gr323->SetName("mygraph323");
953 gr323->SetLineColor(1);
954 gr323->SetLineWidth(1);
955 gr323->SetMarkerColor(4);
956 gr323->SetMarkerStyle(21);
957 gr323->SetMarkerSize(.5);
958 titlegraph1="NTracks without SDD1 point for ";
959 titlegraph1.Append(partforgraph);
960 // titlegraph1.Append(" using Vertex on the Fly");
961 gr323->SetTitle(titlegraph1);
962 gr323->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
963 gr323->GetYaxis()->SetTitle("");
964 gr323->Draw("AP");
965
966 fitting1->cd(3);
967 // gPad->SetLogy();
968 gPad->SetLogx();
969 gPad->SetGridx();
970 gPad->SetGridy();
971 gr331 = new TGraphErrors(nPtBins,meanpt,n331,errx,sigmn331);
972 gr331->SetName("mygraph331");
973 gr331->SetLineColor(1);
974 gr331->SetLineWidth(1);
975 gr331->SetMarkerColor(4);
976 gr331->SetMarkerStyle(21);
977 gr331->SetMarkerSize(.5);
978 titlegraph1="NTracks without SPD2 point for ";
979 titlegraph1.Append(partforgraph);
980 // titlegraph1.Append(" using Vertex on the Fly");
981 gr331->SetTitle(titlegraph1);
982 gr331->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
983 gr331->GetYaxis()->SetTitle("");
984 gr331->Draw("AP");
985
986 fitting1->cd(6);
987 // gPad->SetLogy();
988 gPad->SetLogx();
989 gPad->SetGridx();
990 gPad->SetGridy();
991 gr332 = new TGraphErrors(nPtBins,meanpt,n332,errx,sigmn332);
992 gr332->SetName("mygraph332");
993 gr332->SetLineColor(1);
994 gr332->SetLineWidth(1);
995 gr332->SetMarkerColor(4);
996 gr332->SetMarkerStyle(21);
997 gr332->SetMarkerSize(.5);
998 titlegraph1="NTracks without SPD1 point for ";
999 titlegraph1.Append(partforgraph);
1000 // titlegraph1.Append(" using Vertex on the Fly");
1001 gr332->SetTitle(titlegraph1);
1002 gr332->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
1003 gr332->GetYaxis()->SetTitle("");
1004 gr332->Draw("AP");
1005
1006
1007 TCanvas* fitting2 = new TCanvas("fitting2","SPD Scenario tracks analysis",cWidth,cHeight);
1008 fitting2->Divide(3,2);
1009
1010 fitting2->cd(1);
1011 gPad->SetLogx();
1012 gPad->SetGridx();
1013 gPad->SetGridy();
1014 gr331->Draw("AP");
1015
1016 fitting2->cd(2);
1017 gPad->SetLogx();
1018 gPad->SetGridx();
1019 gPad->SetGridy();
1020 gr332->Draw("AP");
1021
1022 fitting2->cd(3);
1023 // gPad->SetLogy();
1024 gPad->SetLogx();
1025 gPad->SetGridx();
1026 gPad->SetGridy();
1027 gr330 = new TGraphErrors(nPtBins,meanpt,n330,errx,sigmn330);
1028 gr330->SetName("mygraph330");
1029 gr330->SetLineColor(1);
1030 gr330->SetLineWidth(1);
1031 gr330->SetMarkerColor(4);
1032 gr330->SetMarkerStyle(21);
1033 gr330->SetMarkerSize(.5);
1034 titlegraph1="NTracks without 2 SPD points for ";
1035 //titlegraph1="d_{0}(r#phi) Resolution for ";
1036 titlegraph1.Append(partforgraph);
1037 // titlegraph1.Append(" using True Vertex");
1038 gr330->SetTitle(titlegraph1);
1039 gr330->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
1040 gr330->GetYaxis()->SetTitle("");
1041 gr330->Draw("AP");
1042
1043 fitting2->cd(4);
1044 // gPad->SetLogy();
1045 gPad->SetLogx();
1046 gPad->SetGridx();
1047 gPad->SetGridy();
1048 grSSD = new TGraphErrors(nPtBins,meanpt,nSSD,errx,sigmnSSD);
1049 grSSD->SetName("mygraphSSD");
1050 grSSD->SetLineColor(1);
1051 grSSD->SetLineWidth(1);
1052 grSSD->SetMarkerColor(4);
1053 grSSD->SetMarkerStyle(21);
1054 grSSD->SetMarkerSize(.5);
1055 titlegraph1="NTracks without one SSD point for ";
1056 //titlegraph1="d_{0}(r#phi) Resolution for ";
1057 titlegraph1.Append(partforgraph);
1058 // titlegraph1.Append(" using True Vertex");
1059 grSSD->SetTitle(titlegraph1);
1060 grSSD->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
1061 grSSD->GetYaxis()->SetTitle("");
1062 grSSD->Draw("AP");
1063
1064 fitting2->cd(5);
1065 // gPad->SetLogy();
1066 gPad->SetLogx();
1067 gPad->SetGridx();
1068 gPad->SetGridy();
1069 grSDD = new TGraphErrors(nPtBins,meanpt,nSDD,errx,sigmnSDD);
1070 grSDD->SetName("mygraphSDD");
1071 grSDD->SetLineColor(1);
1072 grSDD->SetLineWidth(1);
1073 grSDD->SetMarkerColor(4);
1074 grSDD->SetMarkerStyle(21);
1075 grSDD->SetMarkerSize(.5);
1076 titlegraph1="NTracks without one SDD point for ";
1077 //titlegraph1="d_{0}(r#phi) Resolution for ";
1078 titlegraph1.Append(partforgraph);
1079 // titlegraph1.Append(" using True Vertex");
1080 grSDD->SetTitle(titlegraph1);
1081 grSDD->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
1082 grSDD->GetYaxis()->SetTitle("");
1083 grSDD->Draw("AP");
1084
1085 fitting2->cd(6);
1086 // gPad->SetLogy();
1087 gPad->SetLogx();
1088 gPad->SetGridx();
1089 gPad->SetGridy();
1090 grOTHERS = new TGraphErrors(nPtBins,meanpt,nOTHERS,errx,sigmnOTHERS);
1091 grOTHERS->SetName("mygraphOTHERS");
1092 grOTHERS->SetLineColor(1);
1093 grOTHERS->SetLineWidth(1);
1094 grOTHERS->SetMarkerColor(4);
1095 grOTHERS->SetMarkerStyle(21);
1096 grOTHERS->SetMarkerSize(.5);
1097 titlegraph1="NTracks with 4 points (2 SPD+ ?)for ";
1098 //titlegraph1="d_{0}(r#phi) Resolution for ";
1099 titlegraph1.Append(partforgraph);
1100 // titlegraph1.Append(" using True Vertex");
1101 grOTHERS->SetTitle(titlegraph1);
1102 grOTHERS->GetXaxis()->SetTitle("p_{t} [GeV/c] ");
1103 grOTHERS->GetYaxis()->SetTitle("");
1104 grOTHERS->Draw("AP");
1105
1106 ceff0->cd();
1107 gr330->Draw("p");
1108 gr331->Draw("p");
1109 gr332->Draw("p");
1110 grSSD->Draw("p");
1111 grSDD->Draw("p");
1112 // gr313->Draw("p");
1113 // gr323->Draw("p");
1114 //gr133->Draw("p");
1115 //gr233->Draw("p");
1116
1117
1118 //---------CLOSE EVRYTHING AND SAVE------------
1119 TFile *outfile = new TFile("EfficienciesAnalysis.root","recreate");
1120 gr4->Write();
1121 gr5->Write();
1122 gr6->Write();
1123 gr456->Write();
1124 gr4toGen->Write();
1125 gr5toGen->Write();
1126 gr6toGen->Write();
1127 gr456toGen->Write();
1128 grTPCtoGen->Write();
1129 gr4to6cls->Write();
1130 gr5to6cls->Write();
1131 gr6to6cls->Write();
1132 //gr456to6cls->Write();
1133 //gr330->Write();
1134 //gr331->Write();
1135 //gr332->Write();
1136 //gr323->Write();
1137 //gr313->Write();
1138 //gr133->Write();
1139 //gr233->Write();
1140 //grOTHERS->Write();
1141 //grSPD->Write();
1142 //grSSD->Write();
1143 //grSDD->Write();
1144 outfile->Close();
1145
1146
1147 printf("Number of fakes: %d\n",nfakes);
1148 return;
1149}
1150//--------------------------------------------------------------------------
1151Int_t ITSnCluster(Int_t ITSf)
1152{
1153 Int_t sign,aITSf,n0,n3,aux,ITSsel;//be careful!:working with integer!
1154 n0=0;
1155 n3=0;
1156 aITSf=TMath::Abs(ITSf);
1157 if(aITSf==0)sign=0;
1158 else if (aITSf==ITSf)sign=1;
1159 else if(aITSf==-ITSf)sign=-1;
1160
1161 if (aITSf/100<1)n0++;
1162 n3=aITSf/300;
1163 aux=(aITSf-(aITSf/100)*100);
1164 if(aux/10<1)n0++;
1165 n3+=aux/30;
1166 aux=(aux-(aux/10)*10);
1167 if (aux==0)n0++;
1168 n3+=aux/3;
1169 ITSsel=3+n3-n0;
1170
1171 if(ITSsel>6) {
1172 cout<<"Wrong ITSflag assignment!"<<endl;
1173 return 99;
1174 }
1175
1176 return ITSsel*sign;
1177}
1178//----------------------------------------------------------------------------