1 #if !defined(__CINT__) || defined(__MAKECINT__)
3 #include <TFileMerger.h>
4 #include <TAlienFile.h>
7 #include <TGridResult.h>
13 #include <TFileMerger.h>
14 #include <TAlienFile.h>
18 #include <TGridResult.h>
19 #include <Riostream.h>
20 #include <TObjArray.h>
30 #include "AliRecoParam.h"
33 enum rawexpert_t{pattern,patternnorm,layer3norm,layer4norm,layer3occ,layer4occ,rawtot};
34 enum nonrawexpert_t{layer3,layer4,nonrawtot};
36 enum rpexpert_t{rlocaldistro,rlayer3norm,rlayer4norm,rmodpattern,rmodpatternnorm,rphilayer3,rphilayer4,rrlayer3,rrlayer4,occlayer3,occlayer4,recraw2dlayer3,recraw2dlayer4,recrawlayer3,recrawlayer4,dedxlayer3,dedxlayer4,rtot};
37 enum rnonexpert_t{rphizlayer3,rphizlayer4,rglobalrz,rglobalxy,rchargelayer3,rchargelayer4,rtimelayer3,rtimelayer4,rlayer3,rlayer4,nrtot};
39 enum canvsname_t{canvname0,canvname1,canvname2,canvname3,canvname4,canvname5,canvname6,canvname7,canvname8,canvname9,canvname10,canvname11,canvname12,canvname13,canvname14,canvname15,canvname16,canvname17,canvname18,canvname19,canvname20,canvname21,canvname22,canvname23};//
43 void PlotQASDD(Char_t fileName[100]="File.QA.111333.2010.LHC09b.pass2.root",Char_t eventspecie[25]="LowMultiplicity",Bool_t kDoEps=kFALSE)
45 const TString Rawsexpertname[]={"SDDModPattern","SDDModPatternNORM","SDDphizL3","SDDphizL4","SDDL3_RelativeOccupancy","SDDL4_RelativeOccupancy"};//6
46 const TString Rawsnonexpertname[]={"SDDphizL3NORM","SDDphizL4NORM"};//2
48 const TString RecPointsexpertname[]={"SDDLocalCoordDistrib","SDDModPatternL3RP","SDDModPatternL4RP","SDDModPatternRP","SDDModPatternRPNORM","SDDphidistrib_Layer3","SDDphidistrib_Layer4","SDDrdistrib_Layer3","SDDrdistrib_Layer4","SDDL3_RelativeOccupancy","SDDL4_RelativeOccupancy","SDDL3_Rec2Raw_2D","SDDL4_Rec2Raw_2D","SDDL3_Rec2Raw","SDDL4_Rec2Raw","SDDL3_dedx","SDDL4_dedx"};//17
49 const TString RecPointsnonexpertname[]={"SDDGlobalCoordDistribL3PHIZ","SDDGlobalCoordDistribL4PHIZ","SDDGlobalCoordDistribRZ","SDDGlobalCoordDistribYX","SDDLay3TotCh","SDDLay4TotCh","SDDdrifttime_Layer3","SDDdrifttime_Layer4","SDDModPatternL3RPNORM","SDDModPatternL4RPNORM"};//10
51 const TString canvassavedname[]={"RawLayers","Rawpatterns","RawLayersNORM","RawLayersRelOcc","RawLayersRelOccBoth","RecPointsphiz","RecPointsGlobalDistributions","RecPointsCharge","RecPointsDriftTime","RecPointsLocalDistribution","RecPointsLayers","RecPointsLayersNORM","RecPointsLayersPatterns","RecPointsPhiDistribution","RecPointsRDistribution","RecPointsChargeBothLayers","RecPointsDriftTimeBothLayers","RecPointsRelLayersOcc","RecPointsLayersRelOccBoth","RecPointsLayersRecRaw2D","RecPointsLayersRecRaw","RecPointsLayersRecRaw","RecPointsLayersRecRawBoth","RecPointsLayersdedx","RecPointsLayersdedxBoth"};//15
53 Char_t trendfile[25]="FileQAtrend.root";
56 gStyle->SetPalette(1);
57 // gStyle->SetOptStat("ne");
58 if(gSystem->Exec(Form("ls %s >/dev/null 2>&1", fileName))!=0)
60 printf(" No file created --- Exit");
63 TFile mergedfile(fileName);
64 if(mergedfile.GetKey("ITS")==0x0){
65 printf("In this run ITS QA has not been executed.\n\nExit macro \n\n");
69 Char_t namecanvas[50];
70 TDirectory *directory=NULL;
71 TDirectory *directory2=NULL;
72 Char_t histoname[200];
78 for(Int_t i=0;i<9;i++){histo2save[i]=NULL;}
80 TF1 *f1 = new TF1("f1","1",-100000,100000); // this is the function defined to multiply histograms
87 Int_t histo2savenumber[9]={4,5,6,7,7,8,3,5,1};
88 TCanvas *canvas1 = new TCanvas("canvas1","SDD QA Plot",1000,600);
89 // TLegend *legend=new TLegend(0.83,0.8,0.97,0.7);
90 TLegend *legend=new TLegend(0.81,0.895,0.95,0.995);
91 Bool_t updatecanvas[2];
92 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
94 // -------------This part is to read the number of chunks that were merged
96 FILE * pChunkNumber = fopen ("ChunkNumber.txt","r");
98 Int_t rv=fscanf(pChunkNumber, "%f", &fChnknmbr);
99 fclose (pChunkNumber);
103 gStyle->SetPalette(1);
104 float fCNinv=1./fChnknmbr;
105 // printf("\n====================>%f\n\n", fCNinv);
107 if(!mergedfile.IsOpen()){return;}else{printf("file is open\n");}
108 for(Int_t ispecie=0;ispecie<AliRecoParam::kNSpecies;ispecie++){
109 //__________________________________________________________________
111 sprintf(filepath,"ITS/Raws/%s",AliRecoParam::GetEventSpecieName(ispecie));
112 printf("%s",filepath);
113 TString especie(filepath);
114 if(!especie.Contains(eventspecie)){printf("...Found and Skipped\n");continue;}
115 canvas1->Print("SDDQAPlot.ps[");
116 directory=(TDirectory*)mergedfile.Get(filepath);
117 if(!directory){printf("...Not Found\n ");}//faccio l'istogramma
119 printf("...Found: The histograms of this EventSpecie will be displayed\n");
122 canvas1->Divide(2,1);
124 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
125 for(Int_t iraws=2;iraws<4;iraws++){//non expert raws
126 canvas1->cd(iraws-1);
128 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
129 printf("histo name %s ",Rawsexpertname[iraws].Data());
130 historaw=(TH2D*)mergedfile.Get(histoname);
131 if(historaw){printf("...Found\n");historaw->DrawCopy("colz");}
132 else{updatecanvas[iraws-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
136 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
140 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
141 canvas1->SaveAs(namecanvas);
143 canvas1->Print("SDDQAPlot.ps");
145 //else{delete canvas1; canvas1=NULL;}
146 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
148 canvas1->Divide(1,2);
151 for(Int_t inraws=0;inraws<2;inraws++){//non expert raws
152 canvas1->cd(inraws+1);
153 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[inraws].Data());
154 printf("histo name %s ",Rawsexpertname[inraws].Data());
155 historaw2=(TH1F*)mergedfile.Get(histoname);
158 // -----------------This is the part were I divide between the number of chunks to normalize the histogram----------------
163 printf("...Found\n");
166 historaw2->Multiply(f1,fCNinv);
169 historaw2->DrawCopy();
171 else{updatecanvas[inraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
174 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
178 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
179 canvas1->SaveAs(namecanvas);
181 canvas1->Print("SDDQAPlot.ps");
183 //else{delete canvas2; canvas2=NULL;}
185 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
189 canvas1->Divide(2,1);
190 for(Int_t iraws=0;iraws<2;iraws++){//non expert raws
191 canvas1->cd(iraws+1);
193 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data());
194 printf("histo name %s",Rawsnonexpertname[iraws].Data());
195 historaw=(TH2D*)mergedfile.Get(histoname);
197 printf("...Found\n");
198 historaw->Multiply(f1,fCNinv);
199 historaw->DrawCopy("colz");
202 {updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
205 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
209 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
210 canvas1->SaveAs(namecanvas);
212 canvas1->Print("SDDQAPlot.ps");
214 //else{delete canvas3; canvas3=NULL;}
216 //--------------------- new plots
217 printf("================= 4\n");
218 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
221 canvas1->Divide(2,1);
222 for(Int_t iraws=4;iraws<rawtot;iraws++){//non expert raws
223 canvas1->cd(iraws-3);
224 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
225 printf("histo name %s",Rawsexpertname[iraws].Data());
226 historaw2=(TH1F*)mergedfile.Get(histoname);
229 printf("...Found\n");
230 historaw2->DrawCopy();
233 updatecanvas[iraws-4]=kFALSE;
234 printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");
238 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
242 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
243 canvas1->SaveAs(namecanvas);
245 canvas1->Print("SDDQAPlot.ps");
247 //else{delete canvas3; canvas3=NULL;}
250 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
255 for (Int_t i=4;i<rawtot;i++){
256 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[i].Data());
257 historaw2=(TH1F*)mergedfile.Get(histoname);
259 fmax=historaw2->GetMaximum();
270 fmaxmargin=1.1*fmaxold;
271 for(Int_t irrpp=4;irrpp<rawtot;irrpp++){//non expert raws
273 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[irrpp].Data());
274 printf("histo name %s",Rawsexpertname[irrpp].Data());
275 sprintf(layer, "layer %d",irrpp-1);
276 historaw2=(TH1F*)mergedfile.Get(histoname);
277 gStyle->SetOptStat(0);
281 printf("...Found\n");
282 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
283 historaw2->SetTitle("Raw Relative Occupancy");
284 if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
285 if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
286 legend->AddEntry(historaw2,layer,"l");
290 else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
293 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
297 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
298 canvas1->SaveAs(namecanvas);
300 canvas1->Print("SDDQAPlot.ps");
307 //_______________________________________________________________________________
309 sprintf(filepath,"ITS/RecPoints/%s",AliRecoParam::GetEventSpecieName(ispecie));
310 printf("%s\n",filepath);
311 directory2=(TDirectory*)mergedfile.Get(filepath);
313 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
315 canvas1->Divide(2,1);
318 for(Int_t irp=0;irp<2;irp++){//non expert rec point
321 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irp].Data());
322 printf("histo name %s ",RecPointsnonexpertname[irp].Data());
323 histodraw=(TH2F*)mergedfile.Get(histoname);
324 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");}
327 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
331 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
332 canvas1->SaveAs(namecanvas);
334 canvas1->Print("SDDQAPlot.ps");
336 // else{delete canvas4; canvas4=NULL;}
339 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
341 canvas1->Divide(2,1);
344 for(Int_t irrp=2;irrp<4;irrp++){//non expert raws
347 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrp].Data());
348 printf("histo name %s",RecPointsnonexpertname[irrp].Data() );
349 histodraw=(TH2F*)mergedfile.Get(histoname);
350 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");}
353 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
357 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
358 canvas1->SaveAs(namecanvas);
360 canvas1->Print("SDDQAPlot.ps");
362 //else{delete canvas5; canvas5=NULL;}
365 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
367 canvas1->Divide(1,2);
370 for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws
371 canvas1->cd(irrpp-3);
373 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
374 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
375 historaw2=(TH1F*)mergedfile.Get(histoname);
377 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");}
380 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
384 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
385 canvas1->SaveAs(namecanvas);
387 canvas1->Print("SDDQAPlot.ps");
389 //else{delete canvas6; canvas6=NULL;}
391 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
393 canvas1->Divide(1,2);
396 for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws
397 canvas1->cd(irrpp-5);
398 // printf("histo name\n");
399 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
400 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
401 historaw2=(TH1F*)mergedfile.Get(histoname);
402 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");}
405 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
409 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
410 canvas1->SaveAs(namecanvas);
412 canvas1->Print("SDDQAPlot.ps");
414 //else{delete canvas7; canvas7=NULL;}
416 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
420 //canvas1->Divide(2,1);
421 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rlocaldistro].Data());
422 printf("histo name %s",RecPointsexpertname[rlocaldistro].Data());
423 histodraw=(TH2F*)mergedfile.Get(histoname);
425 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");}
427 if(updatecanvas[0]==kTRUE){
430 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
431 canvas1->SaveAs(namecanvas);
433 canvas1->Print("SDDQAPlot.ps");
435 //else{delete canvas8; canvas8=NULL;}
437 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
439 canvas1->Divide(2,1);
442 for(Int_t i=1;i<3;i++)
446 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
447 printf("histo name %s",RecPointsexpertname[i].Data());
448 histodraw=(TH2F*)mergedfile.Get(histoname);
450 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");}
453 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
457 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
458 canvas1->SaveAs(namecanvas);
460 canvas1->Print("SDDQAPlot.ps");
462 //else{delete canvas9; canvas9=NULL;}
463 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
465 canvas1->Divide(2,1);
468 for(Int_t i=8;i<10;i++)
472 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
473 histodraw=(TH2F*)mergedfile.Get(histoname);
474 printf("histo name %s",RecPointsnonexpertname[i].Data());
477 printf("...Found\n");histodraw->Multiply(f1,fCNinv);
478 histodraw->DrawCopy("colz");
479 }else{updatecanvas[i-8]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
482 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
486 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
487 canvas1->SaveAs(namecanvas);
489 canvas1->Print("SDDQAPlot.ps");
491 //else{delete canvas10; canvas10=NULL;}
493 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
495 canvas1->Divide(1,2);
498 for(Int_t i=3;i<5;i++)
502 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
503 printf("histo name %s",RecPointsexpertname[i].Data());
504 historaw2=(TH1F*)mergedfile.Get(histoname);
508 printf("...Found\n");
509 if (i==4){historaw2->Multiply(f1,fCNinv);}
510 historaw2->DrawCopy();
512 else{updatecanvas[i-3]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
515 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
519 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
520 canvas1->SaveAs(namecanvas);
522 canvas1->Print("SDDQAPlot.ps");
524 //else{delete canvas11; canvas11=NULL;}
526 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
528 canvas1->Divide(2,1);
531 for(Int_t i=5;i<7;i++)
535 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
536 printf("histo name %s",RecPointsexpertname[i].Data());
537 historaw2=(TH1F*)mergedfile.Get(histoname);
539 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");}
542 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
546 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
547 canvas1->SaveAs(namecanvas);
549 canvas1->Print("SDDQAPlot.ps");
551 //else{delete canvas12; canvas12=NULL;}
553 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
555 canvas1->Divide(2,1);
558 for(Int_t i=7;i<9;i++)
561 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
562 printf("histo name %s",RecPointsexpertname[i].Data());
563 historaw2=(TH1F*)mergedfile.Get(histoname);
565 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");}
568 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
572 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
573 canvas1->SaveAs(namecanvas);
575 canvas1->Print("SDDQAPlot.ps");
580 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
585 for (Int_t i=4;i<6;i++){
586 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
587 historaw2=(TH1F*)mergedfile.Get(histoname);
589 fmax=historaw2->GetMaximum();
600 fmaxmargin=1.1*fmaxold;
601 for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws
603 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
604 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
605 sprintf(layer, "layer %d",irrpp-1);
606 historaw2=(TH1F*)mergedfile.Get(histoname);
607 gStyle->SetOptStat(0);
611 printf("...Found\n");
612 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
613 historaw2->SetTitle("Charge");
614 historaw2->SetFillColor(0);
615 if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
616 if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
617 legend->AddEntry(historaw2,layer,"l");
621 else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
624 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
628 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
629 canvas1->SaveAs(namecanvas);
631 canvas1->Print("SDDQAPlot.ps");
634 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
639 for (Int_t i=6;i<8;i++){
640 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
641 historaw2=(TH1F*)mergedfile.Get(histoname);
643 fmax=historaw2->GetMaximum();
649 fmaxmargin=1.1*fmaxold;
651 for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws
653 sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
654 printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
655 sprintf(layer, "layer %d",irrpp-3);
656 historaw2=(TH1F*)mergedfile.Get(histoname);
657 gStyle->SetOptStat(0);
661 printf("...Found\n");
662 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
663 historaw2->SetTitle("Drift Time");
664 historaw2->SetFillColor(0);
665 if (irrpp==6) {historaw2->SetStats(0); historaw2->SetLineColor(2);historaw2->DrawCopy();}
666 if (irrpp!=6) {historaw2->SetStats(0); historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
667 legend->AddEntry(historaw2,layer,"l");
671 else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
672 printf("%s\n%s\n",historaw2->GetName(),historaw2->GetTitle());
675 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
679 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
680 canvas1->SaveAs(namecanvas);
682 canvas1->Print("SDDQAPlot.ps");
685 //------------------------------------------- new plot
687 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
689 canvas1->Divide(2,1);
692 for(Int_t i=9;i<11;i++)
695 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
696 printf("histo name %s",RecPointsexpertname[i].Data());
697 historaw2=(TH1F*)mergedfile.Get(histoname);
699 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-9]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
702 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
706 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
707 canvas1->SaveAs(namecanvas);
709 canvas1->Print("SDDQAPlot.ps");
712 //------------------------------------
713 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
718 for (Int_t i=9;i<11;i++){
719 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
720 historaw2=(TH1F*)mergedfile.Get(histoname);
722 fmax=historaw2->GetMaximum();
733 fmaxmargin=1.1*fmaxold;
734 for(Int_t irrpp=9;irrpp<11;irrpp++){//non expert raws
736 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
737 printf("histo name %s",RecPointsexpertname[irrpp].Data());
738 sprintf(layer, "layer %d",irrpp-6);
739 historaw2=(TH1F*)mergedfile.Get(histoname);
740 gStyle->SetOptStat(0);
744 printf("...Found\n");
745 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
746 historaw2->SetTitle("RecPoint Relative Occupancy");
747 if (irrpp==9) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
748 if (irrpp!=9) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
749 legend->AddEntry(historaw2,layer,"l");
753 else{updatecanvas[irrpp-9]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
756 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
760 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
761 canvas1->SaveAs(namecanvas);
763 canvas1->Print("SDDQAPlot.ps");
767 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
769 canvas1->Divide(2,1);
772 for(Int_t i=11;i<13;i++)
775 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
776 printf("histo name %s",RecPointsexpertname[i].Data());
777 historaw=(TH2D*)mergedfile.Get(histoname);
779 if(historaw){printf("...Found\n");historaw->DrawCopy("colz");}else{updatecanvas[i-11]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
782 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
786 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
787 canvas1->SaveAs(namecanvas);
789 canvas1->Print("SDDQAPlot.ps");
795 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
797 canvas1->Divide(2,1);
800 for(Int_t i=13;i<15;i++)
803 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
804 printf("histo name %s",RecPointsexpertname[i].Data());
805 historaw2=(TH1F*)mergedfile.Get(histoname);
807 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-13]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
810 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
814 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
815 canvas1->SaveAs(namecanvas);
817 canvas1->Print("SDDQAPlot.ps");
819 //--------------------------------------------
821 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
826 for (Int_t i=13;i<15;i++){
827 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
828 historaw2=(TH1F*)mergedfile.Get(histoname);
830 fmax=historaw2->GetMaximum();
841 fmaxmargin=1.1*fmaxold;
842 for(Int_t irrpp=13;irrpp<15;irrpp++){//non expert raws
844 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
845 printf("histo name %s",RecPointsexpertname[irrpp].Data());
846 sprintf(layer, "layer %d",irrpp-10);
847 historaw2=(TH1F*)mergedfile.Get(histoname);
848 gStyle->SetOptStat(0);
852 printf("...Found\n");
853 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
854 historaw2->SetTitle("Rec2Raw Ratio");
855 if (irrpp==13) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
856 if (irrpp!=13) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
857 legend->AddEntry(historaw2,layer,"l");
861 else{updatecanvas[irrpp-13]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
864 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
868 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
869 canvas1->SaveAs(namecanvas);
871 canvas1->Print("SDDQAPlot.ps");
875 //--------------------------------------
877 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
879 canvas1->Divide(2,1);
882 for(Int_t i=15;i<17;i++)
885 sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
886 printf("histo name %s",RecPointsexpertname[i].Data());
887 historaw2=(TH1F*)mergedfile.Get(histoname);
889 if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
892 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
896 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
897 canvas1->SaveAs(namecanvas);
899 canvas1->Print("SDDQAPlot.ps");
903 //--------------------------------------------
905 for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
910 for (Int_t i=15;i<17;i++){
911 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
912 historaw2=(TH1F*)mergedfile.Get(histoname);
914 fmax=historaw2->GetMaximum();
918 if(fmaxold<fmax){fmaxold=fmax;}
923 fmaxmargin=1.1*fmaxold;
924 for(Int_t irrpp=15;irrpp<17;irrpp++){//non expert raws
926 sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
927 printf("histo name %s",RecPointsexpertname[irrpp].Data());
928 sprintf(layer, "layer %d",irrpp-12);
929 historaw2=(TH1F*)mergedfile.Get(histoname);
930 gStyle->SetOptStat(0);
934 printf("...Found\n");
935 historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
936 historaw2->SetTitle("RecPoint dEdx");
937 if (irrpp==15) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
938 if (irrpp!=15) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
939 legend->AddEntry(historaw2,layer,"l");
943 else{updatecanvas[irrpp-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
946 if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
950 sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
951 canvas1->SaveAs(namecanvas);
953 canvas1->Print("SDDQAPlot.ps");
955 canvas1->Print("SDDQAPlot.ps]");
958 for(Int_t isave=0;isave<9;isave++){
959 if(isave<4)sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[histo2savenumber[isave]].Data());
960 if(isave>4&&isave<7)sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[histo2savenumber[isave]].Data());
961 if(isave>7)sprintf(histoname,"ITS/Raws/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[histo2savenumber[isave]].Data());
962 printf("file2save name:\t %s\n",histoname);
963 histo2save[isave]=(TH1F*)mergedfile.Get(histoname);
966 TFile file2savefortrend(trendfile,"recreate");
967 file2savefortrend.cd();
968 for(Int_t iss=0;iss<9;iss++){printf("Saved %d\n",iss); histo2save[iss]->Write();}
969 file2savefortrend.Close();
971 //else{delete canvas13; canvas13=NULL;}