]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/macros/MakeVtxEffPlots.C
Update
[u/mrichter/AliRoot.git] / PWG1 / macros / MakeVtxEffPlots.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include "TSystem.h"
3 #include "TROOT.h"
4 #include <TString.h>
5 #include <TH1.h>
6 #include <TGraphAsymmErrors.h>
7 #include <TCanvas.h>
8 #include <TLegend.h>
9 #include <TMath.h>
10 #include <TFile.h>
11 #endif
12
13
14 void setDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TGraphAsymmErrors *h1)
15
16   h1->SetMarkerStyle(markerstyle);
17   h1->SetMarkerColor(markercolor);
18   h1->SetMarkerSize(markersize);
19   h1->SetLineColor(linecolor);
20   h1->SetLineWidth(linewidth);
21   }
22 void setDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TH1 *h1)
23
24   h1->SetMarkerStyle(markerstyle);
25   h1->SetMarkerColor(markercolor);
26   h1->SetMarkerSize(markersize);
27   h1->SetLineColor(linecolor);
28   h1->SetLineWidth(linewidth);
29   }
30
31 void MakeVtxEffPlots(TString foldname="",Bool_t savefile=kFALSE){
32
33   //Make efficiency plots for SPD vertex and TRK Vertex
34   
35   TFile *infil=new TFile(Form("%sAnalysisResults.root",foldname.Data()),"read");
36   TDirectory *dirFile=(TDirectory*)infil->Get("Vertex_Performance");
37   TList *cOutput = (TList*)dirFile->Get("cOutputVtxESD");
38     
39   TH1F *fhTriggeredTrklets=(TH1F*)cOutput->FindObject("fhTriggeredTrklets");
40   TH1F *fhSPDZTrklets=(TH1F*)cOutput->FindObject("fhSPDZTrklets");
41   TH1F *fhSPD3DTrklets=(TH1F*)cOutput->FindObject("fhSPD3DTrklets");
42   TH1F *fhTRKTrklets=(TH1F*)cOutput->FindObject("fhTRKTrklets");
43   TH1F *fhTRKcTrklets=(TH1F*)cOutput->FindObject("fhTRKcTrklets");
44   TH1F *fhTRKncTrklets=(TH1F*)cOutput->FindObject("fhTRKncTrklets");
45   TH1F *fhSPDZZreco=(TH1F*)cOutput->FindObject("fhSPDZZreco");
46   TH1F *fhSPD3DZreco=(TH1F*)cOutput->FindObject("fhSPD3DZreco");
47   
48   TGraphAsymmErrors *fhSPDZEffTrklets=new TGraphAsymmErrors(fhSPDZTrklets,fhTriggeredTrklets,"w");
49   fhSPDZEffTrklets->SetName("fhSPDZEffTrklets");
50   fhSPDZEffTrklets->SetDrawOption("AP");
51   TGraphAsymmErrors *fhSPD3DEffTrklets=new TGraphAsymmErrors(fhSPD3DTrklets,fhTriggeredTrklets,"w");
52   fhSPD3DEffTrklets->SetName("fhSPD3DEffTrklets");
53   TH1F * fhSPDOverallTrklets=(TH1F*)fhSPDZTrklets->Clone("fhSPDOverallTrklets");
54   fhSPDOverallTrklets->Add(fhSPD3DTrklets);
55   TGraphAsymmErrors *fhSPDOverallEffTrklets=new TGraphAsymmErrors(fhSPDOverallTrklets,fhTriggeredTrklets,"w");
56   fhSPDOverallEffTrklets->SetName("fhSPDOverallEffTrklets");
57   TGraphAsymmErrors *fhTRKEffTrklets=new TGraphAsymmErrors(fhTRKTrklets,fhTriggeredTrklets,"w");
58   fhTRKEffTrklets->SetName("fhTRKEffTrklets");
59   TGraphAsymmErrors *fhTRKcEffTrklets=new TGraphAsymmErrors(fhTRKcTrklets,fhTriggeredTrklets,"w");
60   fhTRKcEffTrklets->SetName("fhTRKcEffTrklets");
61   TGraphAsymmErrors *fhTRKncEffTrklets=new TGraphAsymmErrors(fhTRKncTrklets,fhTriggeredTrklets,"w");
62   fhTRKncEffTrklets->SetName("fhTRKncEffTrklets");
63   TH1F * fhSPDOverallZreco=(TH1F*)fhSPDZZreco->Clone("fhSPDOverallZreco");
64   fhSPDOverallZreco->Add(fhSPD3DZreco);
65   TGraphAsymmErrors *fhSPDEffZreco=new TGraphAsymmErrors(fhSPD3DZreco,fhSPDOverallZreco,"w");
66   fhSPDEffZreco->SetName("fhSPDEffZreco");
67
68   TH1F *fhEff = new TH1F("hEff","hEff",6,0.5,6.5);
69   Int_t count=1;
70   if(fhSPDZTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
71     fhEff->Fill(count,fhSPDZTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
72     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhSPDZTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
73   }
74   fhEff->GetXaxis()->SetBinLabel(count,"SPDZ");
75   
76   count++;
77   if(fhSPD3DTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
78     fhEff->Fill(count,fhSPD3DTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
79     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhSPD3DTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
80   }
81   fhEff->GetXaxis()->SetBinLabel(count,"SPD3D");
82   
83   count++;
84   if(fhSPDOverallTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
85     fhEff->Fill(count,fhSPDOverallTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
86     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhSPDOverallTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
87   }
88   fhEff->GetXaxis()->SetBinLabel(count,"SPD Overall");
89   
90   count++;
91   if(fhTRKTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
92     fhEff->Fill(count,fhTRKTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
93     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhTRKTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
94   }
95   fhEff->GetXaxis()->SetBinLabel(count,"TRK");
96   
97   count++;
98   if(fhTRKcTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
99     fhEff->Fill(count,fhTRKcTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
100     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhTRKcTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
101   }
102   fhEff->GetXaxis()->SetBinLabel(count,"TRKc");
103   
104   count++;
105   if(fhTRKncTrklets->GetEntries()!=0 && fhTriggeredTrklets->GetEntries()!=0){
106     fhEff->Fill(count,fhTRKncTrklets->GetEntries()/fhTriggeredTrklets->GetEntries());
107     fhEff->SetBinError(count,fhEff->GetBinContent(count)*TMath::Sqrt(1/fhTRKncTrklets->GetEntries()+1/fhTriggeredTrklets->GetEntries()));
108   }
109   fhEff->GetXaxis()->SetBinLabel(count,"TRKnc");
110   
111   count++;
112   
113   TCanvas *canvSPDTrklets=new TCanvas("canvSPDTrklets","SPD Eff vs tracklet multiplicy");
114   canvSPDTrklets->SetBottomMargin(0.14);
115   canvSPDTrklets->SetTopMargin(0.08);
116   canvSPDTrklets->SetLeftMargin(0.14);
117   canvSPDTrklets->SetRightMargin(0.08);
118   fhSPDZEffTrklets->SetMinimum(0);
119   fhSPDZEffTrklets->SetMaximum(1.2);
120   fhSPDZEffTrklets->GetXaxis()->SetLimits(0,30);
121   fhSPDZEffTrklets->GetXaxis()->SetTitle("tracklet multiplicity");
122   fhSPDZEffTrklets->GetXaxis()->SetTitleSize(0.05);
123   fhSPDZEffTrklets->GetYaxis()->SetTitle("efficiency");
124   fhSPDZEffTrklets->GetYaxis()->SetTitleSize(0.05);
125   setDrawAtt(22,4,2,4,2,fhSPDZEffTrklets);
126   setDrawAtt(23,2,2,2,2,fhSPD3DEffTrklets);
127   setDrawAtt(24,1,2,1,2,fhSPDOverallEffTrklets);
128   fhSPDZEffTrklets->SetTitle("SPDZ efficiency");
129   fhSPDZEffTrklets->Draw("ALP");
130   fhSPD3DEffTrklets->Draw("PLSAME");
131   fhSPDOverallEffTrklets->Draw("PLSAME"); 
132   TLegend *legSPD=new TLegend(0.6,0.2,0.9,0.4);
133   legSPD->AddEntry(fhSPD3DEffTrklets,"SPD3D","P");
134   legSPD->AddEntry(fhSPDZEffTrklets,"SPDZ","P");
135   legSPD->AddEntry(fhSPDOverallEffTrklets,"SPDZ + SPD3D","P");
136   legSPD->Draw();
137   
138   TCanvas *canvTRKTrklets=new TCanvas("canvTRKTrklets","TRK Eff vs tracklet multiplicy");
139   canvTRKTrklets->SetBottomMargin(0.14);
140   canvTRKTrklets->SetTopMargin(0.08);
141   canvTRKTrklets->SetLeftMargin(0.14);
142   canvTRKTrklets->SetRightMargin(0.08);
143   fhTRKEffTrklets->SetMinimum(0);
144   fhTRKEffTrklets->SetMaximum(1.2);
145   fhTRKEffTrklets->GetXaxis()->SetLimits(0,30);
146   fhTRKEffTrklets->GetXaxis()->SetTitle("tracklet multiplicity");
147   fhTRKEffTrklets->GetXaxis()->SetTitleSize(0.05);
148   fhTRKEffTrklets->GetYaxis()->SetTitle("efficiency");
149   fhTRKEffTrklets->GetYaxis()->SetTitleSize(0.05);
150   setDrawAtt(22,4,2,4,2,fhTRKEffTrklets);
151   setDrawAtt(23,2,2,2,2,fhTRKcEffTrklets);
152   setDrawAtt(24,1,2,1,2,fhTRKncEffTrklets);
153   fhTRKEffTrklets->SetTitle("TRK efficiency");
154   fhTRKEffTrklets->Draw("ALP");
155   fhTRKcEffTrklets->Draw("PLSAME");
156   fhTRKncEffTrklets->Draw("PLSAME"); 
157   TLegend *legTRK=new TLegend(0.6,0.2,0.9,0.4);
158   legTRK->AddEntry(fhTRKEffTrklets,"TRK","P");  
159   legTRK->AddEntry(fhTRKcEffTrklets,"TRKc","P");
160   legTRK->AddEntry(fhTRKncEffTrklets,"TRKnc","P");
161   legTRK->Draw();
162   
163   TCanvas *canvZ=new TCanvas("canvZ","3D/reco vs Z");
164   canvZ->SetBottomMargin(0.14);
165   canvZ->SetTopMargin(0.08);
166   canvZ->SetLeftMargin(0.14);
167   canvZ->SetRightMargin(0.08);
168   fhSPDEffZreco->SetMinimum(0);
169   fhSPDEffZreco->SetMaximum(1.2);
170   fhSPDEffZreco->GetXaxis()->SetTitle("Z - <Z> [cm]");
171   fhSPDEffZreco->GetXaxis()->SetTitleSize(0.05);
172   fhSPDEffZreco->GetYaxis()->SetTitle("3D rec / (3D+Z rec)");
173   fhSPDEffZreco->GetYaxis()->SetTitleSize(0.05);
174   setDrawAtt(22,4,2,4,2,fhSPDEffZreco);
175   fhSPDEffZreco->SetTitle("SPD3D/(SPD3D+Z) vs Zreco");
176   fhSPDEffZreco->Draw("AP");
177   TLegend *legZ=new TLegend(0.6,0.2,0.9,0.4);
178   legZ->AddEntry(fhSPDEffZreco,"SPD3D/(SPD3D+Z) vs Zreco","P");
179   legZ->Draw();
180   
181   TCanvas *canvOverall=new TCanvas("canvOverall","Eff integrated over multiplicy");
182   canvOverall->SetBottomMargin(0.14);
183   canvOverall->SetTopMargin(0.08);
184   canvOverall->SetLeftMargin(0.14);
185   canvOverall->SetRightMargin(0.08);
186   fhEff->SetMinimum(0);
187   fhEff->SetMaximum(1.2);
188   fhEff->GetXaxis()->SetLimits(0,30);
189   fhEff->GetXaxis()->SetTitleSize(0.05);
190   fhEff->GetYaxis()->SetTitle("efficiency");
191   fhEff->GetYaxis()->SetTitleSize(0.05);
192   fhEff->SetTitle("integrated over multiplicity");
193   fhEff->Draw("");
194
195   if(savefile){
196   TFile* fileEff = new TFile("VtxEff.root","recreate");
197   fhSPDZEffTrklets->Write();
198   fhSPD3DEffTrklets->Write();
199   fhSPDOverallEffTrklets->Write();
200   fhTRKEffTrklets->Write();
201   fhTRKcEffTrklets->Write();
202   fhTRKncEffTrklets->Write();
203   fhSPDEffZreco->Write();
204   fhEff->Write();
205   fileEff->Close();
206   delete fileEff;
207   }
208   
209   
210 }
211
212
213