00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_MnHesse
00011 #define ROOT_Minuit2_MnHesse
00012
00013 #include "Minuit2/MnConfig.h"
00014 #include "Minuit2/MnStrategy.h"
00015
00016 #include <vector>
00017
00018 namespace ROOT {
00019
00020 namespace Minuit2 {
00021
00022
00023 class FCNBase;
00024 class MnUserParameterState;
00025 class MnUserParameters;
00026 class MnUserCovariance;
00027 class MnUserTransformation;
00028 class MinimumState;
00029 class MnMachinePrecision;
00030 class MnFcn;
00031 class FunctionMinimum;
00032
00033
00034
00035
00036
00037
00038
00039
00040 class MnHesse {
00041
00042 public:
00043
00044
00045 MnHesse() : fStrategy(MnStrategy(1)) {}
00046
00047
00048 MnHesse(unsigned int stra) : fStrategy(MnStrategy(stra)) {}
00049
00050
00051 MnHesse(const MnStrategy& stra) : fStrategy(stra) {}
00052
00053 ~MnHesse() {}
00054
00055
00056
00057
00058
00059 MnUserParameterState operator()(const FCNBase&, const std::vector<double>&, const std::vector<double>&, unsigned int maxcalls=0) const;
00060
00061 MnUserParameterState operator()(const FCNBase&, const std::vector<double>&, unsigned int nrow, const std::vector<double>&, unsigned int maxcalls = 0) const;
00062
00063 MnUserParameterState operator()(const FCNBase&, const std::vector<double>&, const MnUserCovariance&, unsigned int maxcalls=0) const;
00064
00065
00066
00067
00068 MnUserParameterState operator()(const FCNBase&, const MnUserParameters&, unsigned int maxcalls=0) const;
00069
00070 MnUserParameterState operator()(const FCNBase&, const MnUserParameters&, const MnUserCovariance&, unsigned int maxcalls=0) const;
00071
00072 MnUserParameterState operator()(const FCNBase&, const MnUserParameterState&, unsigned int maxcalls=0) const;
00073
00074
00075
00076
00077
00078 void operator()(const FCNBase&, FunctionMinimum&, unsigned int maxcalls=0) const;
00079
00080
00081
00082
00083 MinimumState operator()(const MnFcn&, const MinimumState&, const MnUserTransformation&, unsigned int maxcalls=0) const;
00084
00085
00086 unsigned int Ncycles() const {return fStrategy.HessianNCycles();}
00087 double Tolerstp() const {return fStrategy.HessianStepTolerance();}
00088 double TolerG2() const {return fStrategy.HessianG2Tolerance();}
00089
00090 private:
00091
00092 MnStrategy fStrategy;
00093 };
00094
00095 }
00096
00097 }
00098
00099 #endif // ROOT_Minuit2_MnHesse