|
||||
File indexing completed on 2025-01-18 10:10:23
0001 // @(#)root/minuit2:$Id$ 0002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005 0003 0004 /********************************************************************** 0005 * * 0006 * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT * 0007 * * 0008 **********************************************************************/ 0009 0010 #ifndef ROOT_Minuit2_FumiliErrorUpdator 0011 #define ROOT_Minuit2_FumiliErrorUpdator 0012 0013 #include "Minuit2/MinimumErrorUpdator.h" 0014 0015 namespace ROOT { 0016 0017 namespace Minuit2 { 0018 0019 class MinimumState; 0020 class MinimumParameters; 0021 class GradientCalculator; 0022 class FumiliFCNBase; 0023 class FunctionGradient; 0024 0025 /** 0026 0027 In the case of the Fumili algorithm the Error matrix (or the Hessian 0028 matrix containing the (approximate) second derivatives) is calculated 0029 using a linearization of the model function negleting second 0030 derivatives. (In some sense the Name Updator is a little bit misleading 0031 as the Error matrix is not calculated by iteratively updating, like 0032 in Davidon's or other similar variable metric methods, but by 0033 recalculating each time). 0034 0035 0036 @author Andras Zsenei and Lorenzo Moneta, Creation date: 28 Sep 2004 0037 0038 @see <A HREF="http://www.cern.ch/winkler/minuit/tutorial/mntutorial.pdf">MINUIT Tutorial</A> on function minimization, 0039 section 5 0040 0041 @see DavidonErrorUpdator 0042 0043 @ingroup Minuit 0044 0045 */ 0046 0047 class FumiliErrorUpdator : public MinimumErrorUpdator { 0048 0049 public: 0050 FumiliErrorUpdator() {} 0051 0052 ~FumiliErrorUpdator() override {} 0053 0054 /** 0055 0056 Member function that calculates the Error matrix (or the Hessian 0057 matrix containing the (approximate) second derivatives) using a 0058 linearization of the model function negleting second derivatives. 0059 0060 @param fMinimumState used to calculate the change in the covariance 0061 matrix between the two iterations 0062 0063 @param fMinimumParameters the parameters at the present iteration 0064 0065 @param fGradientCalculator the Gradient calculator used to retrieved the Parameter transformation 0066 0067 @param lambda the Marquard lambda factor 0068 0069 0070 \todo Some nice latex mathematical formuli... 0071 0072 */ 0073 0074 virtual MinimumError Update(const MinimumState &fMinimumState, const MinimumParameters &fMinimumParameters, 0075 const GradientCalculator &fGradientCalculator, double lambda) const; 0076 0077 /** 0078 0079 Member function which is only present due to the design already in place 0080 of the software. As all classes calculating the Error matrix are supposed 0081 inherit from the MinimumErrorUpdator they must inherit this method. In some 0082 methods calculating the aforementioned matrix some of these parameters are 0083 not needed and other parameters are necessary... Hopefully, a more elegant 0084 solution will be found in the future. 0085 0086 \todo How to get rid of this dummy method which is only due to the inheritance 0087 0088 */ 0089 0090 MinimumError Update(const MinimumState &, const MinimumParameters &, const FunctionGradient &) const override; 0091 0092 private: 0093 }; 0094 0095 } // namespace Minuit2 0096 0097 } // namespace ROOT 0098 0099 #endif // ROOT_Minuit2_FumiliErrorUpdator
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |