Logo ROOT   6.10/09
Reference Guide
TFitEditor.h
Go to the documentation of this file.
1 // @(#)root/fitpanel:$Id$
2 // Author: Ilka Antcheva, Lorenzo Moneta, David Gonzalez Maline 10/08/2006
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TFitEditor
13 #define ROOT_TFitEditor
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TFitEditor //
18 // //
19 // Allows to explore and compare various fits. //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 #include "TGFrame.h"
24 #include "TGButton.h"
25 
26 #include "Foption.h"
27 #include "Math/MinimizerOptions.h"
28 #include "Fit/DataRange.h"
29 
30 
31 
32 #include <vector>
33 #include <map>
34 #include <utility>
35 
36 //--- Object types
44 };
45 
46 
47 class TGTab;
48 class TVirtualPad;
49 class TCanvas;
50 class TGLabel;
51 class TGComboBox;
52 class TGTextEntry;
53 class TGNumberEntry;
54 class TGDoubleHSlider;
55 class TGNumberEntry;
56 class TGNumberEntryField;
57 class TGStatusBar;
58 class TAxis;
59 class TF1;
60 class TF1NormSum;
61 class TF1Convolution;
62 
63 
64 class TFitEditor : public TGMainFrame {
65 
66 protected:
67  TGTab *fTab; // tab widget holding the editor
68  TGCompositeFrame *fTabContainer; // main tab container
69  TGCompositeFrame *fGeneral; // general tab
70  TGCompositeFrame *fMinimization; // minimization tab
71  TGTextButton *fUpdateButton; // updates data from gROOT and gDirectory
72  TGTextButton *fFitButton; // performs fitting
73  TGTextButton *fResetButton; // resets fit parameters
74  TGTextButton *fCloseButton; // close the fit panel
75  TGLabel *fSelLabel; // contains selected fit function
76  TGComboBox *fDataSet; // contains list of data set to be fitted
77  TGComboBox *fTypeFit; // contains the types of functions to be selected
78  TGComboBox *fFuncList; // contains function list
79  TGTextEntry *fEnteredFunc; // contains user function file name
80  TGTextButton *fUserButton; // opens a dialog for user-defined fit method
81  TGRadioButton *fNone; // set no operation mode
82  TGRadioButton *fAdd; // set addition mode
83  TGRadioButton *fNormAdd; // set normalized addition mode
84  TGRadioButton *fConv; // set convolution mode
85  TGLayoutHints *fLayoutNone; // layout hints of fNone radio button
86  TGLayoutHints *fLayoutAdd; // layout hints of fAdd radio button
87  TGLayoutHints *fLayoutNormAdd; // layout hints of fNOrmAdd radio button
88  TGLayoutHints *fLayoutConv; // layout hints of fConv radio button
89  TGTextButton *fSetParam; // open set parameters dialog
90  TGCheckButton *fIntegral; // switch on/off option 'integral'
91  TGCheckButton *fBestErrors; // switch on/off option 'improve errors'
92  TGCheckButton *fUseRange; // switch on/off option 'use function range'
93  TGCheckButton *fAdd2FuncList; // switch on/off option 'add to list'
94  TGCheckButton *fUseGradient ; // switch on/off option 'use gradient'
95  TGCheckButton *fAllWeights1; // switch on/off option 'all weights=1'
96  TGCheckButton *fImproveResults; // switch on/off option 'improve fit results'
97  TGCheckButton *fEmptyBinsWghts1; // switch on/off option 'include empry bins'
98  TGComboBox *fMethodList; // contains method list
99  TGCheckButton *fLinearFit; // switch on/off linear fit option
100  TGCheckButton *fNoChi2; // switch on/off option 'No Chi-square'
101  TGCheckButton *fNoStoreDrawing; // switch on/off 'no store/drwing' option
102  TGCheckButton *fNoDrawing; // switch on/off 'no drawing' option
103  TGCheckButton *fDrawSame; // switch on/off fit function drawing
104  TGTextButton *fDrawAdvanced; // opens a dialog for advanced draw options
105  TGDoubleHSlider *fSliderX; // slider to set fit range along x-axis
106  TGNumberEntry *fSliderXMax; // entry to set the maximum in the range
107  TGNumberEntry *fSliderXMin; // entry to set the minumum in the range
108  TGDoubleHSlider *fSliderY; // slider to set fit range along y-axis
109  TGNumberEntry *fSliderYMax; // entry to set the maximum in the range
110  TGNumberEntry *fSliderYMin; // entry to set the minumum in the range
111  TGDoubleHSlider *fSliderZ; // slider to set fit range along z-axis
112  TGHorizontalFrame *fSliderXParent; // parent of fSliderX
113  TGHorizontalFrame *fSliderYParent; // parent of fSliderY
114  TGHorizontalFrame *fSliderZParent; // parent of fSliderZ
115  TGCheckButton *fEnableRobust; // switch on/off robust option
116  TGNumberEntry *fRobustValue; // contains robust value for linear fit
117  TGRadioButton *fOptDefault; // set default printing mode
118  TGRadioButton *fOptVerbose; // set printing mode to 'Verbose'
119  TGRadioButton *fOptQuiet; // set printing mode to 'Quiet'
120  TVirtualPad *fParentPad; // pad containing the object
121  TObject *fFitObject; // selected object to fit
122  EObjectType fType; // object type info
123  Int_t fDim; // object dimension
124  TAxis *fXaxis; // x-axis
125  TAxis *fYaxis; // y-axis
126  TAxis *fZaxis; // z-axis
127  TF1NormSum *fSumFunc; //! TF1NormSum object
128  TF1Convolution *fConvFunc; //! TF1Convolution object
129 
130  // structure holding parameter value and limits
133  fP[0] = 0; fP[1] = 0; fP[2] = 0;
134  }
135  Double_t & operator[](UInt_t i) { return fP[i];}
137  };
138  std::vector<FuncParamData_t> fFuncPars; // function parameters (value + limits)
139 
140  std::multimap<TObject*, TF1*> fPrevFit; // Previous successful fits.
141  std::vector<TF1*> fSystemFuncs; // functions managed by the fitpanel
142 
143  TGRadioButton *fLibMinuit; // set default minimization library (Minuit)
144  TGRadioButton *fLibMinuit2; // set Minuit2 as minimization library
145  TGRadioButton *fLibFumili; // set Fumili as minimization library
146  TGRadioButton *fLibGSL; // set GSL as minimization library
147  TGRadioButton *fLibGenetics; // set Genetic/GALib as minimization library
148  TGComboBox *fMinMethodList; // set the minimization method
149  TGNumberEntryField *fErrorScale; // contains error scale set for minimization
150  TGNumberEntryField *fTolerance; // contains tolerance set for minimization
151  TGNumberEntryField *fIterations; // contains maximum number of iterations
152 
153  TGStatusBar *fStatusBar; // statusbar widget
154 
155  Bool_t fChangedParams; // flag to indicate if the parameters have been set in the ParameterDialog GUI
156 
157  static TFitEditor *fgFitDialog; // singleton fit panel
158 
159 protected:
160  void GetFunctionsFromSystem();
161  void ProcessTreeInput(TObject* objSelected, Int_t selected,
162  TString variables, TString cuts);
163  TF1* FindFunction();
164  void FillDataSetList();
165  TGComboBox* BuildMethodList(TGFrame *parent, Int_t id);
167  TF1* GetFitFunction();
169  void DrawSelection(bool restore = false);
170  Int_t CheckFunctionString(const char* str);
171  void CreateFunctionGroup();
172  void CreateGeneralTab();
173  void CreateMinimizationTab();
174  void MakeTitle(TGCompositeFrame *parent, const char *title);
175  TF1* HasFitFunction();
176  void SetEditable(Bool_t);
177 
178 private:
179  TFitEditor(const TFitEditor&); // not implemented
180  TFitEditor& operator=(const TFitEditor&); // not implemented
181 
183 
184 public:
185  TFitEditor(TVirtualPad* pad, TObject *obj);
186  virtual ~TFitEditor();
187 
189 
190  static TFitEditor *GetInstance(TVirtualPad* pad = 0, TObject *obj = 0);
191  virtual Option_t *GetDrawOption() const;
192  virtual void Hide();
193  virtual void Show(TVirtualPad* pad, TObject *obj);
194 
195  void ShowObjectName(TObject* obj);
197  virtual void Terminate();
198  void UpdateGUI();
199 
200  virtual void CloseWindow();
201  virtual void ConnectSlots();
202  virtual void DisconnectSlots();
203  virtual void RecursiveRemove(TObject* obj);
204 
205 protected:
206  virtual void SetCanvas(TCanvas *c);
207 
208 public:
209  virtual void SetFitObject(TVirtualPad *pad, TObject *obj, Int_t event);
210  virtual void SetFunction(const char *function);
211 
212  // slot methods 'General' tab
213  void FillFunctionList(Int_t selected = -1);
214  void FillMinMethodList(Int_t selected = -1);
215  virtual void DoAddition(Bool_t on);
216  virtual void DoNormAddition(Bool_t on);
217  virtual void DoConvolution(Bool_t on);
218  virtual void DoAdvancedOptions();
219  virtual void DoAllWeights1();
220  virtual void DoClose();
221  virtual void DoEmptyBinsAllWeights1();
222  virtual void DoEnteredFunction();
223  virtual void DoUpdate();
224  virtual void DoFit();
225  virtual void DoMaxIterations();
226  virtual void DoDataSet(Int_t sel);
227  virtual void DoFunction(Int_t sel);
228  virtual void DoLinearFit();
229  virtual void DoNoChi2();
230  virtual void DoNoSelection();
231  virtual void DoNoStoreDrawing();
232  virtual void DoReset();
233  virtual void DoRobustFit();
234  virtual void DoSetParameters();
235  virtual void DoSliderXMoved();
236  virtual void DoNumericSliderXChanged();
237  virtual void DoSliderYMoved();
238  virtual void DoNumericSliderYChanged();
239  virtual void DoSliderZMoved();
240  virtual void DoUserDialog();
241  virtual void DoUseFuncRange();
242 
243  // slot methods 'Minimization' tab
244  virtual void DoLibrary(Bool_t on);
245  virtual void DoMinMethod(Int_t );
246  virtual void DoPrintOpt(Bool_t on);
247 
248 public:
249  typedef std::vector<FuncParamData_t > FuncParams_t;
250 
251  friend class FitEditorUnitTesting;
252  ClassDef(TFitEditor,0) //Fit Panel interface
253 };
254 
255 #endif
virtual void SetFunction(const char *function)
Set the function to be used in performed fit.
virtual void DoFunction(Int_t sel)
Slot connected to predefined fit function settings.
TGCheckButton * fEnableRobust
Definition: TFitEditor.h:115
virtual void SetFitObject(TVirtualPad *pad, TObject *obj, Int_t event)
Slot called when the user clicks on an object inside a canvas.
virtual void DoSetParameters()
Open set parameters dialog.
std::multimap< TObject *, TF1 * > fPrevFit
Definition: TFitEditor.h:140
TGLayoutHints * fLayoutAdd
Definition: TFitEditor.h:86
TGDoubleHSlider * fSliderX
Definition: TFitEditor.h:105
TGTextButton * fDrawAdvanced
Definition: TFitEditor.h:104
virtual void DoSliderZMoved()
Slot connected to range settings on z-axis.
virtual void DoNoChi2()
Slot connected to &#39;no chi2&#39; option settings.
TGComboBox * fDataSet
Definition: TFitEditor.h:76
TFitEditor & operator=(const TFitEditor &)
TGCheckButton * fUseRange
Definition: TFitEditor.h:92
TGCheckButton * fNoDrawing
Definition: TFitEditor.h:102
TGComboBox * BuildMethodList(TGFrame *parent, Int_t id)
Create method list in a combo box.
TGLayoutHints * fLayoutConv
Definition: TFitEditor.h:88
Int_t fDim
Definition: TFitEditor.h:123
TGNumberEntryField * fIterations
Definition: TFitEditor.h:151
TGRadioButton * fLibGenetics
Definition: TFitEditor.h:147
virtual void DoMaxIterations()
Set the maximum number of iterations.
Definition: TGTab.h:62
TF1 * HasFitFunction()
Look in the list of function for TF1.
virtual void DoAllWeights1()
Slot connected to &#39;set all weights to 1&#39; setting.
void RetrieveOptions(Foption_t &, TString &, ROOT::Math::MinimizerOptions &, Int_t)
Retrieve the fitting options from all the widgets.
const char Option_t
Definition: RtypesCore.h:62
void FillDataSetList()
Create a combo box with all the possible objects to be fitted.
void ProcessTreeInput(TObject *objSelected, Int_t selected, TString variables, TString cuts)
TF1NormSum * fSumFunc
Definition: TFitEditor.h:127
TGLayoutHints * fLayoutNone
Definition: TFitEditor.h:85
TFitEditor(const TFitEditor &)
virtual void DoAddition(Bool_t on)
Slot connected to addition of predefined functions.
TGCheckButton * fNoStoreDrawing
Definition: TFitEditor.h:101
TGNumberEntry * fSliderXMin
Definition: TFitEditor.h:107
TGRadioButton * fOptQuiet
Definition: TFitEditor.h:119
TGCheckButton * fAllWeights1
Definition: TFitEditor.h:95
TGNumberEntry * fSliderYMax
Definition: TFitEditor.h:109
Basic string class.
Definition: TString.h:129
TGCompositeFrame * fGeneral
Definition: TFitEditor.h:69
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual void DoLibrary(Bool_t on)
Set selected minimization library in use.
TGTextButton * fSetParam
Definition: TFitEditor.h:89
TGCheckButton * fImproveResults
Definition: TFitEditor.h:96
TGCheckButton * fIntegral
Definition: TFitEditor.h:90
virtual void Hide()
Hide the fit panel and set it to non-active state.
Bool_t fChangedParams
Definition: TFitEditor.h:155
TGRadioButton * fLibMinuit2
Definition: TFitEditor.h:144
TGStatusBar * fStatusBar
Definition: TFitEditor.h:153
TGLabel * fSelLabel
Definition: TFitEditor.h:75
TGRadioButton * fConv
Definition: TFitEditor.h:84
void ShowObjectName(TObject *obj)
Show object name on the top.
TGHorizontalFrame * fSliderXParent
Definition: TFitEditor.h:112
virtual void DisconnectSlots()
Disconnect GUI signals from fit panel slots.
virtual void SetCanvas(TCanvas *c)
Connect to another canvas.
TGNumberEntry * fSliderYMin
Definition: TFitEditor.h:110
TF1Convolution object.
Definition: TFitEditor.h:131
void CreateGeneralTab()
Create &#39;General&#39; tab.
Definition: TFitEditor.cxx:660
TGTextButton * fResetButton
Definition: TFitEditor.h:73
Class wrapping convolution of two functions.
virtual void DoReset()
Reset all fit parameters.
friend class FitEditorUnitTesting
Definition: TFitEditor.h:251
#define ClassDef(name, id)
Definition: Rtypes.h:297
TGRadioButton * fLibGSL
Definition: TFitEditor.h:146
virtual void ConnectSlots()
Connect GUI signals to fit panel slots.
TAxis * fXaxis
Definition: TFitEditor.h:124
Int_t CheckFunctionString(const char *str)
Check entered function string.
TGCheckButton * fLinearFit
Definition: TFitEditor.h:99
TGCheckButton * fNoChi2
Definition: TFitEditor.h:100
virtual void DoMinMethod(Int_t)
Set selected minimization method in use.
virtual void DoNoStoreDrawing()
Slot connected to &#39;no storing, no drawing&#39; settings.
TGTextEntry * fEnteredFunc
Definition: TFitEditor.h:79
TF1 * GetFitFunction()
virtual void DoNumericSliderXChanged()
Sincronize the numeric sliders with the graphical one.
TGRadioButton * fNormAdd
Definition: TFitEditor.h:83
TGComboBox * fFuncList
Definition: TFitEditor.h:78
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition: TVirtualPad.h:49
TGTextButton * fFitButton
Definition: TFitEditor.h:72
virtual void DoPrintOpt(Bool_t on)
Slot connected to print option settings.
virtual void DoAdvancedOptions()
Slot connected to advanced option button (opens a dialog).
void MakeTitle(TGCompositeFrame *parent, const char *title)
Create section title in the GUI.
virtual void DoUpdate()
Easy here!
void UpdateGUI()
Set the fit panel GUI according to the selected object.
A doubly linked list.
Definition: TList.h:43
static TFitEditor * fgFitDialog
Definition: TFitEditor.h:157
virtual void DoConvolution(Bool_t on)
Slot connected to addition of predefined functions.
virtual void Show(TVirtualPad *pad, TObject *obj)
Show the fit panel (possible only via context menu).
virtual void Terminate()
Called to delete the fit panel.
EObjectType
Definition: TFitEditor.h:37
virtual void DoUserDialog()
Open a dialog for getting a user defined method.
virtual void DoNormAddition(Bool_t on)
Slot connected to addition of predefined functions.
TList * GetFitObjectListOfFunctions()
TGTextButton * fCloseButton
Definition: TFitEditor.h:74
virtual void RecursiveRemove(TObject *obj)
When obj is deleted, clear fFitObject if fFitObject = obj.
Class to manage histogram axis.
Definition: TAxis.h:30
Double_t & operator[](UInt_t i)
Definition: TFitEditor.h:135
TAxis * fZaxis
Definition: TFitEditor.h:126
TF1 * FindFunction()
This method looks among the functions stored by the fitpanel, the one that is currently selected in t...
Definition: TFitEditor.cxx:188
TGCompositeFrame * fMinimization
Definition: TFitEditor.h:70
TGDoubleHSlider * fSliderY
Definition: TFitEditor.h:108
TGComboBox * fMinMethodList
Definition: TFitEditor.h:148
TGNumberEntryField * fTolerance
Definition: TFitEditor.h:150
TGCheckButton * fDrawSame
Definition: TFitEditor.h:103
Bool_t SetObjectType(TObject *obj)
Check whether the object suitable for fitting and set its type, dimension and method combo box accord...
unsigned int UInt_t
Definition: RtypesCore.h:42
TGDoubleHSlider * fSliderZ
Definition: TFitEditor.h:111
TList * GetListOfFittingFunctions(TObject *obj=0)
virtual void DoUseFuncRange()
virtual void DoClose()
Close the fit panel.
virtual void DoSliderXMoved()
Slot connected to range settings on x-axis.
TVirtualPad * fParentPad
Definition: TFitEditor.h:120
Class adding two functions: c1*f1+c2*f2.
Definition: TF1NormSum.h:26
virtual void DoNumericSliderYChanged()
syncronize the numeric slider with the graphical one.
void GetRanges(ROOT::Fit::DataRange &)
TGRadioButton * fLibFumili
Definition: TFitEditor.h:145
TF1Convolution * fConvFunc
TF1NormSum object.
Definition: TFitEditor.h:128
TGCheckButton * fBestErrors
Definition: TFitEditor.h:91
std::vector< FuncParamData_t > FuncParams_t
Definition: TFitEditor.h:249
void DrawSelection(bool restore=false)
Draws the square around the object showing where the limits for fitting are.
TGComboBox * fMethodList
Definition: TFitEditor.h:98
virtual Option_t * GetDrawOption() const
Get draw options of the selected object.
TGTextButton * fUserButton
Definition: TFitEditor.h:80
virtual void DoDataSet(Int_t sel)
Selects the data set to be fitted.
virtual void DoRobustFit()
Slot connected to &#39;robust fitting&#39; option settings.
virtual void DoEnteredFunction()
Slot connected to entered function in text entry.
The Canvas class.
Definition: TCanvas.h:31
static TFitEditor * GetInstance(TVirtualPad *pad=0, TObject *obj=0)
Static method - opens the fit panel.
Definition: TFitEditor.cxx:343
TGCompositeFrame * fTabContainer
Definition: TFitEditor.h:68
TObject * fFitObject
Definition: TFitEditor.h:121
class describing the range in the coordinates it supports multiple range in a coordinate.
Definition: DataRange.h:34
TGNumberEntry * fSliderXMax
Definition: TFitEditor.h:106
TGTab * fTab
Definition: TFitEditor.h:67
double Double_t
Definition: RtypesCore.h:55
void GetFunctionsFromSystem()
std::vector< TF1 * > fSystemFuncs
Definition: TFitEditor.h:141
void CreateFunctionGroup()
Creates the Frame that contains oll the information about the function.
Definition: TFitEditor.cxx:544
TGComboBox * fTypeFit
Definition: TFitEditor.h:77
TGCheckButton * fUseGradient
Definition: TFitEditor.h:94
TGRadioButton * fAdd
Definition: TFitEditor.h:82
TGLayoutHints * fLayoutNormAdd
Definition: TFitEditor.h:87
TGTextButton * fUpdateButton
Definition: TFitEditor.h:71
virtual void DoSliderYMoved()
Slot connected to range settings on y-axis.
TGCheckButton * fAdd2FuncList
Definition: TFitEditor.h:93
std::vector< FuncParamData_t > fFuncPars
Definition: TFitEditor.h:138
void FillFunctionList(Int_t selected=-1)
Fills the list of functions depending on the type of fit selected.
Mother of all ROOT objects.
Definition: TObject.h:37
TGNumberEntryField * fErrorScale
Definition: TFitEditor.h:149
TAxis * fYaxis
Definition: TFitEditor.h:125
TGRadioButton * fOptVerbose
Definition: TFitEditor.h:118
virtual void DoFit()
Perform a fit with current parameters&#39; settings.
virtual void DoLinearFit()
Slot connected to linear fit settings.
virtual void DoEmptyBinsAllWeights1()
Slot connected to &#39;include emtry bins and forse all weights to 1&#39; setting.
1-Dim function class
Definition: TF1.h:150
void FillMinMethodList(Int_t selected=-1)
Fills the list of methods depending on the minimization library selected.
TGRadioButton * fOptDefault
Definition: TFitEditor.h:117
void CreateMinimizationTab()
Create &#39;Minimization&#39; tab.
Definition: TFitEditor.cxx:899
virtual void DoNoSelection()
Slot called when users close a TCanvas or when the user select no object.
virtual void CloseWindow()
Close fit panel window.
TGHorizontalFrame * fSliderZParent
Definition: TFitEditor.h:114
virtual ~TFitEditor()
Fit editor destructor.
Definition: TFitEditor.cxx:515
TGRadioButton * fLibMinuit
Definition: TFitEditor.h:143
EObjectType fType
Definition: TFitEditor.h:122
TGHorizontalFrame * fSliderYParent
Definition: TFitEditor.h:113
TGNumberEntry * fRobustValue
Definition: TFitEditor.h:116
TGRadioButton * fNone
Definition: TFitEditor.h:81
TGCheckButton * fEmptyBinsWghts1
Definition: TFitEditor.h:97
void variables(TString dataset, TString fin="TMVA.root", TString dirName="InputVariables_Id", TString title="TMVA Input Variables", Bool_t isRegression=kFALSE, Bool_t useTMVAStyle=kTRUE)
void SetEditable(Bool_t)
Switch ON/OFF edit mode.