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