17 #include <Minuit2/Minuit2Minimizer.h> 
   22 std::map<int, std::string> statusDescription()
 
   24     std::map<int, std::string> result;
 
   25     result[0] = 
"OK, valid minimum";
 
   26     result[1] = 
"Didn't converge, covariance was made pos defined";
 
   27     result[2] = 
"Didn't converge, Hessian is invalid";
 
   28     result[3] = 
"Didn't converge, Edm is above max";
 
   29     result[4] = 
"Didn't converge, reached call limit";
 
   30     result[5] = 
"Didn't converge, unknown failure";
 
   34 std::map<int, std::string> covmatrixStatusDescription()
 
   36     std::map<int, std::string> result;
 
   37     result[-1] = 
"Not available (inversion failed or Hessian failed)";
 
   38     result[0] = 
"Available but not positive defined";
 
   39     result[1] = 
"Covariance only approximate";
 
   40     result[2] = 
"Full matrix but forced pos def";
 
   41     result[3] = 
"Full accurate";
 
   47 Minuit2Minimizer::Minuit2Minimizer(
const std::string& algorithmName)
 
   49       m_minuit2_minimizer(new ROOT::Minuit2::
Minuit2Minimizer(algorithmName.c_str()))
 
   51     addOption(
"Strategy", 1, 
"Minimization strategy (0-low, 1-medium, 2-high quality)");
 
   52     addOption(
"ErrorDef", 1.0, 
"Error definition factor for parameter error calculation");
 
   53     addOption(
"Tolerance", 0.01, 
"Tolerance on the function value at the minimum");
 
   54     addOption(
"Precision", -1.0, 
"Relative floating point arithmetic precision");
 
   55     addOption(
"PrintLevel", 0, 
"Minimizer internal print level");
 
   56     addOption(
"MaxFunctionCalls", 0, 
"Maximum number of function calls");
 
   59 Minuit2Minimizer::~Minuit2Minimizer() = 
default;
 
   63     setOptionValue(
"Strategy", value);
 
   66 int Minuit2Minimizer::strategy()
 const 
   68     return optionValue<int>(
"Strategy");
 
   73     setOptionValue(
"ErrorDef", value);
 
   76 double Minuit2Minimizer::errorDefinition()
 const 
   78     return optionValue<double>(
"ErrorDef");
 
   83     setOptionValue(
"Tolerance", value);
 
   86 double Minuit2Minimizer::tolerance()
 const 
   88     return optionValue<double>(
"Tolerance");
 
   93     setOptionValue(
"Precision", value);
 
   96 double Minuit2Minimizer::precision()
 const 
   98     return optionValue<double>(
"Precision");
 
  103     setOptionValue(
"PrintLevel", value);
 
  106 int Minuit2Minimizer::printLevel()
 const 
  108     return optionValue<int>(
"PrintLevel");
 
  113     setOptionValue(
"MaxFunctionCalls", value);
 
  116 int Minuit2Minimizer::maxFunctionCalls()
 const 
  118     return optionValue<int>(
"MaxFunctionCalls");
 
  123     return statusDescription()[rootMinimizer()->Status()];
 
  130     result[
"CovMatrixStatus"] = covmatrixStatusDescription()[rootMinimizer()->CovMatrixStatus()];
 
  131     result[
"functionCalls"] = std::to_string(rootMinimizer()->NCalls());
 
  147     m_minuit2_minimizer->SetStrategy(strategy());
 
  148     m_minuit2_minimizer->SetErrorDef(errorDefinition());
 
  149     m_minuit2_minimizer->SetTolerance(tolerance());
 
  150     m_minuit2_minimizer->SetPrecision(precision());
 
  151     m_minuit2_minimizer->SetPrintLevel(printLevel());
 
  152     m_minuit2_minimizer->SetMaxFunctionCalls(
static_cast<unsigned int>(maxFunctionCalls()));
 
  155 const RootMinimizerAdapter::root_minimizer_t* Minuit2Minimizer::rootMinimizer()
 const 
  157     return m_minuit2_minimizer.get();
 
Declares class Minuit2Minimizer.
 
Defines a few helper functions.
 
Info about a minimizer, including list of defined minimization algorithms.
 
Wrapper for the CERN ROOT facade of the Minuit2 minimizer.
 
void setPrecision(double value)
Sets relative floating point arithmetic precision.
 
void propagateOptions() override
Propagate options down to ROOT's Minuit2Minimizer.
 
void setMaxFunctionCalls(int value)
Sets maximum number of objective function calls.
 
void setPrintLevel(int value)
Sets minimizer internal print level.
 
void setStrategy(int value)
Sets minimization strategy (0-low, 1-medium, 2-high minimization quality).
 
std::string statusToString() const override
Returns string representation of current minimizer status.
 
void setTolerance(double value)
Sets tolerance on the function value at the minimum.
 
void setErrorDefinition(double value)
Sets error definition factor for parameter error calculation.
 
std::map< std::string, std::string > statusMap() const override
Returns map of string representing different minimizer statuses.
 
bool requiresResiduals() override
Returns true if minimizer computations are residual-based, false otherwise.
 
Pure virtual interface that adapts the CERN ROOT minimizer to our IMinimizer.
 
std::string algorithmName() const override final
Returns name of the minimization algorithm.
 
virtual std::map< std::string, std::string > statusMap() const
Returns map of string representing different minimizer statuses.
 
std::string scientific(const T value, int n=10)
Returns scientific string representing given value of any numeric type.