Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
ModularFunctionMinimizer.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_ModularFunctionMinimizer
11 #define ROOT_Minuit2_ModularFunctionMinimizer
12 
13 
14 #include "Minuit2/MnConfig.h"
15 
17 
18 #include <vector>
19 
20 namespace ROOT {
21 
22  namespace Minuit2 {
23 
24 
25 
26 class MinimumSeedGenerator;
27 class MinimumBuilder;
28 class MinimumSeed;
29 class MnFcn;
30 class GradientCalculator;
31 class MnUserParameterState;
32 class MnUserParameters;
33 class MnUserCovariance;
34 class MnStrategy;
35 class FumiliFCNBase;
36 
37 //_____________________________________________________________
38 /**
39  Base common class providing the API for all the minimizer
40  Various Minimize methods are provided varying on the type of
41  FCN function passesd and on the objects used for the parameters
42  */
43 class ModularFunctionMinimizer : public FunctionMinimizer {
44 
45 public:
46 
47  virtual ~ModularFunctionMinimizer() {}
48 
49 // inherited interface
50  virtual FunctionMinimum Minimize(const FCNBase&, const std::vector<double>&, const std::vector<double>&, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const;
51 
52  virtual FunctionMinimum Minimize(const FCNGradientBase&, const std::vector<double>&, const std::vector<double>&, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const;
53 
54  virtual FunctionMinimum Minimize(const FCNBase&, const std::vector<double>&, unsigned int, const std::vector<double>&, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const;
55 
56  virtual FunctionMinimum Minimize(const FCNGradientBase&, const std::vector<double>&, unsigned int, const std::vector<double>&, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const;
57 
58 // extension
59  virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameters&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
60 
61  virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameters&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
62 
63  virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameters&, const MnUserCovariance&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
64 
65  virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameters&, const MnUserCovariance&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
66 
67  virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
68 
69  virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
70 
71  // for Fumili
72 
73 // virtual FunctionMinimum Minimize(const FumiliFCNBase&, const std::vector<double>&, const std::vector<double>&, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const;
74 
75 // virtual FunctionMinimum Minimize(const FumiliFCNBase&, const MnUserParameters&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
76 
77 // virtual FunctionMinimum Minimize(const FumiliFCNBase&, const MnUserParameters&, const MnUserCovariance&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
78 
79 // virtual FunctionMinimum Minimize(const FumiliFCNBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
80 
81 
82  virtual const MinimumSeedGenerator& SeedGenerator() const = 0;
83  virtual const MinimumBuilder& Builder() const = 0;
84  virtual MinimumBuilder& Builder() = 0;
85 
86 public:
87 
88  virtual FunctionMinimum Minimize(const MnFcn&, const GradientCalculator&, const MinimumSeed&, const MnStrategy&, unsigned int, double) const;
89 
90 };
91 
92  } // namespace Minuit2
93 
94 } // namespace ROOT
95 
96 #endif // ROOT_Minuit2_ModularFunctionMinimizer