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_HessianGradientCalculator 11 #define ROOT_Minuit2_HessianGradientCalculator 12 13 #include "Minuit2/GradientCalculator.h" 14 #include "Minuit2/MnMatrix.h" 15 #include <utility> 16 17 namespace ROOT { 18 19 namespace Minuit2 { 20 21 class MnFcn; 22 class MnUserTransformation; 23 class MnMachinePrecision; 24 class MnStrategy; 25 26 /** 27 HessianGradientCalculator: class to calculate Gradient for Hessian 28 */ 29 30 class HessianGradientCalculator : public GradientCalculator { 31 32 public: HessianGradientCalculator(const MnFcn & fcn,const MnUserTransformation & par,const MnStrategy & stra)33 HessianGradientCalculator(const MnFcn &fcn, const MnUserTransformation &par, const MnStrategy &stra) 34 : fFcn(fcn), fTransformation(par), fStrategy(stra) 35 { 36 } 37 ~HessianGradientCalculator()38 virtual ~HessianGradientCalculator() {} 39 40 virtual FunctionGradient operator()(const MinimumParameters &) const; 41 42 virtual FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const; 43 44 std::pair<FunctionGradient, MnAlgebraicVector> 45 DeltaGradient(const MinimumParameters &, const FunctionGradient &) const; 46 Fcn()47 const MnFcn &Fcn() const { return fFcn; } Trafo()48 const MnUserTransformation &Trafo() const { return fTransformation; } 49 const MnMachinePrecision &Precision() const; Strategy()50 const MnStrategy &Strategy() const { return fStrategy; } 51 52 unsigned int Ncycle() const; 53 double StepTolerance() const; 54 double GradTolerance() const; 55 56 private: 57 const MnFcn &fFcn; 58 const MnUserTransformation &fTransformation; 59 const MnStrategy &fStrategy; 60 }; 61 62 } // namespace Minuit2 63 64 } // namespace ROOT 65 66 #endif // ROOT_Minuit2_HessianGradientCalculator 67