]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/macros/MergeOutput.C
TPC related macros
[u/mrichter/AliRoot.git] / PWG1 / macros / MergeOutput.C
1 // Macro to merge TPC performance train output.
2 // One can merge all performance objects stored in the 
3 // output files or one of them:
4 // 
5 // RES 
6 // EFF
7 // DEDX
8 // DCA
9 // TPC
10 //
11 // It is recommeneded to merge particular components 
12 // for a big statistcs due to too big size of the output. For small
13 // dedicated productions (e.g. flat-p) all components can be merged at once.
14 //
15
16 void MergeOutput(const char* filename = "list.txt", const char* comp = "ALL", Int_t max=2)
17 {
18   // Performance object 
19   TString str(comp);
20
21   // Create new collections
22   TList *collTPC = new TList;
23   TList *collRes = new TList;
24   TList *collResTPCInner = new TList;
25   TList *collEff = new TList;
26   TList *colldEdxTPCInner = new TList;
27   TList *collDCA = new TList;
28
29   // Open the input stream
30   ifstream in;
31   in.open(filename);
32
33   // Read the input list of files and add them to the chain
34   TString perfile;
35   Int_t counter=0;
36   while(!in.eof()) {
37     in >> perfile;
38     if (!perfile.Contains("root")) continue; // protection
39     counter++;
40     if(counter>max) break;
41     printf("%s \n",perfile.Data());
42     TFile::Open(perfile.Data());
43     gFile->cd();
44     TList *coutput = gFile->Get("coutput"); 
45
46     if(str.CompareTo("ALL")==0) {
47       collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
48       collRes->Add(coutput->FindObject("AliPerformanceRes"));
49       collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
50       collEff->Add(coutput->FindObject("AliPerformanceEff"));
51       colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
52       collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
53     } 
54     else if(str.CompareTo("TPC")==0) {
55       collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
56     }
57     else if(str.CompareTo("RES")==0) {
58       collRes->Add(coutput->FindObject("AliPerformanceRes"));
59       collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
60     }
61     else if(str.CompareTo("EFF")==0) {
62       collEff->Add(coutput->FindObject("AliPerformanceEff"));
63     }
64     else if(str.CompareTo("DEDX")==0) {
65       colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
66     }
67     else if(str.CompareTo("DCA")==0) {
68       collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
69     }
70     else {
71      continue;
72     }
73   }
74   in.close();
75
76   //
77   AliPerformanceTPC *tpc = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",0,kFALSE);
78   AliPerformanceRes *res = new AliPerformanceRes("AliPerformanceRes","res",0,kFALSE);
79   AliPerformanceRes *resTPCInner = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",3,kFALSE);
80   AliPerformanceEff *eff = new AliPerformanceEff("AliPerformanceEff","AliPerformanceEff",0,kFALSE);
81   AliPerformanceDEdx *dedx = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",3,kFALSE);
82   AliPerformanceDCA *dca = new AliPerformanceDCA("AliPerformanceDCA","AliPerformanceDCA",0,kFALSE);
83
84   // Create output list
85   TFolder *outList = new TFolder();
86   outList->SetOwner();
87   outList->SetName("coutput");
88
89   // merge objects and add to the list
90   if(!str.CompareTo("ALL")) {
91     tpc->Merge(collTPC); 
92     outList->Add(tpc);
93     res->Merge(collRes);
94     outList->Add(res);
95     resTPCInner->Merge(collResTPCInner);
96     outList->Add(resTPCInner);
97     eff->Merge(collEff);
98     outList->Add(eff);
99     dedx->Merge(colldEdxTPCInner);
100     outList->Add(dedx);
101     dca->Merge(collDCA);
102     outList->Add(dca);
103   }
104   else if(!str.CompareTo("TPC")) {
105     tpc->Merge(collTPC); 
106     outList->Add(tpc);
107   }
108   else if(!str.CompareTo("RES")) {
109     res->Merge(collRes);
110     outList->Add(res);
111     resTPCInner->Merge(collResTPCInner);
112     outList->Add(resTPCInner);
113   }
114   else if(!str.CompareTo("EFF")) {
115     eff->Merge(collEff);
116     outList->Add(eff);
117   }
118   else if(!str.CompareTo("DEDX")) {
119     dedx->Merge(colldEdxTPCInner);
120     outList->Add(dedx);
121   }
122   else if(!str.CompareTo("DCA")) {
123     dca->Merge(collDCA);
124     outList->Add(dca);
125   }
126
127   //
128   TFile *outFile = new TFile("TPC.Performance.Merged.root","recreate");
129   outFile->cd();
130   outList->Write();
131   outFile->Close();
132 }