]> git.uio.no Git - u/mrichter/AliRoot.git/blob - test/vmctest/scripts/efficiency/doubleRatio.C
Added analysis task for effiency studies (original by Veronica Canoa Roman). Now...
[u/mrichter/AliRoot.git] / test / vmctest / scripts / efficiency / doubleRatio.C
1 // plot macro for double ratio of reconstruction efficiencies of different particles
2 // Author: Eva Sicking
3
4 void doubleRatio(Int_t trackType=0, Int_t particle=3)
5 {
6
7   //particle names
8   TString partName[4]={"Deu", "Tri", "He3", "He4"};
9
10   // track type names
11   TString trackName[4]={"Global", "TPC", "ITS_SA", "ITS"};
12
13   //open file and lists
14   //output of AliAnalysisTaskEfficiency
15   TFile *f = new TFile("AnalysisResults.root");
16   TList *list = (TList *)f->Get(Form("QAHists/QAHists_%s",trackName[trackType].Data()));
17
18   //style
19   gROOT->SetStyle("Plain");
20   gStyle->SetOptStat(0);
21   const Int_t NRGBs = 5;
22   const Int_t NCont = 500;
23   Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
24   Double_t red[NRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
25   Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
26   Double_t blue[NRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
27   TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
28   gStyle->SetNumberContours(NCont);
29     
30   // Pt     
31   TH1F* fHistRECpt  =  (TH1F*) list->
32     FindObject(Form("fHistRECptChargeAnti%s",partName[particle].Data()));
33   TH1F* fHistMCpt   =  (TH1F*) list->
34     FindObject(Form("fHistMCptChargeAnti%s",partName[particle].Data()));
35   TH1F* fHistFAKEpt =  (TH1F*) list->
36     FindObject(Form("fHistFAKEptChargeAnti%s",partName[particle].Data()));
37   TH1F* fHistMCNRpt =  (TH1F*) list->
38     FindObject(Form("fHistMCNRptChargeAnti%s",partName[particle].Data()));
39   
40     
41   c1 = new TCanvas(Form("pT_antinuclei_%s",trackName[trackType].Data()),
42                    Form("pT_antinuclei_%s",trackName[trackType].Data()),
43                    100, 100, 1000,600 );
44   c1->Divide(2,2);
45   c1->cd(1);
46   c1->GetPad(1)->SetLogy();
47     
48   fHistMCpt->SetXTitle("p_{T} [GeV]");
49   fHistMCpt->SetMinimum(1);
50   fHistMCpt->Draw();
51   fHistMCpt->SetTitle("");
52   fHistRECpt->SetLineColor(2);
53   fHistRECpt->Draw("same");
54   fHistFAKEpt->SetLineColor(4);
55   fHistFAKEpt->Draw("same");
56   fHistMCNRpt->SetLineColor(3);
57   fHistMCNRpt->Draw("same");
58
59   c1->cd(4);
60   fHistPtInEff = (TH1F*) fHistMCNRpt->Clone();
61   fHistPtInEff->Divide(fHistMCpt);
62   fHistPtInEff->SetXTitle("p_{T} [GeV]");
63   fHistPtInEff->SetTitle("Inefficiency from non-rec. MC tracks");
64   fHistPtInEff->Draw();
65   fHistPtInEff->SetMinimum(0);
66   fHistPtInEff->SetMaximum(1);
67
68   c1->cd(3);
69   fHistPtEff = (TH1F*) fHistRECpt->Clone();
70   fHistPtEff->Add(fHistFAKEpt, -1.);
71   fHistPtEff->Divide(fHistMCpt);
72   //fHistPtEff->Add(fHistPtInEff);
73   fHistPtEff->SetXTitle("p_{T} [GeV]");
74   fHistPtEff->SetTitle("Efficiency");
75   fHistPtEff->Draw();
76   fHistPtEff->SetMinimum(0);
77   fHistPtEff->SetMaximum(1);
78
79   c1->cd(2);
80   TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
81   line->SetLineWidth(2);
82   line->Draw();
83   tex = new TLatex(0.25, 0.73, "MC");
84   tex->SetLineWidth(2);
85   tex->Draw();
86
87   line = new TLine(0.07, 0.55, 0.2, 0.55);
88   line->SetLineColor(2);
89   line->SetLineWidth(2);
90   line->Draw();
91   tex = new TLatex(0.25, 0.53, "Reconstructed");
92   tex->SetLineWidth(2);
93   tex->Draw();
94
95   line = new TLine(0.07, 0.35, 0.2, 0.35);
96   line->SetLineColor(4);
97   line->SetLineWidth(2);
98   line->Draw();
99   tex = new TLatex(0.25, 0.33, "Fake Tracks");
100   tex->SetLineWidth(2);
101   tex->Draw();
102
103
104   line = new TLine(0.07, 0.15, 0.2, 0.15);
105   line->SetLineColor(3);
106   line->SetLineWidth(2);
107   line->Draw();
108   tex = new TLatex(0.25, 0.13, "MC not reconstructed");
109   tex->SetLineWidth(2);
110   tex->Draw();
111
112
113
114   // Pt     
115   TH1F* fHistRECpt2  =  (TH1F*) list->
116     FindObject(Form("fHistRECptCharge%s",partName[particle].Data()));
117   TH1F* fHistMCpt2   =  (TH1F*) list->
118     FindObject(Form("fHistMCptCharge%s",partName[particle].Data()));
119   TH1F* fHistFAKEpt2 =  (TH1F*) list->
120     FindObject(Form("fHistFAKEptCharge%s",partName[particle].Data()));
121   TH1F* fHistMCNRpt2 =  (TH1F*) list->
122     FindObject(Form("fHistMCNRptCharge%s",partName[particle].Data()));
123     
124   c2 = new TCanvas(Form("pT_nuclei_%s",trackName[trackType].Data()),
125                    Form("pT_nuclei_%s",trackName[trackType].Data()),
126                    100, 100, 1000,600 );
127   c2->Divide(2,2);
128   c2->cd(1);
129   c2->GetPad(1)->SetLogy();
130     
131   fHistMCpt2->SetXTitle("p_{T} [GeV]");
132   fHistMCpt2->SetMinimum(1);
133   fHistMCpt2->Draw();
134   fHistMCpt2->SetTitle("");
135   fHistRECpt2->SetLineColor(2);
136   fHistRECpt2->Draw("same");
137   fHistFAKEpt2->SetLineColor(4);
138   fHistFAKEpt2->Draw("same");
139   fHistMCNRpt2->SetLineColor(3);
140   fHistMCNRpt2->Draw("same");
141
142   c2->cd(4);
143   fHistPtInEff2 = (TH1F*) fHistMCNRpt2->Clone();
144   fHistPtInEff2->Divide(fHistMCpt2);
145   fHistPtInEff2->SetXTitle("p_{T} [GeV]");
146   fHistPtInEff2->SetTitle("Inefficiency from non-rec. MC tracks");
147   fHistPtInEff2->Draw();
148   fHistPtInEff2->SetMinimum(0);
149   fHistPtInEff2->SetMaximum(1);
150
151   c2->cd(3);
152   fHistPtEff2 = (TH1F*) fHistRECpt2->Clone();
153   fHistPtEff2->Add(fHistFAKEpt2, -1.);
154   fHistPtEff2->Divide(fHistMCpt2);
155   //    fHistPtEff->Add(fHistPtInEff);
156   fHistPtEff2->SetXTitle("p_{T} [GeV]");
157   fHistPtEff2->SetTitle("Efficiency");
158   fHistPtEff2->Draw();
159   fHistPtEff2->SetMinimum(0);
160   fHistPtEff2->SetMaximum(1);
161
162   c2->cd(2);
163   TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
164   line->SetLineWidth(2);
165   line->Draw();
166   tex = new TLatex(0.25, 0.73, "MC");
167   tex->SetLineWidth(2);
168   tex->Draw();
169
170   line = new TLine(0.07, 0.55, 0.2, 0.55);
171   line->SetLineColor(2);
172   line->SetLineWidth(2);
173   line->Draw();
174   tex = new TLatex(0.25, 0.53, "Reconstructed");
175   tex->SetLineWidth(2);
176   tex->Draw();
177
178   line = new TLine(0.07, 0.35, 0.2, 0.35);
179   line->SetLineColor(4);
180   line->SetLineWidth(2);
181   line->Draw();
182   tex = new TLatex(0.25, 0.33, "Fake Tracks");
183   tex->SetLineWidth(2);
184   tex->Draw();
185
186
187   line = new TLine(0.07, 0.15, 0.2, 0.15);
188   line->SetLineColor(3);
189   line->SetLineWidth(2);
190   line->Draw();
191   tex = new TLatex(0.25, 0.13, "MC not reconstructed");
192   tex->SetLineWidth(2);
193   tex->Draw();
194
195
196
197
198   new TCanvas;
199   
200   fHistPtEffPosNeg = (TH1F*) fHistPtEff->Clone();
201   fHistPtEffPosNeg->Divide(fHistPtEff2);
202   fHistPtEffPosNeg->SetLineWidth(2);
203   fHistPtEffPosNeg->Draw();
204   fHistPtEffPosNeg->SetMinimum(0);
205   fHistPtEffPosNeg->SetMaximum(1.2);
206   fHistPtEff->Draw("same");//anti-particle
207   fHistPtEff->SetLineColor(kRed);
208   fHistPtEff->SetLineWidth(2);
209   fHistPtEff2->Draw("same");
210   fHistPtEff2->SetLineColor(kBlack);
211   fHistPtEff2->SetLineWidth(2);
212   TF1 *func = new TF1("func", "1",-5,20);
213   func->SetLineWidth(1);
214   func->Draw("same");
215
216
217
218
219
220
221   TLegend *legp= new TLegend(0.65,0.78,0.9,0.98);
222   legp->SetFillColor(kWhite);
223   legp->SetBorderSize(0);
224   Int_t number =4;
225   TF1 *fun[2];
226   for(Int_t i=0;i<2;i++){
227     fun[i]= new TF1(Form("fun%d",i),"gaus",-5.0,5.0);
228     fun[i]->SetLineColor(2**i);
229     fun[i]->SetLineStyle(1);
230   }
231   legp->AddEntry(fun[0],Form("%s",partName[particle].Data() ),"l");   
232   legp->AddEntry(fun[1],Form("Anti-%s",partName[particle].Data() ),"l");   
233
234
235
236   
237   gROOT->SetStyle("Plain");
238   gStyle->SetOptStat(0);
239   gStyle->SetPalette(1);
240
241
242   TCanvas *c = new TCanvas("c","PtAll" , 100, 100, 880, 680);
243   c->Draw();
244   c ->cd();
245   TPad *pad_spectrum = new TPad( "pad_spectrum","pad_spectrum", 0.0,0.39,1.0,0.95);
246   c ->cd();
247   TPad *pad_ratio = new TPad( "pad_ratio","pad_ratio", 0.0,0.03,1.0,0.39);  
248   
249   
250   c ->cd();
251   pad_spectrum->SetTopMargin(0.);
252   pad_spectrum->SetBottomMargin(0.);
253   pad_spectrum->SetLeftMargin(0.12);
254   pad_spectrum->SetRightMargin(0.055);
255   pad_spectrum->Draw();
256   pad_spectrum->cd(); 
257   TH1F * histo = new TH1F("histo", "",150, -0.5,149.5 );
258   histo->GetXaxis()->SetRangeUser(0,11);
259   //  histo->GetXaxis()->SetRangeUser(25,35);
260   histo->GetYaxis()->SetRangeUser(0.01,1.3);
261   histo->SetXTitle("N_{charged}");
262   histo->SetTitle("");
263   histo->SetYTitle("efficiency  ");
264   histo->Draw();
265   histo->GetYaxis()->SetNdivisions(10);
266   histo->GetYaxis()->SetLabelSize(0.07);
267   histo->GetYaxis()->SetTitleSize(0.08);
268   histo->GetYaxis()->SetTitleOffset(0.6);
269  
270   fHistPtEff->Draw("same");
271   fHistPtEff2->Draw("same");
272
273   legp->Draw();
274   
275   
276
277   c ->cd();
278   pad_ratio->SetTopMargin(0.);
279   pad_ratio->SetBottomMargin(0.36);
280   pad_ratio->SetLeftMargin(0.12);
281   pad_ratio->SetRightMargin(0.055);
282   pad_ratio->Draw();
283   pad_ratio->cd(); 
284   TH1F * histo2 = new TH1F("histo2", "",150, -0.5,149.5 );
285   histo2->GetXaxis()->SetRangeUser(0,90);
286   //  histo->GetXaxis()->SetRangeUser(25,35);
287   histo2->SetXTitle("p_{T} (GeV/c)");
288   histo2->SetTitle("");
289   histo2->SetYTitle("Ratio Neg / Pos");
290   histo2->Draw();
291   histo2->GetXaxis()->SetRangeUser(0.0,11);
292   histo2->SetLabelSize(0.1,"X");
293   histo2->SetLabelSize(0.1,"Y");
294   histo2->SetTitleSize(0.09,"X");
295   histo2->SetTitleSize(0.09,"Y");
296   histo2->SetTitleOffset(0.3,"Y");
297   histo2->GetYaxis()->SetRangeUser(0.59,1.16);
298   histo2->GetYaxis()->SetNdivisions(4);
299   histo2->GetYaxis()->SetLabelSize(0.12);
300   histo2->GetXaxis()->SetLabelSize(0.12);
301   histo2->GetXaxis()->SetTitleSize(0.15);
302   histo2->GetYaxis()->SetTitleSize(0.11);
303
304   fHistPtEffPosNeg->Draw("same");
305   func->Draw("same");
306   func->SetLineStyle(2);
307
308   c->Print(Form("%s.png",partName[particle].Data()));
309
310 }