FumiliMinimizer.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: FumiliMinimizer.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_FumiliMinimizer
00011 #define ROOT_Minuit2_FumiliMinimizer
00012 
00013 #include "Minuit2/ModularFunctionMinimizer.h"
00014 #include "Minuit2/MnSeedGenerator.h"
00015 #include "Minuit2/FumiliBuilder.h"
00016 
00017 namespace ROOT {
00018 
00019    namespace Minuit2 {
00020 
00021 
00022 
00023 class MinimumSeedGenerator;
00024 class MinimumBuilder;
00025 class MinimumSeed;
00026 class MnFcn;
00027 class FumiliFcnBase; 
00028 class GradientCalculator;
00029 class MnUserParameterState;
00030 class MnUserParameters;
00031 class MnUserCovariance;
00032 class MnStrategy;
00033 
00034 
00035 
00036 //______________________________________________________________
00037 /** 
00038 
00039 Instantiates the seed generator and Minimum builder for the
00040 Fumili minimization method. Produces the Minimum via the 
00041 Minimize methods inherited from ModularFunctionMinimizer.
00042 
00043 @author Andras Zsenei and Lorenzo Moneta, Creation date: 28 Sep 2004
00044 
00045 @ingroup Minuit
00046 
00047 */
00048 
00049 
00050 class FumiliMinimizer : public ModularFunctionMinimizer {
00051 
00052 public:
00053 
00054 
00055    /**
00056 
00057       Constructor initializing the FumiliMinimizer by instantiatiating 
00058       the SeedGenerator and MinimumBuilder for the Fumili minimization method.
00059 
00060       @see MnSeedGenerator
00061   
00062       @see FumiliBuilder
00063 
00064    */
00065 
00066    FumiliMinimizer() : fMinSeedGen(MnSeedGenerator()),
00067                        fMinBuilder(FumiliBuilder()) {}
00068   
00069    ~FumiliMinimizer() {}
00070 
00071 
00072    /**
00073 
00074       Accessor to the seed generator of the minimizer.
00075 
00076       @return A reference to the seed generator used by the minimizer
00077 
00078    */
00079 
00080    const MinimumSeedGenerator& SeedGenerator() const {return fMinSeedGen;}
00081 
00082 
00083    /**
00084 
00085       Accessor to the Minimum builder of the minimizer.
00086 
00087       @return a reference to the Minimum builder.
00088 
00089    */
00090 
00091    const FumiliBuilder& Builder() const {return fMinBuilder;}
00092 
00093 
00094    // for Fumili
00095 
00096    FunctionMinimum Minimize(const FCNBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00097 
00098    virtual FunctionMinimum Minimize(const FCNGradientBase&, const MnUserParameterState&, const MnStrategy&, unsigned int maxfcn = 0, double toler = 0.1) const;
00099 
00100    // need to re-implement all function in ModularFuncitionMinimizer otherwise they will be hided
00101 
00102    virtual FunctionMinimum Minimize(const FCNBase& fcn, const std::vector<double>& par, const std::vector<double>& err, unsigned int stra = 1, unsigned int maxfcn = 0, double toler = 0.1) const { 
00103       return ModularFunctionMinimizer::Minimize(fcn, par, err, stra, maxfcn,toler);
00104    } 
00105 
00106    virtual FunctionMinimum Minimize(const FCNGradientBase&fcn, const std::vector<double>&par, const std::vector<double>&err, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const { 
00107       return ModularFunctionMinimizer::Minimize(fcn,par,err,stra,maxfcn,toler);    
00108    }
00109 
00110    virtual FunctionMinimum Minimize(const FCNBase& fcn, const std::vector<double>&par, unsigned int nrow, const std::vector<double>&cov, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const { 
00111       return ModularFunctionMinimizer::Minimize(fcn,par,nrow,cov,stra,maxfcn,toler);    
00112    } 
00113 
00114    virtual FunctionMinimum Minimize(const FCNGradientBase& fcn, const std::vector<double>&par, unsigned int nrow, const std::vector<double>&cov, unsigned int stra=1, unsigned int maxfcn = 0, double toler = 0.1) const { 
00115       return ModularFunctionMinimizer::Minimize(fcn,par,nrow,cov,stra,maxfcn,toler);    
00116    } 
00117  
00118 
00119    virtual FunctionMinimum Minimize(const FCNBase& fcn, const MnUserParameters& par, const MnStrategy& stra, unsigned int maxfcn = 0, double toler = 0.1) const { 
00120       return ModularFunctionMinimizer::Minimize(fcn,par,stra,maxfcn,toler); 
00121    }
00122 
00123    virtual FunctionMinimum Minimize(const FCNGradientBase& fcn, const MnUserParameters& par, const MnStrategy& stra, unsigned int maxfcn = 0, double toler = 0.1) const { 
00124       return ModularFunctionMinimizer::Minimize(fcn,par,stra,maxfcn,toler); 
00125    }
00126 
00127    virtual FunctionMinimum Minimize(const FCNBase& fcn, const MnUserParameters& par, const MnUserCovariance& cov, const MnStrategy& stra, unsigned int maxfcn = 0, double toler = 0.1) const { 
00128       return ModularFunctionMinimizer::Minimize(fcn,par,cov,stra,maxfcn,toler); 
00129    }
00130 
00131    virtual FunctionMinimum Minimize(const FCNGradientBase& fcn, const MnUserParameters& par, const MnUserCovariance& cov, const MnStrategy& stra, unsigned int maxfcn = 0, double toler = 0.1) const { 
00132       return ModularFunctionMinimizer::Minimize(fcn,par,cov,stra,maxfcn,toler); 
00133    }
00134 
00135 
00136 
00137    virtual FunctionMinimum Minimize(const MnFcn& mfcn, const GradientCalculator& gc, const MinimumSeed& seed, const MnStrategy& stra, unsigned int maxfcn, double toler) const { 
00138       return ModularFunctionMinimizer::Minimize(mfcn, gc, seed, stra, maxfcn, toler); 
00139    }
00140 
00141 
00142 private:
00143 
00144    MnSeedGenerator fMinSeedGen;
00145    FumiliBuilder fMinBuilder;
00146 
00147 };
00148 
00149   }  // namespace Minuit2
00150 
00151 }  // namespace ROOT
00152 
00153 #endif  // ROOT_Minuit2_FumiliMinimizer

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