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_AnalyticalGradientCalculator
11 #define ROOT_Minuit2_AnalyticalGradientCalculator
12 
13 #include "Minuit2/GradientCalculator.h"
14 
15 namespace ROOT {
16 
17 namespace Minuit2 {
18 
19 class FCNGradientBase;
20 class MnUserTransformation;
21 
22 class AnalyticalGradientCalculator : public GradientCalculator {
23 
24 public:
AnalyticalGradientCalculator(const FCNGradientBase & fcn,const MnUserTransformation & state)25    AnalyticalGradientCalculator(const FCNGradientBase &fcn, const MnUserTransformation &state)
26       : fGradCalc(fcn), fTransformation(state)
27    {
28    }
29 
~AnalyticalGradientCalculator()30    ~AnalyticalGradientCalculator() {}
31 
32    virtual FunctionGradient operator()(const MinimumParameters &) const;
33 
34    virtual FunctionGradient operator()(const MinimumParameters &, const FunctionGradient &) const;
35 
36    virtual bool CheckGradient() const;
37 
38 protected:
39    const FCNGradientBase &fGradCalc;
40    const MnUserTransformation &fTransformation;
41 };
42 
43 } // namespace Minuit2
44 
45 } // namespace ROOT
46 
47 #endif // ROOT_Minuit2_AnalyticalGradientCalculator
48