Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:29:41

0001 // @(#)root/minuit2:$Id$
0002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005
0003 
0004 /**********************************************************************
0005  *                                                                    *
0006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
0007  *                                                                    *
0008  **********************************************************************/
0009 
0010 #ifndef ROOT_Minuit2_MnSimplex
0011 #define ROOT_Minuit2_MnSimplex
0012 
0013 #include "Minuit2/MnApplication.h"
0014 #include "Minuit2/SimplexMinimizer.h"
0015 
0016 #include <vector>
0017 
0018 namespace ROOT {
0019 
0020 namespace Minuit2 {
0021 
0022 class FCNBase;
0023 
0024 //_________________________________________________________________________
0025 /**
0026     API class for minimization using the Simplex method, which does not need and use
0027     the derivatives of the function, but only function values.
0028     More information on the minimization method is available
0029     <A HREF="http://seal.web.cern.ch/mathlibs/documents/minuit/mntutorial.pdf">here</A>.
0030 
0031     It allows for user interaction: set/change parameters, do minimization,
0032     change parameters, re-do minimization etc.;
0033  */
0034 
0035 class MnSimplex : public MnApplication {
0036 
0037 public:
0038    /// construct from FCNBase + MnUserParameterState + MnStrategy
0039    MnSimplex(const FCNBase &fcn, const MnUserParameterState &par, const MnStrategy &str = MnStrategy{1})
0040       : MnApplication(fcn, MnUserParameterState(par), str), fMinimizer(SimplexMinimizer())
0041    {
0042    }
0043 
0044    MnSimplex(const MnSimplex &migr)
0045       : MnApplication(migr.Fcnbase(), migr.State(), migr.Strategy(), migr.NumOfCalls()), fMinimizer(migr.fMinimizer)
0046    {
0047    }
0048 
0049    ModularFunctionMinimizer &Minimizer() override { return fMinimizer; }
0050    const ModularFunctionMinimizer &Minimizer() const override { return fMinimizer; }
0051 
0052 private:
0053    SimplexMinimizer fMinimizer;
0054 
0055 private:
0056    // forbidden assignment of migrad (const FCNBase& = )
0057    MnSimplex &operator=(const MnSimplex &) { return *this; }
0058 };
0059 
0060 } // namespace Minuit2
0061 
0062 } // namespace ROOT
0063 
0064 #endif // ROOT_Minuit2_MnSimplex