MinimumState.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: MinimumState.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_MinimumState
00011 #define ROOT_Minuit2_MinimumState
00012 
00013 #include "Minuit2/MnRefCountedPointer.h"
00014 #include "Minuit2/BasicMinimumState.h"
00015 
00016 namespace ROOT {
00017 
00018    namespace Minuit2 {
00019 
00020 
00021 class MinimumParameters;
00022 class MinimumError;
00023 class FunctionGradient;
00024 
00025 /** MinimumState keeps the information (position, Gradient, 2nd deriv, etc) 
00026     after one minimization step (usually in MinimumBuilder).
00027  */
00028 
00029 class MinimumState {
00030   
00031 public:
00032   
00033   /** invalid state */
00034   MinimumState(unsigned int n) : 
00035     fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(n))) {}
00036   /** state with parameters only (from stepping methods like Simplex, Scan) */
00037   MinimumState(const MinimumParameters& states, double edm, int nfcn) : 
00038     fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(states, edm, nfcn))) {}
00039   
00040   /** state with parameters, Gradient and covariance (from Gradient methods 
00041       such as Migrad) */
00042   MinimumState(const MinimumParameters& states, const MinimumError& err, 
00043                const FunctionGradient& grad, double edm, int nfcn) : 
00044     fData(MnRefCountedPointer<BasicMinimumState>(new BasicMinimumState(states, err, grad, edm, nfcn))) {}
00045   
00046   ~MinimumState() {}
00047   
00048   MinimumState(const MinimumState& state) : fData(state.fData) {}
00049 
00050   MinimumState& operator=(const MinimumState& state) {
00051     fData = state.fData;
00052     return *this;
00053   }
00054 
00055   const MinimumParameters& Parameters() const {return fData->Parameters();}
00056   const MnAlgebraicVector& Vec() const {return fData->Vec();}
00057   int size() const {return fData->size();}
00058 
00059   const MinimumError& Error() const {return fData->Error();}
00060   const FunctionGradient& Gradient() const {return fData->Gradient();}
00061   double Fval() const {return fData->Fval();}
00062   double Edm() const {return fData->Edm();}
00063   int NFcn() const {return fData->NFcn();}
00064 
00065   bool IsValid() const {return fData->IsValid();}
00066   
00067   bool HasParameters() const {return fData->HasParameters();}
00068   bool HasCovariance() const {return fData->HasCovariance();}
00069 
00070 private:
00071   
00072   MnRefCountedPointer<BasicMinimumState> fData;
00073 };
00074 
00075   }  // namespace Minuit2
00076 
00077 }  // namespace ROOT
00078 
00079 #endif  // ROOT_Minuit2_MinimumState

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