23 #pragma warning(disable : 4267) 
   24 #include <Math/GSLNLSMinimizer.h> 
   27 #pragma GCC diagnostic push 
   28 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 
   29 #include <Math/GSLNLSMinimizer.h> 
   30 #pragma GCC diagnostic pop 
   36 std::map<int, std::string> covmatrixStatusDescription()
 
   38     std::map<int, std::string> result;
 
   39     result[0] = 
"Covariance matrix was not computed";
 
   40     result[1] = 
"Covariance matrix approximate because minimum is not valid";
 
   41     result[3] = 
"Covariance matrix OK";
 
   47 GSLLevenbergMarquardtMinimizer::GSLLevenbergMarquardtMinimizer()
 
   49       m_gsl_minimizer(new ROOT::Math::GSLNLSMinimizer(2))
 
   51     addOption(
"Tolerance", 0.01, 
"Tolerance on the function value at the minimum");
 
   52     addOption(
"PrintLevel", 0, 
"Minimizer internal print level");
 
   53     addOption(
"MaxIterations", 0, 
"Maximum number of iterations");
 
   56 GSLLevenbergMarquardtMinimizer::~GSLLevenbergMarquardtMinimizer() = 
default;
 
   60     setOptionValue(
"Tolerance", value);
 
   63 double GSLLevenbergMarquardtMinimizer::tolerance()
 const 
   65     return optionValue<double>(
"Tolerance");
 
   70     setOptionValue(
"PrintLevel", value);
 
   73 int GSLLevenbergMarquardtMinimizer::printLevel()
 const 
   75     return optionValue<int>(
"PrintLevel");
 
   80     setOptionValue(
"MaxIterations", value);
 
   83 int GSLLevenbergMarquardtMinimizer::maxIterations()
 const 
   85     return optionValue<int>(
"MaxIterations");
 
   90     return MinimizerUtils::gslErrorDescription(rootMinimizer()->Status());
 
   97     result[
"CovMatrixStatus"] = covmatrixStatusDescription()[rootMinimizer()->CovMatrixStatus()];
 
   98     result[
"functionCalls"] = std::to_string(rootMinimizer()->NCalls());
 
  102 void GSLLevenbergMarquardtMinimizer::propagateOptions()
 
  104     m_gsl_minimizer->SetTolerance(tolerance());
 
  105     m_gsl_minimizer->SetPrintLevel(printLevel());
 
  106     m_gsl_minimizer->SetMaxIterations(
static_cast<unsigned int>(maxIterations()));
 
  109 const RootMinimizerAdapter::root_minimizer_t* GSLLevenbergMarquardtMinimizer::rootMinimizer()
 const 
  111     return m_gsl_minimizer.get();
 
  114 void GSLLevenbergMarquardtMinimizer::setParameter(
unsigned int index, 
const Fit::Parameter& par)
 
  116     auto limits = par.limits();
 
  117     if (!limits.isLimitless() && !limits.isFixed())
 
  118         throw std::runtime_error(
"GSLLMA minimizer can't handle limited parameters." 
  119                                  "Please make them free");
 
  120     RootMinimizerAdapter::setParameter(index, par);
 
Declares class GSLLevenbergMarquardtMinimizer.
 
Declares class GSLMultiMinimizer.
 
Declares namespace MinimizerUtils.
 
Defines a few helper functions.
 
A fittable parameter with value, error, step, and limits.
 
void setMaxIterations(int value)
Sets maximum number of iterations.
 
void setTolerance(double value)
Sets tolerance on the function value at the minimum.
 
std::string statusToString() const override
Returns string representation of current minimizer status.
 
void setPrintLevel(int value)
Sets minimizer internal print level.
 
std::map< std::string, std::string > statusMap() const override
Returns map of string representing different minimizer statuses.
 
Info about a minimizer, including list of defined minimization algorithms.
 
Pure virtual interface that adapts the CERN ROOT minimizer to our IMinimizer.
 
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.