Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
BasicMinimumState.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_BasicMinimumState
11#define ROOT_Minuit2_BasicMinimumState
12
16
18
19namespace ROOT {
20
21namespace Minuit2 {
22
23// extern StackAllocator gStackAllocator;
24
26
27public:
28 /// Constructor without parameter values, but with function value, edm and nfcn.
29 /// This constructor will result in a state that is flagged as not valid
30 BasicMinimumState(unsigned int n, double fval, double edm, int nfcn)
32 fNFcn(nfcn)
33 {
34 }
35
36 /// Constructor with parameters values, errors and gradient
37 BasicMinimumState(const MinimumParameters &states, const MinimumError &err, const FunctionGradient &grad, double edm,
38 int nfcn)
39 : fParameters(states), fError(err), fGradient(grad), fEDM(edm), fNFcn(nfcn)
40 {
41 }
42
43 /// Constuctor with only parameter values, edm and nfcn, but without errors (covariance).
44 /// The resulting state it will be considered valid, since it contains the parameter values,
45 /// although it will has not the error matrix (MinimumError) with
46 /// HasCovariance() returning false.
47 BasicMinimumState(const MinimumParameters &states, double edm, int nfcn)
48 : fParameters(states), fError(MinimumError(states.Vec().size())),
49 fGradient(FunctionGradient(states.Vec().size())), fEDM(edm), fNFcn(nfcn)
50 {
51 }
52
53 void *operator new(size_t nbytes) { return StackAllocatorHolder::Get().Allocate(nbytes); }
54
55 void operator delete(void *p, size_t /*nbytes */) { StackAllocatorHolder::Get().Deallocate(p); }
56
57 const MinimumParameters &Parameters() const { return fParameters; }
58 const MnAlgebraicVector &Vec() const { return fParameters.Vec(); }
59 int size() const { return fParameters.Vec().size(); }
60
61 const MinimumError &Error() const { return fError; }
62 const FunctionGradient &Gradient() const { return fGradient; }
63 double Fval() const { return fParameters.Fval(); }
64 double Edm() const { return fEDM; }
65 int NFcn() const { return fNFcn; }
66
67 bool IsValid() const
68 {
70 return Parameters().IsValid() && Error().IsValid();
71 else if (HasParameters())
72 return Parameters().IsValid();
73 else
74 return false;
75 }
76 bool HasParameters() const { return fParameters.IsValid(); }
77 bool HasCovariance() const { return fError.IsAvailable(); }
78
79private:
83 double fEDM;
84 int fNFcn;
85};
86
87} // namespace Minuit2
88
89} // namespace ROOT
90
91#endif // ROOT_Minuit2_BasicMinimumState
const FunctionGradient & Gradient() const
const MinimumError & Error() const
BasicMinimumState(const MinimumParameters &states, double edm, int nfcn)
Constuctor with only parameter values, edm and nfcn, but without errors (covariance).
const MnAlgebraicVector & Vec() const
const MinimumParameters & Parameters() const
BasicMinimumState(unsigned int n, double fval, double edm, int nfcn)
Constructor without parameter values, but with function value, edm and nfcn.
BasicMinimumState(const MinimumParameters &states, const MinimumError &err, const FunctionGradient &grad, double edm, int nfcn)
Constructor with parameters values, errors and gradient.
unsigned int size() const
Definition LAVector.h:227
MinimumError keeps the inv.
const MnAlgebraicVector & Vec() const
static StackAllocator & Get()
void * Allocate(size_t nBytes)
const Int_t n
Definition legend1.C:16
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...