Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MnSimplex.h
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_MnSimplex
11 #define ROOT_Minuit2_MnSimplex
12 
13 #include "Minuit2/MnApplication.h"
15 
16 namespace ROOT {
17 
18  namespace Minuit2 {
19 
20 
21 class FCNBase;
22 
23 //_________________________________________________________________________
24 /**
25  API class for minimization using the Simplex method, which does not need and use
26  the derivatives of the function, but only function values.
27  More information on the minimization method is available
28  <A HREF="http://seal.web.cern.ch/mathlibs/documents/minuit/mntutorial.pdf">here</A>.
29 
30  It allows for user interaction: set/change parameters, do minimization,
31  change parameters, re-do minimization etc.;
32  */
33 
34 class MnSimplex : public MnApplication {
35 
36 public:
37 
38  /// construct from FCNBase + std::vector for parameters and errors
39  MnSimplex(const FCNBase& fcn, const std::vector<double>& par, const std::vector<double>& err, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par,err), MnStrategy(stra)), fMinimizer(SimplexMinimizer()) {}
40 
41  /// construct from FCNBase + std::vector for parameters and covariance
42  MnSimplex(const FCNBase& fcn, const std::vector<double>& par, unsigned int nrow, const std::vector<double>& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov, nrow), MnStrategy(stra)), fMinimizer(SimplexMinimizer()) {}
43 
44  /// construct from FCNBase + std::vector for parameters and MnUserCovariance
45  MnSimplex(const FCNBase& fcn, const std::vector<double>& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(SimplexMinimizer()) {}
46 
47  /// construct from FCNBase + MnUserParameters
48  MnSimplex(const FCNBase& fcn, const MnUserParameters& par, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par), MnStrategy(stra)), fMinimizer(SimplexMinimizer()) {}
49 
50  /// construct from FCNBase + MnUserParameters + MnUserCovariance
51  MnSimplex(const FCNBase& fcn, const MnUserParameters& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(SimplexMinimizer()) {}
52 
53  /// construct from FCNBase + MnUserParameterState + MnStrategy
54  MnSimplex(const FCNBase& fcn, const MnUserParameterState& par, const MnStrategy& str) : MnApplication(fcn, MnUserParameterState(par), str), fMinimizer(SimplexMinimizer()) {}
55 
56  MnSimplex(const MnSimplex& migr) : MnApplication(migr.Fcnbase(), migr.State(), migr.Strategy(), migr.NumOfCalls()), fMinimizer(migr.fMinimizer) {}
57 
58  ~MnSimplex() {}
59 
60  ModularFunctionMinimizer& Minimizer() {return fMinimizer;}
61  const ModularFunctionMinimizer& Minimizer() const {return fMinimizer;}
62 
63 private:
64 
65  SimplexMinimizer fMinimizer;
66 
67 private:
68 
69  //forbidden assignment of migrad (const FCNBase& = )
70  MnSimplex& operator=(const MnSimplex&) {return *this;}
71 };
72 
73  } // namespace Minuit2
74 
75 } // namespace ROOT
76 
77 #endif // ROOT_Minuit2_MnSimplex