]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/macros/PlotITSTrackingHists.C
-Moved PHOS Physics histogram producers to HLT/global/physics
[u/mrichter/AliRoot.git] / PWG1 / macros / PlotITSTrackingHists.C
1 void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
2   //
3   // Macro to plot the histos from the task AliAnalysisTaskITSTrackingCheck
4   // A. Dainese 28.11.09
5   // 
6
7   gStyle->SetOptStat(0);
8
9   TFile *f= new TFile(fname.Data());
10
11   TList *list=(TList*)f->Get("cOutput");
12   TH1F *fHistNclsITSSA = (TH1F*)list->FindObject("fHistNclsITSSA");
13   TH1F *fHistClusterMapITSSA = (TH1F*)list->FindObject("fHistClusterMapITSSA");
14   TH1F *fHistClusterMapITSSAok = (TH1F*)list->FindObject("fHistClusterMapITSSAok");
15   TH1F *fHistClusterMapITSSAbad = (TH1F*)list->FindObject("fHistClusterMapITSSAbad");
16   TH1F *fHistClusterMapITSSAskipped = (TH1F*)list->FindObject("fHistClusterMapITSSAskipped");
17   TH1F *fHistClusterMapITSSAoutinz = (TH1F*)list->FindObject("fHistClusterMapITSSAoutinz");
18   TH1F *fHistClusterMapITSSAokoutinzbad = (TH1F*)list->FindObject("fHistClusterMapITSSAokoutinzbad");
19   TH1F *fHistClusterMapITSSAnorefit = (TH1F*)list->FindObject("fHistClusterMapITSSAnorefit");
20   TH1F *fHistClusterMapITSSAnocls = (TH1F*)list->FindObject("fHistClusterMapITSSAnocls");
21   TH1F *fHistNclsITSSAInAcc = (TH1F*)list->FindObject("fHistNclsITSSAInAcc");
22   TH1F *fHistClusterMapITSSAInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAInAcc");
23   TH1F *fHistClusterMapITSSAokInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAokInAcc");
24   TH1F *fHistClusterMapITSSAbadInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAbadInAcc");
25   TH1F *fHistClusterMapModuleITSSAokInAcc = (TH1F*)list->FindObject("fHistClusterMapModuleITSSAokInAcc");
26   TH1F *fHistClusterMapModuleITSSAbadInAcc = (TH1F*)list->FindObject("fHistClusterMapModuleITSSAbadInAcc");
27   TH1F *fHistClusterMapITSSAskippedInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAskippedInAcc");
28   TH1F *fHistClusterMapITSSAoutinzInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAoutinzInAcc");
29   TH1F *fHistClusterMapITSSAokoutinzbadInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAokoutinzbadInAcc");
30   TH1F *fHistClusterMapITSSAnorefitInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAnorefitInAcc");
31   TH1F *fHistClusterMapITSSAnoclsInAcc = (TH1F*)list->FindObject("fHistClusterMapITSSAnoclsInAcc");
32   TH1F *fHistClusterMapModuleITSSAnoclsInAcc = (TH1F*)list->FindObject("fHistClusterMapModuleITSSAnoclsInAcc");
33   TH1F *fHistNclsITSMI = (TH1F*)list->FindObject("fHistNclsITSMI");
34   TH1F *fHistClusterMapITSMI = (TH1F*)list->FindObject("fHistClusterMapITSMI");
35   TH1F *fHistClusterMapITSMIok = (TH1F*)list->FindObject("fHistClusterMapITSMIok");
36   TH1F *fHistClusterMapITSMIbad = (TH1F*)list->FindObject("fHistClusterMapITSMIbad");
37   TH1F *fHistClusterMapITSMIskipped = (TH1F*)list->FindObject("fHistClusterMapITSMIskipped");
38   TH1F *fHistClusterMapITSMIoutinz = (TH1F*)list->FindObject("fHistClusterMapITSMIoutinz");
39   TH1F *fHistClusterMapITSMIokoutinzbad = (TH1F*)list->FindObject("fHistClusterMapITSMIokoutinzbad");
40   TH1F *fHistClusterMapITSMInorefit = (TH1F*)list->FindObject("fHistClusterMapITSMInorefit");
41   TH1F *fHistClusterMapITSMInocls = (TH1F*)list->FindObject("fHistClusterMapITSMInocls");
42
43   TH1F *fHistPhiTPCInAcc = (TH1F*)list->FindObject("fHistPhiTPCInAcc");
44   TH1F *fHistPhiITSMIokbadoutinz6InAcc = (TH1F*)list->FindObject("fHistPhiITSMIokbadoutinz6InAcc");
45
46   TH1F *fHistPtTPCInAcc = (TH1F*)list->FindObject("fHistPtTPCInAcc");
47   TH1F *fHistPtITSMI6InAcc = (TH1F*)list->FindObject("fHistPtITSMI6InAcc");
48   TH1F *fHistPtITSMI5InAcc = (TH1F*)list->FindObject("fHistPtITSMI5InAcc");
49   TH1F *fHistPtITSMI4InAcc = (TH1F*)list->FindObject("fHistPtITSMI4InAcc");
50   TH1F *fHistPtITSMI3InAcc = (TH1F*)list->FindObject("fHistPtITSMI3InAcc");
51   TH1F *fHistPtITSMI2InAcc = (TH1F*)list->FindObject("fHistPtITSMI2InAcc");
52   TH1F *fHistPtITSMISPDInAcc = (TH1F*)list->FindObject("fHistPtITSMISPDInAcc");
53   TH1F *fHistPtITSMIokbadoutinz6InAcc = (TH1F*)list->FindObject("fHistPtITSMIokbadoutinz6InAcc");
54   TH1F *fHistPtITSMIokbadoutinz5InAcc = (TH1F*)list->FindObject("fHistPtITSMIokbadoutinz5InAcc");
55   TH1F *fHistPtITSMIokbadoutinz4InAcc = (TH1F*)list->FindObject("fHistPtITSMIokbadoutinz4InAcc");
56
57   //---------------------------------------------------------------
58
59   TLegend *l1=new TLegend(0.5,0.5,0.9,0.9);
60   TLegend *l2=new TLegend(0.5,0.5,0.9,0.9);
61
62   TCanvas *c1= new TCanvas("c1","c1",10,10,600,500);
63   fHistNclsITSSA->SetMinimum(0);
64   fHistNclsITSSA->SetLineColor(1);
65   l1->AddEntry(fHistNclsITSSA,"ITS-SA","l");
66   fHistNclsITSSA->Draw();
67   fHistNclsITSSAInAcc->SetLineColor(4);
68   l1->AddEntry(fHistNclsITSSAInAcc,"ITS-SA in acc.","l");
69   fHistNclsITSSAInAcc->Draw("same");
70   fHistNclsITSMI->SetLineColor(2);
71   l1->AddEntry(fHistNclsITSMI,"ITS from TPC","l");
72   fHistNclsITSMI->Draw("same");
73   l1->Draw();
74
75
76   TCanvas *c2 =new TCanvas("c2","c2",10,10,1200,800);
77   c2->Divide(3,2);
78   c2->cd(1);
79   //
80   fHistClusterMapITSSAokoutinzbad->SetLineColor(1);
81   fHistClusterMapITSSAokoutinzbad->SetMarkerColor(1);
82   fHistClusterMapITSSAokoutinzbad->SetMarkerStyle(20);
83   fHistClusterMapITSSAokoutinzbad->Draw();
84   fHistClusterMapITSMIokoutinzbad->SetLineColor(2);
85   fHistClusterMapITSMIokoutinzbad->SetMarkerColor(2);
86   fHistClusterMapITSMIokoutinzbad->SetMarkerStyle(20);
87   fHistClusterMapITSMIokoutinzbad->Draw("same");
88   l1->Draw();
89   //
90   c2->cd(2);
91   fHistClusterMapITSSAok->SetLineColor(1);
92   fHistClusterMapITSSAok->SetMarkerColor(1);
93   fHistClusterMapITSSAok->SetMarkerStyle(21);
94   fHistClusterMapITSSAok->Draw();
95   fHistClusterMapITSMIok->SetLineColor(2);
96   fHistClusterMapITSMIok->SetMarkerColor(2);
97   fHistClusterMapITSMIok->SetMarkerStyle(21);
98   fHistClusterMapITSMIok->Draw("same");
99   //
100   c2->cd(3);
101   fHistClusterMapITSSAoutinz->SetLineColor(1);
102   fHistClusterMapITSSAoutinz->SetMarkerColor(1);
103   fHistClusterMapITSSAoutinz->SetMarkerStyle(22);
104   fHistClusterMapITSSAoutinz->Draw();
105   fHistClusterMapITSMIoutinz->SetLineColor(2);
106   fHistClusterMapITSMIoutinz->SetMarkerColor(2);
107   fHistClusterMapITSMIoutinz->SetMarkerStyle(22);
108   fHistClusterMapITSMIoutinz->Draw("same");
109   //
110   c2->cd(4);
111   fHistClusterMapITSSAbad->SetLineColor(1);
112   fHistClusterMapITSSAbad->SetMarkerColor(1);
113   fHistClusterMapITSSAbad->SetMarkerStyle(23);
114   fHistClusterMapITSSAbad->Draw();
115   fHistClusterMapITSMIbad->SetLineColor(2);
116   fHistClusterMapITSMIbad->SetMarkerColor(2);
117   fHistClusterMapITSMIbad->SetMarkerStyle(23);
118   fHistClusterMapITSMIbad->Draw("same");
119   //
120   c2->cd(5);
121   fHistClusterMapITSSAnocls->SetLineColor(1);
122   fHistClusterMapITSSAnocls->SetMarkerColor(1);
123   fHistClusterMapITSSAnocls->SetMarkerStyle(24);
124   fHistClusterMapITSSAnocls->Draw();
125   fHistClusterMapITSMInocls->SetLineColor(2);
126   fHistClusterMapITSMInocls->SetMarkerColor(2);
127   fHistClusterMapITSMInocls->SetMarkerStyle(24);
128   fHistClusterMapITSMInocls->Draw("same");
129
130   TCanvas *c3 =new TCanvas("c3","c3",10,10,1200,400);
131   fHistClusterMapModuleITSSAokInAcc->SetLineColor(1);
132   fHistClusterMapModuleITSSAokInAcc->Draw();
133   l2->AddEntry(fHistClusterMapModuleITSSAokInAcc,"ok","l");
134   fHistClusterMapModuleITSSAbadInAcc->SetLineColor(2);
135   fHistClusterMapModuleITSSAbadInAcc->Draw("same");
136   l2->AddEntry(fHistClusterMapModuleITSSAbadInAcc,"bad","l");
137   fHistClusterMapModuleITSSAnoclsInAcc->SetLineColor(3);
138   fHistClusterMapModuleITSSAnoclsInAcc->Draw("same");
139   l2->AddEntry(fHistClusterMapModuleITSSAnoclsInAcc,"no cls","l");
140   l2->Draw();
141
142
143   TCanvas *c4 =new TCanvas("c4","c4",10,10,500,500);
144   c4->SetGridy();
145   fHistPhiITSMIokbadoutinz6InAcc->Divide(fHistPhiTPCInAcc);
146   fHistPhiITSMIokbadoutinz6InAcc->SetMinimum(0);
147   fHistPhiITSMIokbadoutinz6InAcc->SetMaximum(1.5);
148   fHistPhiITSMIokbadoutinz6InAcc->SetYTitle("ITS+TPC / TPC");
149   fHistPhiITSMIokbadoutinz6InAcc->SetTitle("Fraction of tracks with 6 layers ok");
150   fHistPhiITSMIokbadoutinz6InAcc->Draw();
151
152   TLegend *l3=new TLegend(0.5,0.5,0.9,0.9);
153   TLegend *l4=new TLegend(0.5,0.5,0.9,0.9);
154   TCanvas *c5 =new TCanvas("c5","c5",10,10,1200,600);
155   c5->Divide(2,1);
156   c5_1->SetGridy();
157   c5_2->SetGridy();
158   c5->cd(1);
159   TH1F *fHistPtITSMIge2InAcc = (TH1F*)fHistPtITSMI6InAcc->Clone("fHistPtITSMIge2InAcc");
160   fHistPtITSMIge2InAcc->Add(fHistPtITSMI5InAcc);
161   fHistPtITSMIge2InAcc->Add(fHistPtITSMI4InAcc);
162   fHistPtITSMIge2InAcc->Add(fHistPtITSMI3InAcc);
163   fHistPtITSMIge2InAcc->Add(fHistPtITSMI2InAcc);
164   fHistPtITSMIge2InAcc->Divide(fHistPtTPCInAcc);
165   fHistPtITSMIge2InAcc->SetMaximum(1.5);
166   fHistPtITSMIge2InAcc->SetMinimum(0);
167   fHistPtITSMIge2InAcc->SetTitle("Fraction of prolonged tracks with N ITS points");
168   fHistPtITSMIge2InAcc->SetYTitle("ITS+TPC / TPC");
169   fHistPtITSMIge2InAcc->Draw();
170   l3->AddEntry(fHistPtITSMIge2InAcc,">=2 cls","l");
171   fHistPtITSMI6InAcc->Divide(fHistPtTPCInAcc);
172   fHistPtITSMI6InAcc->SetLineColor(2);
173   l3->AddEntry(fHistPtITSMI6InAcc,"6 cls","l");
174   fHistPtITSMI6InAcc->Draw("same");
175   fHistPtITSMI5InAcc->Divide(fHistPtTPCInAcc);
176   fHistPtITSMI5InAcc->SetLineColor(3);
177   l3->AddEntry(fHistPtITSMI5InAcc,"5 cls","l");
178   fHistPtITSMI5InAcc->Draw("same");
179   fHistPtITSMI4InAcc->Divide(fHistPtTPCInAcc);
180   fHistPtITSMI4InAcc->SetLineColor(4);
181   l3->AddEntry(fHistPtITSMI4InAcc,"4 cls","l");
182   fHistPtITSMI4InAcc->Draw("same");
183   fHistPtITSMI3InAcc->Divide(fHistPtTPCInAcc);
184   fHistPtITSMI3InAcc->SetLineColor(6);
185   l3->AddEntry(fHistPtITSMI3InAcc,"3 cls","l");
186   fHistPtITSMI3InAcc->Draw("same");
187   fHistPtITSMI2InAcc->Divide(fHistPtTPCInAcc);
188   fHistPtITSMI2InAcc->SetLineColor(7);
189   l3->AddEntry(fHistPtITSMI2InAcc,"2 cls","l");
190   fHistPtITSMI2InAcc->Draw("same");
191   fHistPtITSMISPDInAcc->Divide(fHistPtTPCInAcc);
192   fHistPtITSMISPDInAcc->SetLineColor(9);
193   l3->AddEntry(fHistPtITSMISPDInAcc,"2SPD + any","l");
194   fHistPtITSMISPDInAcc->Draw("same");
195   fHistPtITSMIge2InAcc->Draw("same");
196   l3->Draw();
197   c5->cd(2);
198   TH1F *fHistPtITSMIokbadoutinzge4InAcc = (TH1F*)fHistPtITSMIokbadoutinz6InAcc->Clone("fHistPtITSMIokbadoutinzge4InAcc");
199   fHistPtITSMIokbadoutinzge4InAcc->Add(fHistPtITSMIokbadoutinz5InAcc);
200   fHistPtITSMIokbadoutinzge4InAcc->Add(fHistPtITSMIokbadoutinz4InAcc);
201   fHistPtITSMIokbadoutinzge4InAcc->SetMaximum(1.5);
202   fHistPtITSMIokbadoutinzge4InAcc->SetMinimum(0);
203   fHistPtITSMIokbadoutinzge4InAcc->SetTitle("Fraction of prolonged tracks with N ITS layers \"ok\"");
204   fHistPtITSMIokbadoutinzge4InAcc->SetYTitle("ITS+TPC / TPC");
205   fHistPtITSMIokbadoutinzge4InAcc->Divide(fHistPtTPCInAcc);
206   fHistPtITSMIokbadoutinzge4InAcc->SetLineColor(1);
207   fHistPtITSMIokbadoutinzge4InAcc->Draw();
208   fHistPtITSMIokbadoutinz6InAcc->Divide(fHistPtTPCInAcc);
209   fHistPtITSMIokbadoutinz6InAcc->SetLineColor(2);
210   fHistPtITSMIokbadoutinz6InAcc->Draw("same");
211   fHistPtITSMIokbadoutinz5InAcc->Divide(fHistPtTPCInAcc);
212   fHistPtITSMIokbadoutinz5InAcc->SetLineColor(3);
213   fHistPtITSMIokbadoutinz5InAcc->Draw("same");
214   fHistPtITSMIokbadoutinz4InAcc->Divide(fHistPtTPCInAcc);
215   fHistPtITSMIokbadoutinz4InAcc->SetLineColor(4);
216   fHistPtITSMIokbadoutinz4InAcc->Draw("same");
217   fHistPtITSMIokbadoutinzge4InAcc->Draw("same");
218   l4->AddEntry(fHistPtITSMIokbadoutinzge4InAcc,">=4 layers","l");
219   l4->AddEntry(fHistPtITSMIokbadoutinz6InAcc,"6 layers","l");
220   l4->AddEntry(fHistPtITSMIokbadoutinz5InAcc,"5 layers","l");
221   l4->AddEntry(fHistPtITSMIokbadoutinz4InAcc,"4 layers","l");
222   l4->Draw();
223
224
225   // PLOT ALIGNMENT CHECKS
226   //
227   TH1F *hSPDTrackletsTBdxy = new TH1F("hSPDTrackletsTBdxy","SPD tracklets; SPD tracklet to SPD vertex distance in (x,y) [cm]; entries",100,-0.1,0.1);
228   TH1F *hSPDTrackletsLRdxy = new TH1F("hSPDTrackletsLRdxy","SPD tracklets; SPD tracklet to SPD vertex distance in (x,y) [cm]; entries",100,-0.1,0.1);
229   TH1F *hSPDTrackletsTBdz = new TH1F("hSPDTrackletsTBdz","SPD tracklets; SPD tracklet to SPD vertex distance in z [cm]; entries",100,-0.1,0.1);
230   TH1F *hSPDTrackletsLRdz = new TH1F("hSPDTrackletsLRdz","SPD tracklets; SPD tracklet to SPD vertex distance in z [cm]; entries",100,-0.1,0.1);
231
232   TNtuple *fNtupleITSAlignSPDTracklets = (TNtuple*)list->FindObject("fNtupleITSAlignSPDTracklets");
233   Float_t dxy,dz,phi,pt;
234   fNtupleITSAlignSPDTracklets->SetBranchAddress("pt",&pt);
235   fNtupleITSAlignSPDTracklets->SetBranchAddress("phi",&phi);
236   fNtupleITSAlignSPDTracklets->SetBranchAddress("dxy",&dxy);
237   fNtupleITSAlignSPDTracklets->SetBranchAddress("dz",&dz);
238
239   for(Int_t i=0;i<fNtupleITSAlignSPDTracklets->GetEntries();i++) {
240     fNtupleITSAlignSPDTracklets->GetEvent(i);
241     if(pt<1.3) continue;
242     if(TMath::Abs(TMath::Abs(phi)-0.5*TMath::Pi())<0.25*TMath::Pi()) {
243       // top-bottom
244       hSPDTrackletsTBdxy->Fill(dxy);
245       hSPDTrackletsTBdz->Fill(dz);
246     } else {
247       // left-right
248       hSPDTrackletsLRdxy->Fill(dxy);
249       hSPDTrackletsLRdz->Fill(dz);
250     }
251   }
252
253   TLegend *l6=new TLegend(0.5,0.5,0.9,0.9);
254
255   TCanvas *c6 = new TCanvas("c6","c6",0,0,1000,500);
256   c6->Divide(2,1);
257   c6->cd(1);
258   hSPDTrackletsTBdxy->SetLineColor(4);
259   hSPDTrackletsTBdxy->Draw();
260   hSPDTrackletsLRdxy->SetLineColor(2);
261   hSPDTrackletsLRdxy->Draw("same");
262   l6->AddEntry(hSPDTrackletsTBdxy,"top-bottom","l");
263   l6->AddEntry(hSPDTrackletsLRdxy,"left-right","l");
264   l6->Draw();
265   c6->cd(2);
266   hSPDTrackletsTBdz->SetLineColor(4);
267   hSPDTrackletsTBdz->Draw();
268   hSPDTrackletsLRdz->SetLineColor(2);
269   hSPDTrackletsLRdz->Draw("same");
270   l6->Draw();
271
272
273   TH1F *hSPDExtraClsTBdxy = new TH1F("hSPDExtraClsTBdxy","SPD extra clusters; track-to-point distance in (x,y) [cm]; entries",100,-0.1,0.1);
274   TH1F *hSPDExtraClsLRdxy = new TH1F("hSPDExtraClsLRdxy","SPD extra clusters; track-to-point distance in (x,y) [cm]; entries",100,-0.1,0.1);
275   TH1F *hSPDExtraClsTBdz = new TH1F("hSPDExtraClsTBdz","SPD extra clusters; track-to-point distance in z [cm]; entries",100,-0.1,0.1);
276   TH1F *hSPDExtraClsLRdz = new TH1F("hSPDExtraClsLRdz","SPD extra clusters; track-to-point distance in z [cm]; entries",100,-0.1,0.1);
277
278   TNtuple *fNtupleITSAlignExtra = (TNtuple*)list->FindObject("fNtupleITSAlignExtra");
279   Float_t layer,npoints,x,y,z;
280   fNtupleITSAlignExtra->SetBranchAddress("layer",&layer);
281   fNtupleITSAlignExtra->SetBranchAddress("npoints",&npoints);
282   fNtupleITSAlignExtra->SetBranchAddress("x",&x);
283   fNtupleITSAlignExtra->SetBranchAddress("y",&y);
284   fNtupleITSAlignExtra->SetBranchAddress("z",&z);
285   fNtupleITSAlignExtra->SetBranchAddress("dxy",&dxy);
286   fNtupleITSAlignExtra->SetBranchAddress("dz",&dz);
287   fNtupleITSAlignExtra->SetBranchAddress("pt",&pt);
288
289   for(Int_t i=0;i<fNtupleITSAlignExtra->GetEntries();i++) {
290     fNtupleITSAlignExtra->GetEvent(i);
291     if(pt<0.5) continue;
292     if(layer!=0 && layer!=1) continue;
293     if(npoints<4) continue;
294     phi = TMath::ATan2(y,x);
295     if(TMath::Abs(TMath::Abs(phi)-0.5*TMath::Pi())<0.25*TMath::Pi()) {
296       // top-bottom
297       hSPDExtraClsTBdxy->Fill(dxy);
298       hSPDExtraClsTBdz->Fill(dz);
299     } else {
300       // left-right
301       hSPDExtraClsLRdxy->Fill(dxy);
302       hSPDExtraClsLRdz->Fill(dz);
303     }
304   }
305
306   TCanvas *c7 = new TCanvas("c7","c7",0,0,1000,500);
307   c7->Divide(2,1);
308   c7->cd(1);
309   hSPDExtraClsTBdxy->SetLineColor(4);
310   hSPDExtraClsTBdxy->Draw();
311   hSPDExtraClsLRdxy->SetLineColor(2);
312   hSPDExtraClsLRdxy->Draw("same");
313   l6->Draw();
314   c7->cd(2);
315   hSPDExtraClsTBdz->SetLineColor(4);
316   hSPDExtraClsTBdz->Draw();
317   hSPDExtraClsLRdz->SetLineColor(2);
318   hSPDExtraClsLRdz->Draw("same");
319   l6->Draw();
320
321
322   return;
323 }