00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_MnCross
00011 #define ROOT_Minuit2_MnCross
00012
00013 #include "Minuit2/MnUserParameterState.h"
00014
00015 namespace ROOT {
00016
00017 namespace Minuit2 {
00018
00019
00020 class MnCross {
00021
00022 public:
00023
00024 class CrossParLimit {};
00025 class CrossFcnLimit {};
00026 class CrossNewMin {};
00027
00028 public:
00029
00030 MnCross() : fValue(0.), fState(MnUserParameterState()), fNFcn(0), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
00031
00032 MnCross(unsigned int nfcn) : fValue(0.), fState(MnUserParameterState() ), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
00033
00034 MnCross(const MnUserParameterState& state, unsigned int nfcn) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
00035
00036 MnCross(double value, const MnUserParameterState& state, unsigned int nfcn) : fValue(value), fState(state), fNFcn(nfcn), fValid(true), fLimset(false), fMaxFcn(false), fNewMin(false) {}
00037
00038 MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossParLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(true), fLimset(true), fMaxFcn(false), fNewMin(false) {}
00039
00040 MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossFcnLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(true), fNewMin(false) {}
00041
00042 MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossNewMin) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(true) {}
00043
00044 ~MnCross() {}
00045
00046 MnCross(const MnCross& cross) : fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset), fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin) {}
00047
00048 MnCross& operator()(const MnCross& cross) {
00049 fValue = cross.fValue;
00050 fState = cross.fState;
00051 fNFcn = cross.fNFcn;
00052 fValid = cross.fValid;
00053 fLimset = cross.fLimset;
00054 fMaxFcn = cross.fMaxFcn;
00055 fNewMin = cross.fNewMin;
00056 return *this;
00057 }
00058
00059 double Value() const {return fValue;}
00060 const MnUserParameterState& State() const {return fState;}
00061 bool IsValid() const {return fValid;}
00062 bool AtLimit() const {return fLimset;}
00063 bool AtMaxFcn() const {return fMaxFcn;}
00064 bool NewMinimum() const {return fNewMin;}
00065 unsigned int NFcn() const {return fNFcn;}
00066
00067 private:
00068
00069 double fValue;
00070 MnUserParameterState fState;
00071 unsigned int fNFcn;
00072 bool fValid;
00073 bool fLimset;
00074 bool fMaxFcn;
00075 bool fNewMin;
00076 };
00077
00078 }
00079
00080 }
00081
00082 #endif // ROOT_Minuit2_MnCross