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_InitialGradientCalculator 11 #define ROOT_Minuit2_InitialGradientCalculator 12 13 #include "Minuit2/GradientCalculator.h" 14 15 namespace ROOT { 16 17 namespace Minuit2 { 18 19 class MnFcn; 20 class MnUserTransformation; 21 class MnMachinePrecision; 22 class MnStrategy; 23 24 /** 25 Class to calculate an initial estimate of the gradient 26 */ 27 class InitialGradientCalculator : public GradientCalculator { 28 29 public: InitialGradientCalculator(const MnFcn & fcn,const MnUserTransformation & par,const MnStrategy & stra)30 InitialGradientCalculator(const MnFcn &fcn, const MnUserTransformation &par, const MnStrategy &stra) 31 : fFcn(fcn), fTransformation(par), fStrategy(stra){}; 32 ~InitialGradientCalculator()33 virtual ~InitialGradientCalculator() {} 34 35 virtual FunctionGradient operator()(const MinimumParameters &) const; 36 37 virtual FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const; 38 Fcn()39 const MnFcn &Fcn() const { return fFcn; } Trafo()40 const MnUserTransformation &Trafo() const { return fTransformation; } 41 const MnMachinePrecision &Precision() const; Strategy()42 const MnStrategy &Strategy() const { return fStrategy; } 43 44 unsigned int Ncycle() const; 45 double StepTolerance() const; 46 double GradTolerance() const; 47 48 private: 49 const MnFcn &fFcn; 50 const MnUserTransformation &fTransformation; 51 const MnStrategy &fStrategy; 52 }; 53 54 } // namespace Minuit2 55 56 } // namespace ROOT 57 58 #endif // ROOT_Minuit2_InitialGradientCalculator 59