Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MnFumiliMinimize.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_MnFumiliMinimize
11 #define ROOT_Minuit2_MnFumiliMinimize
12 
13 #include "Minuit2/MnApplication.h"
15 #include "Minuit2/FumiliFCNBase.h"
16 
17 namespace ROOT {
18 
19  namespace Minuit2 {
20 
21 
22 // class FumiliFCNBase;
23 // class FCNBase;
24 
25 
26 //___________________________________________________________________________
27 /**
28 
29 
30 API class for minimization using Fumili technology;
31 allows for user interaction: set/change parameters, do minimization,
32 change parameters, re-do minimization etc.;
33 also used by MnMinos and MnContours;
34 
35 
36  */
37 
38 class MnFumiliMinimize : public MnApplication {
39 
40 public:
41 
42  /// construct from FumiliFCNBase + std::vector for parameters and errors
43  MnFumiliMinimize(const FumiliFCNBase& fcn, const std::vector<double>& par, const std::vector<double>& err, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par,err), MnStrategy(stra)), fMinimizer(FumiliMinimizer()), fFCN(fcn) {}
44 
45  /// construct from FumiliFCNBase + std::vector for parameters and covariance
46  MnFumiliMinimize(const FumiliFCNBase& 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(FumiliMinimizer()), fFCN(fcn) {}
47 
48  /// construct from FumiliFCNBase + std::vector for parameters and MnUserCovariance
49  MnFumiliMinimize(const FumiliFCNBase& fcn, const std::vector<double>& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(FumiliMinimizer()), fFCN(fcn) {}
50 
51  /// construct from FumiliFCNBase + MnUserParameters
52  MnFumiliMinimize(const FumiliFCNBase& fcn, const MnUserParameters& par, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par), MnStrategy(stra)), fMinimizer(FumiliMinimizer()), fFCN(fcn) {}
53 
54  /// construct from FumiliFCNBase + MnUserParameters + MnUserCovariance
55  MnFumiliMinimize(const FumiliFCNBase& fcn, const MnUserParameters& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(FumiliMinimizer()), fFCN(fcn) {}
56 
57  /// construct from FumiliFCNBase + MnUserParameterState + MnStrategy
58  MnFumiliMinimize(const FumiliFCNBase& fcn, const MnUserParameterState& par, const MnStrategy& str) : MnApplication(fcn, MnUserParameterState(par), str), fMinimizer(FumiliMinimizer()), fFCN(fcn) {}
59 
60  MnFumiliMinimize(const MnFumiliMinimize& migr) : MnApplication(migr.Fcnbase(), migr.State(), migr.Strategy(), migr.NumOfCalls()), fMinimizer(migr.fMinimizer), fFCN(migr.Fcnbase()) {}
61 
62  virtual ~MnFumiliMinimize() { }
63 
64  FumiliMinimizer& Minimizer() {return fMinimizer;}
65  const FumiliMinimizer& Minimizer() const {return fMinimizer;}
66 
67  const FumiliFCNBase & Fcnbase() const { return fFCN; }
68 
69 
70  /// overwrite Minimize to use FumiliFCNBase
71  virtual FunctionMinimum operator()(unsigned int = 0, double = 0.1);
72 
73 
74 private:
75 
76  FumiliMinimizer fMinimizer;
77  const FumiliFCNBase & fFCN;
78 
79 private:
80 
81  //forbidden assignment of migrad (const FumiliFCNBase& = )
82  MnFumiliMinimize& operator=(const MnFumiliMinimize&) {return *this;}
83 };
84 
85  } // namespace Minuit2
86 
87 } // namespace ROOT
88 
89 #endif // ROOT_Minuit2_MnFumiliMinimize