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