]>
Commit | Line | Data |
---|---|---|
384c0618 | 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 ; | |
f889de31 | 14 | const Int_t fRun = atoi(gSystem->Getenv("RUNNUM")) ; |
384c0618 | 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 ; | |
72b79cf7 | 39 | fQA = new TControlBar("vertical", Form("Active detectors in Run %d", fRun), 40, 20); |
40 | fQA->SetButtonWidth(400) ; | |
384c0618 | 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))) | |
a0e083a2 | 47 | char * buttonName = Form("QA SIGNALS ERROR !! : %s", detName) ; |
384c0618 | 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 ; | |
72b79cf7 | 63 | fDet = new TControlBar("vertical", detName, 9000, 8000); |
64 | fDet->SetButtonWidth(300) ; | |
384c0618 | 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++) { | |
f889de31 | 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)) || | |
1f76df3f | 75 | taskName.Contains(AliQA::GetTaskName(AliQA::kESDS)) ) |
f889de31 | 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)) | |
a0e083a2 | 82 | char * buttonName = Form("QA SIGNALS ERROR!! : %s", taskName.Data()) ; |
384c0618 | 83 | else |
f889de31 | 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())); | |
384c0618 | 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 ; | |
384c0618 | 97 | TDirectory * save = gDirectory ; |
98 | gDirectory->cd(Form("%s/%s", detName, taskName)) ; | |
99 | TList * listOfHistos = gDirectory->GetListOfKeys() ; | |
a0e083a2 | 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 | } | |
384c0618 | 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() ; | |
a0e083a2 | 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 | } | |
384c0618 | 160 | } |
a0e083a2 | 161 | fCa->Modified() ; |
162 | fCa->Update() ; | |
384c0618 | 163 | } |
384c0618 | 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 | } |