44 fUpdateAfterFit(true),
64 if (
this == &rhs)
return *
this;
86 unsigned int npar =
result.NPar();
92 for (
unsigned int i = 0; i < npar; ++i) {
93 if (
result.IsParameterFixed(i) )
100 if (
result.ParameterBounds(i,lower,upper) ) {
101 if (lower == -std::numeric_limits<double>::infinity())
fSettings[i].SetUpperLimit(upper);
102 else if (upper == std::numeric_limits<double>::infinity())
fSettings[i].SetLowerLimit(lower);
103 else fSettings[i].SetLimits(lower,upper);
107 if (
result.HasMinosError(i) ) {
122 const std::string & minname =
result.MinimizerType();
123 size_t pos = minname.find(
" / ");
124 if (pos != std::string::npos) {
125 std::string minimType = minname.substr(0,pos);
126 std::string algoType = minname.substr(pos+3,minname.length() );
138 if (params ==
nullptr) {
139 fSettings = std::vector<ParameterSettings>(npar);
143 bool createNew =
false;
150 const double * end = params+npar;
151 for (
const double * ipar = params; ipar != end; ++ipar) {
154 if (vstep ==
nullptr) {
155 step = 0.3*std::fabs(val);
157 if (val == 0) step = 0.3;
193 if (min ==
nullptr) {
195 std::string minim2 =
"Minuit";
196 if (minimType ==
"Minuit") minim2 =
"Minuit2";
197 if (minimType != minim2 ) {
198 std::string msg =
"Could not create the " + minimType +
" minimizer. Try using the minimizer " + minim2;
201 if (min ==
nullptr) {
202 MATH_ERROR_MSG(
"FitConfig::CreateMinimizer",
"Could not create the Minuit2 minimizer");
208 std::string msg =
"Could not create the Minimizer " + minimType;
218 int maxfcn = 1000 + 100*npar + 5*npar*npar;
245 if ((
name.find(
"Fumili") == std::string::npos) && (
name.find(
"GSLMultiFit") == std::string::npos)) {
264 std::vector<double> params(
NPar() );
265 for (
unsigned int i = 0; i < params.size(); ++i) {
#define MATH_ERROR_MSG(loc, str)
#define MATH_WARN_MSG(loc, str)
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 result
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...
std::vector< unsigned int > fMinosParams
vector with the parameter indices for running Minos
FitConfig(unsigned int npar=0)
Default constructor.
void SetMinimizer(const char *type, const char *algo=nullptr)
set minimizer type
bool fNormErrors
flag for error normalization
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 SetMinimizerOptions(const ROOT::Math::MinimizerOptions &minopt)
set all the minimizer options using class MinimizerOptions
unsigned int NPar() const
number of parameters settings
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
std::string MinimizerName() const
return Minimizer full name (type / algorithm)
bool fParabErrors
get correct parabolic errors estimate (call Hesse after minimizing)
ROOT::Math::MinimizerOptions fMinimizerOpts
minimizer control parameters including name and algo type
ROOT::Math::Minimizer * CreateMinimizer()
create a new minimizer according to chosen configuration
bool fMinosErrors
do full error analysis using Minos
static void SetDefaultMinimizer(const char *type, const char *algo=nullptr)
static function to control default minimizer type and algorithm
void SetFromFitResult(const FitResult &rhs)
const std::string & MinimizerType() const
return type of minimizer package
bool fWeightCorr
apply correction to errors for weights fits
bool fUpdateAfterFit
update the configuration after a fit using the result
FitConfig & operator=(const FitConfig &rhs)
class containing the result of the fit and all the related information (fitted parameter values,...
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 corresponding Minimizer given the string Supported Minimizers types are: ...
void SetMaxFunctionCalls(unsigned int maxfcn)
set maximum of function calls
int Strategy() const
strategy
const IOptions * ExtraOptions() const
return extra options (NULL pointer if they are not present)
double Tolerance() const
absolute tolerance
double Precision() const
precision in the objective function 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 void SetDefaultMinimizer(const char *type, const char *algo=nullptr)
Set the default Minimizer type and corresponding algorithms.
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
void SetExtraOptions(const IOptions &extraOptions)
set only the extra options
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.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...