FunctionMinimum.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: FunctionMinimum.h 23654 2008-05-06 07:30:34Z moneta $
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_FunctionMinimum
00011 #define ROOT_Minuit2_FunctionMinimum
00012 
00013 #include "Minuit2/BasicFunctionMinimum.h"
00014 
00015 #ifdef G__DICTIONARY
00016 typedef ROOT::Minuit2::MinimumState MinimumState; 
00017 #endif
00018 
00019 namespace ROOT {
00020 
00021    namespace Minuit2 {
00022 
00023 //______________________________________________________________________________________________
00024 /** 
00025     class holding the full result of the minimization; 
00026     both internal and external (MnUserParameterState) representation available
00027     for the parameters at the Minimum
00028  */
00029 
00030 class FunctionMinimum {
00031 
00032 public:
00033 
00034    class MnReachedCallLimit {};
00035    class MnAboveMaxEdm {};
00036 
00037 public:
00038    
00039 
00040    /// constructor from only MinimumSeed. Minimum is only from seed result not full minimization 
00041    FunctionMinimum(const MinimumSeed& seed, double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, up))) {}
00042   
00043    /// constructor at the end of a successfull minimization from seed and vector of states 
00044    FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up))) {}
00045   
00046    /// constructor at the end of a failed minimization due to exceeding function call limit 
00047    FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up, MnReachedCallLimit) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnReachedCallLimit()))) {}
00048   
00049    /// constructor at the end of a failed minimization due to edm above maximum value
00050    FunctionMinimum(const MinimumSeed& seed, const std::vector<MinimumState>& states, double up, MnAboveMaxEdm) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnAboveMaxEdm()))) {}
00051 
00052    /// copy constructo
00053    FunctionMinimum(const FunctionMinimum& min) : fData(min.fData) {}
00054   
00055    FunctionMinimum& operator=(const FunctionMinimum& min) {
00056       fData = min.fData;
00057       return *this;
00058    }
00059   
00060    ~FunctionMinimum() {}
00061   
00062    // why not
00063    void Add(const MinimumState& state) {fData->Add(state);}
00064 
00065    const MinimumSeed& Seed() const {return fData->Seed();}
00066    const std::vector<ROOT::Minuit2::MinimumState>& States() const {return fData->States();}
00067 
00068 // user representation of state at Minimum
00069    const MnUserParameterState& UserState() const {
00070       return fData->UserState();
00071    }
00072    const MnUserParameters& UserParameters() const {
00073       return fData->UserParameters();
00074    }
00075    const MnUserCovariance& UserCovariance() const {
00076       return fData->UserCovariance();
00077    }
00078 
00079 // forward interface of last state
00080    const MinimumState& State() const {return fData->State();}
00081    const MinimumParameters& Parameters() const {return fData->Parameters();}
00082    const MinimumError& Error() const {return fData->Error();}
00083    const FunctionGradient& Grad() const {return fData->Grad();}
00084    double Fval() const {return fData->Fval();}
00085    double Edm() const {return fData->Edm();}
00086    int NFcn() const {return fData->NFcn();}  
00087   
00088    double Up() const {return fData->Up();}
00089    bool IsValid() const {return fData->IsValid();}
00090    bool HasValidParameters() const {return fData->HasValidParameters();}
00091    bool HasValidCovariance() const {return fData->HasValidCovariance();}
00092    bool HasAccurateCovar() const {return fData->HasAccurateCovar();}
00093    bool HasPosDefCovar() const {return fData->HasPosDefCovar();}
00094    bool HasMadePosDefCovar() const {return fData->HasMadePosDefCovar();}
00095    bool HesseFailed() const {return fData->HesseFailed();}
00096    bool HasCovariance() const {return fData->HasCovariance();}
00097    bool IsAboveMaxEdm() const {return fData->IsAboveMaxEdm();}
00098    bool HasReachedCallLimit() const {return fData->HasReachedCallLimit();}
00099 
00100    void SetErrorDef( double up) { return fData->SetErrorDef(up);}
00101 
00102 private:
00103 
00104    MnRefCountedPointer<BasicFunctionMinimum> fData;
00105 };
00106 
00107   }  // namespace Minuit2
00108 
00109 }  // namespace ROOT
00110 
00111 #endif  // ROOT_Minuit2_FunctionMinimum

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