Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
MnStrategy.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_MnStrategy
11#define ROOT_Minuit2_MnStrategy
12
13namespace ROOT {
14
15namespace Minuit2 {
16
17//_________________________________________________________________________
18/**
19 API class for defining four levels of strategies: low (0), medium (1),
20 high (2), very high (>=3);
21 acts on: Migrad (behavioural),
22 Minos (lowers strategy by 1 for Minos-own minimization),
23 Hesse (iterations),
24 Numerical2PDerivative (iterations)
25 */
26
28
29public:
30 // default strategy
31 MnStrategy();
32
33 // user defined strategy (0, 1, 2, >=3)
34 explicit MnStrategy(unsigned int);
35
36 unsigned int GradientNCycles() const { return fGradNCyc; }
37 double GradientStepTolerance() const { return fGradTlrStp; }
38 double GradientTolerance() const { return fGradTlr; }
39
40 unsigned int HessianNCycles() const { return fHessNCyc; }
41 double HessianStepTolerance() const { return fHessTlrStp; }
42 double HessianG2Tolerance() const { return fHessTlrG2; }
43 unsigned int HessianGradientNCycles() const { return fHessGradNCyc; }
44 unsigned int HessianCentralFDMixedDerivatives() const { return fHessCFDG2; }
45 unsigned int HessianForcePosDef() const { return fHessForcePosDef; }
46
47 int StorageLevel() const { return fStoreLevel; }
48
49 bool RefineGradientInHessian() const { return fStrategy > 0; }
50
51 bool ComputeInitialHessian() const { return fStrategy == 2; }
52
53 double HessianRecomputeThreshold() const;
54
55 void SetGradientNCycles(unsigned int n) { fGradNCyc = n; }
58
59 void SetHessianNCycles(unsigned int n) { fHessNCyc = n; }
62 void SetHessianGradientNCycles(unsigned int n) { fHessGradNCyc = n; }
63
64 // 1 = calculate central finite difference mixed derivatives (involves 3 extra evaluations per derivative)
65 // 0 = use forward finite difference (default)
67
68 // 1 = returned matrix from Hesse should be forced positive definite (default)
69 // 0 = do not force matrix positive definite
71
72 // set storage level of iteration quantities
73 // 0 = store only last iterations 1 = full storage (default)
74 void SetStorageLevel(unsigned int level) { fStoreLevel = level; }
75
76private:
77 friend class MnFunctionCross;
78 friend class MnContours;
79 MnStrategy NextLower() const;
80
81 void SetLowStrategy();
82 void SetMediumStrategy();
83 void SetHighStrategy();
85
86 unsigned int fStrategy;
87
88 unsigned int fGradNCyc;
90 double fGradTlr;
91 unsigned int fHessNCyc;
93 double fHessTlrG2;
94 unsigned int fHessGradNCyc;
98};
99
100} // namespace Minuit2
101
102} // namespace ROOT
103
104#endif // ROOT_Minuit2_MnStrategy
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
API class for Contours Error analysis (2-dim errors); minimization has to be done before and Minimum ...
Definition MnContours.h:35
API class for defining four levels of strategies: low (0), medium (1), high (2), very high (>=3); act...
Definition MnStrategy.h:27
double HessianG2Tolerance() const
Definition MnStrategy.h:42
unsigned int fHessGradNCyc
Definition MnStrategy.h:94
unsigned int HessianGradientNCycles() const
Definition MnStrategy.h:43
unsigned int HessianCentralFDMixedDerivatives() const
Definition MnStrategy.h:44
bool RefineGradientInHessian() const
Definition MnStrategy.h:49
double GradientStepTolerance() const
Definition MnStrategy.h:37
void SetStorageLevel(unsigned int level)
Definition MnStrategy.h:74
void SetHessianNCycles(unsigned int n)
Definition MnStrategy.h:59
unsigned int HessianForcePosDef() const
Definition MnStrategy.h:45
void SetHessianStepTolerance(double stp)
Definition MnStrategy.h:60
bool ComputeInitialHessian() const
Definition MnStrategy.h:51
double GradientTolerance() const
Definition MnStrategy.h:38
void SetGradientTolerance(double toler)
Definition MnStrategy.h:57
double HessianStepTolerance() const
Definition MnStrategy.h:41
unsigned int HessianNCycles() const
Definition MnStrategy.h:40
unsigned int GradientNCycles() const
Definition MnStrategy.h:36
void SetHessianCentralFDMixedDerivatives(unsigned int flag)
Definition MnStrategy.h:66
void SetGradientNCycles(unsigned int n)
Definition MnStrategy.h:55
void SetHessianForcePosDef(unsigned int flag)
Definition MnStrategy.h:70
void SetGradientStepTolerance(double stp)
Definition MnStrategy.h:56
void SetHessianGradientNCycles(unsigned int n)
Definition MnStrategy.h:62
void SetHessianG2Tolerance(double toler)
Definition MnStrategy.h:61
double HessianRecomputeThreshold() const
MnStrategy NextLower() const
const Int_t n
Definition legend1.C:16