13 #ifndef ROOT_Math_WrappedTF1
14 #define ROOT_Math_WrappedTF1
37 class WrappedTF1 :
public ROOT::Math::IParamGradFunction,
public ROOT::Math::IGradientOneDim {
41 typedef ROOT::Math::IGradientOneDim IGrad;
42 typedef ROOT::Math::IParamGradFunction BaseGradFunc;
43 typedef ROOT::Math::IParamGradFunction::BaseFunc BaseFunc;
54 virtual ~WrappedTF1() {}
59 WrappedTF1(
const WrappedTF1 &rhs);
64 WrappedTF1 &operator = (
const WrappedTF1 &rhs);
71 ROOT::Math::IGenFunction *Clone()
const
73 return new WrappedTF1(*
this);
80 const double *Parameters()
const
83 return fFunc->GetParameters();
88 void SetParameters(
const double *p)
91 fFunc->SetParameters(p);
95 unsigned int NPar()
const
98 return fFunc->GetNpar();
102 std::string ParameterName(
unsigned int i)
const
104 return std::string(fFunc->GetParName(i));
108 using BaseGradFunc::operator();
111 void ParameterGradient(
double x,
const double *par,
double *grad)
const;
114 void FdF(
double x,
double &f,
double &deriv)
const
117 deriv = DoDerivative(x);
122 static void SetDerivPrecision(
double eps);
125 static double GetDerivPrecision();
131 double DoEvalPar(
double x,
const double *p)
const
134 if (fFunc->GetMethodCall()) fFunc->InitArgs(fX, p);
135 return fFunc->EvalPar(fX, p);
140 double DoEval(
double x)
const
146 return fFunc->EvalPar(fX, 0);
150 double DoDerivative(
double x)
const;
153 double DoParameterDerivative(
double x,
const double *p,
unsigned int ipar)
const;
158 mutable double fX[1];