00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_Minuit2_BasicMinimumParameters
00011 #define ROOT_Minuit2_BasicMinimumParameters
00012
00013 #include "Minuit2/MnMatrix.h"
00014
00015 #include "Minuit2/StackAllocator.h"
00016
00017 namespace ROOT {
00018
00019 namespace Minuit2 {
00020
00021
00022
00023
00024 class BasicMinimumParameters {
00025
00026 public:
00027
00028 BasicMinimumParameters(unsigned int n) : fParameters(MnAlgebraicVector(n)), fStepSize(MnAlgebraicVector(n)), fFVal(0.), fValid(false), fHasStep(false) {}
00029
00030 BasicMinimumParameters(const MnAlgebraicVector& avec, double fval) :
00031 fParameters(avec), fStepSize(avec.size()), fFVal(fval), fValid(true), fHasStep(false) {}
00032
00033 BasicMinimumParameters(const MnAlgebraicVector& avec, const MnAlgebraicVector& dirin, double fval) : fParameters(avec), fStepSize(dirin), fFVal(fval), fValid(true), fHasStep(true) {}
00034
00035 ~BasicMinimumParameters() {}
00036
00037 BasicMinimumParameters(const BasicMinimumParameters& par) : fParameters(par.fParameters), fStepSize(par.fStepSize), fFVal(par.fFVal), fValid(par.fValid), fHasStep(par.fHasStep) {}
00038
00039 BasicMinimumParameters& operator=(const BasicMinimumParameters& par) {
00040 fParameters = par.fParameters;
00041 fStepSize = par.fStepSize;
00042 fFVal = par.fFVal;
00043 fValid = par.fValid;
00044 fHasStep = par.fHasStep;
00045 return *this;
00046 }
00047
00048 void* operator new(size_t nbytes) {
00049 return StackAllocatorHolder::Get().Allocate(nbytes);
00050 }
00051
00052 void operator delete(void* p, size_t ) {
00053 StackAllocatorHolder::Get().Deallocate(p);
00054 }
00055
00056 const MnAlgebraicVector& Vec() const {return fParameters;}
00057 const MnAlgebraicVector& Dirin() const {return fStepSize;}
00058 double Fval() const {return fFVal;}
00059 bool IsValid() const {return fValid;}
00060 bool HasStepSize() const {return fHasStep;}
00061
00062 private:
00063
00064 MnAlgebraicVector fParameters;
00065 MnAlgebraicVector fStepSize;
00066 double fFVal;
00067 bool fValid;
00068 bool fHasStep;
00069 };
00070
00071 }
00072
00073 }
00074
00075 #endif // ROOT_Minuit2_BasicMinimumParameters