10 #ifndef ROOT_Minuit2_MnApplication
11 #define ROOT_Minuit2_MnApplication
22 class FunctionMinimum;
23 class MinuitParameter;
24 class MnMachinePrecision;
25 class ModularFunctionMinimizer;
27 class FCNGradientBase;
43 MnApplication(
const FCNBase& fcn,
const MnUserParameterState& state,
const MnStrategy& stra,
unsigned int nfcn = 0);
46 MnApplication(
const FCNGradientBase& fcn,
const MnUserParameterState& state,
const MnStrategy& stra,
unsigned int nfcn = 0);
48 virtual ~MnApplication() { }
59 virtual FunctionMinimum operator()(
unsigned int maxfcn = 0,
double tolerance = 0.1);
61 virtual ModularFunctionMinimizer& Minimizer() = 0;
62 virtual const ModularFunctionMinimizer& Minimizer()
const = 0;
64 const MnMachinePrecision& Precision()
const {
return fState.Precision();}
65 const MnUserParameterState& State()
const {
return fState;}
66 const MnUserParameters& Parameters()
const {
return fState.Parameters();}
67 const MnUserCovariance& Covariance()
const {
return fState.Covariance();}
68 virtual const FCNBase& Fcnbase()
const {
return fFCN;}
69 const MnStrategy& Strategy()
const {
return fStrategy;}
70 unsigned int NumOfCalls()
const {
return fNumCall;}
75 MnUserParameterState fState;
77 unsigned int fNumCall;
86 const std::vector<ROOT::Minuit2::MinuitParameter>& MinuitParameters()
const;
88 std::vector<double> Params()
const;
89 std::vector<double> Errors()
const;
92 const MinuitParameter& Parameter(
unsigned int i)
const;
95 void Add(
const char* Name,
double val,
double err);
97 void Add(
const char* Name,
double val,
double err,
double ,
double);
99 void Add(
const char*,
double);
102 void Fix(
unsigned int);
103 void Release(
unsigned int);
104 void SetValue(
unsigned int,
double);
105 void SetError(
unsigned int,
double);
106 void SetLimits(
unsigned int,
double,
double);
107 void RemoveLimits(
unsigned int);
109 double Value(
unsigned int)
const;
110 double Error(
unsigned int)
const;
113 void Fix(
const char*);
114 void Release(
const char*);
115 void SetValue(
const char*,
double);
116 void SetError(
const char*,
double);
117 void SetLimits(
const char*,
double,
double);
118 void RemoveLimits(
const char*);
119 void SetPrecision(
double);
121 double Value(
const char*)
const;
122 double Error(
const char*)
const;
125 unsigned int Index(
const char*)
const;
127 const char* Name(
unsigned int)
const;
130 double Int2ext(
unsigned int,
double)
const;
131 double Ext2int(
unsigned int,
double)
const;
132 unsigned int IntOfExt(
unsigned int)
const;
133 unsigned int ExtOfInt(
unsigned int)
const;
134 unsigned int VariableParameters()
const;
142 #endif // ROOT_Minuit2_MnApplication