]> git.uio.no Git - u/mrichter/AliRoot.git/blame - test/QA/AnaQA.C
MergeQA is now an intrinsic part of AliReconstruction
[u/mrichter/AliRoot.git] / test / QA / AnaQA.C
CommitLineData
3d886162 1/*
2 * AnaQA.C
3 *
4 *
5 * Created by schutz on 29/09/08.
6 * Copyright 2008 CERN. All rights reserved.
7 *
8 */
9#include <TFile.h>
10#include <TList.h>
11#include <TNamed.h>
12#include "AliQA.h"
13
14void AnaQA(Int_t run)
15{
16// Macro to analyse the output of the QAChecker
17
18 // Open the file that holds the AliQA object
19 const char * resultFileName = "QA.root" ; //AliQA::GetQAResultFileName() ;
20 const char * msgE = "QA ERROR: " ;
21 const char * msgS = "QA SIGNAL: " ;
22
23 TFile * inputQAFile = TFile::Open(resultFileName) ;
24 if ( ! inputQAFile ) {
25 printf("QA ERROR: File %s not found\n", AliQA::GetQAResultFileName()) ;
26 exit(1) ;
27 }
28 // Get the AliQA object from the file
29 // inputQAFile.ls() ;
30 AliQA * qa = dynamic_cast<AliQA*>(inputQAFile->Get(AliQA::GetQAName())) ;
31 // Show the status of all Detectors
32 for (Int_t det = 0 ; det < AliQA::kNDET ; det++) {
33 for (Int_t task = 0 ; task < AliQA::kNTASK ; task++) {
34 if (qa->IsSetAny(AliQA::DETECTORINDEX_t(det), AliQA::ALITASK_t(task))) {
35 qa->ShowStatus(AliQA::DETECTORINDEX_t(det), AliQA::ALITASK_t(task)) ;
36 // found a bad detector, open the QA data file and search for the faulty histogram
37 TFile * dataQAFile = TFile::Open(AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
38 if ( ! dataQAFile ) {
39 printf("%s File %s not found\n", msgE, AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
40 exit(1) ;
41 }
42 dataQAFile->cd(AliQA::GetDetName(AliQA::DETECTORINDEX_t(det))) ;
43 TDirectory * saveDir = gDirectory ;
44 switch (task) {
45 case AliQA::kNULLTASK:
46 break ;
47 case AliQA::kRAW:
48 Bool_t dir = saveDir->cd(AliQA::GetTaskName(AliQA::kRAWS)) ;
49 if ( ! dir ) {
50 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kRAWS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
51 } else {
52 TList * listofkeys = gDirectory->GetListOfKeys() ;
53 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
54 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
55 if (obj) {
56 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
57 if (rv)
58 printf("%s QA bit set in %s/%s/%s\n",
59 msgS,
60 AliQA::GetDetName(det),
61 AliQA::GetTaskName(AliQA::kRAWS).Data(),
62 obj->GetName());
63 }
64 }
65 }
66 break ;
67 case AliQA::kSIM:
68 dir = saveDir->cd(AliQA::GetTaskName(AliQA::kHITS)) ;
69 if ( ! dir ) {
70 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kHITS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
71 } else {
72 TList * listofkeys = gDirectory->GetListOfKeys() ;
73 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
74 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
75 if (obj) {
76 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
77 if (rv)
78 printf("%s QA bit set in %s/%s/%s\n",
79 msgS,
80 AliQA::GetDetName(det),
81 AliQA::GetTaskName(AliQA::kHITS).Data(),
82 obj->GetName());
83 }
84 }
85 }
86 dir = saveDir->cd(AliQA::GetTaskName(AliQA::kSDIGITS)) ;
87 if ( ! dir ) {
88 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kSDIGITS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
89 } else {
90 TList * listofkeys = gDirectory->GetListOfKeys() ;
91 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
92 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
93 if (obj) {
94 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
95 if (rv)
96 printf("%s QA bit set in %s/%s/%s\n",
97 msgS,
98 AliQA::GetDetName(det),
99 AliQA::GetTaskName(AliQA::kSDIGITS).Data(),
100 obj->GetName());
101 }
102 }
103 }
104
105 dir = saveDir->cd(AliQA::GetTaskName(AliQA::kDIGITS)) ;
106 if ( ! dir ) {
107 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kDIGITS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
108 } else {
109 TList * listofkeys = gDirectory->GetListOfKeys() ;
110 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
111 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
112 if (obj) {
113 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
114 if (rv)
115 printf("%s QA bit set in %s/%s/%s\n",
116 msgS,
117 AliQA::GetDetName(det),
118 AliQA::GetTaskName(AliQA::kDIGITS).Data(),
119 obj->GetName());
120 }
121 }
122 }
123 break ;
124 case AliQA::kREC:
125 dir = saveDir->cd(AliQA::GetTaskName(AliQA::kRECPOINTS)) ;
126 if ( ! dir ) {
127 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kRECPOINTS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
128 } else {
129 TList * listofkeys = gDirectory->GetListOfKeys() ;
130 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
131 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
132 if (obj) {
133 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
134 if (rv)
135 printf("%s QA bit set in %s/%s/%s\n",
136 msgS,
137 AliQA::GetDetName(det),
138 AliQA::GetTaskName(AliQA::kRECPOINTS).Data(),
139 obj->GetName()) ;
140 }
141 }
142 }
143 break ;
144 case AliQA::kESD:
145 dir = saveDir->cd(AliQA::GetTaskName(AliQA::kESDS)) ;
146 if ( ! dir ) {
147 printf("%s Directory %s not found in %s\n", msgE, AliQA::GetTaskName(AliQA::kESDS).Data(), AliQA::GetQADataFileName(AliQA::GetDetName(det), run)) ;
148 } else {
149 TList * listofkeys = gDirectory->GetListOfKeys() ;
150 for (Int_t key = 0 ; key < listofkeys->GetEntries() ; key++) {
151 TNamed * obj = dynamic_cast<TNamed*>(listofkeys->At(key)) ;
152 if (obj) {
153 Bool_t rv = obj->TestBit(AliQA::GetQABit()) ;
154 if (rv)
155 printf("%s QA bit set in %s/%s/%s\n",
156 msgS,
157 AliQA::GetDetName(det),
158 AliQA::GetTaskName(AliQA::kESDS).Data(),
159 obj->GetName());
160 }
161 }
162 }
163 break ;
164 case AliQA::kANA:
165 break ;
166 default:
167 break ;
168 }
169 dataQAFile->Close() ;
170 }
171 }
172 }
173 inputQAFile->Close() ;
174}