00001 // @(#)root/minuit2:$Id: MinimumSeed.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_MinimumSeed 00011 #define ROOT_Minuit2_MinimumSeed 00012 00013 #include "Minuit2/MnRefCountedPointer.h" 00014 #include "Minuit2/BasicMinimumSeed.h" 00015 00016 namespace ROOT { 00017 00018 namespace Minuit2 { 00019 00020 00021 class MinimumState; 00022 class MinimumParameters; 00023 class MinimumError; 00024 class FunctionGradient; 00025 class MnUserTransformation; 00026 00027 /** MinimumSeed contains the starting values for the minimization produced 00028 by the SeedGenerator. 00029 */ 00030 00031 class MinimumSeed { 00032 00033 public: 00034 00035 MinimumSeed(const MinimumState& st, const MnUserTransformation& trafo) : fData(MnRefCountedPointer<BasicMinimumSeed>(new BasicMinimumSeed(st, trafo))) {} 00036 00037 ~MinimumSeed() {} 00038 00039 MinimumSeed(const MinimumSeed& seed) : fData(seed.fData) {} 00040 00041 MinimumSeed& operator=(const MinimumSeed& seed) { 00042 fData = seed.fData; 00043 return *this; 00044 } 00045 00046 const MinimumState& State() const {return fData->State();} 00047 const MinimumParameters& Parameters() const {return fData->Parameters();} 00048 const MinimumError& Error() const {return fData->Error();} 00049 const FunctionGradient& Gradient() const {return fData->Gradient();} 00050 const MnUserTransformation& Trafo() const {return fData->Trafo();} 00051 const MnMachinePrecision& Precision() const {return fData->Precision();} 00052 double Fval() const {return fData->Fval();} 00053 double Edm() const {return fData->Edm();} 00054 unsigned int NFcn() const {return fData->NFcn();} 00055 bool IsValid() const {return fData->IsValid();} 00056 00057 private: 00058 00059 MnRefCountedPointer<BasicMinimumSeed> fData; 00060 }; 00061 00062 } // namespace Minuit2 00063 00064 } // namespace ROOT 00065 00066 #endif // ROOT_Minuit2_MinimumSeed