Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MnMinos.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_MnMinos
11 #define ROOT_Minuit2_MnMinos
12 
13 #include "Minuit2/MnStrategy.h"
14 
15 #include <utility>
16 
17 namespace ROOT {
18 
19  namespace Minuit2 {
20 
21 
22 class FCNBase;
23 class FunctionMinimum;
24 class MinosError;
25 class MnCross;
26 
27 //__________________________________________________________________
28 /**
29  API class for Minos Error analysis (asymmetric errors);
30  minimization has to be done before and Minimum must be valid;
31  possibility to ask only for one side of the Minos Error;
32  */
33 
34 class MnMinos {
35 
36 public:
37 
38 
39  /// construct from FCN + Minimum + strategy
40  MnMinos(const FCNBase& fcn, const FunctionMinimum& min, unsigned int stra = 1);
41 
42  /// construct from FCN + Minimum + strategy
43  MnMinos(const FCNBase& fcn, const FunctionMinimum& min, const MnStrategy& stra);
44 
45  ~MnMinos() {}
46 
47  /// returns the negative (pair.first) and the positive (pair.second)
48  /// Minos Error of the Parameter
49  std::pair<double,double> operator()(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
50 
51  /// calculate one side (negative or positive Error) of the Parameter
52  /// give as input (optionally) maxcalls and tolerance
53  double Lower(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
54  double Upper(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
55 
56  MnCross Loval(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
57  MnCross Upval(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
58 
59  /// ask for MinosError (Lower + Upper)
60  /// can be printed via std::cout
61  MinosError Minos(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
62 
63 protected:
64 
65  /// internal method to get crossing value via MnFunctionCross
66  MnCross FindCrossValue(int dir , unsigned int, unsigned int maxcalls, double toler) const;
67 
68 private:
69 
70  const FCNBase& fFCN;
71  const FunctionMinimum& fMinimum;
72  MnStrategy fStrategy;
73 };
74 
75  } // namespace Minuit2
76 
77 } // namespace ROOT
78 
79 #endif // ROOT_Minuit2_MnMinos