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