29 if (
fcn.Up() != min.Up()) {
30 print.
Warn(
"MnMinos: UP value has changed, need to update FunctionMinimum class");
35 : fFCN(
fcn), fMinimum(min), fStrategy(
stra)
41 if (
fcn.Up() != min.Up()) {
42 print.
Warn(
"UP value has changed, need to update FunctionMinimum class");
83 print.
Debug(
"Function calls to find upper error",
up.NFcn());
87 print.
Debug(
"Function calls to find lower error", lo.
NFcn());
89 print.
Debug(
"return Minos error", lo.
Value(),
",",
up.Value());
105 print.
Info(
"Determination of",
direction == 1 ?
"upper" :
"lower",
"Minos error for parameter", par);
112 unsigned int nvar =
fMinimum.UserState().VariableParameters();
113 maxcalls = 2 * (nvar + 1) * (200 + 100 * nvar + 5 * nvar * nvar);
116 std::vector<unsigned int>
para(1, par);
120 double val =
upar.Value(par) + err;
123 val = std::min(val,
upar.Parameter(par).UpperLimit());
125 if (
direction == -1 &&
upar.Parameter(par).HasLowerLimit()) {
126 val = std::max(val,
upar.Parameter(par).LowerLimit());
129 err = val -
upar.Value(par);
130 std::vector<double>
xmid(1, val);
131 std::vector<double>
xdir(1, err);
134 unsigned int ind =
upar.IntOfExt(par);
143 for (
unsigned int i = 0; i <
m.Nrow(); i++) {
150 unsigned int ext =
upar.ExtOfInt(i);
155 if (
upar.Parameter(
ext).HasUpperLimit()) {
158 if (
upar.Parameter(
ext).HasLowerLimit()) {
168 upar.SetValue(par, val);
170 print.
Debug(
"Parameter", par,
"is fixed and set from",
fMinimum.UserState().Value(par),
"to", val,
"delta =", err);
175 print.
Debug(
"aopt value found from MnFunctionCross =",
aopt.Value());
179 print.
Warn(
"maximum number of function calls exceeded for Parameter",
par_name);
180 if (
aopt.NewMinimum())
181 print.
Warn(
"new Minimum found while looking for Parameter",
par_name);
186 print.
Warn(
"could not find Upper Value for Parameter",
par_name);
191 print.
Warn(
"could not find Lower Value for Parameter",
par_name);
194 print.
Info(
"end of Minos scan for",
direction == 1 ?
"up" :
"low",
"interval for parameter",
upar.Name(par));
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Interface (abstract class) defining the function to be minimized, which has to be implemented by the ...
class holding the full result of the minimization; both internal and external (MnUserParameterState) ...
Class describing a symmetric matrix of size n.
Class holding the result of Minos (lower and upper values) for a specific parameter.
unsigned int NFcn() const
const FunctionMinimum & fMinimum
MinosError Minos(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
ask for MinosError (Lower + Upper) can be printed via std::cout
double Upper(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
std::pair< double, double > operator()(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
returns the negative (pair.first) and the positive (pair.second) Minos Error of the Parameter
MnCross Loval(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
MnCross FindCrossValue(int dir, unsigned int, unsigned int maxcalls, double toler) const
internal method to get crossing value via MnFunctionCross
MnMinos(const FCNBase &fcn, const FunctionMinimum &min, unsigned int stra=1)
construct from FCN + Minimum + strategy
double Lower(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
calculate one side (negative or positive Error) of the Parameter give as input (optionally) maxcalls ...
MnCross Upval(unsigned int, unsigned int maxcalls=0, double toler=0.1) const
void Debug(const Ts &... args)
void Info(const Ts &... args)
void Warn(const Ts &... args)
API class for defining four levels of strategies: low (0), medium (1), high (2), very high (>=3); act...
class which holds the external user and/or internal Minuit representation of the parameters and error...
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...