MnStrategy.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: MnStrategy.h 21530 2007-12-20 11:14:35Z 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_MnStrategy
00011 #define ROOT_Minuit2_MnStrategy
00012 
00013 namespace ROOT {
00014 
00015    namespace Minuit2 {
00016 
00017 //_________________________________________________________________________
00018 /** 
00019     API class for defining three levels of strategies: low (0), medium (1), 
00020     high (>=2);
00021     acts on: Migrad (behavioural), 
00022              Minos (lowers strategy by 1 for Minos-own minimization), 
00023              Hesse (iterations), 
00024              Numerical2PDerivative (iterations)
00025  */
00026 
00027 class MnStrategy {
00028 
00029 public:
00030 
00031    //default strategy
00032    MnStrategy();
00033 
00034    //user defined strategy (0, 1, >=2)
00035    explicit MnStrategy(unsigned int);
00036 
00037    ~MnStrategy() {}
00038 
00039    unsigned int Strategy() const {return fStrategy;}
00040 
00041    unsigned int GradientNCycles() const {return fGradNCyc;}
00042    double GradientStepTolerance() const {return fGradTlrStp;}
00043    double GradientTolerance() const {return fGradTlr;}
00044 
00045    unsigned int HessianNCycles() const {return fHessNCyc;}
00046    double HessianStepTolerance() const {return fHessTlrStp;}
00047    double HessianG2Tolerance() const {return fHessTlrG2;}
00048    unsigned int HessianGradientNCycles() const {return fHessGradNCyc;}
00049   
00050    bool IsLow() const {return fStrategy == 0;}
00051    bool IsMedium() const {return fStrategy == 1;}
00052    bool IsHigh() const {return fStrategy >= 2;}
00053 
00054    void SetLowStrategy();
00055    void SetMediumStrategy();
00056    void SetHighStrategy();
00057   
00058    void SetGradientNCycles(unsigned int n) {fGradNCyc = n;}
00059    void SetGradientStepTolerance(double stp) {fGradTlrStp = stp;}
00060    void SetGradientTolerance(double toler) {fGradTlr = toler;}
00061 
00062    void SetHessianNCycles(unsigned int n) {fHessNCyc = n;}
00063    void SetHessianStepTolerance(double stp) {fHessTlrStp = stp;}
00064    void SetHessianG2Tolerance(double toler) {fHessTlrG2 = toler;}
00065    void SetHessianGradientNCycles(unsigned int n) {fHessGradNCyc = n;}
00066   
00067 private:
00068 
00069    unsigned int fStrategy;
00070 
00071    unsigned int fGradNCyc;
00072    double fGradTlrStp;
00073    double fGradTlr;
00074    unsigned int fHessNCyc;
00075    double fHessTlrStp;
00076    double fHessTlrG2;
00077    unsigned int fHessGradNCyc;
00078 };
00079 
00080   }  // namespace Minuit2
00081 
00082 }  // namespace ROOT
00083 
00084 #endif  // ROOT_Minuit2_MnStrategy

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