Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MnScan.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_MnScan
11 #define ROOT_Minuit2_MnScan
12 
13 #include "Minuit2/MnApplication.h"
14 #include "Minuit2/ScanMinimizer.h"
15 
16 namespace ROOT {
17 
18  namespace Minuit2 {
19 
20 
21 class FCNBase;
22 
23 //_______________________________________________________________________
24 /**
25  API class for minimization using a scan method to find the minimum;
26  allows for user interaction: set/change parameters, do minimization,
27  change parameters, re-do minimization etc.;
28 
29  */
30 
31 class MnScan : public MnApplication {
32 
33 public:
34 
35  /// construct from FCNBase + std::vector for parameters and errors
36  MnScan(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(ScanMinimizer()) {}
37 
38  /// construct from FCNBase + std::vector for parameters and covariance
39  MnScan(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(ScanMinimizer()) {}
40 
41  /// construct from FCNBase + std::vector for parameters and MnUserCovariance
42  MnScan(const FCNBase& fcn, const std::vector<double>& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(ScanMinimizer()) {}
43 
44  /// construct from FCNBase + MnUserParameters
45  MnScan(const FCNBase& fcn, const MnUserParameters& par, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par), MnStrategy(stra)), fMinimizer(ScanMinimizer()) {}
46 
47  /// construct from FCNBase + MnUserParameters + MnUserCovariance
48  MnScan(const FCNBase& fcn, const MnUserParameters& par, const MnUserCovariance& cov, unsigned int stra = 1) : MnApplication(fcn, MnUserParameterState(par, cov), MnStrategy(stra)), fMinimizer(ScanMinimizer()) {}
49 
50  /// construct from FCNBase + MnUserParameterState + MnStrategy
51  MnScan(const FCNBase& fcn, const MnUserParameterState& par, const MnStrategy& str) : MnApplication(fcn, MnUserParameterState(par), str), fMinimizer(ScanMinimizer()) {}
52 
53  MnScan(const MnScan& migr) : MnApplication(migr.Fcnbase(), migr.State(), migr.Strategy(), migr.NumOfCalls()), fMinimizer(migr.fMinimizer) {}
54 
55  ~MnScan() {}
56 
57  ModularFunctionMinimizer& Minimizer() {return fMinimizer;}
58  const ModularFunctionMinimizer& Minimizer() const {return fMinimizer;}
59 
60  std::vector<std::pair<double, double> > Scan(unsigned int par, unsigned int maxsteps = 41, double low = 0., double high = 0.);
61 
62 private:
63 
64  ScanMinimizer fMinimizer;
65 
66 private:
67 
68  /// forbidden assignment (const FCNBase& = )
69  MnScan& operator=(const MnScan&) {return *this;}
70 };
71 
72  } // namespace Minuit2
73 
74 } // namespace ROOT
75 
76 #endif // ROOT_Minuit2_MnScan