]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/macros/PlotITSTrackingEff.C
Updates in D+ histos and ntuples (Renu, Francesco, Elena)
[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   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 //--------------------------------------------------------------------------
1151 Int_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 //----------------------------------------------------------------------------