]> git.uio.no Git - u/mrichter/AliRoot.git/blob - test/QA/menuQA.C
removed geometry.root for raw rec
[u/mrichter/AliRoot.git] / test / QA / menuQA.C
1 /*
2  *  menuQA.C
3  *  
4  *
5  *  Created by schutz on 01/08/08.
6  *  Copyright 2008 CERN. All rights reserved.
7  *fQA
8  */
9 gROOT->Reset("a") ; 
10
11 TControlBar * fQA   = NULL ; 
12 TControlBar * fDet  = NULL ; 
13 TControlBar * fHist = NULL ; 
14 const Int_t fRun = atoi(gSystem->Getenv("RUNNUM")) ; 
15 AliQA * fQAResult = NULL ; 
16 TCanvas * fCa = NULL ; 
17
18 void menuQA()
19 {
20         cout << AliQA::GetQAResultFileName()  << endl ; 
21         TFile * qaResultFile = TFile::Open("QA.root") ; //AliQA::GetQAResultFileName() ) ; 
22         if ( ! qaResultFile ) {
23                 printf("File %s not found in current directory\n", AliQA::GetQAResultFileName() ) ; 
24                 return ; 
25         }
26         fQAResult = (AliQA *)qaResultFile->Get("QA") ; 
27         if ( ! fQAResult ) {
28                 printf("QA object not found in %s\n", AliQA::GetQAResultFileName() ) ; 
29                 return ; 
30         }
31
32         TFile * qaDataFile = TFile::Open(Form("Merged.QA.%d.root", fRun)) ; 
33         if ( ! qaDataFile ) {
34                 printf("File Merged.QA.%d.root not found in current directory\n", fRun) ; 
35                 return ; 
36         }
37         if (fQA)
38                 delete fQA ; 
39         fQA = new TControlBar("vertical", Form("Active detectors in Run %d", fRun), 40, 20);
40         fQA->SetButtonWidth(400) ;
41         fQA->AddButton("Clean Screen", "Cls()", "Clean the screen");    
42         // search active detectors
43         TList * listOfDetectors = qaDataFile->GetListOfKeys() ; 
44         for (Int_t det = 0 ; det < listOfDetectors->GetEntries() ; det++) {
45                 char * detName = listOfDetectors->At(det)->GetName() ; 
46                 if (fQAResult->IsSetAny(AliQA::GetDetIndex(detName)))
47                         char * buttonName = Form("QA SIGNALS ERROR !! : %s", detName) ; 
48                 else 
49                         char * buttonName = Form("QA OK : %s", detName) ; 
50           fQA->AddButton(buttonName, Form("MakeDetMenu(\"%s\")", detName), Form("Display the QA histograms for %s", detName));  
51         }
52         fQA->Show();
53 }
54
55 void MakeDetMenu(char * detName)
56 {
57         if (fDet) 
58                 delete fDet ;  
59         if (fHist) 
60                 delete fHist ; 
61         if (fCa) 
62                 delete fCa ; 
63         fDet = new TControlBar("vertical", detName, 9000, 8000);
64         fDet->SetButtonWidth(300) ; 
65         // serach all the QA tasks
66         TDirectory * save = gDirectory ; 
67         gDirectory->cd(detName) ; 
68         TList * listOfTasks = gDirectory->GetListOfKeys() ; 
69         for (Int_t task = 0 ; task < listOfTasks->GetEntries() ; task++) {
70                 TString taskName = listOfTasks->At(task)->GetName() ; 
71                 AliQA::ALITASK_t tt = AliQA::kNULLTASK ; 
72                 if (taskName.Contains(AliQA::GetTaskName(AliQA::kRAWS)) )
73                         tt = AliQA::kRAW ; 
74                 else if (taskName.Contains(AliQA::GetTaskName(AliQA::kRECPOINTS)) ||
75                                 taskName.Contains(AliQA::GetTaskName(AliQA::kESDS)) )
76                         tt = AliQA::kREC ; 
77                 else if (taskName.Contains(AliQA::GetTaskName(AliQA::kHITS)) ||
78                                                  taskName.Contains(AliQA::GetTaskName(AliQA::kSDIGITS)) ||
79                                                  taskName.Contains(AliQA::GetTaskName(AliQA::kDIGITS)) )
80                         tt = AliQA::kSIM ;
81                 if (fQAResult->IsSetAny(AliQA::GetDetIndex(detName), tt))
82                         char * buttonName = Form("QA SIGNALS ERROR!! : %s", taskName.Data()) ; 
83                 else 
84                         char * buttonName = Form("QA OK : %s", taskName.Data()) ; 
85                         fDet->AddButton(buttonName, Form("MakeTaskMenu(\"%s\", \"%s\")", detName, taskName.Data()), Form("Display the QA histograms for %s", taskName.Data())); 
86         }
87         fDet->Show() ; 
88         gDirectory = save ; 
89 }
90
91 void MakeTaskMenu(char * detName, char * taskName )
92 {
93         if (fHist) 
94                 delete fHist ; 
95         if (fCa)
96                 delete fCa ; 
97         TDirectory * save = gDirectory ; 
98         gDirectory->cd(Form("%s/%s", detName, taskName)) ; 
99         TList * listOfHistos = gDirectory->GetListOfKeys() ; 
100         if ( listOfHistos->GetEntries()  == 0 ) { 
101                 printf(" no histograms found for %s/%s\n", detName, taskName) ; 
102         } else {                        
103                 fHist = new TControlBar("vertical", Form("QA histos for %s/%s", detName, taskName), 900, 300);
104                 fHist->SetButtonWidth(300) ; 
105                 fHist->AddButton("ALL", Form("DisplayAll(\"%s\", \"%s\")", detName, taskName), Form("Display the QA histograms for %s", detName));
106                 for (Int_t h = 0 ; h < listOfHistos->GetEntries() ; h++) {
107                         char * hName = listOfHistos->At(h)->GetName() ; 
108                         fHist->AddButton(hName, Form("Display(\"%s\")", hName), Form("Display the QA histograms %s", hName));
109                 }
110                 fHist->Show() ;
111         } 
112         gDirectory = save ; 
113 }
114
115
116 void Display(char * hName)
117 {
118         if (fCa)
119                 delete fCa ; 
120         cout << Display << " " << hName << endl ; 
121         fCa = new TCanvas(hName, "test", 800, 600) ;
122         fCa->SetLogy() ; 
123         TH1 * hh = dynamic_cast<TH1*>(gDirectory->FindObjectAny(hName));
124         if (hh) {
125                 hh->Draw() ; 
126                 fCa->Modified() ; 
127                 fCa->Update() ;         
128         }
129 }
130
131 void DisplayAll(char * detName, char * taskName)
132 {
133         cout << Display << " " << detName << endl ; 
134         TDirectory * save = gDirectory ; 
135         gDirectory->cd(Form("%s/%s", detName, taskName)) ; 
136         TList * listOfHistos = gDirectory->GetListOfKeys() ; 
137         Int_t nHisto = listOfHistos->GetEntries() ; 
138         if ( nHisto == 0 ) {
139                 printf(" no histograms found for %s/%s\n", detName, taskName) ; 
140         } else {                
141                 Int_t ny = TMath::Sqrt(nHisto) ; 
142                 Int_t nx = 1 ; 
143                 if ( ny > 0 ) 
144                         nx = nHisto / ny + 1 ;
145                 if (fCa) 
146                         delete fCa ; 
147                 fCa = new TCanvas(Form("QA %s in %s", taskName, detName), Form("QA %s in %s", taskName, detName), nx*300, ny*300) ;
148                 fCa->Divide(nx, ny) ;
149                 for (Int_t h = 0 ; h < listOfHistos->GetEntries() ; h++) {
150                         char * hName = listOfHistos->At(h)->GetName() ; 
151                         TH1 * hh = dynamic_cast<TH1*>(gDirectory->FindObjectAny(hName));
152                         TPad * pad = fCa->cd(h+1) ;
153                         if (hh) {
154                                 if ( hh->GetEntries()) 
155                                         pad->SetLogy() ; 
156                                 hh->Draw() ; 
157                                 fCa->Modified() ; 
158                                 fCa->Update() ;                 
159                         }
160                 }
161                 fCa->Modified() ; 
162                 fCa->Update() ;
163         }
164         gDirectory = save ; 
165 }
166
167 void Cls()
168 {
169         if (fDet) 
170                 delete fDet ;  
171         if (fHist) 
172                 delete fHist ; 
173         if (fCa) 
174                 delete fCa ; 
175 }