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

Public Types

typedef ROOT::Math::BasicFitMethodFunction< ROOT::Math::IMultiGenFunction >::Type_t Type_t
 

Public Member Functions

 RootResidualFunction (scalar_function_t objective_fun, gradient_function_t gradient_fun, size_t npars, size_t ndatasize)
 
Type_t Type () const override
 
ROOT::Math::IMultiGenFunction * Clone () const override
 
double DataElement (const double *pars, unsigned int index, double *gradients=0) const override
 

Private Member Functions

double DoEval (const double *pars) const override
 

Private Attributes

scalar_function_t m_objective_fun
 
gradient_function_t m_gradient_fun
 
size_t m_npars
 
size_t m_datasize
 

Detailed Description

Minimizer function with access to single data element residuals, required by Fumili2 and GSLMultiMin minimizers.

Definition at line 32 of file RootResidualFunction.h.

Member Typedef Documentation

◆ Type_t

typedef ROOT::Math::BasicFitMethodFunction<ROOT::Math::IMultiGenFunction>::Type_t RootResidualFunction::Type_t

Definition at line 35 of file RootResidualFunction.h.

Constructor & Destructor Documentation

◆ RootResidualFunction()

RootResidualFunction::RootResidualFunction ( scalar_function_t  objective_fun,
gradient_function_t  gradient_fun,
size_t  npars,
size_t  ndatasize 
)

Constructs RootResidualFunction.

Definition at line 17 of file RootResidualFunction.cpp.

20  : ROOT::Math::FitMethodFunction(static_cast<int>(npars), static_cast<int>(ndatasize)),
21  m_objective_fun(objective_fun), m_gradient_fun(gradient_fun), m_npars(npars),
22  m_datasize(ndatasize)
23 {
24 }
scalar_function_t m_objective_fun
User function to get value to minimizer.
gradient_function_t m_gradient_fun
User function to get residual and gradients.

Referenced by Clone().

Member Function Documentation

◆ Type()

RootResidualFunction::Type_t RootResidualFunction::Type ( ) const
override

Definition at line 26 of file RootResidualFunction.cpp.

27 {
28  return ROOT::Math::FitMethodFunction::kLeastSquare;
29 }

◆ Clone()

ROOT::Math::IMultiGenFunction * RootResidualFunction::Clone ( ) const
override

Definition at line 31 of file RootResidualFunction.cpp.

32 {
34 }
RootResidualFunction(scalar_function_t objective_fun, gradient_function_t gradient_fun, size_t npars, size_t ndatasize)
Constructs RootResidualFunction.

References m_datasize, m_gradient_fun, m_npars, m_objective_fun, and RootResidualFunction().

Here is the call graph for this function:

◆ DataElement()

double RootResidualFunction::DataElement ( const double *  pars,
unsigned int  index,
double *  gradients = 0 
) const
override

Evaluation of single data element residual. Will be called by ROOT minimizer.

Returns residual value for given data element index.

Transform call of ancient pointer based function to safer gradient_function_t.

Parameters
parsarray of fit parameter values from the minimizer
indexindex of residual element
gradientsif not zero, then array where we have to put gradients
Returns
value of residual for given data element index

Definition at line 43 of file RootResidualFunction.cpp.

45 {
46  std::vector<double> par_values;
47  par_values.resize(m_npars, 0.0);
48  std::copy(pars, pars + m_npars, par_values.begin());
49 
50  std::vector<double> par_gradients;
51 
52  if (gradients)
53  par_gradients.resize(m_npars);
54 
55  // retrieving result from user function
56  double result = m_gradient_fun(par_values, index, par_gradients);
57 
58  // packing result back to minimizer's array
59  if (gradients)
60  for (size_t i = 0; i < m_npars; ++i)
61  gradients[i] = par_gradients[i];
62 
63  return result;
64 }

References m_gradient_fun, and m_npars.

◆ DoEval()

double RootResidualFunction::DoEval ( const double *  pars) const
overrideprivate

evaluation of chi2

Definition at line 66 of file RootResidualFunction.cpp.

67 {
68  std::vector<double> par_values;
69  par_values.resize(m_npars, 0.0);
70  std::copy(pars, pars + m_npars, par_values.begin());
71  return m_objective_fun(par_values);
72 }

References m_npars, and m_objective_fun.

Member Data Documentation

◆ m_objective_fun

scalar_function_t RootResidualFunction::m_objective_fun
private

User function to get value to minimizer.

Definition at line 53 of file RootResidualFunction.h.

Referenced by Clone(), and DoEval().

◆ m_gradient_fun

gradient_function_t RootResidualFunction::m_gradient_fun
private

User function to get residual and gradients.

Definition at line 54 of file RootResidualFunction.h.

Referenced by Clone(), and DataElement().

◆ m_npars

size_t RootResidualFunction::m_npars
private

Definition at line 55 of file RootResidualFunction.h.

Referenced by Clone(), DataElement(), and DoEval().

◆ m_datasize

size_t RootResidualFunction::m_datasize
private

Definition at line 56 of file RootResidualFunction.h.

Referenced by Clone().


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