157#include "RConfigure.h"
189 if ( strcmp(
f->GetName(),
name ) == 0 )
197 for (
fPrevFitIter it = look.first; it != look.second; ++it ) {
199 if ( strcmp(
f->GetName(),
name ) == 0 )
221 if (
dynamic_cast<TF3 *
>(
f) != 0 ) {
229 }
else if (
dynamic_cast<TF2 *
>(
f) != 0 ) {
259 if (npar != (
int) pars.size() ) pars.resize(npar);
260 for (
Int_t i = 0; i < npar; ++i )
276 if (npar > (
int) pars.size() ) pars.resize(npar);
277 for (
Int_t i = 0; i < npar; ++i )
287template<
class FitObject>
291 if (100 == special || 400 == special) {
296 }
else if ( 110 == special || 410 == special ) {
311 static_cast<TGTextLBEntry*
>( dataSet->GetListBox()->GetEntry( dataSet->GetSelected() ) );
312 if (!textEntry)
return;
316 variablesStr = nameStr(nameStr.
First(
'(') + 2, nameStr.
First(
',') - nameStr.
First(
'(') - 3);
318 cutsStr = nameStr( nameStr.
First(
',') + 3, nameStr.
First(
')') - nameStr.
First(
',') - 4 );
335 gROOT->MakeDefCanvas();
414 int parts[] = { 20, 20, 20, 20, 20 };
424 gROOT->GetListOfCleanups()->Add(
this);
448 std::vector<TObject*>
v;
483 if (cw +
size.fWidth < dw) {
484 Int_t gedx = 0, gedy = 0;
486 gedy = (cy > 20) ? cy-20 : 0;
510 this,
"SetFitObject(TVirtualPad *, TObject *, Int_t)");
511 gROOT->GetListOfCleanups()->Remove(
this);
573 bgr -> SetRadioButtonExclusive();
579 fNone -> SetToolTipText(
"No operation defined");
581 fAdd -> SetToolTipText(
"Addition");
583 fNormAdd -> SetToolTipText(
"NormAddition");
585 fConv -> SetToolTipText(
"Convolution");
635 gClient->GetColorByName(
"#336666", color);
925 #ifdef R__HAS_MATHMORE
943 "minimizers to be compiled");
982 TGLabel *errlabel =
new TGLabel(hsv1,
"Error definition (default = 1): ");
985 TGLabel *tollabel =
new TGLabel(hsv1,
"Max tolerance (precision): ");
988 TGLabel *itrlabel =
new TGLabel(hsv1,
"Max number of iterations: ");
1048 fDataSet ->
Connect(
"Selected(Int_t)",
"TFitEditor",
this,
"DoDataSet(Int_t)");
1050 fTypeFit ->
Connect(
"Selected(Int_t)",
"TFitEditor",
this,
"FillFunctionList(Int_t)");
1052 fFuncList ->
Connect(
"Selected(Int_t)",
"TFitEditor",
this,
"DoFunction(Int_t)");
1056 fSetParam ->
Connect(
"Clicked()",
"TFitEditor",
this,
"DoSetParameters()");
1058 fAdd ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoAddition(Bool_t)");
1063 fUseRange ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoUseFuncRange()");
1083 fSliderX ->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderXMoved()");
1084 fSliderXMax ->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderXChanged()");
1085 fSliderXMin ->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderXChanged()");
1089 fSliderY ->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderYMoved()");
1090 fSliderYMax ->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderYChanged()");
1091 fSliderYMin ->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderYChanged()");
1094 fSliderZ ->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderZMoved()");
1100 fLibMinuit ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoLibrary(Bool_t)");
1102 fLibFumili ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoLibrary(Bool_t)");
1103 fLibGSL ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoLibrary(Bool_t)");
1113 fOptQuiet ->
Connect(
"Toggled(Bool_t)",
"TFitEditor",
this,
"DoPrintOpt(Bool_t)");
1200 "SetFitObject(TVirtualPad *, TObject *, Int_t)");
1201 TQObject::Connect(
"TCanvas",
"Closed()",
"TFitEditor",
this,
"DoNoSelection()");
1216 this,
"SetFitObject(TVirtualPad *, TObject *, Int_t)");
1220 gROOT->GetListOfCleanups()->Remove(
this);
1228 if (!
gROOT->GetListOfCleanups()->FindObject(
this))
1229 gROOT->GetListOfCleanups()->Add(
this);
1309 Error(
"UpdateGUI",
"No hist is present - this should not happen, please report."
1310 "The FitPanel might be in an inconsistent state");
1329 if (ixmin > 1 || ixmax < ixrange) {
1348 fSliderX->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderXMoved()");
1349 fSliderXMax->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderXChanged()");
1350 fSliderXMin->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderXChanged()");
1363 Int_t iymin = 0, iymax = 0, iyrange = 0;
1381 if (iymin > 1 || iymax < iyrange) {
1400 fSliderY->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderYMoved()");
1401 fSliderYMax->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderYChanged()");
1402 fSliderYMin->
Connect(
"ValueSet(Long_t)",
"TFitEditor",
this,
"DoNumericSliderYChanged()");
1412 Int_t izmin = 0, izmax = 0, izrange = 0;
1430 if (izmin > 1 || izmax < izrange) {
1439 fSliderZ->
Connect(
"PositionChanged()",
"TFitEditor",
this,
"DoSliderZMoved()");
1477 if ( tmpStr.
Length() == 0 )
1549 if (
gROOT->GetListOfCanvases()->IsEmpty()) {
1586 "SetFitObject(TVirtualPad *, TObject *, Int_t)");
1680 if ( strncmp(
f->GetName(),
"PrevFit", 7) != 0 ) {
1687 if (
f->GetNdim() ==
fDim ||
fDim == 0) {
1696 else if(
fDim == 1 ) {
1699 }
else if(
fDim == 2 ) {
1711 for (
fPrevFitIter it = look.first; it != look.second; ++it ) {
1722 else if (
fDim == 2 )
1793 TIter canvasIter(canvases);
1798 if (
TPad* can =
dynamic_cast<TPad*
>(obj))
1801 else if (
dynamic_cast<TH1*
>(obj)
1802 ||
dynamic_cast<TGraph*
>(obj)
1805 ||
dynamic_cast<THStack*
>(obj)
1806 ||
dynamic_cast<TTree*
>(obj) ) {
1807 bool insertNew =
true;
1809 for ( std::vector<TObject*>::iterator i = objects.begin(); i != objects.end(); ++i )
1810 if ( (*i) == obj ) {
1816 if ( insertNew ) objects.push_back(obj);
1836 std::vector<TObject*> objects;
1844 while ( (obj = (
TObject*) next()) ) {
1846 if (
dynamic_cast<TH1*
>(obj) ||
1848 dynamic_cast<TTree*
>(obj) ) {
1849 objects.push_back(obj);
1864 for ( std::vector<TObject*>::iterator i = objects.begin(); i != objects.end(); ++i ) {
1869 if ( selEntryStr &&
name == selEntryStr )
1890 c->AddEntry(
"Unbinned Likelihood",
kFP_MUBIN);
1993 "Error...",
"2) Verify the entered function string!",
2025 static TF1 *fitFunc =
nullptr;
2032 std::cout <<
"TFitEditor::DoFit - using function " << fitFunc->
GetName() <<
" " << fitFunc << std::endl;
2035 Error(
"DoFit",
"This should have never happend, the fitfunc pointer is NULL! - Please Report" );
2061 FitObject(
gr, fitFunc, fitOpts, mopts, strDrawOpts, drange);
2068 FitObject(mg, fitFunc, fitOpts, mopts, strDrawOpts, drange);
2076 FitObject(g2d, fitFunc, fitOpts, mopts, strDrawOpts, drange);
2099 if ( !tree )
return;
2104 tree->Draw(variables,cuts,
"goff");
2106 auto player = tree->GetPlayer();
2108 Error(
"DoFit",
"Player reference is NULL");
2112 auto selector =
dynamic_cast<TSelectorDraw *
>(player->GetSelector());
2114 Error(
"DoFit",
"Selector reference is NULL");
2119 unsigned int ndim = player->GetDimension();
2121 Error(
"DoFit",
"NDIM == 0");
2125 std::vector<double *> vlist;
2126 for (
unsigned int i = 0; i < ndim; ++i) {
2127 double *
v = selector->GetVal(i);
2128 if (
v != 0) vlist.push_back(
v);
2130 std::cerr <<
"pointer for variable " << i <<
" is zero" << std::endl;
2132 if (vlist.size() != ndim) {
2133 Error(
"DoFit",
"Vector is not complete");
2138 Long64_t nrows = player->GetSelectedRows();
2140 Error(
"DoFit",
"NROWS == 0");
2146 for (
int i = 0; i < std::min(
int(fitdata->
Size()),10); ++i) {
2148 for (
unsigned int j = 0; j < ndim; ++j) {
2149 printf(
" x_%d [%d] = %f \n", j, i,*(fitdata->
Coords(i)+j) );
2171 fitFunc->
Draw(
"same");
2181 if (!strstr(fitFunc->
GetName(),
"PrevFit"))
2187 float xmin = 0.f,
xmax = 0.f,
ymin = 0.f,
ymax = 0.f, zmin = 0.f, zmax = 0.f;
2213 if (save)
gPad = save;
2237 TF1 form(
"tmpCheck", fname);
2239 rvalue = form.
IsValid() ? 0 : -1;
2240 }
else if (
fDim == 2 ) {
2241 TF2 form(
"tmpCheck", fname);
2243 rvalue = form.
IsValid() ? 0 : -1;
2244 }
else if (
fDim == 3 ) {
2245 TF3 form(
"tmpCheck", fname);
2247 rvalue = form.
IsValid() ? 0 : -1;
2295 if (
on)
Info(
"DoNormAddition",
"Normalized addition is selected");
2319 if (
on)
Info(
"DoConvolution",
"Convolution is selected");
2334 if (!textEntry)
return;
2341 if ( className ==
"TTree" ) {
2347 lookStr =
name(0,
name.First(
' '));
2364 char variables[256] = {0};
char cuts[256] = {0};
2365 strlcpy(variables,
"Sin input!", 256);
2367 if ( strcmp ( variables,
"" ) == 0 ) {
2375 TPad* currentPad = NULL;
2377 std::queue<TPad*> stPad;
2380 if (
dynamic_cast<TPad*
>(canvas) )
2381 stPad.push(
dynamic_cast<TPad*
>(canvas));
2384 while ( !stPad.empty() && !found ) {
2385 currentPad = stPad.front();
2389 if ( elem == objSelected ) {
2392 }
else if (
dynamic_cast<TPad*
>(elem) )
2393 stPad.push(
dynamic_cast<TPad*
>(elem) );
2424 bool editable =
false;
2563 "Error...",
"3) Verify the entered function string!",
2734 if (!fitFunc) {
Error(
"DoSetParameters",
"NUll function");
return; }
2811 static Int_t px1old, py1old, px2old, py2old;
2826 Int_t px1,py1,px2,py2;
2850 px1 =
gPad->XtoAbsPixel(xleft);
2852 px2 =
gPad->XtoAbsPixel(xright);
2855 if (
gPad->GetCanvas())
gPad->GetCanvas()->FeedbackMode(
kTRUE);
2856 gPad->SetLineWidth(1);
2857 gPad->SetLineColor(2);
2871 if(save)
gPad = save;
2944 "Info",
"Dialog of user method is not implemented yet",
2996 for (
int i = 0; i < variables.Length() &&
fDim <= 2; ++i )
2997 if (
':' == variables[i] )
fDim += 1;
3008 fDim = ((
TH1*)obj)->GetDimension();
3062 bool isTree =
false;
3069 isTree = strcmp(obj->
ClassName(),
"TTree") == 0;
3071 name =
"No object selected";
3078 if ( selectedEntry ) {
3081 selectedName = selectedName(0, selectedName.
First(
' '));
3082 if (
name.CompareTo(selectedName) == 0 ) {
3093 TString compareName = entry->GetText()->GetString();
3095 compareName = compareName(0, compareName.
First(
' '));
3096 if (
name.CompareTo(compareName) == 0 ) {
3123 while ((obj = next())) {
3297 while ((obj2 = next())) {
3306 if ( strcmp( func->
GetName(), it->second->GetName() ) == 0 )
3308 if ( strcmp( func->
GetName(),
"PrevFitTMP" ) == 0 )
3504 TList *listOfFunctions = 0;
3509 listOfFunctions = ((
TH1 *)
fFitObject)->GetListOfFunctions();
3530 return listOfFunctions;
3546 const unsigned int nfuncs = 16;
3547 const char* fnames[nfuncs] = {
"gaus" ,
"gausn",
"expo",
"landau",
3548 "landaun",
"pol0",
"pol1",
"pol2",
3549 "pol3",
"pol4",
"pol5",
"pol6",
3550 "pol7",
"pol8",
"pol9",
"user"
3554 TIter functionsIter(
gROOT->GetListOfFunctions());
3556 while( ( obj = (
TObject*) functionsIter() ) ) {
3558 if (
TF1* func =
dynamic_cast<TF1*
>(obj) ) {
3559 bool addFunction =
true;
3561 for (
unsigned int i = 0; i < nfuncs; ++i ) {
3562 if ( strcmp( func->GetName(), fnames[i] ) == 0 ) {
3563 addFunction =
false;
3588 std::pair<fPrevFitIter, fPrevFitIter> look =
fPrevFit.equal_range(obj);
3589 for (
fPrevFitIter it = look.first; it != look.second; ++it ) {
3590 retList->
Add(it->second);
3611 "Error...",
"1) Verify the entered function string!",
3619 tmpF1->
Copy(*fitFunc);
3661 if (
fConv -> IsOn())
3670 else if (
fDim == 2 ) {
3673 else if (
fDim == 3 ) {
3686 if ( tmpF1 != 0 && fitFunc != 0 &&
3691 tmpF1->
Copy(*fitFunc);
ULong_t Pixel_t
Pixel value.
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
const Bool_t kIterForward
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
TF1 * copyTF1(TF1 *f)
Copies f into a new TF1 to be stored in the fitpanel with it's own ownership.
void GetParameters(TFitEditor::FuncParams_t &pars, TF1 *func)
Stores the parameters of the given function into pars.
void InitParameters(TF1 *func, FitObject *fitobj)
Parameter initialization for the function.
void GetTreeVarsAndCuts(TGComboBox *dataSet, TString &variablesStr, TString &cutsStr)
Splits the entry in fDataSet to get the selected variables and cuts from the text.
void SetParameters(TFitEditor::FuncParams_t &pars, TF1 *func)
Restore the parameters from pars into the function.
void SearchCanvases(TSeqCollection *canvases, std::vector< TObject * > &objects)
std::multimap< TObject *, TF1 * > FitFuncMap_t
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void SetMWMHints
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void SetWMPosition
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t SetWMSizeHints
R__EXTERN TPluginManager * gPluginMgr
R__EXTERN void * gTQSender
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
class describing the range in the coordinates it supports multiple range in a coordinate.
void AddRange(unsigned int icoord, double xmin, double xmax)
add a range [xmin,xmax] for the new coordinate icoord Adding a range does not delete existing one,...
void GetRange(unsigned int irange, unsigned int icoord, double &xmin, double &xmax) const
get the i-th range for given coordinate.
unsigned int Size() const
return number of fit points
const double * Coords(unsigned int ipoint) const
return a pointer to the coordinates data for the given fit point
Class describing the un-binned data sets (just x coordinates values) of any dimensions.
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
void SetMinimizerType(const char *type)
set minimizer type
static double DefaultTolerance()
static const std::string & DefaultMinimizerType()
void SetErrorDef(double err)
set error def
static int DefaultMaxIterations()
static double DefaultErrorDef()
void SetMinimizerAlgorithm(const char *type)
set minimizer algorithm
void SetTolerance(double tol)
set the tolerance
Allows to create advanced graphics from the last fit made in the fitpanel.
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
Int_t GetLast() const
Return last bin on the axis i.e.
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
Int_t GetFirst() const
Return first bin on the axis i.e.
Int_t GetWindowTopX()
Returns current top x position of window on screen.
Int_t GetWindowTopY()
Returns current top y position of window on screen.
virtual void Selected(TVirtualPad *pad, TObject *obj, Int_t event)
Emit Selected() signal.
void SetCursor(ECursor cursor) override
Set cursor.
UInt_t GetWindowWidth() const
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Class wrapping convolution of two functions.
const char * GetParName(Int_t ipar) const
Class adding two functions: c1*f1+c2*f2.
const char * GetParName(Int_t ipar) const
Int_t GetNpar() const
Return the number of (non constant) parameters including the coefficients: for 2 functions: c1,...
virtual Int_t GetNumber() const
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
virtual Int_t GetNpar() const
virtual TString GetExpFormula(Option_t *option="") const
virtual void SetParent(TObject *p=nullptr)
virtual Double_t * GetParameters() const
void Copy(TObject &f1) const override
Copy this F1 to a new F1.
void Draw(Option_t *option="") override
Draw this function with its current attributes.
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set lower and upper limits for parameter ipar.
virtual void SetParName(Int_t ipar, const char *name)
Set name of parameter number ipar.
virtual Bool_t IsValid() const
Return kTRUE if the function is valid.
virtual void SetParameters(const Double_t *params)
virtual void SetParameter(Int_t param, Double_t value)
virtual void Save(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax)
Save values of function in array fSave.
TClass * IsA() const override
virtual Bool_t AddToGlobalList(Bool_t on=kTRUE)
Add to global list of functions (gROOT->GetListOfFunctions() ) return previous status (true if the fu...
virtual Double_t GetParameter(Int_t ipar) const
A 2-Dim function with parameters.
TClass * IsA() const override
void Save(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax) override
Save values of function in array fSave.
void SetRange(Double_t xmin, Double_t xmax) override
Initialize the upper and lower bounds to draw the function.
A 3-Dim function with parameters.
TClass * IsA() const override
void SetRange(Double_t xmin, Double_t xmax) override
Initialize the upper and lower bounds to draw the function.
Allows to perform, explore and compare various fits.
TList * GetListOfFittingFunctions(TObject *obj=nullptr)
TGCheckButton * fBestErrors
switch on/off option 'improve errors'
TF1 * FindFunction()
This method looks among the functions stored by the fitpanel, the one that is currently selected in t...
TGDoubleHSlider * fSliderX
slider to set fit range along x-axis
static TFitEditor * GetInstance(TVirtualPad *pad=nullptr, TObject *obj=nullptr)
Static method - opens the fit panel.
TFitEditor(const TFitEditor &)
TGComboBox * fMinMethodList
void CloseWindow() override
Close fit panel window.
TGTextButton * fSetParam
open set parameters dialog
void CreateGeneralTab()
Create 'General' tab.
virtual void DoUpdate()
Easy here!
TGLayoutHints * fLayoutNormAdd
layout hints of fNOrmAdd radio button
TGNumberEntry * fSliderXMax
entry to set the maximum in the range
virtual void DoConvolution(Bool_t on)
Slot connected to addition of predefined functions.
TGNumberEntry * fSliderXMin
entry to set the minumum in the range
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
TGCheckButton * fDrawSame
switch on/off fit function drawing
TGRadioButton * fLibMinuit
TGRadioButton * fConv
set convolution mode
TVirtualPad * fParentPad
pad containing the object
TGRadioButton * fOptDefault
set default printing mode
TGCheckButton * fLinearFit
switch on/off linear fit option
TGRadioButton * fLibMinuit2
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
switch on/off option 'use function range'
virtual void DoSliderXMoved()
Slot connected to range settings on x-axis.
TGTextButton * fDrawAdvanced
opens a dialog for advanced draw options
TGComboBox * fTypeFit
contains the types of functions to be selected
virtual void DoReset()
Reset all fit parameters.
TGNumberEntryField * fTolerance
TGCheckButton * fNoDrawing
switch on/off 'no drawing' option
TGHorizontalFrame * fSliderZParent
parent of fSliderZ
virtual void DoSetParameters()
Open set parameters dialog.
TGCompositeFrame * fMinimization
minimization tab
TGTab * fTab
tab widget holding the editor
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
! TF1NormSum object
TGComboBox * fMethodList
contains method list
TGDoubleHSlider * fSliderY
slider to set fit range along y-axis
void ShowObjectName(TObject *obj)
Show object name on the top.
static TFitEditor * fgFitDialog
TList * GetFitObjectListOfFunctions()
virtual void DoAdvancedOptions()
Slot connected to advanced option button (opens a dialog).
TGRadioButton * fLibFumili
virtual void DoDataSet(Int_t sel)
Selects the data set to be fitted.
TGRadioButton * fAdd
set addition mode
TGComboBox * BuildMethodList(TGFrame *parent, Int_t id)
Create method list in a combo box.
void CreateMinimizationTab()
Create 'Minimization' tab.
TGRadioButton * fLibGenetics
TGCheckButton * fImproveResults
switch on/off option 'improve fit results'
TGComboBox * fFuncList
contains function list
TF1Convolution * fConvFunc
! TF1Convolution object
TGCheckButton * fUseGradient
switch on/off option 'use gradient'
TGRadioButton * fNormAdd
set normalized addition mode
virtual void SetCanvas(TCanvas *c)
Connect to another canvas.
EObjectType fType
object type info
TGNumberEntryField * fIterations
TGCompositeFrame * fTabContainer
main tab container
virtual void DoFunction(Int_t sel)
Slot connected to predefined fit function settings.
virtual void DoUseFuncRange()
TGComboBox * fDataSet
contains list of data set to be fitted
virtual void ConnectSlots()
Connect GUI signals to fit panel slots.
virtual void DoFit()
Perform a fit with current parameters' settings.
TGRadioButton * fOptVerbose
set printing mode to 'Verbose'
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
opens a dialog for user-defined fit method
~TFitEditor() override
Fit editor destructor.
TGDoubleHSlider * fSliderZ
slider to set fit range along z-axis
TGTextButton * fFitButton
performs fitting
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
TGHorizontalFrame * fSliderYParent
parent of fSliderY
TGCheckButton * fNoChi2
switch on/off option 'No Chi-square'
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.
TGTextButton * fUpdateButton
updates data from gROOT and gDirectory
TGTextEntry * fEnteredFunc
contains user function file name
TGCheckButton * fIntegral
switch on/off option 'integral'
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.
TGNumberEntryField * fErrorScale
void SetEditable(Bool_t) override
Option_t * GetDrawOption() const override
Get draw options of the selected object.
std::vector< FuncParamData_t > FuncParams_t
TGLayoutHints * fLayoutAdd
layout hints of fAdd radio button
TGHorizontalFrame * fSliderXParent
parent of fSliderX
void ProcessTreeInput(TObject *objSelected, Int_t selected, TString variables, TString cuts)
TGCheckButton * fEnableRobust
switch on/off robust option
void DrawSelection(bool restore=false)
Draws the square around the object showing where the limits for fitting are.
TGCheckButton * fEmptyBinsWghts1
switch on/off option 'include empry bins'
virtual void DoSliderZMoved()
Slot connected to range settings on z-axis.
Int_t fDim
object dimension
TGNumberEntry * fSliderYMin
entry to set the minumum in the range
void GetRanges(ROOT::Fit::DataRange &)
std::multimap< TObject *, TF1 * > fPrevFit
TGNumberEntry * fRobustValue
contains robust value for linear fit
TGNumberEntry * fSliderYMax
entry to set the maximum in the range
virtual void DoNoChi2()
Slot connected to 'no chi2' option settings.
TGCheckButton * fAdd2FuncList
switch on/off option 'add to list'
TGCompositeFrame * fGeneral
general tab
virtual void DisconnectSlots()
Disconnect GUI signals from fit panel slots.
void GetFunctionsFromSystem()
TGRadioButton * fOptQuiet
set printing mode to 'Quiet'
void FillMinMethodList(Int_t selected=-1)
Fills the list of methods depending on the minimization library selected.
TGCheckButton * fNoStoreDrawing
switch on/off 'no store/drwing' option
TGCheckButton * fAllWeights1
switch on/off option 'all weights=1'
TGRadioButton * fNone
set no operation mode
TGLayoutHints * fLayoutConv
layout hints of fConv radio button
TGTextButton * fResetButton
resets fit parameters
void CreateFunctionGroup()
Creates the Frame that contains oll the information about the function.
TGLayoutHints * fLayoutNone
layout hints of fNone radio button
TGLabel * fSelLabel
contains selected fit function
Int_t CheckFunctionString(const char *str)
Check entered function string.
void RecursiveRemove(TObject *obj) override
When obj is deleted, clear fFitObject if fFitObject = obj.
TObject * fFitObject
selected object to fit
virtual void DoRobustFit()
Slot connected to 'robust fitting' option settings.
TGTextButton * fCloseButton
close the fit panel
virtual void DoAddition(Bool_t on)
Slot connected to addition of predefined functions.
virtual void DoUserDialog()
Open a dialog for getting a user defined method.
virtual void DoNumericSliderXChanged()
Sincronize the numeric sliders with the graphical one.
Create a dialog for fit function parameter settings.
const TGWindow * GetRoot() const
Returns current root (i.e.
UInt_t GetDisplayWidth() const
Get display width.
A combobox (also known as a drop down listbox) allows the selection of one item out of a list of item...
virtual Int_t GetSelected() const
void RemoveAll() override
Remove all entries from combo box.
virtual TGLBEntry * GetSelectedEntry() const
virtual void AddEntry(TGString *s, Int_t id)
virtual void RemoveEntry(Int_t id=-1)
Remove entry. If id == -1, the currently selected entry is removed.
virtual TGListBox * GetListBox() const
virtual void Select(Int_t id, Bool_t emit=kTRUE)
Make the selected item visible in the combo box window and emit signals according to the second param...
virtual void InsertEntry(TGString *s, Int_t id, Int_t afterID)
virtual TGLBEntry * FindEntry(const char *s) const
Find entry by name.
virtual Int_t GetNumberOfEntries() const
The base class for composite widgets (menu bars, list boxes, etc.).
TGDimension GetDefaultSize() const override
std::cout << fWidth << "x" << fHeight << std::endl;
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Int_t GetState(TGFrame *f) const
Get state of sub frame.
virtual void Cleanup()
Cleanup and delete all objects contained in this composite frame.
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
void Layout() override
Layout the elements of the composite frame.
virtual void ShowFrame(TGFrame *f)
Show sub frame.
void SetCleanup(Int_t mode=kLocalCleanup) override
Turn on automatic cleanup of child frames in dtor.
void ChangeOptions(UInt_t options) override
Change composite frame options. Options is an OR of the EFrameTypes.
virtual void HideFrame(TGFrame *f)
Hide sub frame.
Dragging the slider will generate the event:
virtual Float_t GetMaxPosition() const
virtual void GetPosition(Float_t &min, Float_t &max) const
virtual Float_t GetMinPosition() const
virtual void SetRange(Float_t min, Float_t max)
virtual void SetScale(Int_t scale)
virtual void SetPosition(Float_t min, Float_t max)
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0) override
Move and/or resize the frame.
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
virtual UInt_t GetDefaultHeight() const
void MapWindow() override
map window
virtual UInt_t GetOptions() const
void UnmapWindow() override
unmap window
A composite frame with a border and a title.
A horizontal 3D line is a line that typically separates a toolbar from the menubar.
A composite frame that layout their children in horizontal way.
This class handles GUI labels.
virtual void SetTextColor(Pixel_t color, Bool_t global=kFALSE)
Changes text color.
virtual void SetText(TGString *newText)
Set new text in label.
This class describes layout hints used by the layout classes.
A listbox is a box, possibly with scrollbar, containing entries.
virtual Int_t GetNumberOfEntries() const
void Resize(UInt_t w, UInt_t h) override
Resize the listbox widget.
virtual TGLBEntry * GetEntry(Int_t id) const
Returns list box entry with specified id.
Defines top level windows that interact with the system Window Manager.
void SetClassHints(const char *className, const char *resourceName)
Set the windows class and resource name.
void SetIconName(const char *name)
Set window icon name. This is typically done via the window manager.
void SetWMSize(UInt_t w, UInt_t h)
Give the window manager a window size hint.
void SetWindowName(const char *name=nullptr) override
Set window name. This is typically done via the window manager.
virtual Long_t GetIntNumber() const
Get the numeric value (integer representation).
virtual void SetNumber(Double_t val, Bool_t emit=kTRUE)
Set the numeric value (floating point representation).
virtual Double_t GetNumber() const
Get the numeric value (floating point representation).
void ReturnPressed() override
Return was pressed.
virtual void SetIntNumber(Long_t val, Bool_t emit=kTRUE)
Set the numeric value (integer representation).
TGNumberEntry is a number entry input widget with up/down buttons.
TGNumberEntryField * GetNumberEntry() const
Get the number entry field.
virtual void SetLimits(ELimit limits=TGNumberFormat::kNELNoLimits, Double_t min=0, Double_t max=1)
virtual void SetState(Bool_t enable=kTRUE)
Set the active state.
virtual Double_t GetNumber() const
virtual void SetNumber(Double_t val, Bool_t emit=kTRUE)
TGClient * fClient
Connection to display server.
Provides a StatusBar widget.
virtual void SetText(TGString *text, Int_t partidx=0)
Set text in partition partidx in status bar.
virtual void SetParts(Int_t npart)
Divide the status bar in npart equal sized parts.
const char * GetString() const
A tab widget contains a set of composite frames each with a little tab with a name (like a set of fol...
virtual TGCompositeFrame * AddTab(TGString *text)
Add a tab to the tab widget.
A text buffer is used in several widgets, like TGTextEntry, TGFileDialog, etc.
Yield an action as soon as it is clicked.
A TGTextEntry is a one line text input widget.
const char * GetTitle() const override
Returns title of object.
const char * GetText() const
virtual void SelectAll()
Selects all text (i.e.
virtual void SetAlignment(ETextJustification mode=kTextLeft)
Sets the alignment of the text entry.
virtual void SetToolTipText(const char *text, Long_t delayms=500)
Set tool tip text associated with this text entry.
virtual void SetText(const char *text, Bool_t emit=kTRUE)
Sets text entry to text, clears the selection and moves the cursor to the end of the line.
Text string listbox entries.
const TGString * GetText() const
const char * GetTitle() const override
Returns title of object.
A composite frame that layout their children in vertical way.
virtual const TGWindow * GetMainFrame() const
Returns top level main frame.
const TGWindow * GetParent() const
virtual Bool_t IsMapped()
Returns kTRUE if window is mapped on screen, kFALSE otherwise.
Graphics object made of three arrays X, Y and Z with the same number of points each.
A TGraph is an object made of two arrays X and Y with npoints each.
TH1 is the base class of all histogram classes in ROOT.
virtual Int_t GetDimension() const
The Histogram stack class.
Option_t * GetOption() const override
Returns the object option stored in the list.
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void Add(TObject *obj) override
A TMultiGraph is a collection of TGraph (or derived) objects.
const char * GetName() const override
Returns name of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
void ls(Option_t *option="") const override
List TNamed name and title.
Mother of all ROOT objects.
virtual const char * GetName() const
Returns name of object.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
virtual const char * GetTitle() const
Returns title of object.
The most important graphics class in the ROOT system.
TList * GetListOfPrimitives() const override
TPluginHandler * FindHandler(const char *base, const char *uri=nullptr)
Returns the handler if there exists a handler for the specified URI.
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
Bool_t Disconnect(const char *signal=nullptr, void *receiver=nullptr, const char *slot=nullptr)
Disconnects signal of this object from slot of receiver.
A specialized TSelector for TTree::Draw.
Sequenceable collection abstract base class.
Ssiz_t First(char c) const
Find first occurrence of a character c.
const char * Data() const
TString & Append(const char *cs)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
virtual Int_t Sizeof() const
Returns size string will occupy on I/O buffer.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
A TTree represents a columnar dataset.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
virtual void Modified(Bool_t flag=1)=0
virtual Int_t YtoAbsPixel(Double_t y) const =0
virtual Double_t GetUymax() const =0
virtual TList * GetListOfPrimitives() const =0
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t XtoAbsPixel(Double_t x) const =0
virtual Double_t GetUxmax() const =0
virtual Double_t GetUymin() const =0
virtual Double_t GetUxmin() const =0
virtual TCanvas * GetCanvas() const =0
std::multimap< TObject *, TF1 * >::iterator fPrevFitIter
leg AddEntry(h1,"Histogram filled with random numbers","f")
TFitResultPtr FitObject(TH1 *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
fitting function for a TH1 (called from TH1::Fit)
void Init2DGaus(const ROOT::Fit::BinData &data, TF1 *f1)
compute initial parameter for 2D gaussian function given the fit data Set the sigma limits for zero t...
TFitResultPtr UnBinFit(ROOT::Fit::UnBinData *data, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption)
fit an unbin data set (from tree or from histogram buffer) using a TF1 pointer and fit options.
void FillData(BinData &dv, const TH1 *hist, TF1 *func=nullptr)
fill the data vector from a TH1.
void InitGaus(const ROOT::Fit::BinData &data, TF1 *f1)
compute initial parameter for gaussian function given the fit data Set the sigma limits for zero top ...