]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/qaRec/makeResults.C
70c321f56cf80b86876b6a992e18010756af1bd7
[u/mrichter/AliRoot.git] / TRD / qaRec / makeResults.C
1 #include "run.h"
2 #define BIT(n)        (1 << (n))
3 #define TESTBIT(n,i)  ((Bool_t)(((n) & BIT(i)) != 0))
4
5
6 const Int_t fSteerTask = 0xffffffff;
7 Char_t *fTaskClass[fknTasks] = {
8   "AliTRDtrackInfoGen"
9   ,"AliTRDtrackingEfficiency"
10   ,"AliTRDtrackingEfficiencyCombined"
11   ,"AliTRDtrackingResolution"
12   ,"AliTRDcalibration"
13   ,"AliTRDpidChecker"
14 };
15
16 const Int_t nlibs = 3;
17 Char_t *libs[] = {"libProofPlayer.so", "libANALYSIS.so", "libTRDqaRec.so"};
18 void makeResults(Char_t *dir=".")
19 {
20   for(Int_t ilib=0; ilib<nlibs; ilib++){
21     if(!gSystem->Load(libs[ilib])) continue;
22     printf("Failed to load %s.\n", libs[ilib]);
23     return;
24   }
25
26   Int_t ndir = 1;
27
28   // file merger object
29   TFileMerger *fFM = new TFileMerger();
30   TClass *ctask = 0x0;
31   TObject *o = 0x0;
32   TObjArray *fContainer = 0x0;
33   AliTRDrecoTask *task = 0x0;
34
35   printf("\n\tPROCESSING DATA FOR TASKS:\n");
36   for(Int_t itask = 3; itask < fknTasks; itask++){
37     if(!TESTBIT(fSteerTask, itask)) continue;
38
39     ctask = new TClass(fTaskClass[itask]);
40     task = (AliTRDrecoTask*)ctask->New();
41     printf("\t%s\n", task->GetTitle());
42
43     fFM = new(fFM) TFileMerger(kTRUE);
44     fFM->OutputFile(Form("merge/TRD.Task%s.root",  task->GetName()));
45     
46     Int_t idir = 0;
47     while(idir<ndir){
48       fFM->AddFile(Form("./TRD.Task%s.root"/*, dir[idir++]*/,  task->GetName()));
49       idir++;
50     }
51     fFM->Merge();
52     fFM->~TFileMerger();
53
54     task->Load(Form("TRD.Task%s.root", task->GetName()));
55     task->PostProcess();
56     //fContainer = dynamic_cast<TObjArray*>(task->GetOutputData(0));
57     for(Int_t ipic=0; ipic<task->GetNRefFigures(); ipic++){
58       Int_t ifirst, ilast;
59       task->GetRefFigure(ipic, ifirst, ilast);
60       if(!(o = fContainer->At(ifirst))) continue;
61       
62       if(o->InheritsFrom("TH1")){ 
63         h = dynamic_cast<TH1*>(o);
64         h->Draw("pl");
65       } else if(o->InheritsFrom("TGraph")){ 
66         g = dynamic_cast<TGraph*>(o);
67         g->Draw("apl");
68       } else{
69         printf("No idea how to plot object of type %s.\n", o->IsA()->GetName());
70         printf("Please teach me.\n");
71         continue;
72       }
73
74       
75 /*      for(Int_t ig=ifirst+1; ig<ilast; ig++){
76         if(!(o = fContainer->At(ifirst))) continue;
77         if(h){
78           h = dynamic_cast<TH1*>(o);
79           h->Draw("plsame");
80         } else if(g){
81           g = dynamic_cast<TGraph*>(o);
82           g->Draw("pl");
83         }
84         gPad->SaveAs(Form("%s_fig%d.gif", task->GetName(), ipic));
85       }*/
86     }
87     delete task;
88     delete ctask;
89   }
90 }