1 // plot macro for double ratio of reconstruction efficiencies of different particles
4 void doubleRatio(Int_t trackType=0, Int_t particle=3)
8 TString partName[4]={"Deu", "Tri", "He3", "He4"};
11 TString trackName[4]={"Global", "TPC", "ITS_SA", "ITS"};
14 //output of AliAnalysisTaskEfficiency
15 TFile *f = new TFile("AnalysisResults.root");
16 TList *list = (TList *)f->Get(Form("QAHists/QAHists_%s",trackName[trackType].Data()));
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);
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()));
41 c1 = new TCanvas(Form("pT_antinuclei_%s",trackName[trackType].Data()),
42 Form("pT_antinuclei_%s",trackName[trackType].Data()),
46 c1->GetPad(1)->SetLogy();
48 fHistMCpt->SetXTitle("p_{T} [GeV]");
49 fHistMCpt->SetMinimum(1);
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");
60 fHistPtInEff = (TH1F*) fHistMCNRpt->Clone();
61 fHistPtInEff->Divide(fHistMCpt);
62 fHistPtInEff->SetXTitle("p_{T} [GeV]");
63 fHistPtInEff->SetTitle("Inefficiency from non-rec. MC tracks");
65 fHistPtInEff->SetMinimum(0);
66 fHistPtInEff->SetMaximum(1);
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");
76 fHistPtEff->SetMinimum(0);
77 fHistPtEff->SetMaximum(1);
80 TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
81 line->SetLineWidth(2);
83 tex = new TLatex(0.25, 0.73, "MC");
87 line = new TLine(0.07, 0.55, 0.2, 0.55);
88 line->SetLineColor(2);
89 line->SetLineWidth(2);
91 tex = new TLatex(0.25, 0.53, "Reconstructed");
95 line = new TLine(0.07, 0.35, 0.2, 0.35);
96 line->SetLineColor(4);
97 line->SetLineWidth(2);
99 tex = new TLatex(0.25, 0.33, "Fake Tracks");
100 tex->SetLineWidth(2);
104 line = new TLine(0.07, 0.15, 0.2, 0.15);
105 line->SetLineColor(3);
106 line->SetLineWidth(2);
108 tex = new TLatex(0.25, 0.13, "MC not reconstructed");
109 tex->SetLineWidth(2);
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()));
124 c2 = new TCanvas(Form("pT_nuclei_%s",trackName[trackType].Data()),
125 Form("pT_nuclei_%s",trackName[trackType].Data()),
126 100, 100, 1000,600 );
129 c2->GetPad(1)->SetLogy();
131 fHistMCpt2->SetXTitle("p_{T} [GeV]");
132 fHistMCpt2->SetMinimum(1);
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");
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);
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");
159 fHistPtEff2->SetMinimum(0);
160 fHistPtEff2->SetMaximum(1);
163 TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
164 line->SetLineWidth(2);
166 tex = new TLatex(0.25, 0.73, "MC");
167 tex->SetLineWidth(2);
170 line = new TLine(0.07, 0.55, 0.2, 0.55);
171 line->SetLineColor(2);
172 line->SetLineWidth(2);
174 tex = new TLatex(0.25, 0.53, "Reconstructed");
175 tex->SetLineWidth(2);
178 line = new TLine(0.07, 0.35, 0.2, 0.35);
179 line->SetLineColor(4);
180 line->SetLineWidth(2);
182 tex = new TLatex(0.25, 0.33, "Fake Tracks");
183 tex->SetLineWidth(2);
187 line = new TLine(0.07, 0.15, 0.2, 0.15);
188 line->SetLineColor(3);
189 line->SetLineWidth(2);
191 tex = new TLatex(0.25, 0.13, "MC not reconstructed");
192 tex->SetLineWidth(2);
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);
221 TLegend *legp= new TLegend(0.65,0.78,0.9,0.98);
222 legp->SetFillColor(kWhite);
223 legp->SetBorderSize(0);
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);
231 legp->AddEntry(fun[0],Form("%s",partName[particle].Data() ),"l");
232 legp->AddEntry(fun[1],Form("Anti-%s",partName[particle].Data() ),"l");
237 gROOT->SetStyle("Plain");
238 gStyle->SetOptStat(0);
239 gStyle->SetPalette(1);
242 TCanvas *c = new TCanvas("c","PtAll" , 100, 100, 880, 680);
245 TPad *pad_spectrum = new TPad( "pad_spectrum","pad_spectrum", 0.0,0.39,1.0,0.95);
247 TPad *pad_ratio = new TPad( "pad_ratio","pad_ratio", 0.0,0.03,1.0,0.39);
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();
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}");
263 histo->SetYTitle("efficiency ");
265 histo->GetYaxis()->SetNdivisions(10);
266 histo->GetYaxis()->SetLabelSize(0.07);
267 histo->GetYaxis()->SetTitleSize(0.08);
268 histo->GetYaxis()->SetTitleOffset(0.6);
270 fHistPtEff->Draw("same");
271 fHistPtEff2->Draw("same");
278 pad_ratio->SetTopMargin(0.);
279 pad_ratio->SetBottomMargin(0.36);
280 pad_ratio->SetLeftMargin(0.12);
281 pad_ratio->SetRightMargin(0.055);
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");
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);
304 fHistPtEffPosNeg->Draw("same");
306 func->SetLineStyle(2);
308 c->Print(Form("%s.png",partName[particle].Data()));