ROOT   Reference Guide
Searching...
No Matches
template<class Function>

## Public Member Functions

std::vector< doubleG2 (const std::vector< double > &x) const override
return second derivatives (diagonal of the Hessian matrix)

std::vector< doubleGradient (const std::vector< double > &v) const override

std::vector< doubleGradientWithPrevResult (const std::vector< double > &v, double *previous_grad, double *previous_g2, double *previous_gstep) const override

bool HasG2 () const override

bool HasHessian () const override

std::vector< doubleHessian (const std::vector< double > &x) const override
compute Hessian. Return Hessian as a std::vector of size(n*n)

double operator() (const double *v) const

double operator() (const std::vector< double > &v) const override
The meaning of the vector of parameters is of course defined by the user, who uses the values of those parameters to calculate their function Value.

void SetErrorDef (double up) override
add interface to set dynamically a new error definition Re-implement this function if needed.

template<class Func >
void SetG2Function (Func f)

template<class Func >
void SetHessianFunction (Func f)

double Up () const override
Error definition of the function.

Public Member Functions inherited from ROOT::Minuit2::FCNGradientBase

virtual std::vector< doubleG2 (const std::vector< double > &) const
return second derivatives (diagonal of the Hessian matrix)

virtual std::vector< doubleGradient (const std::vector< double > &) const =0

virtual std::vector< doubleGradientWithPrevResult (const std::vector< double > &parameters, double *, double *, double *) const

virtual bool HasG2 () const

virtual bool HasHessian () const

virtual std::vector< doubleHessian (const std::vector< double > &) const
return Hessian

Public Member Functions inherited from ROOT::Minuit2::FCNBase
~FCNBase () override

virtual double ErrorDef () const
Error definition of the function.

double operator() (const std::vector< double > &v) const override=0
The meaning of the vector of parameters is of course defined by the user, who uses the values of those parameters to calculate their function Value.

virtual void SetErrorDef (double)
add interface to set dynamically a new error definition Re-implement this function if needed.

virtual double Up () const =0
Error definition of the function.

Public Member Functions inherited from ROOT::Minuit2::GenericFunction
virtual ~GenericFunction ()

virtual double operator() (const std::vector< double > &x) const =0
Evaluates the function using the vector containing the input values.

## Private Attributes

const FunctionfFunc

std::function< std::vector< double >(const std::vector< double > &)> fG2Func

std::vector< doublefG2Vec

std::vector< doublefHessian

std::function< bool(const std::vector< double > &, double *)> fHessianFunc

double fUp

#include <Minuit2/FCNGradAdapter.h>

[legend]

## Constructor & Destructor Documentation

template<class Function >
 ROOT::Minuit2::FCNGradAdapter< Function >::FCNGradAdapter ( const Function & f, double up = 1. )
inline

template<class Function >
inlineoverride

## Member Function Documentation

template<class Function >
inlineoverridevirtual

## ◆ G2()

template<class Function >
 std::vector< double > ROOT::Minuit2::FCNGradAdapter< Function >::G2 ( const std::vector< double > & x ) const
inlineoverridevirtual

return second derivatives (diagonal of the Hessian matrix)

template<class Function >
inlineoverridevirtual

template<class Function >
 std::vector< double > ROOT::Minuit2::FCNGradAdapter< Function >::GradientWithPrevResult ( const std::vector< double > & v, double * previous_grad, double * previous_g2, double * previous_gstep ) const
inlineoverridevirtual

template<class Function >
inlineoverridevirtual

## ◆ HasG2()

template<class Function >
inlineoverridevirtual

## ◆ HasHessian()

template<class Function >
inlineoverridevirtual

## ◆ Hessian()

template<class Function >
 std::vector< double > ROOT::Minuit2::FCNGradAdapter< Function >::Hessian ( const std::vector< double > & x ) const
inlineoverridevirtual

compute Hessian. Return Hessian as a std::vector of size(n*n)

## ◆ operator()() [1/2]

template<class Function >
inline

## ◆ operator()() [2/2]

template<class Function >
 double ROOT::Minuit2::FCNGradAdapter< Function >::operator() ( const std::vector< double > & v ) const
inlineoverridevirtual

The meaning of the vector of parameters is of course defined by the user, who uses the values of those parameters to calculate their function Value.

The order and the position of these parameters is strictly the one specified by the user when supplying the starting values for minimization. The starting values must be specified by the user, either via an std::vector<double> or the MnUserParameters supplied as input to the MINUIT minimizers such as VariableMetricMinimizer or MnMigrad. Later values are determined by MINUIT as it searches for the Minimum or performs whatever analysis is requested by the user.

Parameters
 v function parameters as defined by the user.
Returns
the Value of the function.
MnUserParameters
VariableMetricMinimizer

Implements ROOT::Minuit2::FCNBase.

## ◆ SetErrorDef()

template<class Function >
inlineoverridevirtual

add interface to set dynamically a new error definition Re-implement this function if needed.

Reimplemented from ROOT::Minuit2::FCNBase.

## ◆ SetG2Function()

template<class Function >
template<class Func >
inline

## ◆ SetHessianFunction()

template<class Function >
template<class Func >
inline

## ◆ Up()

template<class Function >
inlineoverridevirtual

Error definition of the function.

MINUIT defines Parameter errors as the change in Parameter Value required to change the function Value by up. Normally, for chisquared fits it is 1, and for negative log likelihood, its Value is 0.5. If the user wants instead the 2-sigma errors for chisquared fits, it becomes 4, as Chi2(x+n*sigma) = Chi2(x) + n*n.

Implements ROOT::Minuit2::FCNBase.

## ◆ fFunc

template<class Function >
private

## ◆ fG2Func

template<class Function >
private

## ◆ fG2Vec

template<class Function >
mutableprivate

template<class Function >
mutableprivate

## ◆ fHessian

template<class Function >
mutableprivate

## ◆ fHessianFunc

template<class Function >