1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TGraphAsymmErrors.h>
14 void setDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TGraphAsymmErrors *h1)
16 h1->SetMarkerStyle(markerstyle);
17 h1->SetMarkerColor(markercolor);
18 h1->SetMarkerSize(markersize);
19 h1->SetLineColor(linecolor);
20 h1->SetLineWidth(linewidth);
22 void setDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TH1 *h1)
24 h1->SetMarkerStyle(markerstyle);
25 h1->SetMarkerColor(markercolor);
26 h1->SetMarkerSize(markersize);
27 h1->SetLineColor(linecolor);
28 h1->SetLineWidth(linewidth);
31 void MakeVtxEffPlots(TString foldname="",Bool_t savefile=kFALSE){
33 //Make efficiency plots for SPD vertex and TRK Vertex
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");
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");
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");
68 TH1F *fhEff = new TH1F("hEff","hEff",6,0.5,6.5);
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()));
74 fhEff->GetXaxis()->SetBinLabel(count,"SPDZ");
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()));
81 fhEff->GetXaxis()->SetBinLabel(count,"SPD3D");
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()));
88 fhEff->GetXaxis()->SetBinLabel(count,"SPD Overall");
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()));
95 fhEff->GetXaxis()->SetBinLabel(count,"TRK");
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()));
102 fhEff->GetXaxis()->SetBinLabel(count,"TRKc");
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()));
109 fhEff->GetXaxis()->SetBinLabel(count,"TRKnc");
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");
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");
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");
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");
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();