BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
GSLMultiMinimizer.cpp
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Fit/RootAdapter/GSLMultiMinimizer.cpp
6 //! @brief Implements class GSLMultiMinimizer.
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************** //
14 
17 #include <string>
18 
19 #ifdef _WIN32
20 #pragma warning(push)
21 #pragma warning(disable : 4267)
22 #include <Math/GSLMinimizer.h>
23 #pragma warning(pop)
24 #else
25 #pragma GCC diagnostic push
26 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
27 #include <Math/GSLMinimizer.h>
28 #pragma GCC diagnostic pop
29 #endif
30 
31 GSLMultiMinimizer::GSLMultiMinimizer(const std::string& algorithmName)
32  : RootMinimizerAdapter(MinimizerInfo::buildGSLMultiMinInfo(algorithmName)),
33  m_gsl_minimizer(new ROOT::Math::GSLMinimizer(algorithmName.c_str()))
34 {
35  addOption("PrintLevel", 0, "Minimizer internal print level");
36  addOption("MaxIterations", 0, "Maximum number of iterations");
37 }
38 
40 
42 {
43  setOptionValue("PrintLevel", value);
44 }
45 
47 {
48  return optionValue<int>("PrintLevel");
49 }
50 
52 {
53  setOptionValue("MaxIterations", value);
54 }
55 
57 {
58  return optionValue<int>("MaxIterations");
59 }
60 
62 {
64 }
65 
67 {
68  m_gsl_minimizer->SetPrintLevel(printLevel());
69  m_gsl_minimizer->SetMaxIterations(static_cast<unsigned int>(maxIterations()));
70 }
71 
73 {
74  return m_gsl_minimizer.get();
75 }
Declares class GSLMultiMinimizer.
Declares namespace MinimizerUtils.
const root_minimizer_t * rootMinimizer() const override
void propagateOptions() override
std::unique_ptr< ROOT::Math::GSLMinimizer > m_gsl_minimizer
std::string statusToString() const override
Returns string representation of current minimizer status.
void setMaxIterations(int value)
Sets maximum number of iterations.
GSLMultiMinimizer(const std::string &algorithmName="ConjugateFR")
void setPrintLevel(int value)
Sets minimizer internal print level.
Info about a minimizer, including list of defined minimization algorithms.
Definition: MinimizerInfo.h:45
Pure virtual interface that adapts the CERN ROOT minimizer to our IMinimizer.
OptionContainer::option_t addOption(const std::string &optionName, T value, const std::string &description="")
void setOptionValue(const std::string &optionName, T value)
ROOT::Math::Minimizer root_minimizer_t
std::string gslErrorDescription(int errorCode)