BasicMinimumParameters.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: BasicMinimumParameters.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_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 //extern StackAllocator gStackAllocator;
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 /*nbytes*/) {
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   }  // namespace Minuit2
00072 
00073 }  // namespace ROOT
00074 
00075 #endif  // ROOT_Minuit2_BasicMinimumParameters

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