00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_FunctionMinimum
00011 #define ROOT_Minuit2_FunctionMinimum
00012
00013 #include "Minuit2/BasicFunctionMinimum.h"
00014
00015 #ifdef G__DICTIONARY
00016 typedef ROOT::Minuit2::MinimumState MinimumState;
00017 #endif
00018
00019 namespace ROOT {
00020
00021 namespace Minuit2 {
00022
00023
00024
00025
00026
00027
00028
00029
00030 class FunctionMinimum {
00031
00032 public:
00033
00034 class MnReachedCallLimit {};
00035 class MnAboveMaxEdm {};
00036
00037 public:
00038
00039
00040
00041 FunctionMinimum(const MinimumSeed& seed, double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, up))) {}
00042
00043
00044 FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up))) {}
00045
00046
00047 FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up, MnReachedCallLimit) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnReachedCallLimit()))) {}
00048
00049
00050 FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up, MnAboveMaxEdm) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnAboveMaxEdm()))) {}
00051
00052
00053 FunctionMinimum(const FunctionMinimum& min) : fData(min.fData) {}
00054
00055 FunctionMinimum& operator=(const FunctionMinimum& min) {
00056 fData = min.fData;
00057 return *this;
00058 }
00059
00060 ~FunctionMinimum() {}
00061
00062
00063 void Add(const MinimumState& state) {fData->Add(state);}
00064
00065 const MinimumSeed& Seed() const {return fData->Seed();}
00066 const std::vector<ROOT::Minuit2::MinimumState>& States() const {return fData->States();}
00067
00068
00069 const MnUserParameterState& UserState() const {
00070 return fData->UserState();
00071 }
00072 const MnUserParameters& UserParameters() const {
00073 return fData->UserParameters();
00074 }
00075 const MnUserCovariance& UserCovariance() const {
00076 return fData->UserCovariance();
00077 }
00078
00079
00080 const MinimumState& State() const {return fData->State();}
00081 const MinimumParameters& Parameters() const {return fData->Parameters();}
00082 const MinimumError& Error() const {return fData->Error();}
00083 const FunctionGradient& Grad() const {return fData->Grad();}
00084 double Fval() const {return fData->Fval();}
00085 double Edm() const {return fData->Edm();}
00086 int NFcn() const {return fData->NFcn();}
00087
00088 double Up() const {return fData->Up();}
00089 bool IsValid() const {return fData->IsValid();}
00090 bool HasValidParameters() const {return fData->HasValidParameters();}
00091 bool HasValidCovariance() const {return fData->HasValidCovariance();}
00092 bool HasAccurateCovar() const {return fData->HasAccurateCovar();}
00093 bool HasPosDefCovar() const {return fData->HasPosDefCovar();}
00094 bool HasMadePosDefCovar() const {return fData->HasMadePosDefCovar();}
00095 bool HesseFailed() const {return fData->HesseFailed();}
00096 bool HasCovariance() const {return fData->HasCovariance();}
00097 bool IsAboveMaxEdm() const {return fData->IsAboveMaxEdm();}
00098 bool HasReachedCallLimit() const {return fData->HasReachedCallLimit();}
00099
00100 void SetErrorDef( double up) { return fData->SetErrorDef(up);}
00101
00102 private:
00103
00104 MnRefCountedPointer<BasicFunctionMinimum> fData;
00105 };
00106
00107 }
00108
00109 }
00110
00111 #endif // ROOT_Minuit2_FunctionMinimum