00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_MinimumState
00011 #define ROOT_Minuit2_MinimumState
00012
00013 #include "Minuit2/MnRefCountedPointer.h"
00014 #include "Minuit2/BasicMinimumState.h"
00015
00016 namespace ROOT {
00017
00018 namespace Minuit2 {
00019
00020
00021 class MinimumParameters;
00022 class MinimumError;
00023 class FunctionGradient;
00024
00025
00026
00027
00028
00029 class MinimumState {
00030
00031 public:
00032
00033
00034 MinimumState(unsigned int n) :
00035 fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(n))) {}
00036
00037 MinimumState(const MinimumParameters& states, double edm, int nfcn) :
00038 fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(states, edm, nfcn))) {}
00039
00040
00041
00042 MinimumState(const MinimumParameters& states, const MinimumError& err,
00043 const FunctionGradient& grad, double edm, int nfcn) :
00044 fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(states, err, grad, edm, nfcn))) {}
00045
00046 ~MinimumState() {}
00047
00048 MinimumState(const MinimumState& state) : fData(state.fData) {}
00049
00050 MinimumState& operator=(const MinimumState& state) {
00051 fData = state.fData;
00052 return *this;
00053 }
00054
00055 const MinimumParameters& Parameters() const {return fData->Parameters();}
00056 const MnAlgebraicVector& Vec() const {return fData->Vec();}
00057 int size() const {return fData->size();}
00058
00059 const MinimumError& Error() const {return fData->Error();}
00060 const FunctionGradient& Gradient() const {return fData->Gradient();}
00061 double Fval() const {return fData->Fval();}
00062 double Edm() const {return fData->Edm();}
00063 int NFcn() const {return fData->NFcn();}
00064
00065 bool IsValid() const {return fData->IsValid();}
00066
00067 bool HasParameters() const {return fData->HasParameters();}
00068 bool HasCovariance() const {return fData->HasCovariance();}
00069
00070 private:
00071
00072 MnRefCountedPointer<BasicMinimumState> fData;
00073 };
00074
00075 }
00076
00077 }
00078
00079 #endif // ROOT_Minuit2_MinimumState