1 // Macro to make final QA spectra from information stored
2 // in QA performance objects. It is done in 2 steps:
3 // 1. Merging TPC QA performance train output
4 // 2. Analyse generic histograms to make final QA spectra
7 // One can merge all performance objects stored in the
8 // output files or one of them:
10 // ALL - all components only for simulaltion
11 // NO_MC - all components only for realdata
12 // RES (At DCA, at InnerTPC, at outerTPC)
17 // Match (TPC+ITS, TPC+TRD, TPC Eff wrt ITS)
19 // It is recommeneded to merge particular components
20 // for a big statistcs due to too big size of the output. For small
21 // dedicated productions (e.g. flat-p) all components can be merged at once.
23 //void MergeOutput(const char* filename = "list.txt", const char* comp = "ALL", Int_t max=2);
24 //void MakeFinalSpectra(const char* filename = "merged.root", const char* comp = "ALL");
25 void MergeOutput(const char* filename, const char* comp, Int_t max);
26 //void MakeFinalSpectra(const char* filename, const char* comp);
27 void MakeFinalSpectra(const char* comp);
29 void MakeResults(const char* filename = "list.txt", const char* comp = "NO_MC", Int_t max=-1)
31 // Merge performance objects
32 MergeOutput(filename, comp, max);
35 MakeFinalSpectra(comp);
39 void MergeOutput(const char* filename, const char* comp, Int_t max)
44 printf("ERROR file %s does not exist \n",filename);
51 // Create new collections
52 TList *collTPC = new TList;
53 TList *collRes = new TList;
54 TList *collResTPCInner = new TList;
55 TList *collResTPCOuter = new TList;
56 TList *collEff = new TList;
57 TList *colldEdxTPCInner = new TList;
58 TList *collDCA = new TList;
59 TList *collMatchTPCITS = new TList;
60 TList *collMatchTPCTRD = new TList;
61 TList *collMatchTPCEFF = new TList;
63 // Open the input stream
67 // Read the input list of files and add them to the chain
72 if (!perfile.Contains("root")) continue; // protection
74 if(max>0 && counter>max) break;
75 printf("%s \n",perfile.Data());
76 TFile::Open(perfile.Data());
78 TList *coutput = gFile->Get("TPC");
80 if(str.CompareTo("NO_MC")==0) {
81 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
82 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
83 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
84 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
85 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
86 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
89 if(str.CompareTo("ALL")==0) {
90 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
91 collRes->Add(coutput->FindObject("AliPerformanceRes"));
92 collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
93 collResTPCOuter->Add(coutput->FindObject("AliPerformanceResTPCOuter"));
94 collEff->Add(coutput->FindObject("AliPerformanceEff"));
95 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
96 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
97 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
98 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
99 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
101 else if(str.CompareTo("TPC")==0) {
102 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
104 else if(str.CompareTo("RES")==0) {
105 collRes->Add(coutput->FindObject("AliPerformanceRes"));
106 collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
107 collResTPCOuter->Add(coutput->FindObject("AliPerformanceResTPCOuter"));
109 else if(str.CompareTo("EFF")==0) {
110 collEff->Add(coutput->FindObject("AliPerformanceEff"));
112 else if(str.CompareTo("DEDX")==0) {
113 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
115 else if(str.CompareTo("DCA")==0) {
116 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
118 else if(str.CompareTo("MATCH")==0) {
119 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
120 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
121 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
130 AliPerformanceTPC *tpc = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",0,kFALSE);
131 AliPerformanceRes *res = new AliPerformanceRes("AliPerformanceRes","res",0,kFALSE);
132 AliPerformanceRes *resTPCInner = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",3,kFALSE);
133 AliPerformanceRes *resTPCOuter = new AliPerformanceRes("AliPerformanceResTPCOuter","AliPerformanceResTPCOuter",4,kFALSE);
134 AliPerformanceEff *eff = new AliPerformanceEff("AliPerformanceEff","AliPerformanceEff",0,kFALSE);
135 AliPerformanceDEdx *dedx = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",3,kFALSE);
136 AliPerformanceDCA *dca = new AliPerformanceDCA("AliPerformanceDCA","AliPerformanceDCA",0,kFALSE);
137 AliPerformanceMatch *matchTPCITS = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceTPCITS",0,kFALSE);
138 AliPerformanceMatch *matchTPCTRD = new AliPerformanceMatch("AliPerformanceMatchTPCTRD","AliPerformanceTPCTRD",1,kFALSE);
139 AliPerformanceMatch *matchTPCEFF = new AliPerformanceMatch("AliPerformanceMatchTPCEFF","AliPerformanceTPCEFF",2,kFALSE);
141 // Create output list
142 TFolder *outList = new TFolder();
144 outList->SetName("coutput");
146 // merge objects and add to the list
147 if(!str.CompareTo("ALL")) {
152 resTPCInner->Merge(collResTPCInner);
153 outList->Add(resTPCInner);
154 resTPCOuter->Merge(collResTPCOuter);
155 outList->Add(resTPCOuter);
158 dedx->Merge(colldEdxTPCInner);
162 matchTPCITS->Merge(collMatchTPCITS);
163 outList->Add(matchTPCITS);
164 matchTPCTRD->Merge(collMatchTPCTRD);
165 outList->Add(matchTPCTRD);
166 matchTPCEFF->Merge(collMatchTPCEFF);
167 outList->Add(matchTPCEFF);
169 else if(!str.CompareTo("NO_MC")) {
172 dedx->Merge(colldEdxTPCInner);
176 matchTPCITS->Merge(collMatchTPCITS);
177 outList->Add(matchTPCITS);
178 matchTPCTRD->Merge(collMatchTPCTRD);
179 outList->Add(matchTPCTRD);
180 matchTPCEFF->Merge(collMatchTPCEFF);
181 outList->Add(matchTPCEFF);
183 else if(!str.CompareTo("TPC")) {
187 else if(!str.CompareTo("RES")) {
190 resTPCInner->Merge(collResTPCInner);
191 outList->Add(resTPCInner);
192 resTPCOuter->Merge(collResTPCOuter);
193 outList->Add(resTPCOuter);
195 else if(!str.CompareTo("EFF")) {
199 else if(!str.CompareTo("DEDX")) {
200 dedx->Merge(colldEdxTPCInner);
203 else if(!str.CompareTo("DCA")) {
207 else if(!str.CompareTo("MATCH")) {
208 matchTPCITS->Merge(collMatchTPCITS);
209 outList->Add(matchTPCITS);
210 matchTPCTRD->Merge(collMatchTPCTRD);
211 outList->Add(matchTPCTRD);
212 matchTPCEFF->Merge(collMatchTPCEFF);
213 outList->Add(matchTPCEFF);
218 TFile *outFile = new TFile( Form("TPC.Performance.Merged.%s.root",comp),"recreate");
224 void MakeFinalSpectra(const char* comp)
226 // open proper input file
227 TFile *inFile = TFile::Open(Form("TPC.Performance.Merged.%s.root",comp));
230 // Performance object
233 if(str.CompareTo("ALL") == 0)
235 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
236 compObjTPC->Analyse();
237 compObjTPC->GetAnalysisFolder()->ls("*");
238 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
239 TFile fout("PerformanceTPCQA.root","recreate");
240 compObjTPC->GetAnalysisFolder()->Write();
244 AliPerformanceEff * compObjEff = (AliPerformanceEff*)coutput->FindObject("AliPerformanceEff");
245 compObjEff->Analyse();
246 compObjEff->GetAnalysisFolder()->ls("*");
247 compObjEff->PrintHisto(kTRUE,"PerformanceEffQA.ps");
248 TFile fout("PerformanceEffQA.root","recreate");
249 compObjEff->GetAnalysisFolder()->Write();
253 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
254 compObjDCA->Analyse();
255 compObjDCA->GetAnalysisFolder()->ls("*");
256 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
257 TFile fout("PerformanceDCAQA.root","recreate");
258 compObjDCA->GetAnalysisFolder()->Write();
262 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
263 compObjRes->Analyse();
264 compObjRes->GetAnalysisFolder()->ls("*");
265 compObjRes->PrintHisto(kTRUE,"PerformanceResQA.ps");
266 TFile fout("PerformanceResQA.root","recreate");
267 compObjRes->GetAnalysisFolder()->Write();
271 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCInner");
272 compObjRes->Analyse();
273 compObjRes->GetAnalysisFolder()->ls("*");
274 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCInnerQA.ps");
275 TFile fout("PerformanceResTPCInnerQA.root","recreate");
276 compObjRes->GetAnalysisFolder()->Write();
280 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCOuter");
281 compObjRes->Analyse();
282 compObjRes->GetAnalysisFolder()->ls("*");
283 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCOuterQA.ps");
284 TFile fout("PerformanceResTPCOuterQA.root","recreate");
285 compObjRes->GetAnalysisFolder()->Write();
289 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
290 compObjDEdx->Analyse();
291 compObjDEdx->GetAnalysisFolder()->ls("*");
292 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
293 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
294 compObjDEdx->GetAnalysisFolder()->Write();
298 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
299 compObjMatchTPCITS->Analyse();
300 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
301 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
302 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
303 compObjMatchTPCITS->GetAnalysisFolder()->Write();
307 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
308 compObjMatchTPCTRD->Analyse();
309 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
310 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
311 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
312 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
316 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
317 compObjMatchTPCEFF->Analyse();
318 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
319 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
320 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
321 compObjMatchTPCEFF->GetAnalysisFolder()->Write();
324 else if(str.CompareTo("NO_MC") == 0)
326 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
327 compObjTPC->Analyse();
328 compObjTPC->GetAnalysisFolder()->ls("*");
329 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
330 TFile fout("PerformanceTPCQA.root","recreate");
331 compObjTPC->GetAnalysisFolder()->Write();
335 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
336 compObjDCA->Analyse();
337 compObjDCA->GetAnalysisFolder()->ls("*");
338 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
339 TFile fout("PerformanceDCAQA.root","recreate");
340 compObjDCA->GetAnalysisFolder()->Write();
344 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
345 compObjDEdx->Analyse();
346 compObjDEdx->GetAnalysisFolder()->ls("*");
347 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
348 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
349 compObjDEdx->GetAnalysisFolder()->Write();
353 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
354 compObjMatchTPCITS->Analyse();
355 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
356 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
357 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
358 compObjMatchTPCITS->GetAnalysisFolder()->Write();
362 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
363 compObjMatchTPCTRD->Analyse();
364 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
365 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
366 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
367 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
371 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
372 compObjMatchTPCEFF->Analyse();
373 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
374 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
375 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
376 compObjMatchTPCEFF->GetAnalysisFolder()->Write();
379 else if(str.CompareTo("TPC") == 0)
382 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
383 compObjTPC->Analyse();
384 compObjTPC->GetAnalysisFolder()->ls("*");
385 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
386 TFile fout("PerformanceTPCQA.root","recreate");
387 compObjTPC->GetAnalysisFolder()->Write();
390 else if(str.CompareTo("EFF") == 0)
393 AliPerformanceEff * compObjEff = (AliPerformanceEff*)coutput->FindObject("AliPerformanceEff");
394 compObjEff->Analyse();
395 compObjEff->GetAnalysisFolder()->ls("*");
396 compObjEff->PrintHisto(kTRUE,"PerformanceEffQA.ps");
397 TFile fout("PerformanceEffQA.root","recreate");
398 compObjEff->GetAnalysisFolder()->Write();
401 else if(str.CompareTo("RES") == 0)
404 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
405 compObjRes->Analyse();
406 compObjRes->GetAnalysisFolder()->ls("*");
407 compObjRes->PrintHisto(kTRUE,"PerformanceResQA.ps");
408 TFile fout("PerformanceResQA.root","recreate");
409 compObjRes->GetAnalysisFolder()->Write();
413 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCInner");
414 compObjRes->Analyse();
415 compObjRes->GetAnalysisFolder()->ls("*");
416 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCInnerQA.ps");
417 TFile fout("PerformanceResTPCInnerQA.root","recreate");
418 compObjRes->GetAnalysisFolder()->Write();
421 else if(str.CompareTo("DEDX") == 0)
424 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
425 compObjDEdx->Analyse();
426 compObjDEdx->GetAnalysisFolder()->ls("*");
427 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
428 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
429 compObjDEdx->GetAnalysisFolder()->Write();
432 else if(str.CompareTo("DCA") == 0)
435 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
436 compObjDCA->Analyse();
437 compObjDCA->GetAnalysisFolder()->ls("*");
438 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
439 TFile fout("PerformanceDCAQA.root","recreate");
440 compObjDCA->GetAnalysisFolder()->Write();
443 else if(str.CompareTo("MATCH") == 0)
446 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
447 compObjMatchTPCITS->Analyse();
448 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
449 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
450 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
451 compObjMatchTPCITS->GetAnalysisFolder()->Write();
455 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
456 compObjMatchTPCTRD->Analyse();
457 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
458 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
459 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
460 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
464 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
465 compObjMatchTPCEFF->Analyse();
466 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
467 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
468 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
469 compObjMatchTPCEFF->GetAnalysisFolder()->Write();