1 #ifndef ALITPCCALIBVIEWERGUI_H
2 #define ALITPCCALIBVIEWERGUI_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 /* $Id: AliTPCCalibViewerGUI.h,v */
9 ///////////////////////////////////////////////////////////////////////////////
11 // GUI for the AliTPCCalibViewer //
12 // used for the calibration monitor //
14 ///////////////////////////////////////////////////////////////////////////////
24 #include <TGListBox.h>
25 #include <TGComboBox.h>
26 #include <TGNumberEntry.h>
27 #include <TRootEmbeddedCanvas.h>
28 #include <TGSplitter.h>
29 #include <TGButtonGroup.h>
34 class AliTPCCalibViewer;
35 class AliTPCPreprocessorOnline;
40 // class TGNumberEntry;
43 // class TGWidget; // ???
45 // class TGButtonGroup;
47 // class TRootEmbeddedCanvas;
49 // class TGRadioButton;
50 // class TGCheckButton;
54 class AliTPCCalibViewerGUI : public TGCompositeFrame {
57 AliTPCCalibViewerGUI(const TGWindow *p, UInt_t w, UInt_t h, char* fileName); // constructor; fileName specifies the ROOT tree used for drawing
58 AliTPCCalibViewerGUI(const AliTPCCalibViewerGUI &c); // copy constructor
59 AliTPCCalibViewerGUI &operator = (const AliTPCCalibViewerGUI ¶m); // assignment operator
61 virtual ~AliTPCCalibViewerGUI();
62 // virtual void CloseWindow();
64 void DrawGUI(const TGWindow *p, UInt_t w, UInt_t h); // to be called by the costructor, here the windows is drawn
65 void SetInitialValues(); // set the initial button states
66 void Initialize(const char* fileName, const char* treeName = "calPads"); // initializes the GUI with default settings and opens tree for drawing
67 void Initialize(AliTPCCalibViewer *viewer); // initializes the GUI with default settings and opens tree for drawing
68 void Reload(){Initialize(fViewer);} // reload the viewr after it has been changed, e.g. added a new referenceTree, ...
70 TString* GetDrawString(); // create the draw string out of selection
71 TString* GetCutString(); // create the cut string out of selection
72 TString* GetSectorString(); // create the sector string out of selection
73 AliTPCCalibViewer* GetViewer() {return fViewer;} // returns the internal AliTPCCalibViewer object, which does the work
74 static TObjArray* ShowGUI(const char* fileName = 0); // initialize and show GUI for presentation, standalone
76 TGTextEntry* GetDrawEntry() {return fComboCustom->GetTextEntry();}
77 TGTextEntry* GetCutsEntry() {return fComboAddCuts->GetTextEntry();}
78 TGTextEntry* GetDrawOptEntry() {return fComboAddDrawOpt->GetTextEntry();}
79 TGTextEntry* GetFitEntry() {return fComboCustomFit->GetTextEntry();}
81 void HandleButtonsGeneral(Int_t id = -1); // handles mutual radio button exclusions for general Tab
82 void HandleButtons1D(Int_t id = -1); // handles mutual radio button exclusions for 1D Tab
83 void HandleButtonsStat(Int_t id = -1); // handles statistic check boxes
84 void HandleButtonsCuts(Int_t id = -1); // handles mutual radio button exclusions for right side
85 void HandleButtonsNoRedraw(Int_t id = -1);// handles label & scaling checkboxes without redrawing
86 void ReplacePlaceHolders(TString &str); // replace place holders of the draw variable and normalisation variable
87 void DoNewSelection(); // decides whether to redraw if user makes another selection
88 void DoDraw(); // main method for drawing according to user selection
89 void DoFit(); // main method for fitting
90 void DoExport(); // function to export a CalPad to Cint
91 void DoDumpToFile(); // function to dump a new calib tree to file
92 void DoLoadTree(); // function to load a new calib tree
93 void DoExportNorm(); // function to use a calPad for normalization
94 void SavePicture(); // method for saving
95 void GetMinMax(); // Read current Min & Max from the plot and set it to fTxtSetMin & fTxtSetMax
96 void SetMinMaxLabel(); // Set min, max and label without redrawing
97 void ChangeSector(); // function that is called, when the number of the sector is changed
98 void AddFitFunction() const; // adds the last fit function to the normalization list
99 void MouseMove(Int_t event, Int_t x, Int_t y, TObject *selected);
100 void UnchekAllStat(); // Disable all statistical legend entries, no statistical legend.
103 AliTPCCalibViewer *fViewer; // CalibViewer object used for drawing
104 AliTPCPreprocessorOnline *fPreprocessor; // PreprocessorOnline object, used to collect the exported CalPads and to save them into a new calibTree
106 TGCompositeFrame *fContTopBottom; // container for all GUI elements, vertical divided
107 TGCompositeFrame *fContLCR; // container for all GUI elements, horizontal divided
108 TGCompositeFrame *fContLeft; // container for GUI elements on left side
109 TGTab *ftabLeft; // Tabs on the left side for plot options
110 TGCompositeFrame *ftabLeft0; // Tab 0 on the left side for general plot options
111 TGCompositeFrame *ftabLeft1; // Tab 1 on the left side for 1D plot options
112 TGTab *ftabRight; // Tabs on the right side
113 TGCompositeFrame *fTabRight0; // Tab 0 on the right side for basic
114 TGCompositeFrame *fTabRight1; // Tab 1 on the right side for advanced
115 TGCompositeFrame *fContRight; // container for GUI elements on right side
116 TGCompositeFrame *fContCenter; // container for GUI elements at the center
117 TGCompositeFrame *fContPlotOpt; // container for plot options GUI elements
118 TGCompositeFrame *fContDrawOpt; // container for draw options GUI elements
119 TGCompositeFrame *fContDrawOptSub1D2D; // container for 1D and 2D radio-button
120 TGCompositeFrame *fContNormalized; // container for normalization options GUI elements
121 TGCompositeFrame *fContCustom; // container for custom draw command GUI elements
122 TGCompositeFrame *fContCuts; // container for cut options GUI elements
123 TGCompositeFrame *fContSector; // container for sector GUI elements
124 TGCompositeFrame *fContAddCuts; // container for additional cut command GUI elements
125 TGCompositeFrame *fContFit; // container for fit GUI elements
126 TGCompositeFrame *fContAddFit; // container for additional fit GUI elements
127 TGCompositeFrame *fContScaling; // container for scaling GUI elements
128 TGCompositeFrame *fContSetMax; // container for SetMaximum elements
129 TGCompositeFrame *fContSetMin; // container for SetMinimum elements
130 TGCompositeFrame *fContAddDrawOpt; // additional draw options container
131 TGListBox *fListVariables; // listbox with possible variables
132 TGTextButton *fBtnDraw; // draw button
133 TGTextButton *fBtnFit; // fit button
134 TGTextButton *fBtnAddFitFunction; // button to add fit function to normalization
135 TGTextButton *fBtnGetMinMax; // GetMinMax-button
136 TRootEmbeddedCanvas *fCanvMain; // main drawing canvas
137 TGRadioButton *fRadioRaw; // raw radio button
138 TGRadioButton *fRadioNormalized; // normalized radio button
139 TGRadioButton *fRadioPredefined; // predefined plot radio button
140 TGRadioButton *fRadioCustom; // custom radio button
141 TGRadioButton *fRadio1D; // 1D radio button
142 TGRadioButton *fRadio2D; // 2D radio button
143 TGRadioButton *fRadioTPC; // TPC radio button
144 TGRadioButton *fRadioSideA; // side A radio button
145 TGRadioButton *fRadioSideC; // side C radio button
146 TGRadioButton *fRadioROC; // ROC radio button
147 TGRadioButton *fRadioSector; // sector radio button
148 TGComboBox *fComboAddDrawOpt; // additional draw options combo box
149 TGCheckButton *fChkAuto; // automatic redraw checkbox
150 TGCheckButton *fChkAutoAppend; // automatic appendign of "~" checkbox
151 TGComboBox *fComboMethod; // normalization methods dropdown box
152 TGListBox *fListNormalization; // listbox with possible normalization variables
153 TGComboBox *fComboCustom; // combo box for custom draw commands
154 TGLabel *fLblCustomDraw; // custom draw labal
155 TGCheckButton *fChkAddDrawOpt; // additional draw options check box
156 TGNumberEntry *fNmbSector; // number entry box for specifying the sector
157 TGLabel *fLblSector; // label that shows the active sector
158 TGCheckButton *fChkCutZero; // cut zeros check box
159 TGCheckButton *fChkAddCuts; // additional cuts check box
160 TGLabel *fLblAddCuts; // additional cuts label
161 TGComboBox *fComboAddCuts; // additional cuts combo box
162 TGComboBox *fComboCustomFit; // custom fit combo box
163 TGCheckButton *fChkSetMax; // Set maximum check box
164 TGCheckButton *fChkSetMin; // Set maximum check box
165 TGCheckButton *fChkGetMinMaxAuto; // Get Min & Max automatically from plot
166 TGTextEntry *fTxtSetMax; // custom maximum text box
167 TGTextEntry *fTxtSetMin; // custom minimum text box
168 TGGroupFrame *fContDrawOpt1D; // container in tabLeft1
169 TGCompositeFrame *fcontDrawOpt1DSubLR; // container in tabLeft1 to divide L/R
170 TGCompositeFrame *fContDrawOpt1DSubNSC; // container in tabLeft1 for following radio buttons
171 TGRadioButton *fRadioNorm; // radio button for normal 1D drawing
172 TGRadioButton *fRadioSigma; // radio button for sigma 1D drawing
173 TGTextEntry *fTxtSigmas; // text box to specify sigmas
174 TGCompositeFrame *fContCumuLR; // container in tabLeft1 for two colums for cumulative and integrative
175 TGCompositeFrame *fContCumLeft; // container in tabLeft1 for cumulative, left
176 TGCompositeFrame *fContCumRight; // container in tabLeft1 for cumulative, right
177 TGLabel *fLblSigmaMax; // label to indicate sigmaMax
178 TGTextEntry *fTxtSigmaMax; // text box to specify sigmaMax
179 TGRadioButton *fRadioCumulative; // radio button for cumulative 1D drawing
180 TGCheckButton *fCheckCumulativePM; // checkbox for plus/minus cumulative 1D drawing
181 TGRadioButton *fRadioIntegrate; // radio button for integral 1D drawing
182 TGCompositeFrame *fContDrawOpt1DSubMML; // container in tabLeft1 for following check boxes
183 TGCheckButton *fChkMean; // checkbox to plot mean
184 TGCheckButton *fChkMedian; // checkbox to plot median
185 TGCheckButton *fChkLTM; // checkbox to plot LTM
186 TGGroupFrame *fContStatOpt; // container for statistic options in tabLeft1
187 TGCheckButton *fChkStatName; // checkbox to display histogram name in statistic legend
188 TGCheckButton *fChkStatEntries; // checkbox to display entries in statistic legend
189 TGCompositeFrame *fContStatMean; // container for mean and its error in stat opt
190 TGCheckButton *fChkStatMean; // checkbox to display mean in statistic legend
191 TGCheckButton *fChkStatMeanPM; // checkbox to display mean error in statistic legend
192 TGCompositeFrame *fContStatRMS; // container for RMS and its error in stat opt
193 TGCheckButton *fChkStatRMS; // checkbox to display RMS in statistic legend
194 TGCheckButton *fChkStatRMSPM; // checkbox to display RMS error in statistic legend
195 TGCheckButton *fChkStatUnderflow; // checkbox to display underflow error in statistic legend
196 TGCheckButton *fChkStatOverflow; // checkbox to display overflow error in statistic legend
197 TGCheckButton *fChkStatIntegral; // checkbox to display integral in statistic legend
198 TGCompositeFrame *fContStatSkew; // container for skewness and its error in stat opt
199 TGCheckButton *fChkStatSkewness; // checkbox to display skewness in statistic legend
200 TGCheckButton *fChkStatSkewnessPM; // checkbox to display skewness error in statistic legend
201 TGCompositeFrame *fContStatKurt; // container for kurtosis and its error in stat opt
202 TGCheckButton *fChkStatKurtosis; // checkbox to display kurtosis in statistic legend
203 TGCheckButton *fChkStatKurtosisPM; // checkbox to display kurtosis error in statistic legend
204 TGButton *fBtnUnchekAll; // Button to uncheck all statistic entries
205 TGGroupFrame *fContLabeling; // groupframe container for labeling
206 TGCheckButton *fChkLabelTitle; // checkbox to display specified title
207 TGTextEntry *fTxtLabelTitle; // text box to specify title
208 TGCheckButton *fChkLabelXaxis; // checkbox to display specified xaxis label
209 TGTextEntry *fTxtLabelXaxis; // text box to specify xaxis label
210 TGCheckButton *fChkLabelYaxis; // checkbox to display specified yaxis label
211 TGTextEntry *fTxtLabelYaxis; // text box to specify yaxis label
212 TGCheckButton *fChkLabelGetAuto; // checkbox to get labels atuomatically from plot
213 TGGroupFrame *fContSave; // container for save-button
214 TGButton *fBtnSave; // Save button
215 TGCompositeFrame *fContAddSaveOpt; // container for additional save options
216 TGCheckButton *fChkAddSaveOpt; // checkbox for additional save options
217 TGComboBox *fComboAddSaveOpt; // combobox for additional save options
218 TGGroupFrame *fContExport; // container for cint-export
219 TGCompositeFrame *fContAddExport; // container for dropdown list to enter export name
220 TGComboBox *fComboExportName; // dropdownbox to enter a name for the exported CalPad
221 TGTextButton *fBtnExport; // button to export a CalPad
222 TGTextButton *fBtnAddNorm; // button to add a CalPad to the normalization
223 TGCompositeFrame *fContTree; // container for tree functions
224 TGTextButton *fBtnDumpToFile; // button to dump a new CalibTree to file
225 TGTextButton *fBtnLoadTree; // button to load a new tree
226 TGCheckButton *fChkAddAsReference; // checkbox to add a new tree as referenceTree
227 TGTextEntry *fTxtRefName; // text box to specify the referenceTree's name
230 Bool_t fInitialized; // has the GUI already been initialized?
232 ClassDef(AliTPCCalibViewerGUI, 0)