3 #include "AliOADBForward.h"
5 #include <TGNumberEntry.h>
6 #include <TGTextEntry.h>
7 #include <TGComboBox.h>
9 #include <TGFileDialog.h>
10 #include <TGButtonGroup.h>
19 #include <TGListView.h>
21 #include <TParameter.h>
22 #include <TPaveText.h>
27 ForwardOADBGUIErrorHandler(Int_t lvl, Bool_t doAbort,
31 if (!doAbort && lvl >= kWarning) {
32 EMsgBoxIcon msgIcon = kMBIconAsterisk;
33 // if (lvl >= kInfo) msgIcon = kMBIconAsterisk;
34 if (lvl >= kWarning) msgIcon = kMBIconExclamation;
35 if (lvl >= kError) msgIcon = kMBIconStop;
37 new TGMsgBox(gClient->GetRoot(), gClient->GetRoot(),
38 location, msg, msgIcon);
40 DefaultErrorHandler(lvl, doAbort, location, msg);
45 class AliOADBForward::Entry;
47 class TGTransientFrame;
50 class TGHorizontalFrame;
54 class TGVerticalFrame;
66 struct ForwardOADBDialog
68 ForwardOADBDialog(TGMainFrame* p)
69 : fFrame(gClient->GetRoot(), p, 200, 40, kVerticalFrame),
70 fHints(kLHintsExpandX,30,30,30,30),
72 // fProgress(&fFrame, 100),
76 fFrame.AddFrame(&fLabel, &fHints );
77 // fFrame.AddFrame(&fProgress, &fHints);
78 fFrame.SetWindowName("Please wait ...");
79 // fProgress.SetRange(0,1);
80 fIncrement.Connect("Timeout()","ForwardOADBDialog",this,"HandleIncr()");
82 ForwardOADBDialog(const ForwardOADBDialog&) {}
83 ForwardOADBDialog& operator=(const ForwardOADBDialog&) { return *this; }
87 // Float_t p = fProgress.GetPosition();
88 // Info("HandleIncr", "Handing increment (%f)", p);
89 // if (p+dp >= 1) fProgress.SetPosition(0);
90 // fProgress.Increment(dp);
91 // fFrame.GetClient()->NeedRedraw(&fFrame);
93 void Show(const char* msg)
96 // fProgress.SetPosition(0);
97 fFrame.MapSubwindows();
98 Int_t width = fFrame.GetDefaultWidth();
99 Int_t height = fFrame.GetDefaultHeight();
100 fFrame.Resize(width, height);
101 fFrame.SetWMSize(width, height);
102 fFrame.SetWMSizeHints(width, height, width, height, 0, 0);
105 // fIncrement.Start(0,false);
106 fFrame.GetClient()->WaitForUnmap(&fFrame);
110 if (!fIsShown) return;
111 // fIncrement.Stop();
112 fFrame.UnmapWindow();
114 TGTransientFrame fFrame;
115 TGLayoutHints fHints;
117 //TGHProgressBar fProgress;
122 struct ForwardOADBGUI
128 : fMain(gClient->GetRoot(), 10, 10, kVerticalFrame),
130 fFileText(&fOpenFrame, "fmd_corrections.root"),
131 fFileSelect(&fOpenFrame, "Browse"),
132 fTablesText(&fOpenFrame, "*"),
133 fOpenButton(&fOpenFrame, "Open"),
134 fRWButton(&fOpenFrame, "R/W"),
135 fCloseButton(&fOpenFrame, "Close"),
136 fSelectFrame(&fMain),
137 fTableFrame(&fSelectFrame),
138 fTableLabel(&fTableFrame, "Table: "),
139 fTableSelect(&fTableFrame),
140 fRunFrame(&fSelectFrame),
141 fRunLabel(&fRunFrame, "Run: "),
142 fRunInput(&fRunFrame, 0, 0, -1,
143 TGNumberFormat::kNESReal,
144 TGNumberFormat::kNEANonNegative,
145 TGNumberFormat::kNELLimitMin, 0),
146 fRunMode(&fRunFrame),
147 fSysFrame(&fSelectFrame),
148 fSysLabel(&fSysFrame, "System: "),
149 fSysSelect(&fSysFrame),
150 fSNNFrame(&fSelectFrame),
151 fSNNLabel(&fSNNFrame, "sqrt(sNN) [GeV]: "),
152 fSNNInput(&fSNNFrame, 0, 0, -1, TGNumberFormat::kNESReal,
153 TGNumberFormat::kNEANonNegative,
154 TGNumberFormat::kNELLimitMin, 0),
155 fFldFrame(&fSelectFrame),
156 fFldLabel(&fFldFrame, "L3 field [kG]: "),
157 fFldSelect(&fFldFrame),
158 fOtherFrame(&fSelectFrame),
159 fMCButton(&fOtherFrame, "MC"),
160 fSatButton(&fOtherFrame, "Satellite"),
161 fOptionsFrame(&fSelectFrame),
162 fOptionsLabel(&fOptionsFrame, "Draw/Print options:"),
163 fOptionsText(&fOptionsFrame, ""),
164 fCommandFrame(&fSelectFrame),
165 fQueryButton(&fCommandFrame, "Query"),
166 fListButton(&fCommandFrame, "List table"),
167 fPrintButton(&fCommandFrame, "Print entry"),
168 fCopyButton(&fCommandFrame, "Copy entry"),
169 fDrawButton(&fCommandFrame, "Draw entry"),
170 fPDFButton(&fCommandFrame, "Summarize entry"),
171 fList(&fMain, 800, 400),
172 fListContainer(&fList),
173 fFrameHints(kLHintsExpandX, 0, 0, 2, 0),
174 fLabelHints(kLHintsNoHints, 4, 2, 0, 0),
175 fEntryHints(kLHintsExpandX|kLHintsExpandY, 2, 4, 0, 0),
176 fButtonHints(kLHintsExpandX, 2, 2, 0, 0),
177 fListHints(kLHintsExpandX|kLHintsExpandY, 2, 2, 4, 2),
182 fMain.Connect("CloseWindow()", "ForwardOADBGUI", this, "HandleKill()");
183 fMain.DontCallClose();
185 fFileSelect.Connect("Clicked()", "ForwardOADBGUI", this, "HandleBrowse()");
186 fOpenButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleOpen()");
187 fCloseButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleClose()");
188 fMain.AddFrame(&fOpenFrame, &fFrameHints);
189 fOpenFrame.AddFrame(&fFileText, &fEntryHints);
190 fOpenFrame.AddFrame(&fFileSelect, &fEntryHints);
191 fOpenFrame.AddFrame(&fTablesText, &fEntryHints);
192 fOpenFrame.AddFrame(&fOpenButton, &fEntryHints);
193 fOpenFrame.AddFrame(&fRWButton, &fButtonHints);
194 fOpenFrame.AddFrame(&fCloseButton, &fEntryHints);
196 fMain.AddFrame(&fSelectFrame, &fFrameHints);
198 fTableLabel.SetWidth(kLabelWidth); fTableLabel.SetMinWidth(kLabelWidth);
199 fTableSelect.SetHeight(22);
200 fTableSelect.Connect("Selected(Int_t)","ForwardOADBGUI",this,
201 "HandleTable(Int_t)");
202 fSelectFrame.AddFrame(&fTableFrame, &fFrameHints);
203 fTableFrame.AddFrame(&fTableLabel, &fLabelHints);
204 fTableFrame.AddFrame(&fTableSelect, &fEntryHints);
206 fRunLabel.SetWidth(kLabelWidth); fRunLabel.SetMinWidth(kLabelWidth);
207 fRunMode.AddEntry("default", 0);
208 fRunMode.AddEntry("Exact", 1);
209 fRunMode.AddEntry("Newest", 2);
210 fRunMode.AddEntry("Near", 3);
211 fRunMode.AddEntry("Older", 4);
212 fRunMode.AddEntry("Newer", 5);
213 fRunMode.SetHeight(22);
214 fSelectFrame.AddFrame(&fRunFrame, &fFrameHints);
215 fRunFrame.AddFrame(&fRunLabel, &fLabelHints);
216 fRunFrame.AddFrame(&fRunInput, &fEntryHints);
217 fRunFrame.AddFrame(&fRunMode, &fEntryHints);
219 fSysLabel.SetWidth(kLabelWidth); fSysLabel.SetMinWidth(kLabelWidth);
220 fSysSelect.AddEntry("- select -", 0);
221 fSysSelect.AddEntry("p-p", 1);
222 fSysSelect.AddEntry("Pb-Pb ",2);
223 fSysSelect.AddEntry("p-Pb", 3);
224 fSysSelect.SetHeight(22);
225 fSelectFrame.AddFrame(&fSysFrame, &fFrameHints);
226 fSysFrame.AddFrame(&fSysLabel, &fLabelHints);
227 fSysFrame.AddFrame(&fSysSelect, &fEntryHints);
229 fSNNLabel.SetWidth(kLabelWidth); fSNNLabel.SetMinWidth(kLabelWidth);
230 fSNNInput.SetHeight(22);
231 fSelectFrame.AddFrame(&fSNNFrame, &fFrameHints);
232 fSNNFrame.AddFrame(&fSNNLabel, &fLabelHints);
233 fSNNFrame.AddFrame(&fSNNInput, &fEntryHints);
235 fFldLabel.SetWidth(kLabelWidth); fFldLabel.SetMinWidth(kLabelWidth);
236 fFldSelect.AddEntry("- select -", 999);
237 fFldSelect.AddEntry("-5", -5);
238 fFldSelect.AddEntry("0 ", 0);
239 fFldSelect.AddEntry("+5", +5);
240 fFldSelect.SetHeight(22);
241 fSelectFrame.AddFrame(&fFldFrame, &fFrameHints);
242 fFldFrame.AddFrame(&fFldLabel, &fLabelHints);
243 fFldFrame.AddFrame(&fFldSelect, &fEntryHints);
245 fSelectFrame.AddFrame(&fOtherFrame, &fFrameHints);
246 fOtherFrame.SetLayoutHints(&fButtonHints);
247 fMCButton.AllowStayDown(true);
248 fSatButton.AllowStayDown(true);
249 // fOtherFrame.AddFrame(&fMCButton, &fEntryHints);
250 // fOtherFrame.AddFrame(&fSatButton, &fEntryHints);
251 // new TGCheckButton(&fOtherFrame, "MC:");
252 // new TGCheckButton(&fOtherFrame, "Satellite:");
254 fOptionsLabel.SetWidth(2*kLabelWidth);
255 fSelectFrame.AddFrame(&fOptionsFrame, &fFrameHints);
256 fOptionsFrame.AddFrame(&fOptionsLabel, &fLabelHints);
257 fOptionsFrame.AddFrame(&fOptionsText, &fEntryHints);
259 Info("", "Connecting signals");
260 fQueryButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleQuery()");
261 fListButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleList()");
262 fDrawButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleDraw()");
263 fCopyButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandleCopy()");
264 fPDFButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandlePDF()");
265 fPrintButton.Connect("Clicked()", "ForwardOADBGUI", this, "HandlePrint()");
266 fSelectFrame.AddFrame(&fCommandFrame, &fFrameHints);
267 fCommandFrame.SetLayoutHints(&fButtonHints);
269 // fList = new TGListView(&fMain, 800, 400);
270 // fListContainer = new TGLVContainer(fList);
271 fListContainer.SetColHeaders("Entry",
282 fList.SetViewMode(kLVDetails);
283 fList.Connect("Clicked(TGLVEntry*,Int_t)",
284 "ForwardOADBGUI", this, "HandleItem(TGLVEntry*,Int_t)");
285 fList.Connect("DoubleClicked(TGLVEntry*,Int_t)",
286 "ForwardOADBGUI", this, "HandleItem(TGLVEntry*,Int_t)");
287 fListContainer.Connect("Clicked(TGFrame*,Int_t)",
288 "ForwardOADBGUI", this,
289 "HandleItem(TGFrame*,Int_t)");
290 fList.SetMinWidth(400);
291 fList.SetMinHeight(200);
292 fMain.AddFrame(&fList, &fListHints);
295 ::SetErrorHandler(ForwardOADBGUIErrorHandler);
299 fMain.SetMinWidth(600);
300 fMain.SetMinHeight(480);
301 fMain.MapSubwindows();
302 fMain.Resize(600, 480); // fMain.GetDefaultSize());
309 ::SetErrorHandler(::DefaultErrorHandler);
311 Info("~ForwardOADBGUI", "Closing");
313 ForwardOADBGUI(const ForwardOADBGUI&)
314 : fMain(gClient->GetRoot(), 10, 10, kVerticalFrame),
316 fFileText(&fOpenFrame, ""),
317 fFileSelect(&fOpenFrame, ""),
318 fTablesText(&fOpenFrame, ""),
319 fOpenButton(&fOpenFrame, ""),
320 fRWButton(&fOpenFrame, ""),
321 fCloseButton(&fOpenFrame, ""),
322 fSelectFrame(&fMain),
323 fTableFrame(&fSelectFrame),
324 fTableLabel(&fTableFrame, ""),
325 fTableSelect(&fTableFrame),
326 fRunFrame(&fSelectFrame),
327 fRunLabel(&fRunFrame, ""),
328 fRunInput(&fRunFrame),
329 fRunMode(&fRunFrame),
330 fSysFrame(&fSelectFrame),
331 fSysLabel(&fSysFrame, ""),
332 fSysSelect(&fSysFrame),
333 fSNNFrame(&fSelectFrame),
334 fSNNLabel(&fSNNFrame, ""),
335 fSNNInput(&fSNNFrame),
336 fFldFrame(&fSelectFrame),
337 fFldLabel(&fFldFrame, ""),
338 fFldSelect(&fFldFrame),
339 fOtherFrame(&fSelectFrame),
340 fMCButton(&fOtherFrame, ""),
341 fSatButton(&fOtherFrame, ""),
342 fOptionsFrame(&fSelectFrame),
343 fOptionsLabel(&fOptionsFrame, ""),
344 fOptionsText(&fOptionsFrame, ""),
345 fCommandFrame(&fSelectFrame),
346 fQueryButton(&fCommandFrame, ""),
347 fListButton(&fCommandFrame, ""),
348 fPrintButton(&fCommandFrame, ""),
349 fCopyButton(&fCommandFrame, ""),
350 fDrawButton(&fCommandFrame, ""),
351 fPDFButton(&fCommandFrame, ""),
352 fList(&fMain, 800, 400),
353 fListContainer(&fList),
363 ForwardOADBGUI& operator=(const ForwardOADBGUI&) { return *this; }
365 void UseDB(AliOADBForward* db)
369 if (fDB) HandleClose();
374 const TMap& tables = fDB->GetTables();
378 while ((key = next())) {
379 AliOADBForward::Table* t = fDB->FindTable(key->GetName());
381 lt.Append(Form("%s/%s", t->GetName(), t->fTree->GetTitle()));
383 fTablesText.SetText(lt);
388 // fMain.DontCallClose();
389 fMain.DeleteWindow();
390 Printf("Starting timer");
391 // TTimer* t = new TTimer(Form("delete (ForwardOADBGUI*)%p", this), 100);
392 // t->Start(100, true);
394 void HandleDBEntry(AliOADBForward::Entry* e)
396 Info("HandleDBEntry", "Selected entry %p", e);
397 Bool_t en = (e != 0);
398 fDrawButton.SetEnabled(en);
399 fCopyButton.SetEnabled(en);
400 fPrintButton.SetEnabled(en);
401 fPDFButton.SetEnabled(en);
407 Bool_t enabled = fDB ? true : false;
408 Bool_t hasTable = fTableSelect.GetSelected() != 0;
410 fTableSelect.SetEnabled(enabled);
411 fRunMode.SetEnabled(enabled);
412 fSysSelect.SetEnabled(enabled);
413 fFldSelect.SetEnabled(enabled);
414 fMCButton.SetEnabled(enabled);
415 fSatButton.SetEnabled(enabled);
416 fQueryButton.SetEnabled(enabled && hasTable);
417 fListButton.SetEnabled(enabled && hasTable);
418 fPrintButton.SetEnabled(enabled && hasTable);
419 fDrawButton.SetEnabled(enabled && hasTable);
420 fCopyButton.SetEnabled(enabled && hasTable);
421 fPDFButton.SetEnabled(enabled && hasTable);
422 fOpenButton.SetEnabled(!enabled);
423 fCloseButton.SetEnabled(enabled);
428 fTableSelect.RemoveAll();
429 fTableSelect.AddEntry("- select -", 0);
432 const TMap& tables = fDB->GetTables();
436 while ((key = next())) {
437 fTableSelect.AddEntry(key->GetName(), ++i);
439 if (tables.GetEntries() == 1) tsel = 1;
441 fTableSelect.Select(tsel, true);
442 fSysSelect.Select(0, true);
443 fFldSelect.Select(999, true);
444 fRunMode.Select(0, true);
458 if (fDB) HandleClose();
459 Bool_t rw = fRWButton.IsOn();
460 fDB = new AliOADBForward;
461 Info("HandleOpen", "Opening DB file %s for tables %s",
462 fFileText.GetText(), fTablesText.GetText());
463 TString fn(fFileText.GetText());
464 TString tn(fTablesText.GetText());
465 if (!fDB->Open(fn, tn, rw, true, true)) {
466 Error("HandleOpen", "Failed to open database");
477 TString iniDir(gSystem->ExpandPathName("$(OADB_PATH)"));
479 iniDir = gSystem->ExpandPathName("$(ALICE_ROOT)/OADB");
480 iniDir.Append("/PWGLF/FORWARD/CORRECTIONS/data");
481 char* ini = new char[iniDir.Length()+1];
482 for (int i = 0; i < iniDir.Length(); i++) ini[i] = iniDir[i];
483 ini[iniDir.Length()] = '\0';
484 Printf("Initial directory: %s (%s)", iniDir.Data(), ini);
486 new TGFileDialog(gClient->GetRoot(), &fMain, kFDOpen, &fi);
488 TString nf = fi.fFilename; //
489 // nf = gSystem->ConcatFileName(fi.fIniDir, fi.fFilename);
490 Info("HandleBrowse", "New file: %s", nf.Data());
491 fFileText.SetText(nf);
493 void HandleEntry(Int_t i, AliOADBForward::Entry* e)
495 TGLVEntry* lve = new TGLVEntry(&fListContainer, Form("%d", i), "");
496 if (i < 0) lve->SetUserData(e);
498 TDatime dt(e->fTimestamp);
499 lve->SetSubnames(Form("%lu", e->fRunNo),
500 (e->fSys == 1 ? "p-p" :
501 e->fSys == 2 ? "Pb-Pb" :
502 e->fSys == 3 ? "p-Pb" : "?"),
503 Form("%4huGeV",e->fSNN),
504 Form("%+2hdkG", e->fField),
505 (e->fMC ? "MC" : "Real"),
506 (e->fSatellite ? "Satellite" : "Nominal"),
508 e->fAuthor, Form("%lu", e->fAliROOTRevision),
509 (e->fData ? e->fData->GetName() : "null"));
510 fListContainer.AddItem(lve);
516 SelectedTable(table);
518 if (table.IsNull()) {
519 // Error("HandleList", "No table selected");
523 AliOADBForward::Table* t= fDB->FindTable(table);
525 Error("HandleList", "No table named %s in DB", table.Data());
529 t->Print(fOptionsText.GetText());
530 // if (!fListContainer) return;
532 fListContainer.RemoveAll();
533 TTree* tree = t->fTree;
534 Int_t n = tree->GetEntries();
535 for (Int_t i = 0; i < n; i++) {
537 AliOADBForward::Entry* e = t->fEntry;
540 fList.AdjustHeaders();
543 void SelectedTable(TString& ret) const
546 TGLBEntry* e = fTableSelect.GetSelectedEntry();
548 Error("SelectedTable", "No table selected");
553 void HandleTable(Int_t id)
555 Info("HandleTable", "Id=%d", id);
556 fListButton.SetEnabled(id != 0);
557 fQueryButton.SetEnabled(id != 0);
558 fListContainer.RemoveAll();
559 fList.AdjustHeaders();
561 // fPrintButton.SetEnabled(enabled);
562 // fDrawButton.SetEnabled(enabled);
563 // fPDFButton.SetEnabled(enabled);
565 void HandleItem(TGFrame* lve, Int_t btn)
567 Info("HandleItem", "frame=%p", lve);
568 HandleItem(static_cast<TGLVEntry*>(lve), btn);
570 void HandleItem(TGLVEntry* lve, Int_t)
572 Info("HandleItem", "entry=%p", lve);
574 Warning("HandleItem", "No item");
577 void* data = lve->GetUserData();
578 AliOADBForward::Entry* e = 0;
580 e = reinterpret_cast<AliOADBForward::Entry*>(data);
585 if (tab.IsNull()) return;
587 AliOADBForward::Table* t = fDB->FindTable(tab);
588 // Info("HandleItem", "Fetching item %d from table", lve->GetUniqueID());
589 t->fTree->GetEntry(lve->GetUniqueID());
593 Warning("HandleItem", "No entry");
596 // if (!gPad) TCanvas::MakeDefCanvas();
603 // TObject* o = HandleQuery();
606 Warning("HandlePrint", "No entry selected");
609 fEntry->fData->Print(fOptionsText.GetText());
614 Warning("HandleDraw", "No entry selected");
618 TObject* o = fEntry->fData;
619 Info("HandleDraw", "Will draw object of type %s", o->ClassName());
621 if (o->IsA()->InheritsFrom(TParameter<Double_t>::Class())) {
622 TParameter<Double_t>* pd = static_cast<TParameter<Double_t>*>(o);
623 msg = Form("%f", pd->GetVal());
625 if (o->IsA()->InheritsFrom(TParameter<Float_t>::Class())) {
626 TParameter<Float_t>* pf = static_cast<TParameter<Float_t>*>(o);
627 msg = Form("%f", pf->GetVal());
630 if (!gPad) TCanvas::MakeDefCanvas();
632 TPaveText* t = new TPaveText(.1, .1, .9, .9);
638 // o->Draw(fOptionsText.GetText());
643 SelectedTable(table);
644 if (table.IsNull()) return;
647 Warning("HandleCopy", "No entry selected");
651 TObject* o = fEntry->fData;
652 Info("HandleCopy", "Will copy object of type %s", o->ClassName());
655 ULong_t newRun = fRunInput.GetHexNumber();
656 UShort_t newSys = fSysSelect.GetSelected();
657 UShort_t newSNN = fSNNInput.GetIntNumber();
658 Short_t newFld = fFldSelect.GetSelected();
659 Bool_t mc = fMCButton.IsDown();
660 Bool_t sat = fSatButton.IsDown();
661 ULong_t oldRun = fEntry->fRunNo;
662 UShort_t oldSys = fEntry->fSys;
663 UShort_t oldSNN = fEntry->fSNN;
664 Short_t oldFld = fEntry->fField;
667 msg = Form("Will copy %lu/%hu/%hu/%hd -> %lu/%hu/%hu/%hd (%s,%s) in %s",
668 oldRun, oldSys, oldSNN, oldFld,
669 newRun, newSys, newSNN, newFld,
670 (mc ? "mc" : "real"), (sat ? "satellite" : "nominal"),
674 new TGMsgBox(gClient->GetRoot(), gClient->GetRoot(),
675 "Confirm copy of OADB entry",
676 msg.Data(), 0, kMBOk|kMBCancel, &ret);
678 if (ret == kMBCancel) {
679 Info("HandleCopy", "%s CANCELLED", msg.Data());
682 Info("HandleCopy", "%s CONFIRMED", msg.Data());
684 if (!fDB->CopyEntry(table,
685 oldRun, oldSys, oldSNN, oldFld,
686 newRun, newSys, newSNN, newFld,
688 // Warning("HandleCopy", "Copy failed!");
694 // o->Draw(fOptionsText.GetText());
699 Warning("HandlePrint", "No entry selected");
704 TObject* o = fEntry->fData;
705 gROOT->SetBatch(true);
707 gROOT->SetBatch(false);
708 // fEntry->fData->SaveAs(out, fOptionsText.GetText());
713 const char* opt = "++g";
714 const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
715 gSystem->AddIncludePath(Form("-I$ALICE_ROOT/include -I%s -I%s/scripts",
717 Info("CorrDraw", "Loading SummaryDrawer.C%s", opt);
718 gROOT->LoadMacro(Form("%s/scripts/SummaryDrawer.C%s", fwd, opt));
719 // gROOT->ProcessLine(".Class SummaryDrawer");
720 Info("CorrDraw", "Loading CorrDrawer.C%s", opt);
721 gROOT->LoadMacro(Form("%s/corrs/CorrDrawer.C%s", fwd, opt));
722 // gROOT->ProcessLine(".Class SummaryDrawer");
723 // gROOT->ProcessLine(".Class CorrDrawer");
726 void CorrDraw(const TObject* o, Bool_t summarize)
728 if (!gROOT->GetClass("CorrDrawer")) {
729 TTimer* t = new TTimer(Form("((ForwardOADBGUI*)%p)->LoadCorrDraw()",this),
732 MakeMsg("Compiling drawer");
736 TTimer* t = new TTimer(Form("((ForwardOADBGUI*)%p)"
737 "->DoCorrDraw((TObject*)%p,1)",this, o),
740 MakeMsg("Drawing to PDF");
743 DoCorrDraw(o, false);
745 void DoCorrDraw(const TObject* o, Bool_t summarize)
747 TString cmd(Form("CorrDrawer cd; cd.Summarize((const %s*)%p,%d);",
748 o->ClassName(), o, summarize));
749 gROOT->ProcessLine(cmd);
752 void MakeFileName(TString& out) const
757 if (out.IsNull()) return;
759 out.Append(Form("_run%09lu", fEntry->fRunNo));
760 out.Append(Form("_%s", (fEntry->fSys == 1 ? "pp" :
761 fEntry->fSys == 2 ? "PbPb" :
762 fEntry->fSys == 3 ? "pPb" : "XX")));
763 out.Append(Form("_%04huGeV", fEntry->fSNN));
764 out.Append(Form("_%c%hukG", fEntry->fField >= 0 ? 'p' : 'm',
765 TMath::Abs(fEntry->fField)));
766 out.Append(Form("_%s", fEntry->fMC ? "mc" : "real"));
767 out.Append(Form("_%s", fEntry->fSatellite ? "sat" : "nom"));
770 TObject* HandleQuery()
772 ULong_t run = fRunInput.GetHexNumber();
773 Short_t mode = fRunMode.GetSelected();
774 Short_t sys = fSysSelect.GetSelected();
775 UShort_t sNN = fSNNInput.GetIntNumber();
776 Short_t fld = fFldSelect.GetSelected();
777 Bool_t mc = fMCButton.IsDown();
778 Bool_t sat = fSatButton.IsDown();
782 Info("HandleQuery", "tab=%s runNo=%lu mode=%d sys=%d "
783 "sNN=%d fld=%d mc=%d sat=%d",
784 tab.Data(), run, mode, sys, sNN, fld, mc, sat);
787 // Error("HandleQuery", "No table selected");
790 AliOADBForward::ERunSelectMode qmode = AliOADBForward::kDefault;
792 case 0: qmode = AliOADBForward::kDefault; break;
793 case 1: qmode = AliOADBForward::kExact; break;
794 case 2: qmode = AliOADBForward::kNewest; break;
795 case 3: qmode = AliOADBForward::kNear; break;
796 case 4: qmode = AliOADBForward::kOlder; break;
797 case 5: qmode = AliOADBForward::kNewer; break;
800 Info("HandleQuery", "tab=%s runNo=%lu mode=%d sys=%d "
801 "sNN=%d fld=%d mc=%d sat=%d",
802 tab.Data(), run, qmode, sys, sNN, fld, mc, sat);
804 AliOADBForward::Entry* e = fDB->Get(tab, run, qmode, sys, sNN,
807 // if (drawNotPrint) e->Inspect();
808 // else e->Print(fOptionsText.GetText());
810 // if (fListContainer) {
811 fListContainer.RemoveAll();
814 if (!e->fData) return 0;
817 fList.AdjustHeaders();
822 TGMainFrame* GetMain() { return &fMain; }
823 void MakeMsg(const char* what)
829 Info("CloseMsg", "Closing message window");
833 TGHorizontalFrame fOpenFrame;
834 TGTextEntry fFileText;
835 TGTextButton fFileSelect;
836 TGTextEntry fTablesText;
837 TGTextButton fOpenButton;
838 TGCheckButton fRWButton;
839 TGTextButton fCloseButton;
840 TGVerticalFrame fSelectFrame;
841 TGHorizontalFrame fTableFrame;
843 TGComboBox fTableSelect;
844 TGHorizontalFrame fRunFrame;
846 TGNumberEntry fRunInput;
848 TGHorizontalFrame fSysFrame;
850 TGComboBox fSysSelect;
851 TGHorizontalFrame fSNNFrame;
853 TGNumberEntry fSNNInput;
854 TGHorizontalFrame fFldFrame;
856 TGComboBox fFldSelect;
857 TGHButtonGroup fOtherFrame;
858 TGTextButton fMCButton;
859 TGTextButton fSatButton;
860 TGHorizontalFrame fOptionsFrame;
861 TGLabel fOptionsLabel;
862 TGTextEntry fOptionsText;
863 TGHButtonGroup fCommandFrame;
864 TGTextButton fQueryButton;
865 TGTextButton fListButton;
866 TGTextButton fPrintButton;
867 TGTextButton fCopyButton;
868 TGTextButton fDrawButton;
869 TGTextButton fPDFButton;
871 TGLVContainer fListContainer;
872 TGLayoutHints fFrameHints;
873 TGLayoutHints fLabelHints;
874 TGLayoutHints fEntryHints;
875 TGLayoutHints fButtonHints;
876 TGLayoutHints fListHints;
877 ForwardOADBDialog fMsg;
879 AliOADBForward::Entry* fEntry;
880 // TCanvas* fDataCanvas;
881 // TCanvas* fEntryCanvas;
885 TGMainFrame* ForwardOADBGui(AliOADBForward* db=0)
887 const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
888 if (!gROOT->GetClass("AliOADBForward"))
889 // gSystem->Load("libGui");
890 gROOT->Macro(Form("%s/scripts/LoadLibs.C", fwd));
892 // gSystem->AddIncludePath(Form("-I%s", fwd));
893 // gROOT->LoadMacro(Form("%s/corrs/ForwardOADBGUI.C", fwd));
897 ForwardOADBGUI* gui = new ForwardOADBGUI();
898 if (db) gui->UseDB(db);
899 return gui->GetMain();