61 if (prevErrorIgnoreLevel < 1001) {
63 return prevErrorIgnoreLevel;
101 std::string algoname(
type);
103 std::transform(algoname.begin(), algoname.end(), algoname.begin(), (
int(*)(
int)) tolower );
106 if (algoname ==
"simplex") algoType =
kSimplex;
107 if (algoname ==
"minimize" ) algoType =
kCombined;
108 if (algoname ==
"scan" ) algoType =
kScan;
109 if (algoname ==
"fumili" ) algoType =
kFumili;
166 if (
this == &rhs)
return *
this;
192 std::string txtmsg =
"Parameter " +
name +
" has zero or invalid step size - consider it as constant ";
200 if ( minuit2Index != ivar) {
201 std::string txtmsg(
"Wrong index used for the variable " +
name);
203 MN_INFO_VAL2(
"Minuit2Minimizer::SetVariable",minuit2Index);
239 double step = ( val != 0) ? 0.1 * std::abs(val) : 0.1;
271 if (
n== 0)
return false;
272 for (
unsigned int ivar = 0; ivar <
n; ++ivar)
365 MN_ERROR_MSG(
"Minuit2Minimizer: Wrong Fit method function for Fumili");
383 MN_ERROR_MSG(
"Minuit2Minimizer: Wrong Fit method function for Fumili");
394 MN_ERROR_MSG2(
"Minuit2Minimizer::Minimize",
"FCN function has not been set");
411 if (printLevel >=1) {
413 int maxfcn_used = maxfcn;
414 if (maxfcn_used == 0) {
416 maxfcn_used = 200 + 100*nvar + 5*nvar*nvar;
418 std::cout <<
"Minuit2Minimizer: Minimize with max-calls " << maxfcn_used
419 <<
" convergence for edm < " << tol <<
" strategy "
420 << strategyLevel << std::endl;
447 minuit2Opt->
GetValue(
"GradientNCycles",nGradCycles);
448 minuit2Opt->
GetValue(
"HessianNCycles",nHessCycles);
449 minuit2Opt->
GetValue(
"HessianGradientNCycles",nHessGradCycles);
451 minuit2Opt->
GetValue(
"GradientTolerance",gradTol);
452 minuit2Opt->
GetValue(
"GradientStepTolerance",gradStepTol);
453 minuit2Opt->
GetValue(
"HessianStepTolerance",hessStepTol);
454 minuit2Opt->
GetValue(
"HessianG2Tolerance",hessG2Tol);
465 int storageLevel = 1;
466 bool ret = minuit2Opt->
GetValue(
"StorageLevel",storageLevel);
469 if (printLevel > 0) {
470 std::cout <<
"Minuit2Minimizer::Minuit - Changing default options" << std::endl;
481 if (printLevel == 10 &&
gROOT) {
482 TObject * obj =
gROOT->FindObject(
"Minuit2TraceObject");
489 if (printLevel == 20 || printLevel == 30 || printLevel == 40 || (printLevel >= 20000 && printLevel < 30000) ) {
490 int parNumber = printLevel-20000;
491 if (printLevel == 20) parNumber = -1;
492 if (printLevel == 30) parNumber = -2;
493 if (printLevel == 40) parNumber = 0;
497 if (printLevel == 100 || (printLevel >= 10000 && printLevel < 20000)) {
498 int parNumber = printLevel-10000;
534 if (traceObj) {
delete traceObj; }
543 if (debugLevel >= 3) {
545 const std::vector<ROOT::Minuit2::MinimumState>& iterationStates = min.
States();
546 std::cout <<
"Number of iterations " << iterationStates.size() << std::endl;
547 for (
unsigned int i = 0; i < iterationStates.size(); ++i) {
550 std::cout <<
"----------> Iteration " << i << std::endl;
551 int pr = std::cout.precision(12);
552 std::cout <<
" FVAL = " << st.
Fval() <<
" Edm = " << st.
Edm() <<
" Nfcn = " << st.
NFcn() << std::endl;
553 std::cout.precision(pr);
555 std::cout <<
" Error matrix change = " << st.
Error().
Dcovar() << std::endl;
557 std::cout <<
" Parameters : ";
559 for (
int j = 0; j < st.
size() ; ++j) std::cout <<
" p" << j <<
" = " <<
fState.
Int2ext( j, st.
Vec()(j) );
560 std::cout << std::endl;
570 txt =
"Covar is not pos def";
574 txt =
"Covar was made pos def";
578 txt =
"Hesse is not valid";
582 txt =
"Edm is above max";
586 txt =
"Reached call limit";
591 bool validMinimum = min.
IsValid();
600 txt =
"unknown failure";
603 std::string msg =
"Minimization did NOT converge, " + txt;
611 if (paramsObj.size() == 0)
return 0;
612 assert(
fDim == paramsObj.size());
615 for (
unsigned int i = 0; i <
fDim; ++i) {
616 fValues[i] = paramsObj[i].Value();
628 std::cout <<
"Minuit2Minimizer : Valid minimum - status = " <<
fStatus << std::endl;
629 int pr = std::cout.precision(18);
630 std::cout <<
"FVAL = " <<
fState.
Fval() << std::endl;
631 std::cout <<
"Edm = " <<
fState.
Edm() << std::endl;
632 std::cout.precision(pr);
633 std::cout <<
"Nfcn = " <<
fState.
NFcn() << std::endl;
636 std::cout << par.
Name() <<
"\t = " << par.
Value() <<
"\t ";
637 if (par.
IsFixed() ) std::cout <<
"(fixed)" << std::endl;
638 else if (par.
IsConst() ) std::cout <<
"(const)" << std::endl;
640 std::cout <<
"+/- " << par.
Error() <<
"\t(limited)"<< std::endl;
642 std::cout <<
"+/- " << par.
Error() << std::endl;
646 std::cout <<
"Minuit2Minimizer : Invalid Minimum - status = " <<
fStatus << std::endl;
647 std::cout <<
"FVAL = " <<
fState.
Fval() << std::endl;
648 std::cout <<
"Edm = " <<
fState.
Edm() << std::endl;
649 std::cout <<
"Nfcn = " <<
fState.
NFcn() << std::endl;
656 if (paramsObj.size() == 0)
return 0;
657 assert(
fDim == paramsObj.size());
661 for (
unsigned int i = 0; i <
fDim; ++i) {
675 if ( i >=
fDim || j >=
fDim)
return 0;
687 for (
unsigned int i = 0; i <
fDim; ++i) {
689 for (
unsigned int j = 0; j <
fDim; ++j) { cov[i*
fDim + j] = 0; }
694 for (
unsigned int j = 0; j <
fDim; ++j) {
715 for (
unsigned int i = 0; i <
fDim; ++i) {
717 for (
unsigned int j = 0; j <
fDim; ++j) { hess[i*
fDim + j] = 0; }
721 for (
unsigned int j = 0; j <
fDim; ++j) {
742 if ( i >=
fDim || j >=
fDim)
return 0;
750 if (tmp > 0 )
return cij/tmp;
759 if ( i >=
fDim )
return 0;
773 errLow = 0; errUp = 0;
790 MN_ERROR_MSG(
"Minuit2Minimizer::GetMinosErrors: failed - no function minimum existing");
795 MN_ERROR_MSG(
"Minuit2Minimizer::MINOS failed due to invalid function minimum");
808 if ((mstatus & 8) != 0) {
811 "Found a new minimum: run again the Minimization starting from the new point ");
813 std::cout <<
"New minimum point found by MINOS: " << std::endl;
814 std::cout <<
"FVAL = " <<
fState.
Fval() << std::endl;
816 std::cout << par.Name() <<
"\t = " << par.Value() << std::endl;
822 if (!ok)
return false;
824 MN_INFO_MSG2(
"Minuit2Minimizer::GetMinosError",
"Run now again Minos from the new found Minimum");
834 bool isValid = ((mstatus & 1) == 0) && ((mstatus & 2) == 0);
842 bool runLower = runopt != 2;
843 bool runUpper = runopt != 1;
868 tol = std::max(tol, 0.01);
872 int maxfcn_used = maxfcn;
873 if (maxfcn_used == 0) {
875 maxfcn_used = 2*(nvar+1)*(200 + 100*nvar + 5*nvar*nvar);
879 if (debugLevel >=1) {
880 std::cout <<
"******************************************************************************************************\n";
881 std::cout <<
"Minuit2Minimizer::GetMinosError - Run MINOS LOWER error for parameter #" << i <<
" : " << par_name
882 <<
" using max-calls " << maxfcn_used <<
", tolerance " << tol << std::endl;
884 low = minos.
Loval(i, maxfcn, tol);
887 if (debugLevel >=1) {
888 std::cout <<
"******************************************************************************************************\n";
889 std::cout <<
"Minuit2Minimizer::GetMinosError - Run MINOS UPPER error for parameter #" << i <<
" : " << par_name
890 <<
" using max-calls " << maxfcn_used <<
", tolerance " << tol << std::endl;
892 up = minos.
Upval(i,maxfcn,tol);
906 if (debugLevel > 0) {
909 std::cout <<
"Minos: Invalid lower error for parameter " << par_name << std::endl;
911 std::cout <<
"Minos: Parameter : " << par_name <<
" is at Lower limit; error is " << me.
Lower()
914 std::cout <<
"Minos: Maximum number of function calls exceeded when running for lower error for parameter " << par_name << std::endl;
916 std::cout <<
"Minos: New Minimum found while running Minos for lower error for parameter " << par_name << std::endl;
919 std::cout <<
"Minos: Lower error for parameter " << par_name <<
" : " << me.
Lower() << std::endl;
923 std::cout <<
"Minos: Invalid upper error for parameter " << par_name << std::endl;
925 std::cout <<
"Minos: Parameter " << par_name <<
" is at Upper limit; error is "<< me.
Upper() << std::endl;
927 std::cout <<
"Minos: Maximum number of function calls exceeded when running for upper error for parameter " << par_name << std::endl;
929 std::cout <<
"Minos: New Minimum found while running Minos for upper error for parameter " << par_name << std::endl;
932 std::cout <<
"Minos: Upper error for parameter " << par_name <<
" : " << me.
Upper() << std::endl;
936 bool lowerInvalid = (runLower && !me.
LowerValid() );
937 bool upperInvalid = (runUpper && !me.
UpperValid() );
940 std::string msg_txt = std::string(
"Invalid lower error for parameter ") + std::string(
fMinimum->
UserState().
Name(i));
941 MN_INFO_MSG2(
"Minuit2Minimizer::GetMinosErrors", msg_txt);
944 std::string msg_txt = std::string(
"Invalid upper error for parameter ") + std::string(
fMinimum->
UserState().
Name(i));
945 MN_INFO_MSG2(
"Minuit2Minimizer::GetMinosErrors", msg_txt);
949 std::string msg_txt = std::string(
"Lower error for parameter ") + std::string(
fMinimum->
UserState().
Name(i)) +
950 std::string(
" is at the Lower limit !");
951 MN_INFO_MSG2(
"Minuit2Minimizer::GetMinosErrors", msg_txt);
954 std::string msg_txt = std::string(
"Upper error for parameter ") + std::string(
fMinimum->
UserState().
Name(i)) +
955 std::string(
" is at the Upper limit !");
956 MN_INFO_MSG2(
"Minuit2Minimizer::GetMinosErrors", msg_txt);
960 if (lowerInvalid || upperInvalid ) {
983 if (runLower) errLow = me.
Lower();
984 if (runUpper) errUp = me.
Upper();
1008 MN_ERROR_MSG2(
"Minuit2Minimizer::Scan",
" Function must be set before using Scan");
1013 MN_ERROR_MSG2(
"Minuit2Minimizer::Scan",
" Invalid number. Minimizer variables must be set before using Scan");
1027 double amin = scan.
Fval();
1030 std::vector<std::pair<double, double> > result = scan(ipar, nstep-1,
xmin,
xmax);
1034 if (result.size() != nstep) {
1035 MN_ERROR_MSG2(
"Minuit2Minimizer::Scan",
" Invalid result from MnParameterScan");
1039 std::sort(result.begin(), result.end() );
1042 for (
unsigned int i = 0; i < nstep; ++i ) {
1043 x[i] = result[i].first;
1044 y[i] = result[i].second;
1049 if (scan.
Fval() < amin ) {
1050 MN_INFO_MSG2(
"Minuit2Minimizer::Scan",
"A new minimum has been found");
1063 MN_ERROR_MSG2(
"Minuit2Minimizer::Contour",
" no function minimum existing. Must minimize function before");
1068 MN_ERROR_MSG2(
"Minuit2Minimizer::Contour",
"Invalid function minimum");
1097 std::vector<std::pair<double,double> > result = contour(ipar,jpar, npoints);
1098 if (result.size() != npoints) {
1099 MN_ERROR_MSG2(
"Minuit2Minimizer::Contour",
" Invalid result from MnContours");
1102 for (
unsigned int i = 0; i < npoints; ++i ) {
1103 x[i] = result[i].first;
1104 y[i] = result[i].second;
1123 MN_ERROR_MSG2(
"Minuit2Minimizer::Hesse",
"FCN function has not been set");
1141 std::cout <<
"Minuit2Minimizer::Hesse using max-calls " << maxfcn << std::endl;
1166 std::cout <<
"Minuit2Minimizer::Hesse - State returned from Hesse " << std::endl;
1167 std::cout <<
fState << std::endl;
1171 std::string covStatusType =
"not valid";
1172 if (covStatus == 1) covStatusType =
"approximate";
1173 if (covStatus == 2) covStatusType =
"full but made positive defined";
1174 if (covStatus == 3) covStatusType =
"accurate";
1187 std::string msg =
"Hesse failed - matrix is " + covStatusType;
1195 std::string msg =
"Hesse is valid - matrix is " + covStatusType;
#define MN_INFO_VAL2(loc, x)
#define MN_INFO_MSG2(loc, str)
#define MN_ERROR_MSG2(loc, str)
#define MN_ERROR_MSG(str)
R__EXTERN Int_t gErrorIgnoreLevel
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
void Set(const std::string &name, double value, double step)
set value and name (unlimited parameter)
void SetLimits(double low, double up)
set a double side limit, if low == up the parameter is fixed if low > up the limits are removed The c...
void SetUpperLimit(double up)
set a single upper limit
void Fix()
fix the parameter
void SetLowerLimit(double low)
set a single lower limit
FitMethodFunction class Interface for objective functions (like chi2 and likelihood used in the fit) ...
Documentation for the abstract class IBaseFunctionMultiDim.
virtual unsigned int NDim() const =0
Retrieve the dimension of the function.
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
virtual unsigned int NDim() const=0
Retrieve the dimension of the function.
Generic interface for defining configuration options of a numerical algorithm.
virtual void Print(std::ostream &=std::cout) const
print options
bool GetValue(const char *name, T &t) const
static ROOT::Math::IOptions * FindDefault(const char *name)
double Tolerance() const
absolute tolerance
unsigned int MaxFunctionCalls() const
max number of function calls
double Precision() const
precision of minimizer in the evaluation of the objective function ( a value <=0 corresponds to the l...
int Strategy() const
strategy
double ErrorDef() const
return the statistical scale used for calculate the error is typically 1 for Chi2 and 0....
bool IsValidError() const
return true if Minimizer has performed a detailed error validation (e.g. run Hesse for Minuit)
int PrintLevel() const
minimizer configuration parameters
Combined minimizer: combination of Migrad and Simplex.
template wrapped class for adapting to FCNBase signature
virtual void SetErrorDef(double)
add interface to set dynamically a new error definition Re-implement this function if needed.
template wrapped class for adapting to FCNBase signature a IGradFunction
Extension of the FCNBase for providing the analytical Gradient of the function.
template wrapped class for adapting to FumiliFCNBase signature
Instantiates the seed generator and Minimum builder for the Fumili minimization method.
class holding the full result of the minimization; both internal and external (MnUserParameterState) ...
const std::vector< ROOT::Minuit2::MinimumState > & States() const
const MinimumError & Error() const
bool HasAccurateCovar() const
bool HasReachedCallLimit() const
const MnUserParameterState & UserState() const
const MinimumState & State() const
bool HasMadePosDefCovar() const
bool IsAboveMaxEdm() const
bool HasValidCovariance() const
bool HasPosDefCovar() const
bool HasCovariance() const
void SetErrorDef(double up)
virtual void SetStorageLevel(int level)
virtual void SetPrintLevel(int level)
virtual void SetTraceObject(MnTraceObject &obj)
bool InvertFailed() const
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
bool HasParameters() const
const MinimumError & Error() const
const MnAlgebraicVector & Vec() const
bool HasCovariance() const
Class holding the result of Minos (lower and upper values) for a specific parameter.
bool AtUpperLimit() const
bool AtLowerMaxFcn() const
bool AtUpperMaxFcn() const
bool AtLowerLimit() const
Minuit2Minimizer class implementing the ROOT::Math::Minimizer interface for Minuit2 minimization algo...
bool ExamineMinimum(const ROOT::Minuit2::FunctionMinimum &min)
examine the minimum result
Minuit2Minimizer(ROOT::Minuit2::EMinimizerType type=ROOT::Minuit2::kMigrad)
Default constructor.
void SetStorageLevel(int level)
set storage level = 1 : store all iteration states (default) = 0 : store only first and last state to...
Minuit2Minimizer & operator=(const Minuit2Minimizer &rhs)
Assignment operator.
std::vector< double > fValues
virtual bool SetVariableUpperLimit(unsigned int ivar, double upper)
set the upper-limit of an already existing variable
virtual double GlobalCC(unsigned int i) const
get global correlation coefficient for the variable i.
virtual int VariableIndex(const std::string &name) const
get index of variable given a variable given a name return -1 if variable is not found
virtual bool SetVariable(unsigned int ivar, const std::string &name, double val, double step)
set free variable
virtual bool SetFixedVariable(unsigned int, const std::string &, double)
set fixed variable (override if minimizer supports them )
virtual void SetFunction(const ROOT::Math::IMultiGenFunction &func)
set the function to minimize
virtual const ROOT::Minuit2::FCNBase * GetFCN() const
virtual bool SetLowerLimitedVariable(unsigned int ivar, const std::string &name, double val, double step, double lower)
set lower limit variable (override if minimizer supports them )
virtual bool SetLimitedVariable(unsigned int ivar, const std::string &name, double val, double step, double, double)
set upper/lower limited variable (override if minimizer supports them )
virtual bool SetVariableLimits(unsigned int ivar, double lower, double upper)
set the limits of an already existing variable
virtual bool SetVariableValues(const double *val)
set the values of all existing variables (array must be dimensioned to the size of the existing param...
virtual int CovMatrixStatus() const
return the status of the covariance matrix status = -1 : not available (inversion failed or Hesse fai...
virtual void Clear()
reset for consecutive minimizations - implement if needed
virtual double CovMatrix(unsigned int i, unsigned int j) const
return covariance matrix elements if the variable is fixed or const the value is zero The ordering of...
virtual ~Minuit2Minimizer()
Destructor (no operations)
virtual bool ReleaseVariable(unsigned int ivar)
release an existing variable
std::vector< double > fErrors
ROOT::Minuit2::ModularFunctionMinimizer * fMinimizer
virtual bool Scan(unsigned int i, unsigned int &nstep, double *x, double *y, double xmin=0, double xmax=0)
scan a parameter i around the minimum.
virtual std::string VariableName(unsigned int ivar) const
get name of variables (override if minimizer support storing of variable names)
int RunMinosError(unsigned int i, double &errLow, double &errUp, int runopt)
virtual bool GetCovMatrix(double *cov) const
Fill the passed array with the covariance matrix elements if the variable is fixed or const the value...
virtual bool SetUpperLimitedVariable(unsigned int ivar, const std::string &name, double val, double step, double upper)
set upper limit variable (override if minimizer supports them )
virtual bool Minimize()
method to perform the minimization.
void SetTraceObject(MnTraceObject &obj)
set an object to trace operation for each iteration The object must be a (or inherit from) ROOT::Minu...
virtual bool SetVariableLowerLimit(unsigned int ivar, double lower)
set the lower-limit of an already existing variable
virtual const ROOT::Minuit2::ModularFunctionMinimizer * GetMinimizer() const
void SetMinimizerType(ROOT::Minuit2::EMinimizerType type)
virtual void PrintResults()
return reference to the objective function virtual const ROOT::Math::IGenFunction & Function() const;
virtual bool GetHessianMatrix(double *h) const
Fill the passed array with the Hessian matrix elements The Hessian matrix is the matrix of the second...
ROOT::Minuit2::MnUserParameterState fState
virtual bool GetMinosError(unsigned int i, double &errLow, double &errUp, int=0)
get the minos error for parameter i, return false if Minos failed A minimizaiton must be performed be...
virtual bool IsFixedVariable(unsigned int ivar) const
query if an existing variable is fixed (i.e.
virtual void SetMinimizer(ROOT::Minuit2::ModularFunctionMinimizer *m)
virtual const double * Errors() const
return errors at the minimum
virtual bool GetVariableSettings(unsigned int ivar, ROOT::Fit::ParameterSettings &varObj) const
get variable settings in a variable object (like ROOT::Fit::ParamsSettings)
ROOT::Minuit2::FunctionMinimum * fMinimum
virtual bool SetVariableValue(unsigned int ivar, double val)
set variable
ROOT::Minuit2::FCNBase * fMinuitFCN
virtual bool Contour(unsigned int i, unsigned int j, unsigned int &npoints, double *xi, double *xj)
find the contour points (xi,xj) of the function for parameter i and j around the minimum The contour ...
virtual double Correlation(unsigned int i, unsigned int j) const
return correlation coefficient between variable i and j.
virtual bool SetVariableStepSize(unsigned int ivar, double step)
set the step size of an already existing variable
virtual bool FixVariable(unsigned int ivar)
fix an existing variable
virtual bool Hesse()
perform a full calculation of the Hessian matrix for error calculation If a valid minimum exists the ...
class for the individual Minuit Parameter with Name and number; contains the input numbers for the mi...
double LowerLimit() const
double UpperLimit() const
const char * Name() const
bool HasLowerLimit() const
bool HasUpperLimit() const
API class for Contours Error analysis (2-dim errors); minimization has to be done before and Minimum ...
const MnUserParameterState & State() const
const std::vector< double > & GlobalCC() const
API class for calculating the numerical covariance matrix (== 2x Inverse Hessian == 2x Inverse 2nd de...
API class for Minos Error analysis (asymmetric errors); minimization has to be done before and Minimu...
MnCross Loval(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
MnCross Upval(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
Scans the values of FCN as a function of one Parameter and retains the best function and Parameter va...
const MnUserParameters & Parameters() const
static int SetLevel(int level)
API class for defining three levels of strategies: low (0), medium (1), high (>=2); acts on: Migrad (...
double HessianG2Tolerance() const
unsigned int HessianGradientNCycles() const
double GradientStepTolerance() const
void SetHessianNCycles(unsigned int n)
void SetHessianStepTolerance(double stp)
double GradientTolerance() const
void SetGradientTolerance(double toler)
double HessianStepTolerance() const
unsigned int HessianNCycles() const
unsigned int GradientNCycles() const
void SetGradientNCycles(unsigned int n)
void SetGradientStepTolerance(double stp)
void SetHessianGradientNCycles(unsigned int n)
void SetHessianG2Tolerance(double toler)
virtual void Init(const MnUserParameterState &state)
class which holds the external user and/or internal Minuit representation of the parameters and error...
void SetLimits(unsigned int, double, double)
const MnUserParameters & Parameters() const
double Value(unsigned int) const
void RemoveLimits(unsigned int)
unsigned int NFcn() const
unsigned int Index(const std::string &) const
const std::string & GetName(unsigned int) const
double Int2ext(unsigned int, double) const
const MnGlobalCorrelationCoeff & GlobalCC() const
void Release(unsigned int)
unsigned int VariableParameters() const
const MinuitParameter & Parameter(unsigned int i) const
void SetValue(unsigned int, double)
void Add(const std::string &name, double val, double err)
const char * Name(unsigned int) const
MnUserCovariance Hessian() const
const std::vector< ROOT::Minuit2::MinuitParameter > & MinuitParameters() const
facade: forward interface of MnUserParameters and MnUserTransformation
void SetPrecision(double eps)
unsigned int IntOfExt(unsigned int) const
const MnUserTransformation & Trafo() const
void SetUpperLimit(unsigned int, double)
const MnUserCovariance & IntCovariance() const
const MnUserCovariance & Covariance() const
int CovarianceStatus() const
void SetError(unsigned int, double)
void SetLowerLimit(unsigned int, double)
bool HasCovariance() const
double Value(unsigned int) const
virtual const MinimumBuilder & Builder() const =0
virtual FunctionMinimum Minimize(const FCNBase &, const std::vector< double > &, const std::vector< double > &, unsigned int stra=1, unsigned int maxfcn=0, double toler=0.1) const
Class implementing the required methods for a minimization using SCAN API is provided in the upper RO...
Class implementing the required methods for a minimization using Simplex.
Instantiates the SeedGenerator and MinimumBuilder for Variable Metric Minimization method.
Mother of all ROOT objects.
RooCmdArg Minimizer(const char *type, const char *alg=0)
Namespace for new Math classes and functions.
void RestoreGlobalPrintLevel(int)
int TurnOffPrintInfoLevel()
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...