Logo ROOT   6.12/07
Reference Guide
FitMethodFunction.h
Go to the documentation of this file.
1 // @(#)root/mathcore:$Id$
2 // Author: L. Moneta Thu Aug 16 15:40:28 2007
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2007 LCG ROOT Math Team, CERN/PH-SFT *
7  * *
8  * *
9  **********************************************************************/
10 
11 // Header file for class FitMethodFunction
12 
13 #ifndef ROOT_Math_FitMethodFunction
14 #define ROOT_Math_FitMethodFunction
15 
16 #include "Math/IFunction.h"
17 
18 // #ifndef ROOT_Math_IParamFunctionfwd
19 // #include "Math/IParamFunctionfwd.h"
20 // #endif
21 
22 namespace ROOT {
23 
24  namespace Math {
25 
26 //______________________________________________________________________________________
27 /**
28  FitMethodFunction class
29  Interface for objective functions (like chi2 and likelihood used in the fit)
30  In addition to normal function interface provide interface for calculating each
31  data contrinution to the function which is required by some algorithm (like Fumili)
32 
33  @ingroup FitMethodFunc
34 */
35 template<class FunctionType>
36 class BasicFitMethodFunction : public FunctionType {
37 
38 public:
39 
40 
41  typedef typename FunctionType::BaseFunc BaseFunction;
42 
43  /// enumeration specyfing the possible fit method types
45 
46 
47  BasicFitMethodFunction(int dim, int npoint) :
48  fNDim(dim),
49  fNPoints(npoint),
50  fNCalls(0)
51  {}
52 
53  /**
54  Virtual Destructor (no operations)
55  */
57 
58  /**
59  Number of dimension (parameters) . From IGenMultiFunction interface
60  */
61  virtual unsigned int NDim() const { return fNDim; }
62 
63  /**
64  method returning the data i-th contribution to the fit objective function
65  For example the residual for the least square functions or the pdf element for the
66  likelihood functions.
67  Estimating eventually also the gradient of the data element if the passed pointer is not null
68  */
69  virtual double DataElement(const double *x, unsigned int i, double *g = 0) const = 0;
70 
71 
72  /**
73  return the number of data points used in evaluating the function
74  */
75  virtual unsigned int NPoints() const { return fNPoints; }
76 
77  /**
78  return the type of method, override if needed
79  */
80  virtual Type_t Type() const { return kUndefined; }
81 
82  /**
83  return the total number of function calls (overrided if needed)
84  */
85  virtual unsigned int NCalls() const { return fNCalls; }
86 
87  /**
88  update number of calls
89  */
90  virtual void UpdateNCalls() const { fNCalls++; }
91 
92  /**
93  reset number of function calls
94  */
95  virtual void ResetNCalls() { fNCalls = 0; }
96 
97 
98 
99 public:
100 
101 
102 protected:
103 
104 
105 private:
106 
107  unsigned int fNDim; // function dimension
108  unsigned int fNPoints; // size of the data
109  mutable unsigned int fNCalls; // number of function calls
110 
111 
112 };
113 
114  // define the normal and gradient function
117 
118 
119  // useful template definition to use these interface in
120  // generic programming
121  // (comment them out since they are not used anymore)
122 /*
123  template<class FunType>
124  struct ParamFunctionTrait {
125  typedef IParamMultiFunction PFType;
126  };
127 
128  // specialization for the gradient param functions
129  template<>
130  struct ParamFunctionTrait<ROOT::Math::IMultiGradFunction> {
131  typedef IParamMultiGradFunction PFType;
132  };
133 */
134 
135 
136  } // end namespace Math
137 
138 } // end namespace ROOT
139 
140 
141 
142 
143 
144 
145 #endif /* ROOT_Math_FitMethodFunction */
virtual void UpdateNCalls() const
update number of calls
Type_t
enumeration specyfing the possible fit method types
Namespace for new ROOT classes and functions.
Definition: StringConv.hxx:21
virtual ~BasicFitMethodFunction()
Virtual Destructor (no operations)
virtual unsigned int NPoints() const
return the number of data points used in evaluating the function
Double_t x[n]
Definition: legend1.C:17
virtual Type_t Type() const
return the type of method, override if needed
virtual void ResetNCalls()
reset number of function calls
FunctionType::BaseFunc BaseFunction
virtual unsigned int NDim() const
Number of dimension (parameters) .
FitMethodFunction class Interface for objective functions (like chi2 and likelihood used in the fit) ...
Definition: Fitter.h:40
Namespace for new Math classes and functions.
virtual unsigned int NCalls() const
return the total number of function calls (overrided if needed)
BasicFitMethodFunction< ROOT::Math::IMultiGradFunction > FitMethodGradFunction
Definition: Fitter.h:44
BasicFitMethodFunction(int dim, int npoint)
virtual double DataElement(const double *x, unsigned int i, double *g=0) const =0
method returning the data i-th contribution to the fit objective function For example the residual fo...
BasicFitMethodFunction< ROOT::Math::IMultiGenFunction > FitMethodFunction
Definition: Fitter.h:40
static constexpr double g