Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
FumiliGradientCalculator.h
Go to the documentation of this file.
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_FumiliGradientCalculator
11 #define ROOT_Minuit2_FumiliGradientCalculator
12 
14 #include "Minuit2/MnMatrix.h"
15 
16 namespace ROOT {
17 
18  namespace Minuit2 {
19 
20 
21 
22 class FumiliFCNBase;
23 class MnUserTransformation;
24 
25 class FumiliGradientCalculator : public GradientCalculator {
26 
27 public:
28 
29  FumiliGradientCalculator(const FumiliFCNBase& fcn, const MnUserTransformation& state, int n) :
30  fFcn(fcn),
31  fTransformation(state),
32  fHessian(MnAlgebraicSymMatrix(n) )
33  {}
34 
35  ~FumiliGradientCalculator() {}
36 
37  FunctionGradient operator()(const MinimumParameters&) const;
38 
39  FunctionGradient operator()(const MinimumParameters&,
40  const FunctionGradient&) const;
41 
42  const MnUserTransformation& Trafo() const {return fTransformation;}
43 
44  const MnAlgebraicSymMatrix & Hessian() const { return fHessian; }
45 
46 private:
47 
48  const FumiliFCNBase& fFcn;
49  const MnUserTransformation& fTransformation;
50  mutable MnAlgebraicSymMatrix fHessian;
51 
52 };
53 
54  } // namespace Minuit2
55 
56 } // namespace ROOT
57 
58 #endif // ROOT_Minuit2_FumiliGradientCalculator