BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Fit::ScalarFunctionAdapter Class Reference
Inheritance diagram for Fit::ScalarFunctionAdapter:
Collaboration diagram for Fit::ScalarFunctionAdapter:

Public Member Functions

 ScalarFunctionAdapter (fcn_scalar_t func, const Parameters &parameters)
 
const RootScalarFunctionrootObjectiveFunction ()
 
int numberOfCalls () const
 
int numberOfGradientCalls () const
 

Protected Attributes

int m_number_of_calls
 
int m_number_of_gradient_calls
 

Private Attributes

fcn_scalar_t m_fcn
 
Parameters m_parameters
 
std::unique_ptr< RootScalarFunctionm_root_objective
 

Detailed Description

Converts user objective function to chi2 like function which ROOT expects.

More precisely, ROOT call to std::function<double(const double*)> will cause the call of user function std::function<double(std::vector<double>)>, where function input parameters will be current values fit parameters.

Definition at line 36 of file ScalarFunctionAdapter.h.

Constructor & Destructor Documentation

◆ ScalarFunctionAdapter()

ScalarFunctionAdapter::ScalarFunctionAdapter ( fcn_scalar_t  func,
const Parameters parameters 
)

Definition at line 20 of file ScalarFunctionAdapter.cpp.

21  : m_fcn(func), m_parameters(parameters)
22 {
23 }

Member Function Documentation

◆ rootObjectiveFunction()

const RootScalarFunction * ScalarFunctionAdapter::rootObjectiveFunction ( )

Definition at line 25 of file ScalarFunctionAdapter.cpp.

26 {
27  root_scalar_t rootfun = [&](const double* pars) {
28  std::vector<double> vec;
29  vec.resize(m_parameters.size(), 0.0);
30  std::copy(pars, pars + m_parameters.size(), vec.begin());
33  return m_fcn(m_parameters);
34  };
35 
37  std::make_unique<RootScalarFunction>(rootfun, static_cast<int>(m_parameters.size()));
38  return m_root_objective.get();
39 }
std::function< double(const double *)> root_scalar_t
Definition: KernelTypes.h:33
void setValues(const std::vector< double > &values)
Definition: Parameters.cpp:64
size_t size() const
Definition: Parameters.cpp:51
std::unique_ptr< RootScalarFunction > m_root_objective

References m_fcn, Fit::IFunctionAdapter::m_number_of_calls, m_parameters, m_root_objective, Fit::Parameters::setValues(), and Fit::Parameters::size().

Here is the call graph for this function:

◆ numberOfCalls()

int IFunctionAdapter::numberOfCalls ( ) const
inherited

Definition at line 23 of file IFunctionAdapter.cpp.

24 {
25  return m_number_of_calls;
26 }

References Fit::IFunctionAdapter::m_number_of_calls.

◆ numberOfGradientCalls()

int IFunctionAdapter::numberOfGradientCalls ( ) const
inherited

Definition at line 28 of file IFunctionAdapter.cpp.

29 {
31 }

References Fit::IFunctionAdapter::m_number_of_gradient_calls.

Member Data Documentation

◆ m_fcn

fcn_scalar_t Fit::ScalarFunctionAdapter::m_fcn
private

Definition at line 44 of file ScalarFunctionAdapter.h.

Referenced by rootObjectiveFunction().

◆ m_parameters

Parameters Fit::ScalarFunctionAdapter::m_parameters
private

Definition at line 45 of file ScalarFunctionAdapter.h.

Referenced by rootObjectiveFunction().

◆ m_root_objective

std::unique_ptr<RootScalarFunction> Fit::ScalarFunctionAdapter::m_root_objective
private

Definition at line 46 of file ScalarFunctionAdapter.h.

Referenced by rootObjectiveFunction().

◆ m_number_of_calls

int Fit::IFunctionAdapter::m_number_of_calls
protectedinherited

◆ m_number_of_gradient_calls

int Fit::IFunctionAdapter::m_number_of_gradient_calls
protectedinherited

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