13 #ifndef ROOT_Math_IParamFunction 14 #define ROOT_Math_IParamFunction 16 #ifndef ROOT_Math_IFunction 20 #ifndef ROOT_Math_IParamFunctionfwd 24 #ifndef ROOT_Math_Util 83 virtual unsigned int NPar()
const = 0;
125 double operator() (
const double *
x,
const double * p )
const {
126 return DoEvalPar(x, p);
129 using BaseFunc::operator();
138 virtual double DoEvalPar(
const double *
x,
const double * p)
const = 0;
143 virtual double DoEval(
const double *x)
const {
168 using BaseFunc::operator();
177 double operator() (
double x,
const double * p )
const {
178 return DoEvalPar(x, p);
185 double operator() (
const double *
x,
const double * p )
const 187 return DoEvalPar(*x, p);
196 virtual double DoEvalPar(
double x,
const double * p)
const = 0;
242 using BaseParamFunc::operator();
249 unsigned int npar =
NPar();
250 for (
unsigned int ipar = 0; ipar < npar; ++ipar)
251 grad[ipar] = DoParameterDerivative(x,p,ipar);
258 return DoParameterDerivative(x, p, ipar);
265 return ParameterGradient(x,
Parameters(), grad);
271 return DoParameterDerivative(x,
Parameters() , ipar);
281 virtual double DoParameterDerivative(
const double *
x,
const double * p,
unsigned int ipar)
const = 0;
318 using BaseParamFunc::operator();
325 unsigned int npar =
NPar();
326 for (
unsigned int ipar = 0; ipar < npar; ++ipar)
327 grad[ipar] = DoParameterDerivative(x, p, ipar);
334 return ParameterGradient( x,
Parameters(), grad);
341 ParameterGradient(*x, p, grad);
348 return ParameterGradient( *x,
Parameters(), grad);
356 return DoParameterDerivative(x, p, ipar);
363 return DoParameterDerivative(x,
Parameters() , ipar);
371 return DoParameterDerivative(*x, p, ipar);
379 return DoParameterDerivative( *x,
Parameters() , ipar);
390 virtual double DoParameterDerivative(
double x,
const double * p,
unsigned int ipar )
const = 0;
virtual const double * Parameters() const =0
Access the parameter values.
Interface (abstract class) for multi-dimensional functions providing a gradient calculation.
double ParameterDerivative(double x, unsigned int ipar=0) const
Evaluate partial derivative using cached parameter values.
void ParameterGradient(const double *x, double *grad) const
Evaluate all derivatives using cached parameter values.
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
virtual ~IParametricGradFunctionMultiDim()
Virtual Destructor (no operations)
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
double ParameterDerivative(double x, const double *p, unsigned int ipar=0) const
Partial derivative with respect a parameter.
virtual ~IParametricGradFunctionOneDim()
Virtual Destructor (no operations)
IBaseFunctionOneDim BaseFunc
IParametricFunctionOneDim BaseParamFunc
IParametricFunctionMultiDim::BaseFunc BaseFunc
IGradientFunctionOneDim BaseGradFunc
Interface (abstract class) for one-dimensional functions providing a gradient calculation.
virtual double DoEval(const double *x) const
Implement the ROOT::Math::IBaseFunctionMultiDim interface DoEval(x) using the cached parameter values...
double ParameterDerivative(const double *x, const double *p, unsigned int ipar=0) const
Evaluate the partial derivative w.r.t a parameter ipar from values and parameters.
virtual void ParameterGradient(const double *x, const double *p, double *grad) const
Evaluate the all the derivatives (gradient vector) of the function with respect to the parameters at ...
void ParameterGradient(double x, double *grad) const
Evaluate all derivatives using cached parameter values.
virtual double DoEval(double x) const
Implement the ROOT::Math::IBaseFunctionOneDim interface DoEval(x) using the cached parameter values...
virtual ~IBaseParam()
Virtual Destructor (no operations)
IGradientFunctionMultiDim BaseGradFunc
virtual unsigned int NPar() const =0
Return the number of Parameters.
virtual void ParameterGradient(double x, const double *p, double *grad) const
Evaluate the derivatives of the function with respect to the parameters at a point x...
IParamFunction interface (abstract class) describing multi-dimensional parameteric functions It is a ...
void ParameterGradient(const double *x, double *grad) const
Evaluate all derivatives using cached parameter values (multi-dim like interface) ...
void ParameterGradient(const double *x, const double *p, double *grad) const
Compatibility interface with multi-dimensional functions.
IParametricFunctionOneDim::BaseFunc BaseFunc
Interface (abstract class) for parametric one-dimensional gradient functions providing in addition to...
virtual void SetParameters(const double *p)=0
Set the parameter values.
double ParameterDerivative(const double *x, unsigned int ipar=0) const
Evaluate partial derivative using cached parameter values.
double ParameterDerivative(const double *x, const double *p, unsigned int ipar=0) const
Partial derivative with respect a parameter Compatibility interface with multi-dimensional functions...
Specialized IParamFunction interface (abstract class) for one-dimensional parametric functions It is ...
double ParameterDerivative(const double *x, unsigned int ipar=0) const
Evaluate partial derivative using cached parameter values (multi-dim like interface) ...
Interface (abstract class) for parametric gradient multi-dimensional functions providing in addition ...
IParametricFunctionMultiDim BaseParamFunc
Namespace for new Math classes and functions.
IBaseFunctionMultiDim BaseFunc
std::string ToString(const T &val)
Utility function for conversion to strings.
Documentation for the abstract class IBaseParam.
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 nam...
Documentation for the abstract class IBaseFunctionMultiDim.