00001 // @(#)root/minuit2:$Id: MinimumParameters.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_MinimumParameters 00011 #define ROOT_Minuit2_MinimumParameters 00012 00013 #include "Minuit2/MnRefCountedPointer.h" 00014 #include "Minuit2/BasicMinimumParameters.h" 00015 00016 namespace ROOT { 00017 00018 namespace Minuit2 { 00019 00020 00021 class MinimumParameters { 00022 00023 public: 00024 00025 MinimumParameters(unsigned int n) : 00026 fData(MnRefCountedPointer<BasicMinimumParameters>(new BasicMinimumParameters(n))) {} 00027 00028 /** takes the Parameter vector */ 00029 MinimumParameters(const MnAlgebraicVector& avec, double fval) : 00030 fData(MnRefCountedPointer<BasicMinimumParameters>(new BasicMinimumParameters(avec, fval))) {} 00031 00032 /** takes the Parameter vector plus step size x1 - x0 = dirin */ 00033 MinimumParameters(const MnAlgebraicVector& avec, const MnAlgebraicVector& dirin, double fval) : fData(MnRefCountedPointer<BasicMinimumParameters>(new BasicMinimumParameters(avec, dirin, fval))) {} 00034 00035 ~MinimumParameters() {} 00036 00037 MinimumParameters(const MinimumParameters& par) : fData(par.fData) {} 00038 00039 MinimumParameters& operator=(const MinimumParameters& par) { 00040 fData = par.fData; 00041 return *this; 00042 } 00043 00044 const MnAlgebraicVector& Vec() const {return fData->Vec();} 00045 const MnAlgebraicVector& Dirin() const {return fData->Dirin();} 00046 double Fval() const {return fData->Fval();} 00047 bool IsValid() const {return fData->IsValid();} 00048 bool HasStepSize() const {return fData->HasStepSize();} 00049 00050 private: 00051 00052 MnRefCountedPointer<BasicMinimumParameters> fData; 00053 }; 00054 00055 } // namespace Minuit2 00056 00057 } // namespace ROOT 00058 00059 #endif // ROOT_Minuit2_MinimumParameters