]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliCalibViewerGUItime.h
New class AliTriggerUtils to solve the cirular dependency between libESD and libSTEER...
[u/mrichter/AliRoot.git] / STEER / AliCalibViewerGUItime.h
CommitLineData
11a2ac51 1#ifndef ALICALIBVIEWERGUITIME_H
2#define ALICALIBVIEWERGUITIME_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/* $Id: AliCalibViewerGUItime.h,v */
8
9///////////////////////////////////////////////////////////////////////////////
10// //
11// GUI for displaying calibration entries over run/time //
12// //
13///////////////////////////////////////////////////////////////////////////////
14
15
16#ifndef ROOT_TGButton
17#include <TGWidget.h>
18#endif
19#ifndef ROOT_TGFrame
20#include <TGFrame.h>
21#endif
22#include <TString.h>
23#include <TVectorT.h>
24
25class TGCompositeFrame;
26class TRootEmbeddedCanvas;
27class TGTextButton;
28class TGListBox;
29class TGRadioButton;
30class TGComboBox;
31class TGGroupFrame;
32class TGLabel;
33class TGTabElement;
34class TGWindow;
35
36class TFile;
37class TTree;
38class TChain;
39class TGraph;
40class TObjArray;
41
42class TMap;
43
44class AliBaseCalibViewerGUI;
45
46class AliCalibViewerGUItime : public TGCompositeFrame {
47public:
48 AliCalibViewerGUItime(const TGWindow *p, UInt_t w, UInt_t h, const Char_t* det = "TRD");
49 virtual ~AliCalibViewerGUItime();
50
51 static TObjArray* ShowGUI(TChain* chain); // launch the time trending GUI and load a chain
52 static TObjArray* ShowGUI(); // launch the empty time trending GUI
53
54 void DrawGUI(const TGWindow */*p*/, UInt_t w, UInt_t h);
55
56 void UseFile(const char* fileName, const char* treeName);
57 void UseChain(TChain *chain = 0);
58 void Reload(Int_t first=1);
59 void AddReferenceTree(const char* treeFileName, const char* refName="R");
60
61 void SetCalibViewerGUI(AliBaseCalibViewerGUI *gui) {fCalibViewerGUI=gui;}
62 void SetCalibViewerGUItab(TGTabElement *tab) {fCalibViewerGUItab=tab;}
63 void SetCacheDir(const char* cachedir) {fOutputCacheDir=cachedir;}
64
65 const char* GetDrawString();
73bbf779 66 const char* GetDrawOption() const;
11a2ac51 67 void GetCutString(TString &cutStr);
68 TChain* GetChain() const {return fTree;}
69 //Slots
70 void DoDraw();
71 void DoDumpRuns();
72 void DoCustomDraw();
73 void DoCustomCutsDraw();
74 void DoParLimitChange();
75 void DoNewSelection(); // decides whether to redraw if user makes another selection
76 void DoChangeSelectionList() {Reload(0);}
77 void HandleButtonsDrawSel(Int_t id = -1);
78 void MouseMove(Int_t event, Int_t x, Int_t y, TObject */*selected*/);
79 void SavePicture();
80 void HandleLoadRunTextEntry();
81 void HandleLoadRunButtons();
82
83 private:
84 TString fDetector; // TPC/TRD
85
86 TFile* fFile; //file that keeps the tree
87 TChain* fTree; //internal tree
88 AliBaseCalibViewerGUI *fCalibViewerGUI; //calib viewer gui used to display verbose information for one run
89 TGTabElement *fCalibViewerGUItab; //tab the calib view gui redies in
90 TH1* fCurrentHist; //histogram currently drawn in main canvas
91 TGraph* fCurrentGraph; //current graph
92 Int_t fCurrentRunDetails; //run number for wich details are currently shown
93 TString fOutputCacheDir; //output cache diretory for AliTPCCalibViewerGUI trees, created on the fly
94 TString fDrawString; //current draw string
95 Bool_t fIsCustomDraw; //if custom draw string is selected
96 TVectorD fRunNumbers; //run numbers of current selection
97 TVectorD fTimeStamps; //timr stamps of current selection
98 TVectorD fValuesX; //values of current selection
99 TVectorD fValuesY; //values of current selection
100 //
101 Bool_t fNoGraph; //Whether to create a graph
102 Long64_t fGraphLimitEntries; //limit in number of entries in the chain for producing a graph
103 //
104 TMap *fMapRefTrees; //map of reference trees for the CalibViewer
105 //GUI elements
106 //main canvas Top part, bottom part
107 TGCompositeFrame *fContTopBottom; // container for all GUI elements, vertical divided
108 //top left, centre, right
109 TGCompositeFrame *fContLCR; // container for all GUI elements, horizontal divided
110 //content left
111 TGCompositeFrame *fContLeft; // container for GUI elements on left side
112 TGGroupFrame *fContDrawOpt; // Subgroup for draw selection
113 TGCheckButton *fChkDrawOptSame; // draw option 'same'
114 TGComboBox *fComboAddDrawOpt; // additional draw options combo box
115 TGGroupFrame *fContDrawSel; // Subgroup for draw selection
116 TGCompositeFrame *fContDrawSelSubRunTime; //Radio button subframe
117 TGRadioButton *fRadioXhist; // Radio button x-variable: show only 1D distribution
118 TGRadioButton *fRadioXrun; // Radio button x-variable: run
119 TGRadioButton *fRadioXtime; // Radio button x-variable: time
120 TGListBox *fListVariables; // listbox with possible variables
121 TGComboBox *fComboRunType; // run type selection box
122 TGLabel *fLblRunType; // run type label
123 TGNumberEntry *fNmbPar; // parameter number
124 TGLabel *fLblPar; // parameter name
125 TGListBox *fListCalibType; // calibration type selection box
126 TGGroupFrame *fContCalibType; // calibration type label
127 //content centre
128 TGCompositeFrame *fContCenter; // container for GUI elements at the center
129 TRootEmbeddedCanvas *fCanvMain; // main drawing canvas
130 //content right
131 TGCompositeFrame *fContRight; // container for GUI elements on right side
132 TGGroupFrame *fContValues; // container to keep data point information
133 TGLabel *fLblRunNumber; // run number label
134 TGLabel *fLblRunTime; // time stamp label
135 TGLabel *fLblValueX; // value label
136 TGLabel *fLblValueY; // value label
137 TGLabel *fLblRunNumberVal; // run number of the data point hoovered
138 TGLabel *fLblRunTimeVal; // time stamp of the data point hoovered
139 TGLabel *fLblValueXVal; // value of the data point hoovered
140 TGLabel *fLblValueYVal; // value of the data point hoovered
141 TGTextButton *fBtnDumpRuns; // draw button
142 TGTextButton *fBtnSave; // Save button
143
144 TGGroupFrame *fContLoad; // Load file container
145 TGCompositeFrame *fContFilename; // filename container
146 TGCompositeFrame *fContConfigFile; // config file container
147 TGCompositeFrame *fContTreeName; // tree name container
148 TGLabel *fLblTreeName; // tree name label
149 TGTextEntry *fTxtFilename; // filename text entry
150 TGTextEntry *fTxtConfigFile; // config file text entry
151 TGTextEntry *fTxtTreeName; // tree name text entry
152 TGButton *fBtnLoadFile; // load file button
153
154 //content bottom
155 TGCompositeFrame *fContCustom; // container for custom draw command GUI elements
156 TGCompositeFrame *fContCustomCuts; // container for custom cut options GUI elements
157 TGLabel *fLblCustomDraw; // label for custom draw string
158 TGLabel *fLblCustomCuts; // label for custom cuts string
159 TGComboBox *fComboCustomDraw; // combo box custom draw string
160 TGComboBox *fComboCustomCuts; // combo box custom cuts string
161 //
162 TObjArray *fTrashBox; //graphics objects to be deleted (histograms, graphs,...)
163
164 enum { kRadioXhist=10, kRadioXrun=11, kRadioXtime=12 };
165 enum { kBranchOnOff=0, kBranchTitle=1, kCalibType=2, kParamNames=3 };
166
167 void UpdateParLimits();
168 void UpdateParName();
169 void SetGuiTree(Int_t run);
170 void FillRunTypes();
171 void FillCalibTypes();
172 void SetInitialValues();
173 void CheckDrawGraph();
174 Bool_t CheckChain();
175 void UpdateValueArrays(Bool_t withGraph);
176 const char* SubstituteUnderscores(const char* in);
177 void GetHistogramTitle(TString &title);
178 void AdjustYRange();
179private:
180 AliCalibViewerGUItime(const AliCalibViewerGUItime &v);
181 AliCalibViewerGUItime &operator = (const AliCalibViewerGUItime &v); // assignment operator
182
183 ClassDef(AliCalibViewerGUItime, 1)
184
185};
186
187#endif