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