Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
FitConfig.h
Go to the documentation of this file.
1// @(#)root/mathcore:$Id$
2// Author: L. Moneta Thu Sep 21 16:21:29 2006
3
4/**********************************************************************
5 * *
6 * Copyright (c) 2006 LCG ROOT Math Team, CERN/PH-SFT *
7 * *
8 * *
9 **********************************************************************/
10
11// Header file for class FitConfig
12
13#ifndef ROOT_Fit_FitConfig
14#define ROOT_Fit_FitConfig
15
16
18
20
22
23#include "TMath.h"
24
25#include <vector>
26#include <string>
27
28namespace ROOT {
29
30 namespace Math {
31
32 class Minimizer;
33 class MinimizerOptions;
34 }
35
36 namespace Fit {
37
38 class FitResult;
39
40//___________________________________________________________________________________
41/**
42 Class describing the configuration of the fit, options and parameter settings
43 using the ROOT::Fit::ParameterSettings class
44
45 @ingroup FitMain
46*/
47class FitConfig {
48
49public:
50
51 /**
52 Default constructor
53 */
54 FitConfig (unsigned int npar = 0);
55
56
57 /*
58 Copy constructor
59 */
60 FitConfig(const FitConfig & rhs);
61
62 /**
63 Destructor
64 */
65 ~FitConfig ();
66
67 /*
68 Assignment operator
69 */
70 FitConfig & operator= (const FitConfig & rhs);
71
72
73 /**
74 get the parameter settings for the i-th parameter (const method)
75 */
76 const ParameterSettings & ParSettings(unsigned int i) const { return fSettings.at(i); }
77
78 /**
79 get the parameter settings for the i-th parameter (non-const method)
80 */
81 ParameterSettings & ParSettings(unsigned int i) { return fSettings.at(i); }
82
83 /**
84 get the vector of parameter settings (const method)
85 */
86 const std::vector<ROOT::Fit::ParameterSettings> & ParamsSettings() const { return fSettings; }
87
88 /**
89 get the vector of parameter settings (non-const method)
90 */
91 std::vector<ROOT::Fit::ParameterSettings> & ParamsSettings() { return fSettings; }
92
93 /**
94 number of parameters settings
95 */
96 unsigned int NPar() const { return fSettings.size(); }
97
98 /**
99 return a vector of stored parameter values (i.e initial fit parameters)
100 */
101 std::vector<double> ParamsValues() const;
102
103
104 /**
105 set the parameter settings from a model function.
106 Create always new parameter setting list from a given model function
107 */
108 template <class T>
110 // initialize from model function
111 // set the parameters values from the function
112 unsigned int npar = func.NPar();
113 const double *begin = func.Parameters();
114 if (!begin) {
115 fSettings = std::vector<ParameterSettings>(npar);
116 return;
117 }
118
119 fSettings.clear();
120 fSettings.reserve(npar);
121 const double *end = begin + npar;
122 unsigned int i = 0;
123 for (const double *ipar = begin; ipar != end; ++ipar) {
124 double val = *ipar;
125 double step = 0.3 * fabs(val); // step size is 30% of par value
126 // double step = 2.0*fabs(val); // step size is 30% of par value
127 if (val == 0) step = 0.3;
128
129 fSettings.push_back(ParameterSettings(func.ParameterName(i), val, step));
130#ifdef DEBUG
131 std::cout << "FitConfig: add parameter " << func.ParameterName(i) << " val = " << val << std::endl;
132#endif
133 i++;
134 }
135 }
136
137 /**
138 set the parameter settings from number of parameters and a vector of values and optionally step values. If there are not existing or number of parameters does not match existing one, create a new parameter setting list.
139 */
140 void SetParamsSettings(unsigned int npar, const double * params, const double * vstep = nullptr);
141
142 /*
143 Set the parameter settings from a vector of parameter settings
144 */
145 void SetParamsSettings (const std::vector<ROOT::Fit::ParameterSettings>& pars) {
146 fSettings = pars;
147 }
148
149
150 /*
151 Set the parameter settings from a fit Result
152 */
153 void SetFromFitResult (const FitResult & rhs);
154
155
156
157 /**
158 create a new minimizer according to chosen configuration
159 */
161
162
163
164 /**
165 access to the minimizer control parameter (non const method)
166 */
168
169
170 /**
171 set all the minimizer options using class MinimizerOptions
172 */
174
175
176 /**
177 set minimizer type
178 */
179 void SetMinimizer(const char *type, const char *algo = nullptr) {
182 }
183
184 /**
185 return type of minimizer package
186 */
187 const std::string & MinimizerType() const { return fMinimizerOpts.MinimizerType(); }
188
189 /**
190 return type of minimizer algorithms
191 */
192 const std::string & MinimizerAlgoType() const { return fMinimizerOpts.MinimizerAlgorithm(); }
193
194 /**
195 * return Minimizer full name (type / algorithm)
196 */
197 std::string MinimizerName() const;
198
199 /**
200 flag to check if resulting errors are be normalized according to chi2/ndf
201 */
202 bool NormalizeErrors() const { return fNormErrors; }
203
204 ///do analysis for parabolic errors
205 bool ParabErrors() const { return fParabErrors; }
206
207 ///do minos errors analysis on the parameters
208 bool MinosErrors() const { return fMinosErrors; }
209
210 ///Update configuration after a fit using the FitResult
211 bool UpdateAfterFit() const { return fUpdateAfterFit; }
212
213 ///Apply Weight correction for error matrix computation
214 bool UseWeightCorrection() const { return fWeightCorr; }
215
216
217 /// return vector of parameter indices for which the Minos Error will be computed
218 const std::vector<unsigned int> & MinosParams() const { return fMinosParams; }
219
220 /**
221 set the option to normalize the error on the result according to chi2/ndf
222 */
223 void SetNormErrors(bool on = true) { fNormErrors= on; }
224
225 ///set parabolic errors
226 void SetParabErrors(bool on = true) { fParabErrors = on; }
227
228 ///set Minos errors computation to be performed after fitting
229 void SetMinosErrors(bool on = true) { fMinosErrors = on; }
230
231 ///apply the weight correction for error matrix computation
232 void SetWeightCorrection(bool on = true) { fWeightCorr = on; }
233
234 /// set parameter indices for running Minos
235 /// this can be used for running Minos on a subset of parameters - otherwise is run on all of them
236 /// if MinosErrors() is set
237 void SetMinosErrors(const std::vector<unsigned int> & paramInd ) {
238 fMinosErrors = true;
239 fMinosParams = paramInd;
240 }
241
242 ///Update configuration after a fit using the FitResult
243 void SetUpdateAfterFit(bool on = true) { fUpdateAfterFit = on; }
244
245
246 /**
247 static function to control default minimizer type and algorithm
248 */
249 static void SetDefaultMinimizer(const char *type, const char *algo = nullptr);
250
251
252
253
254protected:
255
256
257private:
258
259 bool fNormErrors; ///< flag for error normalization
260 bool fParabErrors; ///< get correct parabolic errors estimate (call Hesse after minimizing)
261 bool fMinosErrors; ///< do full error analysis using Minos
262 bool fUpdateAfterFit; ///< update the configuration after a fit using the result
263 bool fWeightCorr; ///< apply correction to errors for weights fits
264
265 std::vector<ROOT::Fit::ParameterSettings> fSettings; ///< vector with the parameter settings
266 std::vector<unsigned int> fMinosParams; ///< vector with the parameter indices for running Minos
267
268 ROOT::Math::MinimizerOptions fMinimizerOpts; ///< minimizer control parameters including name and algo type
269
270};
271
272 } // end namespace Fit
273
274} // end namespace ROOT
275
276
277#endif /* ROOT_Fit_FitConfig */
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 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 winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
Definition FitConfig.h:47
const std::vector< unsigned int > & MinosParams() const
return vector of parameter indices for which the Minos Error will be computed
Definition FitConfig.h:218
ParameterSettings & ParSettings(unsigned int i)
get the parameter settings for the i-th parameter (non-const method)
Definition FitConfig.h:81
bool UpdateAfterFit() const
Update configuration after a fit using the FitResult.
Definition FitConfig.h:211
std::vector< unsigned int > fMinosParams
vector with the parameter indices for running Minos
Definition FitConfig.h:266
void SetMinimizer(const char *type, const char *algo=nullptr)
set minimizer type
Definition FitConfig.h:179
void SetMinosErrors(bool on=true)
set Minos errors computation to be performed after fitting
Definition FitConfig.h:229
bool fNormErrors
flag for error normalization
Definition FitConfig.h:259
std::vector< double > ParamsValues() const
return a vector of stored parameter values (i.e initial fit parameters)
const std::string & MinimizerAlgoType() const
return type of minimizer algorithms
Definition FitConfig.h:192
std::vector< ROOT::Fit::ParameterSettings > & ParamsSettings()
get the vector of parameter settings (non-const method)
Definition FitConfig.h:91
void SetNormErrors(bool on=true)
set the option to normalize the error on the result according to chi2/ndf
Definition FitConfig.h:223
void SetParamsSettings(const std::vector< ROOT::Fit::ParameterSettings > &pars)
Definition FitConfig.h:145
bool NormalizeErrors() const
flag to check if resulting errors are be normalized according to chi2/ndf
Definition FitConfig.h:202
void SetMinosErrors(const std::vector< unsigned int > &paramInd)
set parameter indices for running Minos this can be used for running Minos on a subset of parameters ...
Definition FitConfig.h:237
bool ParabErrors() const
do analysis for parabolic errors
Definition FitConfig.h:205
void SetMinimizerOptions(const ROOT::Math::MinimizerOptions &minopt)
set all the minimizer options using class MinimizerOptions
void SetWeightCorrection(bool on=true)
apply the weight correction for error matrix computation
Definition FitConfig.h:232
unsigned int NPar() const
number of parameters settings
Definition FitConfig.h:96
void SetUpdateAfterFit(bool on=true)
Update configuration after a fit using the FitResult.
Definition FitConfig.h:243
void SetParamsSettings(unsigned int npar, const double *params, const double *vstep=nullptr)
set the parameter settings from number of parameters and a vector of values and optionally step value...
std::vector< ROOT::Fit::ParameterSettings > fSettings
vector with the parameter settings
Definition FitConfig.h:265
std::string MinimizerName() const
return Minimizer full name (type / algorithm)
bool UseWeightCorrection() const
Apply Weight correction for error matrix computation.
Definition FitConfig.h:214
const std::vector< ROOT::Fit::ParameterSettings > & ParamsSettings() const
get the vector of parameter settings (const method)
Definition FitConfig.h:86
bool fParabErrors
get correct parabolic errors estimate (call Hesse after minimizing)
Definition FitConfig.h:260
ROOT::Math::MinimizerOptions fMinimizerOpts
minimizer control parameters including name and algo type
Definition FitConfig.h:268
~FitConfig()
Destructor.
Definition FitConfig.cxx:52
ROOT::Math::Minimizer * CreateMinimizer()
create a new minimizer according to chosen configuration
void SetParabErrors(bool on=true)
set parabolic errors
Definition FitConfig.h:226
bool fMinosErrors
do full error analysis using Minos
Definition FitConfig.h:261
static void SetDefaultMinimizer(const char *type, const char *algo=nullptr)
static function to control default minimizer type and algorithm
void SetFromFitResult(const FitResult &rhs)
Definition FitConfig.cxx:80
void CreateParamsSettings(const ROOT::Math::IParamMultiFunctionTempl< T > &func)
set the parameter settings from a model function.
Definition FitConfig.h:109
const std::string & MinimizerType() const
return type of minimizer package
Definition FitConfig.h:187
bool fWeightCorr
apply correction to errors for weights fits
Definition FitConfig.h:263
const ParameterSettings & ParSettings(unsigned int i) const
get the parameter settings for the i-th parameter (const method)
Definition FitConfig.h:76
bool fUpdateAfterFit
update the configuration after a fit using the result
Definition FitConfig.h:262
FitConfig & operator=(const FitConfig &rhs)
Definition FitConfig.cxx:62
ROOT::Math::MinimizerOptions & MinimizerOptions()
access to the minimizer control parameter (non const method)
Definition FitConfig.h:167
bool MinosErrors() const
do minos errors analysis on the parameters
Definition FitConfig.h:208
class containing the result of the fit and all the related information (fitted parameter values,...
Definition FitResult.h:47
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
virtual const double * Parameters() const =0
Access the parameter values.
virtual std::string ParameterName(unsigned int i) const
Return the name of the i-th parameter (starting from zero) Overwrite if want to avoid the default nam...
virtual unsigned int NPar() const =0
Return the number of Parameters.
IParamFunction interface (abstract class) describing multi-dimensional parametric functions It is a d...
void SetMinimizerType(const char *type)
set minimizer type
const std::string & MinimizerAlgorithm() const
type of algorithm
const std::string & MinimizerType() const
type of minimizer
void SetMinimizerAlgorithm(const char *type)
set minimizer algorithm
Abstract Minimizer class, defining the interface for the various minimizer (like Minuit2,...
Definition Minimizer.h:117
RooCmdArg Minimizer(const char *type, const char *alg=nullptr)
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
Definition HFitImpl.cxx:133
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...