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 = "parf.list", const char* comp = "NO_MC", Int_t max=-1)
31 gStyle->SetPalette(1);
32 gStyle->SetNumberContours(50);
34 gSystem->Load("libANALYSIS");
35 gSystem->Load("libANALYSISalice");
36 gSystem->Load("libTender");
38 gSystem->Load("libTPCcalib.so");
39 gSystem->Load("libPWGPP");
41 // Merge performance objects
42 MergeOutput(filename, comp, max);
45 MakeFinalSpectra(comp);
49 void MergeOutput(const char* filename, const char* comp, Int_t max)
54 printf("ERROR file %s does not exist \n",filename);
61 // Create new collections
62 TList *collTPC = new TList;
63 TList *collRes = new TList;
64 TList *collResTPCInner = new TList;
65 TList *collResTPCOuter = new TList;
66 TList *collEff = new TList;
67 TList *colldEdxTPCInner = new TList;
68 TList *collDCA = new TList;
69 TList *collMatchTPCITS = new TList;
70 TList *collMatchTPCTRD = new TList;
71 TList *collMatchTPCEFF = new TList;
73 // Open the input stream
77 // Read the input list of files and add them to the chain
82 if (!perfile.Contains("root")) continue; // protection
84 if(max>0 && counter>max) break;
85 printf("%s \n",perfile.Data());
86 TFile::Open(perfile.Data());
88 TList *coutput = gFile->Get("TPC");
90 if(str.CompareTo("NO_MC")==0) {
91 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
92 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
93 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
94 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
95 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
96 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
99 if(str.CompareTo("ALL")==0) {
100 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
101 collRes->Add(coutput->FindObject("AliPerformanceRes"));
102 collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
103 collResTPCOuter->Add(coutput->FindObject("AliPerformanceResTPCOuter"));
104 collEff->Add(coutput->FindObject("AliPerformanceEff"));
105 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
106 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
107 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
108 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
109 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
111 else if(str.CompareTo("TPC")==0) {
112 collTPC->Add(coutput->FindObject("AliPerformanceTPC"));
114 else if(str.CompareTo("RES")==0) {
115 collRes->Add(coutput->FindObject("AliPerformanceRes"));
116 collResTPCInner->Add(coutput->FindObject("AliPerformanceResTPCInner"));
117 collResTPCOuter->Add(coutput->FindObject("AliPerformanceResTPCOuter"));
119 else if(str.CompareTo("EFF")==0) {
120 collEff->Add(coutput->FindObject("AliPerformanceEff"));
122 else if(str.CompareTo("DEDX")==0) {
123 colldEdxTPCInner->Add(coutput->FindObject("AliPerformanceDEdxTPCInner"));
125 else if(str.CompareTo("DCA")==0) {
126 collDCA->Add(coutput->FindObject("AliPerformanceDCA"));
128 else if(str.CompareTo("MATCH")==0) {
129 collMatchTPCITS->Add(coutput->FindObject("AliPerformanceMatchTPCITS"));
130 collMatchTPCTRD->Add(coutput->FindObject("AliPerformanceMatchTPCTRD"));
131 collMatchTPCEFF->Add(coutput->FindObject("AliPerformanceMatchTPCEFF"));
140 AliPerformanceTPC *tpc = new AliPerformanceTPC("AliPerformanceTPC","AliPerformanceTPC",0,kFALSE);
141 AliPerformanceRes *res = new AliPerformanceRes("AliPerformanceRes","res",0,kFALSE);
142 AliPerformanceRes *resTPCInner = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",3,kFALSE);
143 AliPerformanceRes *resTPCOuter = new AliPerformanceRes("AliPerformanceResTPCOuter","AliPerformanceResTPCOuter",4,kFALSE);
144 AliPerformanceEff *eff = new AliPerformanceEff("AliPerformanceEff","AliPerformanceEff",0,kFALSE);
145 AliPerformanceDEdx *dedx = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",3,kFALSE);
146 AliPerformanceDCA *dca = new AliPerformanceDCA("AliPerformanceDCA","AliPerformanceDCA",0,kFALSE);
147 AliPerformanceMatch *matchTPCITS = new AliPerformanceMatch("AliPerformanceMatchTPCITS","AliPerformanceTPCITS",0,kFALSE);
148 AliPerformanceMatch *matchTPCTRD = new AliPerformanceMatch("AliPerformanceMatchTPCTRD","AliPerformanceTPCTRD",1,kFALSE);
149 AliPerformanceMatch *matchTPCEFF = new AliPerformanceMatch("AliPerformanceMatchTPCEFF","AliPerformanceTPCEFF",2,kFALSE);
151 // Create output list
152 TFolder *outList = new TFolder();
154 outList->SetName("coutput");
156 // merge objects and add to the list
157 if(!str.CompareTo("ALL")) {
162 resTPCInner->Merge(collResTPCInner);
163 outList->Add(resTPCInner);
164 resTPCOuter->Merge(collResTPCOuter);
165 outList->Add(resTPCOuter);
168 dedx->Merge(colldEdxTPCInner);
172 matchTPCITS->Merge(collMatchTPCITS);
173 outList->Add(matchTPCITS);
174 matchTPCTRD->Merge(collMatchTPCTRD);
175 outList->Add(matchTPCTRD);
176 matchTPCEFF->Merge(collMatchTPCEFF);
177 outList->Add(matchTPCEFF);
179 else if(!str.CompareTo("NO_MC")) {
182 dedx->Merge(colldEdxTPCInner);
186 matchTPCITS->Merge(collMatchTPCITS);
187 outList->Add(matchTPCITS);
188 matchTPCTRD->Merge(collMatchTPCTRD);
189 outList->Add(matchTPCTRD);
190 matchTPCEFF->Merge(collMatchTPCEFF);
191 outList->Add(matchTPCEFF);
193 else if(!str.CompareTo("TPC")) {
197 else if(!str.CompareTo("RES")) {
200 resTPCInner->Merge(collResTPCInner);
201 outList->Add(resTPCInner);
202 resTPCOuter->Merge(collResTPCOuter);
203 outList->Add(resTPCOuter);
205 else if(!str.CompareTo("EFF")) {
209 else if(!str.CompareTo("DEDX")) {
210 dedx->Merge(colldEdxTPCInner);
213 else if(!str.CompareTo("DCA")) {
217 else if(!str.CompareTo("MATCH")) {
218 matchTPCITS->Merge(collMatchTPCITS);
219 outList->Add(matchTPCITS);
220 matchTPCTRD->Merge(collMatchTPCTRD);
221 outList->Add(matchTPCTRD);
222 matchTPCEFF->Merge(collMatchTPCEFF);
223 outList->Add(matchTPCEFF);
228 TFile *outFile = new TFile( Form("TPC.Performance.Merged.%s.root",comp),"recreate");
234 void MakeFinalSpectra(const char* comp)
236 // open proper input file
237 TFile *inFile = TFile::Open(Form("TPC.Performance.Merged.%s.root",comp));
240 // Performance object
243 if(str.CompareTo("ALL") == 0)
245 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
246 compObjTPC->Analyse();
247 compObjTPC->GetAnalysisFolder()->ls("*");
248 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
249 TFile fout("PerformanceTPCQA.root","recreate");
250 compObjTPC->GetAnalysisFolder()->Write();
254 AliPerformanceEff * compObjEff = (AliPerformanceEff*)coutput->FindObject("AliPerformanceEff");
255 compObjEff->Analyse();
256 compObjEff->GetAnalysisFolder()->ls("*");
257 compObjEff->PrintHisto(kTRUE,"PerformanceEffQA.ps");
258 TFile fout("PerformanceEffQA.root","recreate");
259 compObjEff->GetAnalysisFolder()->Write();
263 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
264 compObjDCA->Analyse();
265 compObjDCA->GetAnalysisFolder()->ls("*");
266 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
267 TFile fout("PerformanceDCAQA.root","recreate");
268 compObjDCA->GetAnalysisFolder()->Write();
272 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
273 compObjRes->Analyse();
274 compObjRes->GetAnalysisFolder()->ls("*");
275 compObjRes->PrintHisto(kTRUE,"PerformanceResQA.ps");
276 TFile fout("PerformanceResQA.root","recreate");
277 compObjRes->GetAnalysisFolder()->Write();
281 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCInner");
282 compObjRes->Analyse();
283 compObjRes->GetAnalysisFolder()->ls("*");
284 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCInnerQA.ps");
285 TFile fout("PerformanceResTPCInnerQA.root","recreate");
286 compObjRes->GetAnalysisFolder()->Write();
290 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCOuter");
291 compObjRes->Analyse();
292 compObjRes->GetAnalysisFolder()->ls("*");
293 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCOuterQA.ps");
294 TFile fout("PerformanceResTPCOuterQA.root","recreate");
295 compObjRes->GetAnalysisFolder()->Write();
299 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
300 compObjDEdx->Analyse();
301 compObjDEdx->GetAnalysisFolder()->ls("*");
302 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
303 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
304 compObjDEdx->GetAnalysisFolder()->Write();
308 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
309 compObjMatchTPCITS->Analyse();
310 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
311 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
312 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
313 compObjMatchTPCITS->GetAnalysisFolder()->Write();
317 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
318 compObjMatchTPCTRD->Analyse();
319 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
320 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
321 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
322 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
326 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
327 compObjMatchTPCEFF->Analyse();
328 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
329 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
330 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
331 compObjMatchTPCEFF->GetAnalysisFolder()->Write();
334 else if(str.CompareTo("NO_MC") == 0)
336 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
337 compObjTPC->Analyse();
338 compObjTPC->GetAnalysisFolder()->ls("*");
339 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
340 TFile fout("PerformanceTPCQA.root","recreate");
341 compObjTPC->GetAnalysisFolder()->Write();
345 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
346 compObjDCA->Analyse();
347 compObjDCA->GetAnalysisFolder()->ls("*");
348 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
349 TFile fout("PerformanceDCAQA.root","recreate");
350 compObjDCA->GetAnalysisFolder()->Write();
354 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
355 compObjDEdx->Analyse();
356 compObjDEdx->GetAnalysisFolder()->ls("*");
357 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
358 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
359 compObjDEdx->GetAnalysisFolder()->Write();
363 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
364 compObjMatchTPCITS->Analyse();
365 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
366 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
367 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
368 compObjMatchTPCITS->GetAnalysisFolder()->Write();
372 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
373 compObjMatchTPCTRD->Analyse();
374 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
375 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
376 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
377 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
381 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
382 compObjMatchTPCEFF->Analyse();
383 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
384 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
385 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
386 compObjMatchTPCEFF->GetAnalysisFolder()->Write();
389 else if(str.CompareTo("TPC") == 0)
392 AliPerformanceTPC * compObjTPC = (AliPerformanceTPC*)coutput->FindObject("AliPerformanceTPC");
393 compObjTPC->Analyse();
394 compObjTPC->GetAnalysisFolder()->ls("*");
395 compObjTPC->PrintHisto(kTRUE,"PerformanceTPCQA.ps");
396 TFile fout("PerformanceTPCQA.root","recreate");
397 compObjTPC->GetAnalysisFolder()->Write();
400 else if(str.CompareTo("EFF") == 0)
403 AliPerformanceEff * compObjEff = (AliPerformanceEff*)coutput->FindObject("AliPerformanceEff");
404 compObjEff->Analyse();
405 compObjEff->GetAnalysisFolder()->ls("*");
406 compObjEff->PrintHisto(kTRUE,"PerformanceEffQA.ps");
407 TFile fout("PerformanceEffQA.root","recreate");
408 compObjEff->GetAnalysisFolder()->Write();
411 else if(str.CompareTo("RES") == 0)
414 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
415 compObjRes->Analyse();
416 compObjRes->GetAnalysisFolder()->ls("*");
417 compObjRes->PrintHisto(kTRUE,"PerformanceResQA.ps");
418 TFile fout("PerformanceResQA.root","recreate");
419 compObjRes->GetAnalysisFolder()->Write();
423 AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCInner");
424 compObjRes->Analyse();
425 compObjRes->GetAnalysisFolder()->ls("*");
426 compObjRes->PrintHisto(kTRUE,"PerformanceResTPCInnerQA.ps");
427 TFile fout("PerformanceResTPCInnerQA.root","recreate");
428 compObjRes->GetAnalysisFolder()->Write();
431 else if(str.CompareTo("DEDX") == 0)
434 AliPerformanceDEdx* compObjDEdx = (AliPerformanceDEdx*)coutput->FindObject("AliPerformanceDEdxTPCInner");
435 compObjDEdx->Analyse();
436 compObjDEdx->GetAnalysisFolder()->ls("*");
437 compObjDEdx->PrintHisto(kTRUE,"PerformanceDEdxTPCInnerQA.ps");
438 TFile fout("PerformanceDEdxTPCInnerQA.root","recreate");
439 compObjDEdx->GetAnalysisFolder()->Write();
442 else if(str.CompareTo("DCA") == 0)
445 AliPerformanceDCA * compObjDCA = (AliPerformanceDCA*)coutput->FindObject("AliPerformanceDCA");
446 compObjDCA->Analyse();
447 compObjDCA->GetAnalysisFolder()->ls("*");
448 compObjDCA->PrintHisto(kTRUE,"PerformanceDCAQA.ps");
449 TFile fout("PerformanceDCAQA.root","recreate");
450 compObjDCA->GetAnalysisFolder()->Write();
453 else if(str.CompareTo("MATCH") == 0)
456 AliPerformanceMatch * compObjMatchTPCITS = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCITS");
457 compObjMatchTPCITS->Analyse();
458 compObjMatchTPCITS->GetAnalysisFolder()->ls("*");
459 compObjMatchTPCITS->PrintHisto(kTRUE,"PerformanceMatchTPCITSQA.ps");
460 TFile fout("PerformanceMatchTPCITSQA.root","recreate");
461 compObjMatchTPCITS->GetAnalysisFolder()->Write();
465 AliPerformanceMatch * compObjMatchTPCTRD = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCTRD");
466 compObjMatchTPCTRD->Analyse();
467 compObjMatchTPCTRD->GetAnalysisFolder()->ls("*");
468 compObjMatchTPCTRD->PrintHisto(kTRUE,"PerformanceMatchTPCTRDQA.ps");
469 TFile fout("PerformanceMatchTPCTRDQA.root","recreate");
470 compObjMatchTPCTRD->GetAnalysisFolder()->Write();
474 AliPerformanceMatch * compObjMatchTPCEFF = (AliPerformanceMatch*)coutput->FindObject("AliPerformanceMatchTPCEFF");
475 compObjMatchTPCEFF->Analyse();
476 compObjMatchTPCEFF->GetAnalysisFolder()->ls("*");
477 compObjMatchTPCEFF->PrintHisto(kTRUE,"PerformanceMatchTPCEFFQA.ps");
478 TFile fout("PerformanceMatchTPCEFFQA.root","recreate");
479 compObjMatchTPCEFF->GetAnalysisFolder()->Write();