File indexing completed on 2025-01-18 10:10:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef ROOT_Minuit2_MnCross
0011 #define ROOT_Minuit2_MnCross
0012
0013 #include "Minuit2/MnUserParameterState.h"
0014
0015 namespace ROOT {
0016
0017 namespace Minuit2 {
0018
0019 class MnCross {
0020
0021 public:
0022 class CrossParLimit {
0023 };
0024 class CrossFcnLimit {
0025 };
0026 class CrossNewMin {
0027 };
0028
0029 public:
0030 MnCross()
0031 : fValue(0.), fState(MnUserParameterState()), fNFcn(0), fValid(false), fLimset(false), fMaxFcn(false),
0032 fNewMin(false)
0033 {
0034 }
0035
0036 MnCross(unsigned int nfcn)
0037 : fValue(0.), fState(MnUserParameterState()), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false),
0038 fNewMin(false)
0039 {
0040 }
0041
0042 MnCross(const MnUserParameterState &state, unsigned int nfcn)
0043 : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false)
0044 {
0045 }
0046
0047 MnCross(double value, const MnUserParameterState &state, unsigned int nfcn)
0048 : fValue(value), fState(state), fNFcn(nfcn), fValid(true), fLimset(false), fMaxFcn(false), fNewMin(false)
0049 {
0050 }
0051
0052 MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossParLimit)
0053 : fValue(0.), fState(state), fNFcn(nfcn), fValid(true), fLimset(true), fMaxFcn(false), fNewMin(false)
0054 {
0055 }
0056
0057 MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossFcnLimit)
0058 : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(true), fNewMin(false)
0059 {
0060 }
0061
0062 MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossNewMin)
0063 : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(true)
0064 {
0065 }
0066
0067 ~MnCross() {}
0068
0069 MnCross(const MnCross &cross)
0070 : fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset),
0071 fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin)
0072 {
0073 }
0074
0075 MnCross &operator=(const MnCross &) = default;
0076
0077 MnCross &operator()(const MnCross &cross)
0078 {
0079 fValue = cross.fValue;
0080 fState = cross.fState;
0081 fNFcn = cross.fNFcn;
0082 fValid = cross.fValid;
0083 fLimset = cross.fLimset;
0084 fMaxFcn = cross.fMaxFcn;
0085 fNewMin = cross.fNewMin;
0086 return *this;
0087 }
0088
0089 double Value() const { return fValue; }
0090 const MnUserParameterState &State() const { return fState; }
0091 bool IsValid() const { return fValid; }
0092 bool AtLimit() const { return fLimset; }
0093 bool AtMaxFcn() const { return fMaxFcn; }
0094 bool NewMinimum() const { return fNewMin; }
0095 unsigned int NFcn() const { return fNFcn; }
0096
0097 private:
0098 double fValue;
0099 MnUserParameterState fState;
0100 unsigned int fNFcn;
0101 bool fValid;
0102 bool fLimset;
0103 bool fMaxFcn;
0104 bool fNewMin;
0105 };
0106
0107 }
0108
0109 }
0110
0111 #endif