00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_ModularFunctionMinimizer
00011 #define ROOT_Minuit2_ModularFunctionMinimizer
00012
00013
00014 #ifndef ROOT_Minuit2_MnConfig
00015 #include "Minuit2/MnConfig.h"
00016 #endif
00017
00018 #ifndef ROOT_Minuit2_FunctionMinimizer
00019 #include "Minuit2/FunctionMinimizer.h"
00020 #endif
00021
00022 #include <vector>
00023
00024 namespace ROOT {
00025
00026 namespace Minuit2 {
00027
00028
00029
00030 class MinimumSeedGenerator;
00031 class MinimumBuilder;
00032 class MinimumSeed;
00033 class MnFcn;
00034 class GradientCalculator;
00035 class MnUserParameterState;
00036 class MnUserParameters;
00037 class MnUserCovariance;
00038 class MnStrategy;
00039 class FumiliFCNBase;
00040
00041
00042
00043
00044
00045
00046
00047 class ModularFunctionMinimizer : public FunctionMinimizer {
00048
00049 public:
00050
00051 virtual ~ModularFunctionMinimizer() {}
00052
00053
00054 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;
00055
00056 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;
00057
00058 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;
00059
00060 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;
00061
00062
00063 virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameters&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00064
00065 virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameters&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00066
00067 virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameters&, const MnUserCovariance&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00068
00069 virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameters&, const MnUserCovariance&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00070
00071 virtual FunctionMinimum Minimize(const FCNBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00072
00073 virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 virtual const MinimumSeedGenerator& SeedGenerator() const = 0;
00087 virtual const MinimumBuilder& Builder() const = 0;
00088
00089 public:
00090
00091 virtual FunctionMinimum Minimize(const MnFcn&, const GradientCalculator&, const MinimumSeed&, const MnStrategy&, unsigned int, double) const;
00092
00093 };
00094
00095 }
00096
00097 }
00098
00099 #endif // ROOT_Minuit2_ModularFunctionMinimizer