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)
ROOT::Minuit2::FCNBaseROOT::Minuit2::FCNBase::FCNBase()
ROOT::Minuit2::FCNBaseROOT::Minuit2::FCNBase::FCNBase(const ROOT::Minuit2::FCNBase&)
ROOT::Minuit2::FumiliFCNBaseFumiliFCNBase()
ROOT::Minuit2::FumiliFCNBaseFumiliFCNBase(unsigned int npar)
ROOT::Minuit2::FumiliFCNBaseFumiliFCNBase(const ROOT::Minuit2::FumiliFCNBase&)
ROOT::Minuit2::GenericFunctionROOT::Minuit2::GenericFunction::GenericFunction()
ROOT::Minuit2::GenericFunctionROOT::Minuit2::GenericFunction::GenericFunction(const ROOT::Minuit2::GenericFunction&)
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::FumiliFCNBase&operator=(const ROOT::Minuit2::FumiliFCNBase&)
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
unsigned intfNumberOfParameters
doublefValue

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

FumiliFCNBase()
      Default Constructor. Need in this case to create when implementing EvaluateAll the Gradient and Hessian vectors with the right size

{}
FumiliFCNBase(unsigned int npar)

      Constructor which initializes the class with the function provided by the
      user for modeling the data.

      @param npar the number of parameters


{}
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() const
      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; }