10 #ifndef ROOT_Minuit2_BasicMinimumState
11 #define ROOT_Minuit2_BasicMinimumState
26 class BasicMinimumState {
31 BasicMinimumState(
unsigned int n,
double fval,
double edm,
int nfcn) :
32 fParameters(MinimumParameters(n,fval)), fError(MinimumError(n)),
33 fGradient(FunctionGradient(n)), fEDM(edm), fNFcn(nfcn) {}
35 BasicMinimumState(
const MinimumParameters& states,
const MinimumError& err,
36 const FunctionGradient& grad,
double edm,
int nfcn) :
37 fParameters(states), fError(err), fGradient(grad), fEDM(edm), fNFcn(nfcn) {}
39 BasicMinimumState(
const MinimumParameters& states,
double edm,
int nfcn) : fParameters(states), fError(MinimumError(states.Vec().size())),
40 fGradient(FunctionGradient(states.Vec().size())), fEDM(edm), fNFcn(nfcn)
43 ~BasicMinimumState() {}
45 BasicMinimumState(
const BasicMinimumState& state) :
46 fParameters(state.fParameters), fError(state.fError), fGradient(state.fGradient), fEDM(state.fEDM), fNFcn(state.fNFcn) {}
48 BasicMinimumState& operator=(
const BasicMinimumState& state) {
49 fParameters = state.fParameters;
50 fError = state.fError;
51 fGradient = state.fGradient;
57 void*
operator new(
size_t nbytes) {
58 return StackAllocatorHolder::Get().Allocate(nbytes);
61 void operator delete(
void* p,
size_t ) {
62 StackAllocatorHolder::Get().Deallocate(p);
65 const MinimumParameters& Parameters()
const {
return fParameters;}
66 const MnAlgebraicVector& Vec()
const {
return fParameters.Vec();}
67 int size()
const {
return fParameters.Vec().size();}
69 const MinimumError& Error()
const {
return fError;}
70 const FunctionGradient& Gradient()
const {
return fGradient;}
71 double Fval()
const {
return fParameters.Fval();}
72 double Edm()
const {
return fEDM;}
73 int NFcn()
const {
return fNFcn;}
76 bool IsValid()
const {
77 if(HasParameters() && HasCovariance())
78 return Parameters().IsValid() && Error().IsValid();
79 else if(HasParameters())
return Parameters().IsValid();
82 bool HasParameters()
const {
return fParameters.IsValid();}
83 bool HasCovariance()
const {
return fError.IsAvailable();}
87 MinimumParameters fParameters;
89 FunctionGradient fGradient;
98 #endif // ROOT_Minuit2_BasicMinimumState