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