7 nParameters = KMAG_ON ? 5 : 4;
17 minimizer = ROOT::Math::Factory::CreateMinimizer(
"Minuit2",
"Combined");
18 fcn = ROOT::Math::Functor(&tracklet_fit, &
Tracklet::Eval, nParameters);
20 minimizer->SetMaxFunctionCalls(1000000);
21 minimizer->SetMaxIterations(100);
22 minimizer->SetTolerance(1E-2);
23 minimizer->SetFunction(fcn);
24 minimizer->SetPrintLevel(0);
34 tracklet_fit = tracklet;
36 minimizer->SetLimitedVariable(0,
"tx", tracklet.
tx, 0.001, -tx_max, tx_max);
37 minimizer->SetLimitedVariable(1,
"ty", tracklet.
ty, 0.001, -ty_max, ty_max);
38 minimizer->SetLimitedVariable(2,
"x0", tracklet.
x0, 0.1, -x0_max, x0_max);
39 minimizer->SetLimitedVariable(3,
"y0", tracklet.
y0, 0.1, -y0_max, y0_max);
42 minimizer->SetLimitedVariable(4,
"invP", tracklet.
invP, 0.001*tracklet.
invP, invP_min, invP_max);
45 minimizer->Minimize();
48 tracklet.
tx = minimizer->X()[0];
49 tracklet.
ty = minimizer->X()[1];
50 tracklet.
x0 = minimizer->X()[2];
51 tracklet.
y0 = minimizer->X()[3];
53 tracklet.
err_tx = minimizer->Errors()[0];
54 tracklet.
err_ty = minimizer->Errors()[1];
55 tracklet.
err_x0 = minimizer->Errors()[2];
56 tracklet.
err_y0 = minimizer->Errors()[3];
66 tracklet.
invP = minimizer->X()[4];
67 tracklet.
err_invP = minimizer->Errors()[4];
70 tracklet.
chisq = minimizer->MinValue();
71 return minimizer->Status();
virtual double get_DoubleFlag(const std::string &name) const
SQTrackletFitter(bool KMAG_ON=true)
int fit(Tracklet &tracklet)
core function - fit the tracklet and return the fit status
double Eval(const double *par)
static recoConsts * instance()