Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 Strategy() const { return fStrategy; }
37
38 unsigned int GradientNCycles() const { return fGradNCyc; }
39 double GradientStepTolerance() const { return fGradTlrStp; }
40 double GradientTolerance() const { return fGradTlr; }
41
42 unsigned int HessianNCycles() const { return fHessNCyc; }
43 double HessianStepTolerance() const { return fHessTlrStp; }
44 double HessianG2Tolerance() const { return fHessTlrG2; }
45 unsigned int HessianGradientNCycles() const { return fHessGradNCyc; }
46 unsigned int HessianCentralFDMixedDerivatives() const { return fHessCFDG2; }
47 unsigned int HessianForcePosDef() const { return fHessForcePosDef; }
48
49 int StorageLevel() const { return fStoreLevel; }
50
51 bool IsLow() const { return fStrategy == 0; }
52 bool IsMedium() const { return fStrategy == 1; }
53 bool IsHigh() const { return fStrategy == 2; }
54 bool IsVeryHigh() const { return fStrategy >= 3; }
55
56 void SetLowStrategy();
57 void SetMediumStrategy();
58 void SetHighStrategy();
60
61 void SetGradientNCycles(unsigned int n) { fGradNCyc = n; }
64
65 void SetHessianNCycles(unsigned int n) { fHessNCyc = n; }
68 void SetHessianGradientNCycles(unsigned int n) { fHessGradNCyc = n; }
69
70 // 1 = calculate central finite difference mixed derivatives (involves 3 extra evaluations per derivative)
71 // 0 = use forward finite difference (default)
73
74 // 1 = returned matrix from Hesse should be forced positive definite (default)
75 // 0 = do not force matrix positive definite
77
78 // set storage level of iteration quantities
79 // 0 = store only last iterations 1 = full storage (default)
80 void SetStorageLevel(unsigned int level) { fStoreLevel = level; }
81
82private:
83 unsigned int fStrategy;
84
85 unsigned int fGradNCyc;
87 double fGradTlr;
88 unsigned int fHessNCyc;
90 double fHessTlrG2;
91 unsigned int fHessGradNCyc;
95};
96
97} // namespace Minuit2
98
99} // namespace ROOT
100
101#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 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:44
unsigned int Strategy() const
Definition MnStrategy.h:36
unsigned int fHessGradNCyc
Definition MnStrategy.h:91
unsigned int HessianGradientNCycles() const
Definition MnStrategy.h:45
unsigned int HessianCentralFDMixedDerivatives() const
Definition MnStrategy.h:46
double GradientStepTolerance() const
Definition MnStrategy.h:39
void SetStorageLevel(unsigned int level)
Definition MnStrategy.h:80
void SetHessianNCycles(unsigned int n)
Definition MnStrategy.h:65
unsigned int HessianForcePosDef() const
Definition MnStrategy.h:47
void SetHessianStepTolerance(double stp)
Definition MnStrategy.h:66
double GradientTolerance() const
Definition MnStrategy.h:40
void SetGradientTolerance(double toler)
Definition MnStrategy.h:63
double HessianStepTolerance() const
Definition MnStrategy.h:43
unsigned int HessianNCycles() const
Definition MnStrategy.h:42
unsigned int GradientNCycles() const
Definition MnStrategy.h:38
void SetHessianCentralFDMixedDerivatives(unsigned int flag)
Definition MnStrategy.h:72
void SetGradientNCycles(unsigned int n)
Definition MnStrategy.h:61
void SetHessianForcePosDef(unsigned int flag)
Definition MnStrategy.h:76
void SetGradientStepTolerance(double stp)
Definition MnStrategy.h:62
void SetHessianGradientNCycles(unsigned int n)
Definition MnStrategy.h:68
void SetHessianG2Tolerance(double toler)
Definition MnStrategy.h:67
const Int_t n
Definition legend1.C:16
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...