13 #ifndef ROOT_Math_FitMethodFunction
14 #define ROOT_Math_FitMethodFunction
35 template<
class FunctionType>
36 class BasicFitMethodFunction :
public FunctionType {
41 typedef typename FunctionType::BaseFunc BaseFunction;
44 enum Type_t { kUndefined , kLeastSquare, kLogLikelihood };
47 BasicFitMethodFunction(
int dim,
int npoint) :
56 virtual ~BasicFitMethodFunction () {}
61 virtual unsigned int NDim()
const {
return fNDim; }
69 virtual double DataElement(
const double *x,
unsigned int i,
double *g = 0)
const = 0;
75 virtual unsigned int NPoints()
const {
return fNPoints; }
80 virtual Type_t Type()
const {
return kUndefined; }
85 virtual unsigned int NCalls()
const {
return fNCalls; }
90 virtual void UpdateNCalls()
const { fNCalls++; }
95 virtual void ResetNCalls() { fNCalls = 0; }
108 unsigned int fNPoints;
109 mutable unsigned int fNCalls;
115 typedef BasicFitMethodFunction<ROOT::Math::IMultiGenFunction> FitMethodFunction;
116 typedef BasicFitMethodFunction<ROOT::Math::IMultiGradFunction> FitMethodGradFunction;