00001 // @(#)root/minuit2:$Id: FunctionGradient.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_FunctionGradient 00011 #define ROOT_Minuit2_FunctionGradient 00012 00013 #include "Minuit2/MnRefCountedPointer.h" 00014 #include "Minuit2/BasicFunctionGradient.h" 00015 00016 namespace ROOT { 00017 00018 namespace Minuit2 { 00019 00020 00021 class FunctionGradient { 00022 00023 private: 00024 00025 public: 00026 00027 explicit FunctionGradient(unsigned int n) : 00028 fData(MnRefCountedPointer<BasicFunctionGradient>(new BasicFunctionGradient(n))) {} 00029 00030 explicit FunctionGradient(const MnAlgebraicVector& grd) : 00031 fData(MnRefCountedPointer<BasicFunctionGradient>(new BasicFunctionGradient(grd))) {} 00032 00033 FunctionGradient(const MnAlgebraicVector& grd, const MnAlgebraicVector& g2, 00034 const MnAlgebraicVector& gstep) : 00035 fData(MnRefCountedPointer<BasicFunctionGradient>(new BasicFunctionGradient(grd, g2, gstep))) {} 00036 00037 ~FunctionGradient() {} 00038 00039 FunctionGradient(const FunctionGradient& grad) : fData(grad.fData) {} 00040 00041 FunctionGradient& operator=(const FunctionGradient& grad) { 00042 fData = grad.fData; 00043 return *this; 00044 } 00045 00046 const MnAlgebraicVector& Grad() const {return fData->Grad();} 00047 const MnAlgebraicVector& Vec() const {return fData->Vec();} 00048 bool IsValid() const {return fData->IsValid();} 00049 00050 bool IsAnalytical() const {return fData->IsAnalytical();} 00051 const MnAlgebraicVector& G2() const {return fData->G2();} 00052 const MnAlgebraicVector& Gstep() const {return fData->Gstep();} 00053 00054 private: 00055 00056 MnRefCountedPointer<BasicFunctionGradient> fData; 00057 }; 00058 00059 } // namespace Minuit2 00060 00061 } // namespace ROOT 00062 00063 #endif // ROOT_Minuit2_FunctionGradient