9 #include "Minuit2/FunctionMinimum.h" 10 #include "Minuit2/MnUserParameters.h" 11 #include "Minuit2/MnPrint.h" 12 #include "Minuit2/MnMigrad.h" 13 #include "Minuit2/MnSimplex.h" 14 #include "Minuit2/CombinedMinimizer.h" 15 #include "Minuit2/MnMinimize.h" 16 #include "Minuit2/MnMinos.h" 17 #include "Minuit2/MnHesse.h" 18 #include "Minuit2/MnContours.h" 19 #include "Minuit2/MnPlot.h" 20 #include "Minuit2/MinosError.h" 21 #include "Minuit2/ContoursError.h" 32 ROOT::Minuit2::MnUserParameters MnPar;
33 for (
int i = 0;
i <
par_.GetNrows();
i++) {
36 MnPar.Add(
name.Data(),
43 unsigned int max = 10;
44 int numberofcalls = 200 +
par_.GetNrows() * 100 +
par_.GetNrows() *
par_.GetNrows() * 5;
48 ROOT::Minuit2::MnMinimize minimize(
updator, MnPar);
49 ROOT::Minuit2::FunctionMinimum
min = minimize(numberofcalls,
tolerance);
50 for (
unsigned int i = 0;
i <=
max &&
min.Edm() > edmMin;
i++) {
56 if (
min.IsAboveMaxEdm()) {
57 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Found Vertex that is above EDM " << std::endl;
61 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Failed min.IsValid()" << std::endl;
62 if (!
min.HasValidParameters()) {
63 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Failed min.HasValidParameters()" << std::endl;
65 if (!
min.HasValidCovariance()) {
66 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Failed min.HasValidCovariance()" << std::endl;
68 if (!
min.HesseFailed()) {
69 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Failed min.HesseFailed()" << std::endl;
71 if (!
min.HasReachedCallLimit()) {
72 edm::LogWarning(
"Chi2VertexFitter::Fit") <<
"Failed min.HasReachedCallLimit()" << std::endl;
78 for (
int i = 0;
i <
par_.GetNrows();
i++) {
82 for (
int i = 0;
i <
par_.GetNrows();
i++) {
83 for (
int j = 0;
j <
par_.GetNrows();
j++) {
TMatrixTSym< double > parcov_
virtual TString freeParName(int Par)
Log< level::Warning, false > LogWarning