// @(#)root/minuit2:$Id$ // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005 /********************************************************************** * * * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT * * * **********************************************************************/ #ifndef ROOT_Minuit2_BasicMinimumSeed #define ROOT_Minuit2_BasicMinimumSeed #include "Minuit2/MinimumState.h" #include "Minuit2/MinimumParameters.h" #include "Minuit2/MinimumError.h" #include "Minuit2/FunctionGradient.h" #include "Minuit2/MnUserTransformation.h" #include "Minuit2/StackAllocator.h" namespace ROOT { namespace Minuit2 { //extern StackAllocator gStackAllocator; class BasicMinimumSeed { public: BasicMinimumSeed(const MinimumState& state, const MnUserTransformation& trafo) : fState(state), fTrafo(trafo), fValid(true) {} ~BasicMinimumSeed() {} BasicMinimumSeed(const BasicMinimumSeed& seed) : fState(seed.fState), fTrafo(seed.fTrafo), fValid(seed.fValid) {} BasicMinimumSeed& operator=(const BasicMinimumSeed& seed) { fState = seed.fState; fTrafo = seed.fTrafo; fValid = seed.fValid; return *this; } void* operator new(size_t nbytes) { return StackAllocatorHolder::Get().Allocate(nbytes); } void operator delete(void* p, size_t /*nbytes*/) { StackAllocatorHolder::Get().Deallocate(p); } const MinimumState& State() const {return fState;} const MinimumParameters& Parameters() const {return State().Parameters();} const MinimumError& Error() const {return State().Error();}; const FunctionGradient& Gradient() const {return State().Gradient();} const MnUserTransformation& Trafo() const {return fTrafo;} const MnMachinePrecision& Precision() const {return fTrafo.Precision();} double Fval() const {return State().Fval();} double Edm() const {return State().Edm();} unsigned int NFcn() const {return State().NFcn();} bool IsValid() const {return fValid;} private: MinimumState fState; MnUserTransformation fTrafo; bool fValid; }; } // namespace Minuit2 } // namespace ROOT #endif // ROOT_Minuit2_BasicMinimumSeed