Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MnCross.h
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_MnCross
11 #define ROOT_Minuit2_MnCross
12 
14 
15 namespace ROOT {
16 
17  namespace Minuit2 {
18 
19 
20 class MnCross {
21 
22 public:
23 
24  class CrossParLimit {};
25  class CrossFcnLimit {};
26  class CrossNewMin {};
27 
28 public:
29 
30  MnCross() : fValue(0.), fState(MnUserParameterState()), fNFcn(0), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
31 
32  MnCross(unsigned int nfcn) : fValue(0.), fState(MnUserParameterState() ), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
33 
34  MnCross(const MnUserParameterState& state, unsigned int nfcn) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {}
35 
36  MnCross(double value, const MnUserParameterState& state, unsigned int nfcn) : fValue(value), fState(state), fNFcn(nfcn), fValid(true), fLimset(false), fMaxFcn(false), fNewMin(false) {}
37 
38  MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossParLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(true), fLimset(true), fMaxFcn(false), fNewMin(false) {}
39 
40  MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossFcnLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(true), fNewMin(false) {}
41 
42  MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossNewMin) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(true) {}
43 
44  ~MnCross() {}
45 
46  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) {}
47 
48  MnCross& operator=(const MnCross&) = default;
49 
50  MnCross& operator()(const MnCross& cross) {
51  fValue = cross.fValue;
52  fState = cross.fState;
53  fNFcn = cross.fNFcn;
54  fValid = cross.fValid;
55  fLimset = cross.fLimset;
56  fMaxFcn = cross.fMaxFcn;
57  fNewMin = cross.fNewMin;
58  return *this;
59  }
60 
61  double Value() const {return fValue;}
62  const MnUserParameterState& State() const {return fState;}
63  bool IsValid() const {return fValid;}
64  bool AtLimit() const {return fLimset;}
65  bool AtMaxFcn() const {return fMaxFcn;}
66  bool NewMinimum() const {return fNewMin;}
67  unsigned int NFcn() const {return fNFcn;}
68 
69 private:
70 
71  double fValue;
72  MnUserParameterState fState;
73  unsigned int fNFcn;
74  bool fValid;
75  bool fLimset;
76  bool fMaxFcn;
77  bool fNewMin;
78 };
79 
80  } // namespace Minuit2
81 
82 } // namespace ROOT
83 
84 #endif // ROOT_Minuit2_MnCross