2 #include <AliCDBManager.h>
3 #include <AliCDBStorage.h>
4 #include <AliFMDCalibDrawer.h>
9 #include <TGButtonGroup.h>
10 #include <TGNumberEntry.h>
11 #include <TGTextEntry.h>
26 class TGHorizontalFrame;
27 class AliFMDCalibDrawer;
43 TGHorizontalFrame fBottom;
45 TGHorizontalFrame fFDet;
48 TGHorizontalFrame fFRing;
51 TGHorizontalFrame fFSec;
54 TGHorizontalFrame fFStr;
57 TGVButtonGroup fSelection;
58 TGCheckButton fPedestal;
64 TGCheckButton fThreshold;
66 TGLayoutHints fLayout;
68 AliFMDCalibDrawer fCD;
78 : fMain(gClient->GetRoot()),
79 fSetup(&fMain, "Setup", kHorizontalFrame),
80 fLRun(&fSetup, "Run: "),
81 fRun(&fSetup, 0, 8, -1, TGNumberFormat::kNESInteger,
82 TGNumberFormat::kNEAAnyNumber),
83 fLOCDB(&fSetup, "OCDB:"),
84 fOCDB(&fSetup, "run"),
85 fInit(&fSetup, "Init"),
87 fWhere(&fBottom, "From where", kVerticalFrame),
89 fLDet(&fFDet, "Detector:"),
90 fDet(&fFDet, -1, 1, -1, TGNumberFormat::kNESInteger,
91 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
94 fLRing(&fFRing,"Ring:"),
97 fLSec(&fFSec,"Sector:"),
98 fSec(&fFSec, -1, 1, -1, TGNumberFormat::kNESInteger,
99 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
102 fLStr(&fFStr,"Strip:"),
103 fStr(&fFStr, -1, 1, -1, TGNumberFormat::kNESInteger,
104 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
106 fSelection(&fBottom, "what"),
107 fPedestal(&fSelection, "Pedestal"),
108 fNoise(&fSelection, "Noise"),
109 fGain(&fSelection, "Gain"),
110 fDead(&fSelection, "Dead"),
111 fRate(&fSelection, "Rate"),
112 fRange(&fSelection, "Range"),
113 fThreshold(&fSelection, "Threshold"),
114 fDraw(&fMain, "Draw"),
115 fLayout(kLHintsExpandX, 2, 2, 2, 2),
124 Menu& operator=(const Menu&) { return *this; }
128 : fMain(gClient->GetRoot()),
129 fSetup(&fMain, "Setup", kHorizontalFrame),
130 fLRun(&fSetup, "Run: "),
131 fRun(&fSetup, runNo, 8, -1, TGNumberFormat::kNESInteger,
132 TGNumberFormat::kNEAAnyNumber),
133 fLOCDB(&fSetup, "OCDB:"),
134 fOCDB(&fSetup, "run"),
135 fInit(&fSetup, "Init"),
137 fWhere(&fBottom, "From where", kVerticalFrame),
139 fLDet(&fFDet, "Detector:"),
140 fDet(&fFDet, -1, 1, -1, TGNumberFormat::kNESInteger,
141 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
144 fLRing(&fFRing,"Ring:"),
147 fLSec(&fFSec,"Sector:"),
148 fSec(&fFSec, -1, 1, -1, TGNumberFormat::kNESInteger,
149 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
152 fLStr(&fFStr,"Strip:"),
153 fStr(&fFStr, -1, 1, -1, TGNumberFormat::kNESInteger,
154 TGNumberFormat::kNEAAnyNumber, TGNumberFormat::kNELLimitMinMax,
156 fSelection(&fBottom, "what"),
157 fPedestal(&fSelection, "Pedestal"),
158 fNoise(&fSelection, "Noise"),
159 fGain(&fSelection, "Gain"),
160 fDead(&fSelection, "Dead"),
161 fRate(&fSelection, "Rate"),
162 fRange(&fSelection, "Range"),
163 fThreshold(&fSelection, "Threshold"),
164 fDraw(&fMain, "Draw"),
165 fLayout(kLHintsExpandX, 2, 2, 2, 2),
174 fSetup.AddFrame(&fLRun, &fLayout);
175 fSetup.AddFrame(&fRun, &fLayout);
176 fSetup.AddFrame(&fLOCDB, &fLayout);
177 fSetup.AddFrame(&fOCDB, &fLayout);
178 fSetup.AddFrame(&fInit, &fLayout);
180 fFDet.AddFrame(&fLDet, &fLayout);
181 fFDet.AddFrame(&fDet, &fLayout);
182 fFRing.AddFrame(&fLRing,&fLayout);
183 fFRing.AddFrame(&fRing, &fLayout);
184 fFSec.AddFrame(&fLSec, &fLayout);
185 fFSec.AddFrame(&fSec, &fLayout);
186 fFStr.AddFrame(&fLStr, &fLayout);
187 fFStr.AddFrame(&fStr, &fLayout);
189 fWhere.AddFrame(&fFDet, &fLayout);
190 fWhere.AddFrame(&fFRing, &fLayout);
191 fWhere.AddFrame(&fFSec, &fLayout);
192 fWhere.AddFrame(&fFStr, &fLayout);
194 fBottom.AddFrame(&fWhere, &fLayout);
195 fBottom.AddFrame(&fSelection, &fLayout);
197 fMain.AddFrame(&fSetup, &fLayout);
198 fMain.AddFrame(&fBottom, &fLayout);
199 fMain.AddFrame(&fDraw, &fLayout);
201 fRing.SetAlignment(kTextRight);
202 fRing.SetInsertMode(TGTextEntry::kReplace);
203 fRing.SetMaxLength(1);
205 fMain.MapSubwindows();
206 fMain.Resize(fMain.GetDefaultSize());
209 fDraw.Connect("Clicked()", "Menu", this, "Handle()");
210 fInit.Connect("Clicked()", "Menu", this, "Init()");
212 AliCDBManager* cdb = AliCDBManager::Instance();
213 if (cdb->GetDefaultStorage())
214 fOCDB.SetText(cdb->GetDefaultStorage()->GetURI().Data());
217 TCanvas* MakeCanvas(const char* name, const char* title)
219 TCanvas* ret = new TCanvas(name, title, 1200, 900);
220 ret->SetFillColor(0);
221 ret->SetFillStyle(0);
222 ret->SetBorderMode(0);
223 ret->SetBorderSize(0);
226 void ClearCanvas(TCanvas* c)
229 c->SetTopMargin(0.02);
230 c->SetRightMargin(0.02);
231 c->SetBottomMargin(0.10);
232 c->SetLeftMargin(0.10);
237 const Char_t* ocdb = fOCDB.GetText();
238 Int_t run = fRun.GetIntNumber();
239 Info("Init", "Initialising for run %d, OCDB @ %s", run, ocdb);
244 // static Short_t oD;
246 // static Short_t oS;
247 // static Short_t oT;
248 Short_t d = fDet.GetIntNumber();
249 Char_t r = fRing.GetText()[0];
250 Short_t s = fSec.GetIntNumber();
251 Short_t t = fStr.GetIntNumber();
252 Info("Handle", "D=%d, R=%c, S=%d, T=%d", d, (r == '\0' ? '-' : r), s, t);
253 if (fPedestal.IsOn()) {
254 Info("Handle", "Will draw pedestals");
255 if (!fCPedestal) fCPedestal = MakeCanvas("peds", "Pedestals");
256 ClearCanvas(fCPedestal);
257 fCD.DrawPedestals(d, r, s, t);
260 Info("Handle", "Will draw noises");
261 if (!fCNoise) fCNoise = MakeCanvas("noises", "Noises");
262 ClearCanvas(fCNoise);
263 fCD.DrawNoise(d, r, s, t);
266 Info("Handle", "Will draw gains");
267 if (!fCGain) fCGain = MakeCanvas("gains", "Gains");
269 fCD.DrawGains(d, r, s, t);
272 Info("Handle", "Will draw deads");
273 if (!fCDead) fCDead = MakeCanvas("deads", "Deads");
275 fCD.DrawDead(d, r, s, t);
278 Info("Handle", "Will draw rates");
279 if (!fCRate) fCRate = MakeCanvas("rates", "Rates");
282 fCD.DrawRates(d, r, s, t);
285 Info("Handle", "Will draw ranges");
286 if (!fCRange) fCRange = MakeCanvas("ranges", "Ranges");
289 fCD.DrawRanges(d, r, s, t);
291 if (fThreshold.IsOn()) {
292 Info("Handle", "Will draw thresholds");
293 if (!fCThreshold) fCThreshold = MakeCanvas("thresholds", "Thresholds");
294 fCThreshold->Clear();
296 fCD.DrawThresholds(d, r, s, t);
303 DrawCalib(Long_t runNo=145167, const char* store=0)
306 gSystem->Load("libFMDutil");
309 AliCDBManager* cdb = AliCDBManager::Instance();
310 if (!store || store[0] == '\0') cdb->SetDefaultStorageFromRun(runNo);
311 else cdb->SetDefaultStorage(store);
314 Menu* m = new Menu(runNo);
315 // cd->DrawPedestals(d,r,s,t);
318 #pragma link C++ class Menu;
322 #include <TApplication.h>
327 g++ -c `root-config --cflags --glibs` -L$ALICE_ROOT/lib/tgt_${ALICE_TARGET} \
328 -I${ALICE_ROOT}/include -I../ -lGeom -lMinuit -lPhysics -lVMC -lXMLParser \
329 -lProofPlayer -lSTEERBase -lSTEER -lCDB -lESD -lRAWDatabase -lRAWDatarec \
330 -lANALYSIS -lFMDbase -lFMDrec -lFMDutil DrawCalib.C
333 int main(int argc, char** argv) {
335 if (argc > 1) runNo = atoi(argv[1]);
337 TApplication app("app", 0, 0);