Logo ROOT  
Reference Guide
FumiliErrorUpdator.h
Go to the documentation of this file.
1// @(#)root/minuit2:$Id$
2// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3
4/**********************************************************************
5 * *
6 * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7 * *
8 **********************************************************************/
9
10#ifndef ROOT_Minuit2_FumiliErrorUpdator
11#define ROOT_Minuit2_FumiliErrorUpdator
12
14
15namespace ROOT {
16
17namespace Minuit2 {
18
19class MinimumState;
20class MinimumParameters;
21class GradientCalculator;
22class FumiliFCNBase;
23class FunctionGradient;
24
25/**
26
27In the case of the Fumili algorithm the Error matrix (or the Hessian
28matrix containing the (approximate) second derivatives) is calculated
29using a linearization of the model function negleting second
30derivatives. (In some sense the Name Updator is a little bit misleading
31as the Error matrix is not calculated by iteratively updating, like
32in Davidon's or other similar variable metric methods, but by
33recalculating each time).
34
35
36@author Andras Zsenei and Lorenzo Moneta, Creation date: 28 Sep 2004
37
38@see <A HREF="http://www.cern.ch/winkler/minuit/tutorial/mntutorial.pdf">MINUIT Tutorial</A> on function minimization,
39section 5
40
41@see DavidonErrorUpdator
42
43@ingroup Minuit
44
45*/
46
48
49public:
51
52 ~FumiliErrorUpdator() override {}
53
54 /**
55
56 Member function that calculates the Error matrix (or the Hessian
57 matrix containing the (approximate) second derivatives) using a
58 linearization of the model function negleting second derivatives.
59
60 @param fMinimumState used to calculate the change in the covariance
61 matrix between the two iterations
62
63 @param fMinimumParameters the parameters at the present iteration
64
65 @param fGradientCalculator the Gradient calculator used to retrieved the Parameter transformation
66
67 @param lambda the Marquard lambda factor
68
69
70 \todo Some nice latex mathematical formuli...
71
72 */
73
74 virtual MinimumError Update(const MinimumState &fMinimumState, const MinimumParameters &fMinimumParameters,
75 const GradientCalculator &fGradientCalculator, double lambda) const;
76
77 /**
78
79 Member function which is only present due to the design already in place
80 of the software. As all classes calculating the Error matrix are supposed
81 inherit from the MinimumErrorUpdator they must inherit this method. In some
82 methods calculating the aforementioned matrix some of these parameters are
83 not needed and other parameters are necessary... Hopefully, a more elegant
84 solution will be found in the future.
85
86 \todo How to get rid of this dummy method which is only due to the inheritance
87
88 */
89
90 MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override;
91
92private:
93};
94
95} // namespace Minuit2
96
97} // namespace ROOT
98
99#endif // ROOT_Minuit2_FumiliErrorUpdator
In the case of the Fumili algorithm the Error matrix (or the Hessian matrix containing the (approxima...
virtual MinimumError Update(const MinimumState &fMinimumState, const MinimumParameters &fMinimumParameters, const GradientCalculator &fGradientCalculator, double lambda) const
Member function that calculates the Error matrix (or the Hessian matrix containing the (approximate) ...
interface class for gradient calculators
MinimumError keeps the inv.
Definition: MinimumError.h:28
MinimumState keeps the information (position, Gradient, 2nd deriv, etc) after one minimization step (...
Definition: MinimumState.h:27
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.