BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MinimizerInfo.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Fit/Minimizer/MinimizerInfo.h
6 //! @brief Declares class MinimizerInfo.
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 
15 #ifndef BORNAGAIN_FIT_MINIMIZER_MINIMIZERINFO_H
16 #define BORNAGAIN_FIT_MINIMIZER_MINIMIZERINFO_H
17 
18 #include <string>
19 #include <vector>
20 
21 //! A name and a description.
22 //! @ingroup fitting_internal
23 
25 {
26 public:
27  AlgorithmInfo() = delete;
28  AlgorithmInfo(const std::string& itemName, const std::string& itemDescription)
29  : m_itemName(itemName), m_itemDescription(itemDescription)
30  {
31  }
32 
33  std::string name() const { return m_itemName; }
34  std::string description() const { return m_itemDescription; }
35 
36 private:
37  std::string m_itemName;
38  std::string m_itemDescription;
39 };
40 
41 //! Info about a minimizer, including list of defined minimization algorithms.
42 //! @ingroup fitting_internal
43 
45 {
46 public:
47  MinimizerInfo() = delete;
48  MinimizerInfo(const std::string& minimizerType, const std::string& minimizerDescription)
49  : m_name(minimizerType), m_description(minimizerDescription)
50  {
51  }
52 
53  //! Sets currently active algorithm
54  void setAlgorithmName(const std::string& algorithmName);
55 
56  std::string name() const { return m_name; }
57  std::string description() const { return m_description; }
58 
59  std::string algorithmName() const { return m_current_algorithm; }
60 
61  std::vector<std::string> algorithmNames() const;
62  std::vector<std::string> algorithmDescriptions() const;
63 
64  static MinimizerInfo buildMinuit2Info(const std::string& defaultAlgo = "");
65  static MinimizerInfo buildGSLMultiMinInfo(const std::string& defaultAlgo = "");
70 
71 private:
72  void addAlgorithm(const AlgorithmInfo& algorithm);
73  void addAlgorithm(const std::string& algorithmName, const std::string& algorithmDescription);
74 
75  std::string m_name;
76  std::string m_description;
77  std::vector<AlgorithmInfo> m_algorithms;
78  std::string m_current_algorithm;
79 };
80 
81 #endif // BORNAGAIN_FIT_MINIMIZER_MINIMIZERINFO_H
A name and a description.
Definition: MinimizerInfo.h:25
AlgorithmInfo()=delete
AlgorithmInfo(const std::string &itemName, const std::string &itemDescription)
Definition: MinimizerInfo.h:28
std::string name() const
Definition: MinimizerInfo.h:33
std::string m_itemName
Definition: MinimizerInfo.h:37
std::string m_itemDescription
Definition: MinimizerInfo.h:38
std::string description() const
Definition: MinimizerInfo.h:34
Info about a minimizer, including list of defined minimization algorithms.
Definition: MinimizerInfo.h:45
std::string m_current_algorithm
Definition: MinimizerInfo.h:78
std::string m_name
Definition: MinimizerInfo.h:75
static MinimizerInfo buildGeneticInfo()
Creates information for TMVA genetic minimizer.
static MinimizerInfo buildGSLSimAnInfo()
Creates information for GSL's simmulated annealing algorithm.
std::string algorithmName() const
Definition: MinimizerInfo.h:59
void setAlgorithmName(const std::string &algorithmName)
Sets currently active algorithm.
MinimizerInfo()=delete
std::vector< std::string > algorithmDescriptions() const
Returns list of string with description of all available algorithms.
std::string name() const
Definition: MinimizerInfo.h:56
std::string description() const
Definition: MinimizerInfo.h:57
MinimizerInfo(const std::string &minimizerType, const std::string &minimizerDescription)
Definition: MinimizerInfo.h:48
void addAlgorithm(const AlgorithmInfo &algorithm)
Adds minimizer algorithm to the list of defined algorithms.
std::string m_description
Definition: MinimizerInfo.h:76
std::vector< AlgorithmInfo > m_algorithms
Definition: MinimizerInfo.h:77
static MinimizerInfo buildGSLLMAInfo()
Creates information for GSL's Levenberg-Marquardt.
static MinimizerInfo buildGSLMultiMinInfo(const std::string &defaultAlgo="")
Creates information for GSLMultiMinMinimizer.
static MinimizerInfo buildTestMinimizerInfo()
Creates information for simple test minimizer.
std::vector< std::string > algorithmNames() const
Return list of defined algorithm names.
static MinimizerInfo buildMinuit2Info(const std::string &defaultAlgo="")
Creates information for Minuit2Minimizer.