00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_MnMinos
00011 #define ROOT_Minuit2_MnMinos
00012
00013 #include "Minuit2/MnStrategy.h"
00014
00015 #include <utility>
00016
00017 namespace ROOT {
00018
00019 namespace Minuit2 {
00020
00021
00022 class FCNBase;
00023 class FunctionMinimum;
00024 class MinosError;
00025 class MnCross;
00026
00027
00028
00029
00030
00031
00032
00033
00034 class MnMinos {
00035
00036 public:
00037
00038
00039
00040 MnMinos(const FCNBase& fcn, const FunctionMinimum& min, unsigned int stra = 1);
00041
00042
00043 MnMinos(const FCNBase& fcn, const FunctionMinimum& min, const MnStrategy& stra);
00044
00045 ~MnMinos() {}
00046
00047
00048
00049 std::pair<double,double> operator()(unsigned int, unsigned int maxcalls = 0) const;
00050
00051
00052 double Lower(unsigned int, unsigned int maxcalls = 0) const;
00053 double Upper(unsigned int, unsigned int maxcalls = 0) const;
00054
00055 MnCross Loval(unsigned int, unsigned int maxcalls = 0) const;
00056 MnCross Upval(unsigned int, unsigned int maxcalls = 0) const;
00057
00058
00059
00060 MinosError Minos(unsigned int, unsigned int maxcalls = 0) const;
00061
00062 protected:
00063
00064
00065 MnCross FindCrossValue(int dir , unsigned int, unsigned int maxcalls = 0) const;
00066
00067 private:
00068
00069 const FCNBase& fFCN;
00070 const FunctionMinimum& fMinimum;
00071 MnStrategy fStrategy;
00072 };
00073
00074 }
00075
00076 }
00077
00078 #endif // ROOT_Minuit2_MnMinos