BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MinimizerTestPlan Class Referenceabstract
Collaboration diagram for MinimizerTestPlan:

Public Member Functions

 MinimizerTestPlan (const std::string &name)
 
virtual ~MinimizerTestPlan ()
 
void addParameter (const Fit::Parameter &param, double expected_value, double tolerance=0.01)
 
std::string name () const
 
virtual bool checkMinimizer (Fit::Minimizer &minimizer)=0
 

Protected Member Functions

Fit::Parameters parameters () const
 
std::vector< double > expectedValues () const
 
bool valuesAsExpected (const std::vector< double > &values) const
 

Protected Attributes

std::string m_name
 
std::vector< ParameterPlanm_parameter_plan
 

Detailed Description

Defines objective function to fit, expected minimum, initial fit parameters and expected values of fit parameters at minimum.

Definition at line 31 of file MinimizerTestPlan.h.

Constructor & Destructor Documentation

◆ MinimizerTestPlan()

MinimizerTestPlan::MinimizerTestPlan ( const std::string &  name)

Definition at line 24 of file MinimizerTestPlan.cpp.

24 : m_name(name) {}
std::string m_name
plan name
std::string name() const

◆ ~MinimizerTestPlan()

MinimizerTestPlan::~MinimizerTestPlan ( )
virtualdefault

Member Function Documentation

◆ addParameter()

void MinimizerTestPlan::addParameter ( const Fit::Parameter param,
double  expected_value,
double  tolerance = 0.01 
)

Definition at line 28 of file MinimizerTestPlan.cpp.

30 {
31  m_parameter_plan.push_back(ParameterPlan(param, expected_value, tolerance));
32 }
std::vector< ParameterPlan > m_parameter_plan
Defines initial settings of single fit parameter and the final value which has to be found in the cou...
Definition: ParameterPlan.h:24

References m_parameter_plan.

◆ name()

std::string MinimizerTestPlan::name ( ) const
inline

Definition at line 40 of file MinimizerTestPlan.h.

40 { return m_name; }

References m_name.

◆ checkMinimizer()

virtual bool MinimizerTestPlan::checkMinimizer ( Fit::Minimizer minimizer)
pure virtual

Runs minimization and check minimization result.

◆ parameters()

Parameters MinimizerTestPlan::parameters ( ) const
protected

Returns fit parameters which will be used as initial one for the minimization.

Definition at line 36 of file MinimizerTestPlan.cpp.

37 {
38  Parameters result;
39  for (const auto& plan : m_parameter_plan)
40  result.add(plan.fitParameter());
41 
42  return result;
43 }
A collection of fit parameters.
Definition: Parameters.h:28
void add(const Parameter &par)
Definition: Parameters.cpp:22

References Fit::Parameters::add(), and m_parameter_plan.

Here is the call graph for this function:

◆ expectedValues()

std::vector< double > MinimizerTestPlan::expectedValues ( ) const
protected

Return vector of expected parameter values.

Definition at line 47 of file MinimizerTestPlan.cpp.

48 {
49  std::vector<double> result;
50  for (const auto& plan : m_parameter_plan)
51  result.push_back(plan.expectedValue());
52 
53  return result;
54 }

References m_parameter_plan.

◆ valuesAsExpected()

bool MinimizerTestPlan::valuesAsExpected ( const std::vector< double > &  values) const
protected

Returns true if given values coincide with expected fit parameter values.

Definition at line 58 of file MinimizerTestPlan.cpp.

59 {
60  bool success(true);
61 
62  if (m_parameter_plan.size() != values.size())
63  throw std::runtime_error("FunctionTestPlan::valuesAsExpected() -> Error. Sizes differ.");
64 
65  size_t index(0);
66  std::ostringstream text;
67  for (const auto& plan : m_parameter_plan) {
68  double diff = Numeric::GetRelativeDifference(values[index], plan.expectedValue());
69 
70  bool diff_ok(true);
71  if (diff > plan.tolerance())
72  diff_ok = false;
73 
74  text << plan.fitParameter().name() << " found:" << values[index]
75  << " expected:" << plan.expectedValue() << " diff:" << diff << " "
76  << (diff_ok ? "OK" : "FAILED") << "\n";
77 
78  success &= diff_ok;
79 
80  ++index;
81  }
82 
83  std::cout << text.str();
84 
85  return success;
86 }
double GetRelativeDifference(double a, double b)
Returns the safe relative difference, which is 2(|a-b|)/(|a|+|b|) except in special cases.
Definition: Numeric.cpp:32

References Numeric::GetRelativeDifference(), and m_parameter_plan.

Here is the call graph for this function:

Member Data Documentation

◆ m_name

std::string MinimizerTestPlan::m_name
protected

plan name

Definition at line 50 of file MinimizerTestPlan.h.

Referenced by name().

◆ m_parameter_plan

std::vector<ParameterPlan> MinimizerTestPlan::m_parameter_plan
protected

Definition at line 51 of file MinimizerTestPlan.h.

Referenced by addParameter(), expectedValues(), parameters(), and valuesAsExpected().


The documentation for this class was generated from the following files: