BasicMinimumSeed.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: BasicMinimumSeed.h 20880 2007-11-19 11:23:41Z rdm $
00002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005  
00003 
00004 /**********************************************************************
00005  *                                                                    *
00006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
00007  *                                                                    *
00008  **********************************************************************/
00009 
00010 #ifndef ROOT_Minuit2_BasicMinimumSeed
00011 #define ROOT_Minuit2_BasicMinimumSeed
00012 
00013 #include "Minuit2/MinimumState.h"
00014 #include "Minuit2/MinimumParameters.h"
00015 #include "Minuit2/MinimumError.h"
00016 #include "Minuit2/FunctionGradient.h"
00017 #include "Minuit2/MnUserTransformation.h"
00018 
00019 #include "Minuit2/StackAllocator.h"
00020 
00021 namespace ROOT {
00022 
00023    namespace Minuit2 {
00024 
00025 
00026 //extern StackAllocator gStackAllocator;
00027 
00028 class BasicMinimumSeed {
00029 
00030 public:
00031   
00032   BasicMinimumSeed(const MinimumState& state, const MnUserTransformation& trafo) : fState(state), fTrafo(trafo), fValid(true) {}
00033   
00034   ~BasicMinimumSeed() {}
00035 
00036   BasicMinimumSeed(const BasicMinimumSeed& seed) : fState(seed.fState), fTrafo(seed.fTrafo), fValid(seed.fValid) {}
00037   
00038   BasicMinimumSeed& operator=(const BasicMinimumSeed& seed) {
00039     fState = seed.fState;
00040     fTrafo = seed.fTrafo;
00041     fValid = seed.fValid;
00042     return *this;
00043   }
00044 
00045   void* operator new(size_t nbytes) {
00046     return StackAllocatorHolder::Get().Allocate(nbytes);
00047   }
00048   
00049   void operator delete(void* p, size_t /*nbytes*/) {
00050     StackAllocatorHolder::Get().Deallocate(p);
00051   }
00052 
00053   const MinimumState& State() const {return fState;}
00054   const MinimumParameters& Parameters() const {return State().Parameters();}
00055   const MinimumError& Error() const {return State().Error();};
00056   const FunctionGradient& Gradient() const {return State().Gradient();}
00057   const MnUserTransformation& Trafo() const {return fTrafo;}
00058   const MnMachinePrecision& Precision() const {return fTrafo.Precision();}
00059   double Fval() const {return State().Fval();}
00060   double Edm() const {return State().Edm();}
00061   unsigned int NFcn() const {return State().NFcn();}
00062   bool IsValid() const {return fValid;}
00063 
00064 private:
00065 
00066   MinimumState fState;
00067   MnUserTransformation fTrafo;
00068   bool fValid;
00069 };
00070 
00071   }  // namespace Minuit2
00072 
00073 }  // namespace ROOT
00074 
00075 #endif  // ROOT_Minuit2_BasicMinimumSeed

Generated on Tue Jul 5 14:25:41 2011 for ROOT_528-00b_version by  doxygen 1.5.1