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 in the case of chi-square is the sum of the squares of the figures-of-merit calculated for each measurement point, which is implemented by the operator() member function. The user still has to implement the calculation of the individual figures-of-merit (which in the majority of the cases will be the (measured Value - the Value predicted by the model)/standard deviation implemented by the FumiliStandardChi2FCN; however this form can become more complicated (see for an example Numerical Recipes' section on "Straight-Line Data with Errors in Both Coordinates")).
- Author
- Andras Zsenei and Lorenzo Moneta, Creation date: 24 Aug 2004
- See also
- MINUIT Tutorial on function minimization, section 5
-
FumiliStandardChi2FCN
Definition at line 49 of file FumiliChi2FCN.h.
|
| virtual unsigned int | Dimension () |
| | return number of function variable (parameters) , i.e.
|
| |
| virtual std::vector< double > | Elements (std::vector< double > const &par) const =0 |
| | Evaluates the model function for the different measurement points and the Parameter values supplied, calculates a figure-of-merit for each measurement and returns a vector containing the result of this evaluation.
|
| |
| virtual double | ErrorDef () const |
| | Error definition of the function.
|
| |
| virtual void | EvaluateAll (std::vector< double > const &par)=0 |
| | Evaluate function Value, Gradient and Hessian using Fumili approximation, for values of parameters p The result is cached inside and is return from the FumiliFCNBase::Value , FumiliFCNBase::Gradient and FumiliFCNBase::Hessian methods.
|
| |
| virtual std::vector< double > | G2 (std::vector< double > const &) const |
| | Return the diagonal elements of the Hessian (second derivatives).
|
| |
| virtual const std::vector< double > & | GetMeasurement (int Index) const =0 |
| | Accessor to the parameters of a given measurement.
|
| |
| virtual int | GetNumberOfMeasurements () const =0 |
| | Accessor to the number of measurements used for calculating the present figure of merit.
|
| |
| virtual const std::vector< double > & | Gradient () const |
| | Return cached Value of function Gradient estimated previously using the FumiliFCNBase::EvaluateAll method.
|
| |
| std::vector< double > | Gradient (std::vector< double > const &) const override |
| | Return the gradient vector of the function at the given parameter point.
|
| |
| virtual std::vector< double > | GradientWithPrevResult (std::vector< double > const ¶meters, double *, double *, double *) const |
| |
| virtual std::vector< double > | GradientWithPrevResult (std::vector< double > const ¶meters, double *previous_grad, double *previous_g2, double *previous_gstep, double) const |
| | Variant of GradientWithPrevResult() that additionally receives the already-known function value at parameters (e.g.
|
| |
| virtual GradientParameterSpace | gradParameterSpace () const |
| |
| virtual bool | HasG2 () const |
| |
| bool | HasGradient () const override |
| |
| virtual bool | HasHessian () const |
| |
| std::vector< double > | Hessian (std::vector< double > const &) const override |
| | Return Value of the i-th j-th element of the Hessian matrix estimated previously using the FumiliFCNBase::EvaluateAll method.
|
| |
| virtual double | Hessian (unsigned int row, unsigned int col) const |
| |
| const ParametricFunction * | ModelFunction () const |
| | Returns the model function used for the data.
|
| |
| double | operator() (std::vector< double > const &par) const override |
| | Calculates the sum of Elements squared, ie the chi-square.
|
| |
| virtual bool | SecondDerivativeAlwaysVanishes (unsigned int, unsigned int) const |
| | Indicate whether the mixed second order derivative with respect to parameters i and j is identically zero, i.e.
|
| |
| virtual void | SetErrorDef (double) |
| | add interface to set dynamically a new error definition Re-implement this function if needed.
|
| |
| void | SetModelFunction (const ParametricFunction &modelFCN) |
| | Sets the model function for the data (for example gaussian+linear for a peak)
|
| |
| double | Up () const override |
| | !!!!!!!!!!!! to be commented
|
| |
| virtual double | Value () const |
| | Return cached Value of objective function estimated previously using the FumiliFCNBase::EvaluateAll method.
|
| |
| virtual double ROOT::Minuit2::FCNBase::ErrorDef |
( |
| ) |
const |
|
inlinevirtualinherited |
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.
Comment a little bit better with links!!!!!!!!!!!!!!!!!
Definition at line 70 of file FCNBase.h.
| virtual bool ROOT::Minuit2::FCNBase::SecondDerivativeAlwaysVanishes |
( |
unsigned int | , |
|
|
unsigned int | ) const |
|
inlinevirtualinherited |
Indicate whether the mixed second order derivative with respect to parameters i and j is identically zero, i.e.
zero for all parameter values. This can help to avoid expensive function calls in numerical Hessian evaluations (see MnHesse).
The contract for implementations:
- The indices refer to the FCN's own full (external) parameter space, including any parameters that are fixed in the minimizer. Callers that work with internal indices, like MnHesse, must translate them via MnUserTransformation::ExtOfInt() before calling this function.
- The result must be symmetric in i and j.
- Only return
true if the second derivative vanishes for any value of the parameters: the result may be cached and is used at arbitrary points in parameter space.
- The diagonal (i == j) is never queried by Minuit2, so its return value has no effect.
Reimplemented in ROOT::Minuit2::FCNAdapter.
Definition at line 163 of file FCNBase.h.