BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ROOT::Fit::FcnAdapter Class Reference

Description

Definition at line 27 of file FcnAdapter.h.

Inheritance diagram for ROOT::Fit::FcnAdapter:
[legend]
Collaboration diagram for ROOT::Fit::FcnAdapter:
[legend]

Public Types

typedef T BackendType
 
typedef IBaseFunctionMultiDimTempl< T > BaseFunc
 

Public Member Functions

 FcnAdapter (void(*fcn)(int &, double *, double &, double *, int), int dim=0)
 
virtual ~FcnAdapter ()
 
ROOT::Math::IMultiGenFunctionClone () const
 
virtual unsigned int NDim () const
 
operator() (const T *x) const
 
void SetDimension (int dim)
 

Private Member Functions

virtual double DoEval (const double *x) const
 

Private Attributes

unsigned int fDim
 
void(* fFCN )(int &, double *, double &, double *, int)
 

Member Typedef Documentation

◆ BackendType

template<class T >
typedef T ROOT::Math::IBaseFunctionMultiDimTempl< T >::BackendType
inherited

Definition at line 66 of file IFunction.h.

◆ BaseFunc

template<class T >
typedef IBaseFunctionMultiDimTempl<T> ROOT::Math::IBaseFunctionMultiDimTempl< T >::BaseFunc
inherited

Definition at line 67 of file IFunction.h.

Constructor & Destructor Documentation

◆ FcnAdapter()

ROOT::Fit::FcnAdapter::FcnAdapter ( void(*)(int &, double *, double &, double *, int)  fcn,
int  dim = 0 
)
inline

Definition at line 31 of file FcnAdapter.h.

31  :
32  fDim(dim),
33  fFCN(fcn)
34  {}
void(* fFCN)(int &, double *, double &, double *, int)
Definition: FcnAdapter.h:59
unsigned int fDim
Definition: FcnAdapter.h:58

Referenced by Clone().

◆ ~FcnAdapter()

virtual ROOT::Fit::FcnAdapter::~FcnAdapter ( )
inlinevirtual

Definition at line 36 of file FcnAdapter.h.

36 {}

Member Function Documentation

◆ Clone()

ROOT::Math::IMultiGenFunction* ROOT::Fit::FcnAdapter::Clone ( ) const
inlinevirtual

Clone a function. Each derived class must implement their version of the Clone method

Implements ROOT::Math::IBaseFunctionMultiDimTempl< T >.

Definition at line 40 of file FcnAdapter.h.

40  {
41  return new FcnAdapter(fFCN,fDim);
42  }
FcnAdapter(void(*fcn)(int &, double *, double &, double *, int), int dim=0)
Definition: FcnAdapter.h:31

References FcnAdapter(), fDim, and fFCN.

Here is the call graph for this function:

◆ DoEval()

virtual double ROOT::Fit::FcnAdapter::DoEval ( const double *  x) const
inlineprivatevirtual

Definition at line 48 of file FcnAdapter.h.

48  {
49  double fval = 0;
50  int dim = fDim;
51  // call with flag 4
52  fFCN(dim, 0, fval, const_cast<double *>(x), 4);
53  return fval;
54  }

References fDim, and fFCN.

◆ NDim()

virtual unsigned int ROOT::Fit::FcnAdapter::NDim ( ) const
inlinevirtual

Retrieve the dimension of the function

Implements ROOT::Math::IBaseFunctionMultiDimTempl< T >.

Definition at line 38 of file FcnAdapter.h.

38 { return fDim; }

References fDim.

◆ operator()()

template<class T >
T ROOT::Math::IBaseFunctionMultiDimTempl< T >::operator() ( const T *  x) const
inlineinherited

Evaluate the function at a point x[]. Use the pure virtual private method DoEval which must be implemented by the sub-classes

Definition at line 92 of file IFunction.h.

93  {
94  return DoEval(x);
95  }
virtual T DoEval(const T *x) const =0

References ROOT::Math::IBaseFunctionMultiDimTempl< T >::DoEval().

Referenced by ROOT::Math::IGradientFunctionMultiDimTempl< T >::FdF().

Here is the call graph for this function:

◆ SetDimension()

void ROOT::Fit::FcnAdapter::SetDimension ( int  dim)
inline

Definition at line 44 of file FcnAdapter.h.

44 { fDim = dim; }

References fDim.

Member Data Documentation

◆ fDim

unsigned int ROOT::Fit::FcnAdapter::fDim
private

Definition at line 58 of file FcnAdapter.h.

Referenced by Clone(), DoEval(), NDim(), and SetDimension().

◆ fFCN

void(* ROOT::Fit::FcnAdapter::fFCN) (int &, double *, double &, double *, int)
private

Definition at line 59 of file FcnAdapter.h.

Referenced by Clone(), and DoEval().


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