3 #include <Minuit2/FCNBase.h>
4 #include <Minuit2/MnMinimize.h>
5 #include <Minuit2/MnHesse.h>
6 #include <Minuit2/FunctionMinimum.h>
7 #include <Minuit2/MnUserParameters.h>
9 #include <utl/AugerUnits.h>
15 using namespace LDFFinderKG;
22 ROOT::Minuit2::MnUserParameters pars;
24 pars.SetLowerLimit(
"rOpt", 0);
26 ROOT::Minuit2::MnMinimize
m(*
this, pars, 0);
30 ROOT::Minuit2::FunctionMinimum fmin =
m();
32 ROOT::Minuit2::MnHesse hesse;
33 hesse(m.Fcnbase(), fmin);
35 if (!fmin.HasValidParameters())
38 rOpt = fmin.UserParameters().Params()[0];
47 const double& ropt = pars[0];
52 for (
int i = 0; i < n; ++i) {
58 const double invN = 1./n;
59 const double avg = sum * invN;
60 const double var2 = sum2 * invN -
utl::Sqr(avg);
62 return var2 > 0 ?
std::sqrt(var2)/avg : 0;
constexpr T Sqr(const T &x)
double operator()(const std::vector< double > &pars) const
std::vector< double > fLDFParameters
std::vector< double > fShowerSize
std::vector< double > fBeta
bool GetResult(double &rOpt) const