MultiDimParamFunctionAdapter class to wrap a one-dimensional parametric function in a multi dimensional parametric function interface This is used typically in fitting where internally the function is stored as multidimensional.
To wrap a non-parametric one-dim function in a multi-dim interface one can use simply a ROOT::Math::WrappedFunction<ROOT::Math::IGenFunction> or ROOT::Math::Functor and ROOT::Math::GradFunctor for gradient functions
This class differs from WrappedParamFunction in the fact that the parameters are not stored in the adapter class and optionally it keeps a cloned and managed copy of the adapter class.
Definition at line 41 of file MultiDimParamFunctionAdapter.h.
Public Types | |
| typedef double | BackendType |
| typedef IParamMultiFunction::BaseFunc | BaseFunc |
Public Member Functions | |
| MultiDimParamFunctionAdapter (const IParamFunction &f) | |
| Constructor from a parametric one dim function interface from a const reference Own the function in this case. | |
| MultiDimParamFunctionAdapter (const MultiDimParamFunctionAdapter &rhs) | |
| Copy constructor. | |
| MultiDimParamFunctionAdapter (IParamFunction &f) | |
| Constructor from a parametric one dim function interface from a non-const reference Do not own the function in this case. | |
| ~MultiDimParamFunctionAdapter () override | |
| Destructor (no operations). | |
| BaseFunc * | Clone () const override |
| clone | |
| double | Derivative (const double *x, unsigned int icoord, double *previous_grad, double *previous_g2, double *previous_gstep) const |
| In some cases, the derivative algorithm will use information from the previous step, these can be passed in with this overload. | |
| double | Derivative (const double *x, unsigned int icoord=0) const |
| Return the partial derivative with respect to the passed coordinate. | |
| virtual void | FdF (const double *x, double &f, double *df) const |
| Optimized method to evaluate at the same time the function value and derivative at a point x. | |
| virtual void | Gradient (const double *x, double *grad) const |
| Evaluate all the vector of function derivatives (gradient) at a point x. | |
| virtual bool | HasGradient () const |
| unsigned int | NDim () const override |
| Retrieve the dimension of the function. | |
| unsigned int | NPar () const override |
| Return the number of Parameters. | |
| double | operator() (const double *x) const |
| double | operator() (const double *x, const double *p) const |
| Evaluate function at a point x and for given parameters p. | |
| MultiDimParamFunctionAdapter & | operator= (const MultiDimParamFunctionAdapter &rhs) |
| Assignment operator. | |
| virtual std::string | ParameterName (unsigned int i) const |
| Return the name of the i-th parameter (starting from zero) Overwrite if want to avoid the default name ("Par_0, Par_1, ..."). | |
| const double * | Parameters () const override |
| Access the parameter values. | |
| void | SetParameters (const double *p) override |
| Set the parameter values. | |
Private Member Functions | |
| double | DoEval (const double *x) const override |
| Implement the ROOT::Math::IBaseFunctionMultiDim interface DoEval(x) using the cached parameter values. | |
| double | DoEvalPar (const double *x, const double *p) const override |
| needed by the interface | |
Private Attributes | |
| IParamFunction * | fFunc |
| bool | fOwn |
#include <Math/MultiDimParamFunctionAdapter.h>
|
inherited |
Definition at line 67 of file IFunction.h.
Definition at line 45 of file MultiDimParamFunctionAdapter.h.
|
inline |
Constructor from a parametric one dim function interface from a const reference Own the function in this case.
Definition at line 52 of file MultiDimParamFunctionAdapter.h.
|
inline |
Constructor from a parametric one dim function interface from a non-const reference Do not own the function in this case.
Definition at line 62 of file MultiDimParamFunctionAdapter.h.
|
inline |
Copy constructor.
Different behaviour according if function is owned or not
Definition at line 71 of file MultiDimParamFunctionAdapter.h.
|
inlineoverride |
Destructor (no operations).
Definition at line 84 of file MultiDimParamFunctionAdapter.h.
|
inlineoverridevirtual |
clone
Implements ROOT::Math::IBaseFunctionMultiDimTempl< double >.
Definition at line 108 of file MultiDimParamFunctionAdapter.h.
|
inlineinherited |
In some cases, the derivative algorithm will use information from the previous step, these can be passed in with this overload.
The previous_* arrays can also be used to return second derivative and step size so that these can be passed forward again as well at the call site, if necessary.
Definition at line 120 of file IFunction.h.
|
inlineinherited |
Return the partial derivative with respect to the passed coordinate.
Definition at line 115 of file IFunction.h.
|
inlineoverrideprivatevirtualinherited |
Implement the ROOT::Math::IBaseFunctionMultiDim interface DoEval(x) using the cached parameter values.
Implements ROOT::Math::IBaseFunctionMultiDimTempl< double >.
Reimplemented in ROOT::Math::IParametricGradFunctionMultiDimTempl< double >, ROOT::Math::WrappedMultiTF1Templ< double >, and ROOT::Math::WrappedParamFunctionGen< FuncPtr >.
Definition at line 143 of file IParamFunction.h.
|
inlineoverrideprivatevirtual |
needed by the interface
Implements ROOT::Math::IParametricFunctionMultiDimTempl< double >.
Definition at line 140 of file MultiDimParamFunctionAdapter.h.
|
inlinevirtualinherited |
Optimized method to evaluate at the same time the function value and derivative at a point x.
Often both value and derivatives are needed and it is often more efficient to compute them at the same time. Derived class should implement this method if performances play an important role and if it is faster to evaluate value and derivative at the same time
Reimplemented in ROOT::Math::LSResidualFunc< Func >.
Definition at line 108 of file IFunction.h.
|
inlinevirtualinherited |
Evaluate all the vector of function derivatives (gradient) at a point x.
Derived classes must re-implement it if more efficient than evaluating one at a time
Reimplemented in ROOT::Math::GradFunctor, and ROOT::Math::LSResidualFunc< Func >.
Definition at line 96 of file IFunction.h.
|
inlinevirtualinherited |
Reimplemented in ROOT::Math::IGradientFunctionMultiDimTempl< double >.
Definition at line 92 of file IFunction.h.
|
inlineoverridevirtual |
Retrieve the dimension of the function.
Implements ROOT::Math::IBaseFunctionMultiDimTempl< double >.
Definition at line 131 of file MultiDimParamFunctionAdapter.h.
|
inlineoverridevirtual |
Return the number of Parameters.
Implements ROOT::Math::IBaseParam.
Definition at line 126 of file MultiDimParamFunctionAdapter.h.
|
inlineinherited |
Definition at line 128 of file IParamFunction.h.
|
inlineinherited |
Evaluate function at a point x and for given parameters p.
This method does not change the internal status of the function (internal parameter values). If for some reason one prefers caching the parameter values, SetParameters(p) and then operator()(x) should be called. Use the pure virtual function DoEvalPar to implement it
Definition at line 123 of file IParamFunction.h.
|
inline |
Assignment operator.
Definition at line 93 of file MultiDimParamFunctionAdapter.h.
|
inlinevirtualinherited |
Return the name of the i-th parameter (starting from zero) Overwrite if want to avoid the default name ("Par_0, Par_1, ...").
Reimplemented in ROOT::Math::VavilovAccurateCdf, ROOT::Math::VavilovAccuratePdf, ROOT::Math::VavilovAccurateQuantile, ROOT::Math::WrappedMultiTF1Templ< T >, ROOT::Math::WrappedMultiTF1Templ< double >, and ROOT::Math::WrappedTF1.
Definition at line 86 of file IParamFunction.h.
|
inlineoverridevirtual |
Access the parameter values.
Implements ROOT::Math::IBaseParam.
Definition at line 116 of file MultiDimParamFunctionAdapter.h.
|
inlineoverridevirtual |
Set the parameter values.
| p | vector of doubles containing the parameter values. |
to be defined: can user change number of params ? At the moment no.
Implements ROOT::Math::IBaseParam.
Definition at line 121 of file MultiDimParamFunctionAdapter.h.
|
private |
Definition at line 149 of file MultiDimParamFunctionAdapter.h.
|
private |
Definition at line 148 of file MultiDimParamFunctionAdapter.h.