ROOT logo
ROOT » MATH » MINUIT2 » ROOT::Minuit2::FumiliFCNBase

class ROOT::Minuit2::FumiliFCNBase: public ROOT::Minuit2::FCNBase



Extension of the FCNBase for the Fumili method. Fumili applies only to
minimization problems used for fitting. The method is based on a
linearization of the model function negleting second derivatives.
User needs to provide the model function. The figure-of-merit describing
the difference between the model function and the actual measurements
has to be implemented by the user in a subclass of FumiliFCNBase.
For an example see the FumiliChi2FCN and FumiliStandardChi2FCN classes.


@author  Andras Zsenei and Lorenzo Moneta, Creation date: 23 Aug 2004

@see <A HREF="http://www.cern.ch/winkler/minuit/tutorial/mntutorial.pdf">MINUIT Tutorial</A> on function minimization, section 5

@see FumiliChi2FCN

@see FumiliStandardChi2FCN

@ingroup Minuit


Function Members (Methods)

 
    This is an abstract class, constructors will not be documented.
    Look at the header to check for available constructors.

public:
virtual~FumiliFCNBase()
virtual unsigned intDimension()
virtual doubleROOT::Minuit2::FCNBase::ErrorDef() const
virtual voidEvaluateAll(const vector<double>& par)
virtual const vector<double>&Gradient() const
virtual doubleHessian(unsigned int row, unsigned int col) const
virtual doubleROOT::Minuit2::FCNBase::operator()(const vector<double>& x) const
ROOT::Minuit2::FCNBase&ROOT::Minuit2::FCNBase::operator=(const ROOT::Minuit2::FCNBase&)
virtual voidROOT::Minuit2::FCNBase::SetErrorDef(double)
virtual doubleROOT::Minuit2::FCNBase::Up() const
virtual doubleValue() const
protected:
vector<double>&Gradient()
vector<double>&Hessian()
virtual voidInitAndReset(unsigned int npar)
voidSetFCNValue(double value)

Data Members

private:
vector<double>fGradient
vector<double>fHessian
const ROOT::Minuit2::ParametricFunction*fModelFunction
unsigned intfNumberOfParameters
doublefValue

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

virtual ~FumiliFCNBase()
   FumiliFCNBase(const ParametricFunction& modelFCN) { fModelFunction = &modelFCN; }
{}
void EvaluateAll(const vector<double>& par)

      Evaluate function Value, Gradient and Hessian using Fumili approximation, for values of parameters p
      The resul is cached inside and is return from the FumiliFCNBase::Value ,  FumiliFCNBase::Gradient and
      FumiliFCNBase::Hessian methods

      @param par vector of parameters


double Value() const
      Return cached Value of objective function estimated previously using the  FumiliFCNBase::EvaluateAll method


{ return fValue; }
const std::vector<double> & Gradient()
      Return cached Value of function Gradient estimated previously using the  FumiliFCNBase::EvaluateAll method

{ return fGradient; }
double Hessian(unsigned int row, unsigned int col) const
      Return Value of the i-th j-th element of the Hessian matrix estimated previously using the  FumiliFCNBase::EvaluateAll method
      @param row row Index of the matrix
      @param col col Index of the matrix

unsigned int Dimension()
      return number of function variable (parameters) , i.e. function dimension

void InitAndReset(unsigned int npar)
      initialize and reset values of gradien and Hessian

void SetFCNValue(double value)
 methods to be used by the derived classes to set the values
{ fValue = value; }
std::vector<double> & Gradient()
{ return fGradient; }
std::vector<double> & Hessian()
{ return fHessian; }