45 fUpdateAfterFit(true),
65 if (
this == &rhs)
return *
this;
87 unsigned int npar = result.
NPar();
93 for (
unsigned int i = 0; i < npar; ++i) {
102 if (lower == -std::numeric_limits<double>::infinity())
fSettings[i].SetUpperLimit(upper);
103 else if (upper == std::numeric_limits<double>::infinity())
fSettings[i].SetLowerLimit(lower);
104 else fSettings[i].SetLimits(lower,upper);
124 size_t pos = minname.find(
" / ");
125 if (pos != std::string::npos) {
126 std::string minimType = minname.substr(0,pos);
127 std::string algoType = minname.substr(pos+3,minname.length() );
140 fSettings = std::vector<ParameterSettings>(npar);
144 bool createNew =
false;
151 const double * end = params+npar;
152 for (
const double * ipar = params; ipar != end; ++ipar) {
158 if (val == 0) step = 0.3;
196 std::string minim2 =
"Minuit";
197 if (minimType ==
"Minuit") minim2 =
"Minuit2";
198 if (minimType != minim2 ) {
199 std::string msg =
"Could not create the " + minimType +
" minimizer. Try using the minimizer " + minim2;
203 MATH_ERROR_MSG(
"FitConfig::CreateMinimizer",
"Could not create the Minuit2 minimizer");
209 std::string msg =
"Could not create the Minimizer " + minimType;
219 int maxfcn = 1000 + 100*npar + 5*npar*npar;
244 if ((
name.find(
"Fumili") == std::string::npos) && (
name.find(
"GSLMultiFit") == std::string::npos)) {
263 std::vector<double> params(
NPar() );
264 for (
unsigned int i = 0; i < params.size(); ++i) {
#define MATH_ERROR_MSG(loc, str)
#define MATH_WARN_MSG(loc, str)
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
void SetParamsSettings(unsigned int npar, const double *params, const double *vstep=0)
set the parameter settings from number of parameters and a vector of values and optionally step value...
std::vector< unsigned int > fMinosParams
FitConfig(unsigned int npar=0)
Default constructor.
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
void SetNormErrors(bool on=true)
set the option to normalize the error on the result according to chi2/ndf
void SetMinimizer(const char *type, const char *algo=0)
set minimizer type
void SetMinimizerOptions(const ROOT::Math::MinimizerOptions &minopt)
set all the minimizer options using class MinimizerOptions
unsigned int NPar() const
number of parameters settings
std::vector< ROOT::Fit::ParameterSettings > fSettings
std::string MinimizerName() const
return Minimizer full name (type / algorithm)
ROOT::Math::MinimizerOptions fMinimizerOpts
ROOT::Math::Minimizer * CreateMinimizer()
create a new minimizer according to chosen configuration
void SetFromFitResult(const FitResult &rhs)
static void SetDefaultMinimizer(const char *type, const char *algo=0)
static function to control default minimizer type and algorithm
const std::string & MinimizerType() const
return type of minimizer package
FitConfig & operator=(const FitConfig &rhs)
class containg the result of the fit and all the related information (fitted parameter values,...
bool NormalizedErrors() const
flag to chek if errors are normalized
bool IsParameterFixed(unsigned int ipar) const
query if a parameter is fixed
double Error(unsigned int i) const
parameter error by index
double Value(unsigned int i) const
parameter value by index
const std::string & MinimizerType() const
minimization quantities
bool ParameterBounds(unsigned int ipar, double &lower, double &upper) const
retrieve parameter bounds - return false if parameter is not bound
bool HasMinosError(unsigned int i) const
query if parameter i has the Minos error
unsigned int NPar() const
total number of parameters (abbreviation)
std::string ParName(unsigned int i) const
name of the parameter
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
static ROOT::Math::Minimizer * CreateMinimizer(const std::string &minimizerType="", const std::string &algoType="")
static method to create the corrisponding Minimizer given the string Supported Minimizers types are: ...
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
static void SetDefaultMinimizer(const char *type, const char *algo=0)
int Strategy() const
strategy
double Tolerance() const
absolute tolerance
double Precision() const
precision in the objective funciton calculation (value <=0 means left to default)
void SetMinimizerType(const char *type)
set minimizer type
const std::string & MinimizerAlgorithm() const
type of algorithm
double ErrorDef() const
error definition
static const std::string & DefaultMinimizerType()
static const std::string & DefaultMinimizerAlgo()
const std::string & MinimizerType() const
type of minimizer
unsigned int MaxIterations() const
max iterations
unsigned int MaxFunctionCalls() const
max number of function calls
int PrintLevel() const
non-static methods for retrieving options
void SetMinimizerAlgorithm(const char *type)
set minimizer algorithm
Abstract Minimizer class, defining the interface for the various minimizer (like Minuit2,...
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
void SetErrorDef(double up)
set scale for calculating the errors
void SetValidError(bool on)
flag to check if minimizer needs to perform accurate error analysis (e.g. run Hesse for Minuit)
void SetTolerance(double tol)
set the tolerance
void SetPrintLevel(int level)
set print level
void SetStrategy(int strategyLevel)
set the strategy
void SetPrecision(double prec)
set in the minimizer the objective function evaluation precision ( a value <=0 means the minimizer wi...
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
std::string ToString(const T &val)
Utility function for conversion to strings.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...