1 #if !defined(__CINT__) || defined(__MAKECINT__)
3 #include <TFileMerger.h>
4 #include <TAlienFile.h>
7 #include <TGridResult.h>
12 //#include "AliRecoParam.h"
15 enum rawexpert_t{pattern,patternnorm,layer3norm,layer4norm,rawtot};
16 enum nonrawexpert_t{layer3,layer4,nonrawtot};
18 enum rpexpert_t{rlocaldistro,rlayer3norm,rlayer4norm,rmodpattern,rmodpatternnorm,rphilayer3,rphilayer4,rrlayer3,rrlayer4,rtot};
19 enum rnonexpert_t{rphizlayer3,rphizlayer4,rglobalrz,rglobalxy,rchargelayer3,rchargelayer4,rtimelayer3,rtimelayer4,rlayer3,rlayer4,nrtot};
21 enum canvsname_t{canvname0,canvname1,canvname2,canvname3,canvname4,canvname5,canvname6,canvname7,canvname8,canvname9,canvname10,canvname11,canvname12};
23 void PlotQASDD(Char_t fileName[100]="File.QA.111333.2010.LHC09b.pass2.root",Char_t eventspecie[25]="LowMultiplicity")
25 const TString Rawsexpertname[]={"SDDModPattern","SDDModPatternNORM","SDDphizL3NORM","SDDphizL4NORM"};//4
26 const TString Rawsnonexpertname[]={"SDDphizL3","SDDphizL4"};//2
28 const TString RecPointsexpertname[]={"SDDLocalCoordDistrib","SDDModPatternL3RPNORM","SDDModPatternL4RPNORM","SDDModPatternRP","SDDModPatternRPNORM","SDDphidistrib_Layer3","SDDphidistrib_Layer4","SDDrdistrib_Layer3","SDDrdistrib_Layer4"};//9
29 const TString RecPointsnonexpertname[]={"SDDGlobalCoordDistribL3PHIZ","SDDGlobalCoordDistribL4PHIZ","SDDGlobalCoordDistribRZ","SDDGlobalCoordDistribYX","SDDLay3TotCh","SDDLay4TotCh","SDDdrifttime_Layer3","SDDdrifttime_Layer4","SDDModPatternL3RP","SDDModPatternL4RP"};//1
31 const TString canvassavedname[]={"RawLayers","Rawpatterns","RawLayersNORM","RecPointsphiz","RecPointsGlobalDistributions","RecPointsCharge","RecPointsDriftTime","RecPointsLocalDistribution","RecPointsLayers","RecPointsLayersNORM","RecPointsLayersPatterns","RecPointsPhiDistribution","RecPointsRDistribution"};//13
33 gStyle->SetPalette(1);
34 gStyle->SetOptStat(0);
35 TFile mergedfile(fileName);
36 if(mergedfile.GetKey("ITS")==0x0){
37 printf("In this run ITS QA has not been executed.\n\nExit macro \n\n");
41 Char_t namecanvas[50];
42 TDirectory *directory=NULL;
43 TDirectory *directory2=NULL;
44 Char_t histoname[200];
49 TCanvas *canvas1 = new TCanvas("canvas1","SDD QA Plot",1000,600);
50 // canvas1->Divide(2,1);
51 // TCanvas *canvas3 = new TCanvas("canvas3","RawLayersNORM",1000,600);
52 // canvas3->Divide(2,1);
53 // TCanvas *canvas2 = new TCanvas("canvas2","Rawpatterns",1000,600);
54 // canvas2->Divide(1,2);
56 // TCanvas *canvas4 = new TCanvas("canvas4","RecPointsphiz",1000,600);
57 // canvas4->Divide(2,1);
58 // TCanvas *canvas5 = new TCanvas("canvas5","RecPointsGlobalDistributions",1000,600);
59 // canvas5->Divide(2,1);
60 // TCanvas *canvas6 = new TCanvas("canvas6","RecPointsCharge",1000,600);
61 // canvas6->Divide(1,2);
62 // TCanvas *canvas7 = new TCanvas("canvas7","RecPointsDriftTime",1000,600);
63 // canvas7->Divide(1,2);
65 // TCanvas *canvas8 = new TCanvas("canvas8","RecPointsLocalDistribution",1000,600);
66 // TCanvas *canvas9 = new TCanvas("canvas9","RecPointsLayers",1000,600);
67 // canvas9->Divide(2,1);
69 // TCanvas *canvas10 = new TCanvas("canvas10","RecPointsLayersNORM",1000,600);
70 // canvas10->Divide(2,1);
71 // TCanvas *canvas11 = new TCanvas("canvas11","RecPointsLayersPatterns",1000,600);
72 // canvas11->Divide(1,2);
73 // TCanvas *canvas12 = new TCanvas("canvas12","RecPointsPhiDistribution",1000,600);
74 // canvas12->Divide(2,1);
75 // TCanvas *canvas13 = new TCanvas("canvas13","RecPointsRDistribution",1000,600);
76 // canvas13->Divide(2,1);
79 if(!mergedfile.IsOpen()){return;}else{printf("file is open\n");}
80 for(Int_t ispecie=0;ispecie<AliRecoParam::kNSpecies;ispecie++){
81 //__________________________________________________________________
83 sprintf(filepath,"ITS/Raws/%s",AliRecoParam::GetEventSpecieName(ispecie));
84 printf("%s",filepath);
85 TString especie(filepath);
86 if(!especie.Contains(eventspecie)){printf("...Found and Skipped\n");continue;}
87 canvas1->Print("SDDQAPlot.ps[");
88 directory=(TDirectory*)mergedfile.Get(filepath);
89 if(!directory){printf("...Not Found\n ");}//faccio l'istogramma
91 printf("...Found: The histograms of this EventSpecie will be displayed\n");
95 Bool_t updatecanvas[2];
96 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
97 for(Int_t iraws=0;iraws<nonrawtot;iraws++){//non expert raws
100 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data());
101 printf("histo name %s ",Rawsnonexpertname[iraws].Data());
102 historaw=(TH2D*)mergedfile.Get(histoname);
103 if(historaw){printf("...Found\n");historaw->DrawCopy("colz");}
104 else{updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
108 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
111 sprintf(namecanvas,"%s.eps",canvassavedname[canvname0].Data());
112 canvas1->SaveAs(namecanvas);
113 canvas1->Print("SDDQAPlot.ps");
115 //else{delete canvas1; canvas1=NULL;}
116 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
118 canvas1->Divide(1,2);
120 for(Int_t inraws=0;inraws<2;inraws++){//non expert raws
121 canvas1->cd(inraws+1);
122 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[inraws].Data());
123 printf("histo name %s ",Rawsexpertname[inraws].Data());
124 historaw2=(TH1F*)mergedfile.Get(histoname);
125 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[inraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
128 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
131 sprintf(namecanvas,"%s.eps",canvassavedname[canvname1].Data());
132 canvas1->SaveAs(namecanvas);
133 canvas1->Print("SDDQAPlot.ps");
135 //else{delete canvas2; canvas2=NULL;}
137 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
140 canvas1->Divide(2,1);
141 for(Int_t iraws=2;iraws<rawtot;iraws++){//non expert raws
142 canvas1->cd(iraws-1);
144 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
145 printf("histo name %s",Rawsexpertname[iraws].Data());
146 historaw=(TH2D*)mergedfile.Get(histoname);
147 if(historaw){printf("...Found\n");historaw->DrawCopy("colz");}else{updatecanvas[iraws-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
150 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
153 sprintf(namecanvas,"%s.eps",canvassavedname[canvname2].Data());
154 canvas1->SaveAs(namecanvas);
155 canvas1->Print("SDDQAPlot.ps");
157 //else{delete canvas3; canvas3=NULL;}
160 //_______________________________________________________________________________
162 sprintf(filepath,"ITS/RecPoints/%s",AliRecoParam::GetEventSpecieName(ispecie));
163 printf("%s\n",filepath);
164 directory2=(TDirectory*)mergedfile.Get(filepath);
166 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
168 canvas1->Divide(2,1);
170 for(Int_t irp=0;irp<2;irp++){//non expert rec point
173 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irp].Data());
174 printf("histo name %s ",RecPointsnonexpertname[irp].Data());
175 histodraw=(TH2F*)mergedfile.Get(histoname);
176 if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irp]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
179 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
182 sprintf(namecanvas,"%s.eps",canvassavedname[canvname3].Data());
183 canvas1->SaveAs(namecanvas);
184 canvas1->Print("SDDQAPlot.ps");
186 // else{delete canvas4; canvas4=NULL;}
189 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
191 canvas1->Divide(2,1);
193 for(Int_t irrp=2;irrp<4;irrp++){//non expert raws
196 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrp].Data());
197 printf("histo name %s",RecPointsnonexpertname[irrp].Data() );
198 histodraw=(TH2F*)mergedfile.Get(histoname);
199 if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irrp-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
202 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
205 sprintf(namecanvas,"%s.eps",canvassavedname[canvname4].Data());
206 canvas1->SaveAs(namecanvas);
207 canvas1->Print("SDDQAPlot.ps");
209 //else{delete canvas5; canvas5=NULL;}
212 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
214 canvas1->Divide(1,2);
216 for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws
217 canvas1->cd(irrpp-3);
219 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
220 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
221 historaw2=(TH1F*)mergedfile.Get(histoname);
222 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
225 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
228 sprintf(namecanvas,"%s.eps",canvassavedname[canvname5].Data());
229 canvas1->SaveAs(namecanvas);
230 canvas1->Print("SDDQAPlot.ps");
232 //else{delete canvas6; canvas6=NULL;}
234 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
236 canvas1->Divide(1,2);
238 for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws
239 canvas1->cd(irrpp-5);
240 // printf("histo name\n");
241 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
242 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
243 historaw2=(TH1F*)mergedfile.Get(histoname);
244 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
247 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
250 sprintf(namecanvas,"%s.eps",canvassavedname[canvname6].Data());
251 canvas1->SaveAs(namecanvas);
252 canvas1->Print("SDDQAPlot.ps");
254 //else{delete canvas7; canvas7=NULL;}
256 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
259 //canvas1->Divide(2,1);
260 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rlocaldistro].Data());
261 printf("histo name %s",RecPointsexpertname[rlocaldistro].Data());
262 histodraw=(TH2F*)mergedfile.Get(histoname);
264 if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[0]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
266 if(updatecanvas[0]==kTRUE){
268 sprintf(namecanvas,"%s.eps",canvassavedname[canvname7].Data());
269 canvas1->SaveAs(namecanvas);
270 canvas1->Print("SDDQAPlot.ps");
272 //else{delete canvas8; canvas8=NULL;}
274 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
276 canvas1->Divide(2,1);
278 for(Int_t i=8;i<10;i++)
282 sprintf(histoname,"ITS/RecPoints/%s/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
283 printf("histo name %s",RecPointsnonexpertname[i].Data());
284 histodraw=(TH2F*)mergedfile.Get(histoname);
286 if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[i-8]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
289 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
292 sprintf(namecanvas,"%s.eps",canvassavedname[canvname8].Data());
293 canvas1->SaveAs(namecanvas);
294 canvas1->Print("SDDQAPlot.ps");
296 //else{delete canvas9; canvas9=NULL;}
297 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
299 canvas1->Divide(2,1);
301 for(Int_t i=1;i<3;i++)
305 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
306 histodraw=(TH2F*)mergedfile.Get(histoname);
307 printf("histo name %s",RecPointsexpertname[i].Data());
309 if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[i-1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
312 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
315 sprintf(namecanvas,"%s.eps",canvassavedname[canvname9].Data());
316 canvas1->SaveAs(namecanvas);
317 canvas1->Print("SDDQAPlot.ps");
319 //else{delete canvas10; canvas10=NULL;}
321 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
323 canvas1->Divide(1,2);
325 for(Int_t i=3;i<5;i++)
329 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
330 printf("histo name %s",RecPointsexpertname[i].Data());
331 historaw2=(TH1F*)mergedfile.Get(histoname);
333 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-3]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
336 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
339 sprintf(namecanvas,"%s.eps",canvassavedname[canvname10].Data());
340 canvas1->SaveAs(namecanvas);
341 canvas1->Print("SDDQAPlot.ps");
343 //else{delete canvas11; canvas11=NULL;}
345 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
347 canvas1->Divide(2,1);
349 for(Int_t i=5;i<7;i++)
353 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
354 printf("histo name %s",RecPointsexpertname[i].Data());
355 historaw2=(TH1F*)mergedfile.Get(histoname);
357 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-5]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
360 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
363 sprintf(namecanvas,"%s.eps",canvassavedname[canvname11].Data());
364 canvas1->SaveAs(namecanvas);
365 canvas1->Print("SDDQAPlot.ps");
367 //else{delete canvas12; canvas12=NULL;}
369 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
371 canvas1->Divide(2,1);
373 for(Int_t i=7;i<9;i++)
376 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
377 printf("histo name %s",RecPointsexpertname[i].Data());
378 historaw2=(TH1F*)mergedfile.Get(histoname);
380 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-7]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
383 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
386 sprintf(namecanvas,"%s.eps",canvassavedname[canvname12].Data());
387 canvas1->SaveAs(namecanvas);
388 canvas1->Print("SDDQAPlot.ps");
390 canvas1->Print("SDDQAPlot.ps]");
391 //else{delete canvas13; canvas13=NULL;}