Line data Source code
1 : #ifndef AliTPCCalibViewerGUItime_H
2 : #define AliTPCCalibViewerGUItime_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 : /// \class AliTPCCalibViewerGUItime
8 : ///
9 : /// \brief GUI for displaying calibration entires over time
10 : /// Calibration Trees are created using the macro TPC/CalibMacros/CalibEnv.C
11 : /// used for the calibration monitor
12 :
13 :
14 : #ifndef ROOT_TGButton
15 : #include "TGWidget.h"
16 : #endif
17 : #ifndef ROOT_TGFrame
18 : #include "TGFrame.h"
19 : #endif
20 :
21 : #include <TGComboBox.h>
22 : #include <TString.h>
23 : #include <TVectorT.h>
24 :
25 : class TGCompositeFrame;
26 : class TRootEmbeddedCanvas;
27 : class TGTextButton;
28 : class TGListBox;
29 : class TGRadioButton;
30 : class TGGroupFrame;
31 : class TGLabel;
32 : class TGTabElement;
33 : class TGTextEntry;
34 :
35 : class TFile;
36 : class TTree;
37 : class TChain;
38 : class TGraph;
39 : class TObjArray;
40 :
41 : class TMap;
42 :
43 : class AliTPCCalibViewerGUI;
44 : class AliTPCConfigParser;
45 :
46 :
47 :
48 : class AliTPCCalibViewerGUItime : public TGCompositeFrame {
49 : public:
50 : AliTPCCalibViewerGUItime(const TGWindow *p, UInt_t w, UInt_t h);
51 : virtual ~AliTPCCalibViewerGUItime();
52 :
53 : static TObjArray* ShowGUI(const char* fileName = 0, const char* treeName="dcs"); // initialize and show GUI standalone
54 : static TObjArray* ShowGUI(TChain* chain); // initialize and show GUI standalone
55 :
56 : void DrawGUI(const TGWindow */*p*/, UInt_t w, UInt_t h);
57 :
58 : void UseFile(const char* fileName, const char* treeName);
59 : void UseChain(TChain *const chain);
60 : void UseConfigFile(const char* file="");
61 : void Reload(Int_t first=1);
62 : void AddReferenceTree(const char* treeFileName, const char* refName="R");
63 :
64 :
65 0 : void SetCalibViewerGUI(AliTPCCalibViewerGUI *const gui) {fCalibViewerGUI=gui;}
66 0 : void SetCalibViewerGUItab(TGTabElement *const tab) {fCalibViewerGUItab=tab;}
67 0 : void SetCacheDir(const char* cachedir) {fOutputCacheDir=cachedir;}
68 0 : void SetConfigFileName(const char* file) {fConfigFile=file;}
69 :
70 : const TString GetDrawString();
71 : const TString GetDrawOptionString();
72 0 : const char* GetCustomDrawString() const {return fComboCustomDraw->GetTextEntry()?fComboCustomDraw->GetTextEntry()->GetText():"";}
73 : void GetCutString(TString &cutStr);
74 0 : TChain* GetChain() const {return fTree;}
75 : //
76 0 : TGTextEntry* GetDrawEntry() {return fComboCustomDraw->GetTextEntry();}
77 0 : TGTextEntry* GetCutsEntry() {return fComboCustomCuts->GetTextEntry();}
78 0 : TGTextEntry* GetDrawOptEntry() {return fComboAddDrawOpt->GetTextEntry();}
79 : //Slots
80 : void DoDraw();
81 : void DoDumpRuns();
82 : void DoCustomDraw();
83 : void DoCustomCutsDraw();
84 : void DoParLimitChange();
85 : void DoNewSelection(); // decides whether to redraw if user makes another selection
86 0 : void DoChangeSelectionList() {Reload(0);}
87 : void HandleButtonsDrawSel(Int_t id = -1);
88 : void MouseMove(Int_t event, Int_t x, Int_t y, TObject */*selected*/);
89 : void DoNewSelectionAliases();
90 : void DoAddAlias();
91 : void DoDelAlias();
92 : void UpdateAliasList();
93 0 : TCanvas * GetCanvas(){ return fCanvMain->GetCanvas();}
94 : private:
95 : TFile* fFile; ///< file that keeps the tree
96 : TChain* fTree; ///< internal tree
97 : AliTPCCalibViewerGUI *fCalibViewerGUI; ///< calib viewer gui used to display verbose information for one run
98 : TGTabElement *fCalibViewerGUItab; ///< tab the calib view gui redies in
99 : TH1* fCurrentHist; ///< histogram currently drawn in main canvas
100 : TGraph* fCurrentGraph; ///< current graph
101 : Int_t fCurrentRunDetails; ///< run number for wich details are currently shown
102 : TString fOutputCacheDir; ///< output cache diretory for AliTPCCalibViewerGUI trees, created on the fly
103 : TString fDrawString; ///< current draw string
104 : TString fConfigFile; ///< configuration file keeping active branches and branch descriptions
105 : AliTPCConfigParser *fConfigParser; ///< configuration parser
106 : Bool_t fIsCustomDraw; ///< if custom draw string is selected
107 : TVectorD fRunNumbers; ///< run numbers of current selection
108 : TVectorD fTimeStamps; ///< timr stamps of current selection
109 : TVectorD fValuesX; ///< values of current selection
110 : TVectorD fValuesY; ///< values of current selection
111 : //
112 : Bool_t fNoGraph; ///< Whether to create a graph
113 : Long64_t fGraphLimitEntries; ///< limit in number of entries in the chain for producing a graph
114 : //
115 : TMap *fMapRefTrees; ///< map of reference trees for the CalibViewer
116 : //GUI elements
117 : //main canvas Top part, bottom part
118 : TGCompositeFrame *fContTopBottom; ///< container for all GUI elements, vertical divided
119 : //top left, centre, right
120 : TGCompositeFrame *fContLCR; ///< container for all GUI elements, horizontal divided
121 : //content left
122 : TGCompositeFrame *fContLeft; ///< container for GUI elements on left side
123 : TGGroupFrame *fContDrawOpt; ///< Subgroup for draw selection
124 : TGCheckButton *fChkDrawOptSame; ///< draw option 'same'
125 : TGCheckButton *fChkDrawOptSparse; ///< draw option 'sparse'
126 : TGComboBox *fComboAddDrawOpt; ///< additional draw options combo box
127 : TGGroupFrame *fContDrawSel; ///< Subgroup for draw selection
128 : TGCompositeFrame *fContDrawSelSubRunTime; ///< Radio button subframe
129 : TGRadioButton *fRadioXhist; ///< Radio button x-variable: show only 1D distribution
130 : TGRadioButton *fRadioXrun; ///< Radio button x-variable: run
131 : TGRadioButton *fRadioXtime; ///< Radio button x-variable: time
132 : TGListBox *fListVariables; ///< listbox with possible variables
133 : TGComboBox *fComboRunType; ///< run type selection box
134 : TGLabel *fLblRunType; ///< run type label
135 : TGNumberEntry *fNmbPar; ///< parameter number
136 : TGLabel *fLblPar; ///< parameter name
137 : TGListBox *fListCalibType; ///< calibration type selection box
138 : TGGroupFrame *fContCalibType; ///< calibration type label
139 : //content centre
140 : TGCompositeFrame *fContCenter; ///< container for GUI elements at the center
141 : TRootEmbeddedCanvas *fCanvMain; ///< main drawing canvas
142 : //content right
143 : TGCompositeFrame *fContRight; ///< container for GUI elements on right side
144 : TGGroupFrame *fContValues; ///< container to keep data point information
145 : TGLabel *fLblRunNumber; ///< run number label
146 : TGLabel *fLblRunTime; ///< time stamp label
147 : TGLabel *fLblValueX; ///< value label
148 : TGLabel *fLblValueY; ///< value label
149 : TGLabel *fLblRunNumberVal; ///< run number of the data point hoovered
150 : TGLabel *fLblRunTimeVal; ///< time stamp of the data point hoovered
151 : TGLabel *fLblValueXVal; ///< value of the data point hoovered
152 : TGLabel *fLblValueYVal; ///< value of the data point hoovered
153 : TGTextButton *fBtnDumpRuns; ///< draw button
154 : TGGroupFrame *fContAliases; ///< container to keep data point information
155 : TGListBox *fListAliases; ///< list of aliases
156 : //content bottom
157 : TGCompositeFrame *fContCustom; ///< container for custom draw command GUI elements
158 : TGCompositeFrame *fContCustomCuts; ///< container for custom cut options GUI elements
159 : TGLabel *fLblCustomDraw; ///< label for custom draw string
160 : TGLabel *fLblCustomCuts; ///< label for custom cuts string
161 : TGComboBox *fComboCustomDraw; ///< combo box custom draw string
162 : TGComboBox *fComboCustomCuts; ///< combo box custom cuts string
163 : //
164 : TObjArray *fTrashBox; ///< graphics objects to be deleted (histograms, graphs,...)
165 :
166 : enum { kRadioXhist=10, kRadioXrun=11, kRadioXtime=12 };
167 : enum { kBranchOnOff=0, kBranchTitle=1, kCalibType=2, kParamNames=3 };
168 :
169 : void UpdateParLimits();
170 : void UpdateParName();
171 : void SetGuiTree(Int_t run);
172 : void FillRunTypes();
173 : void FillCalibTypes();
174 : void SetInitialValues();
175 : void CheckDrawGraph();
176 : Bool_t CheckChain();
177 : void UpdateValueArrays(Bool_t withGraph, const Double_t *xArr);
178 : void SubstituteUnderscores(TString &s);
179 : void GetHistogramTitle(TString &title);
180 : void AdjustYRange();
181 : private:
182 : AliTPCCalibViewerGUItime(const AliTPCCalibViewerGUItime &v);
183 : AliTPCCalibViewerGUItime &operator = (const AliTPCCalibViewerGUItime &v); // assignment operator
184 :
185 24 : ClassDef(AliTPCCalibViewerGUItime, 0)
186 :
187 : };
188 :
189 : ////////////////////////////////////////////////////////////////////////
190 : //
191 : // GUI Alias frame
192 : //
193 : ////////////////////////////////////////////////////////////////////////
194 :
195 : class AliTPCCalibViewerGUItimeAddAliasFrame : public TObject {
196 : public:
197 : AliTPCCalibViewerGUItimeAddAliasFrame(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h,
198 : UInt_t options, AliTPCCalibViewerGUItime *gui, TString strAlias="");
199 : virtual ~AliTPCCalibViewerGUItimeAddAliasFrame();
200 :
201 : // slots
202 : void DoOK();
203 : void DoCancel();
204 :
205 :
206 : private:
207 : TGTransientFrame *fMain; ///< Main frame
208 : TGTextEntry *fTxt1, *fTxt2; ///< text input
209 :
210 : AliTPCCalibViewerGUItime *fGUI; ///< pointer to mother process
211 :
212 : AliTPCCalibViewerGUItimeAddAliasFrame(const AliTPCCalibViewerGUItimeAddAliasFrame &r);
213 : AliTPCCalibViewerGUItimeAddAliasFrame &operator = (const AliTPCCalibViewerGUItimeAddAliasFrame &r);
214 :
215 : /// \cond CLASSIMP
216 24 : ClassDef(AliTPCCalibViewerGUItimeAddAliasFrame,0)
217 : /// \endcond
218 : };
219 :
220 : #endif
|