From 63643f90ea87bd1fedcd128589261cb137f12be2 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Thu, 11 Aug 2022 12:45:59 +0200 Subject: [PATCH] MinimizerSettingsWidget: createMinuitEdits done --- GUI/Model/Job/MinimizerItem.cpp | 9 +-- GUI/View/Fit/MinimizerSettingsWidget.cpp | 70 ++++++++++++++---------- GUI/View/Fit/MinimizerSettingsWidget.h | 1 + 3 files changed, 46 insertions(+), 34 deletions(-) diff --git a/GUI/Model/Job/MinimizerItem.cpp b/GUI/Model/Job/MinimizerItem.cpp index c20dc2e330b..0e6c5317ab9 100644 --- a/GUI/Model/Job/MinimizerItem.cpp +++ b/GUI/Model/Job/MinimizerItem.cpp @@ -174,14 +174,11 @@ MinuitMinimizerItem::MinuitMinimizerItem() addProperty(P_ERRORDEF, double(1.0)); - addProperty(P_TOLERANCE, double(0.01))->setToolTip("Tolerance on the function value at the minimum"); - - addProperty(P_PRECISION, double(-1.0))->setToolTip("Relative floating point arithmetic precision"); + addProperty(P_TOLERANCE, double(0.01)); - // Minimizer internal print level is working to std::cout and is not intercepted by GUI - // addProperty(P_PRINTLEVEL, 0)->setToolTip("Minimizer internal print level"); + addProperty(P_PRECISION, double(-1.0)); - addProperty(P_MAXFUNCTIONCALLS, 0)->setToolTip("Maximum number of function calls"); + addProperty(P_MAXFUNCTIONCALLS, int(0)); } QString MinuitMinimizerItem::currentAlgorithm() const diff --git a/GUI/View/Fit/MinimizerSettingsWidget.cpp b/GUI/View/Fit/MinimizerSettingsWidget.cpp index 1fcc4e4457f..2e32dc8afbb 100644 --- a/GUI/View/Fit/MinimizerSettingsWidget.cpp +++ b/GUI/View/Fit/MinimizerSettingsWidget.cpp @@ -85,34 +85,9 @@ void MinimizerSettingsWidget::createMimimizerEdits() GUI::Util::Layout::clearLayout(m_minimizerLayout); #ifdef SIMPLE_MINIMIZER // Minuit2 - - if(m_currentItem->currentMinimizerM_TYPE() == MinuitMinimizerItem::M_TYPE) { - - MinuitMinimizerItem* minItem = m_currentItem->minimizerItemMinuit(); - m_minimizerLayout->addRow("Algorithm:", GUI::Util::createComboBox( - [=] { return minItem->algorithmCombo(); }, - [=](const QString& t) { minItem->setCurrentAlgorithm(t); }, - &m_updaters, "Minimization algorithm")); - - m_minimizerLayout->addRow("Strategy:", GUI::Util::createIntSpinbox( - [=] { return minItem->strategy(); }, - [=](int v) { minItem->setStrategy(v); }, - &m_updaters, "Minimization strategy (0-low, 1-medium, 2-high quality)", - RealLimits::limited(0, 2))); - - m_minimizerLayout->addRow("ErrorDef factor:", GUI::Util::createDoubleSpinbox( - [=] { return minItem->errorDefinition(); }, - [=](double v) { minItem->setErrorDefinition(v); }, - &m_updaters, "Error definition factor for parameter error calculation", - RealLimits::positive())); - - m_minimizerLayout->addRow("Tolerance:", GUI::Util::createDoubleSpinbox( - [=] { return minItem->tolerance(); }, - [=](double v) { minItem->setTolerance(v); }, - &m_updaters, "Tolerance on the function value at the minimum", - RealLimits::positive())); - - } else + if(m_currentItem->currentMinimizerM_TYPE() == MinuitMinimizerItem::M_TYPE) + createMinuitEdits(); + else // GSL MultiMin if(m_currentItem->currentMinimizerM_TYPE() == GSLMultiMinimizerItem::M_TYPE) { @@ -149,6 +124,45 @@ void MinimizerSettingsWidget::createMimimizerEdits() #endif } +void MinimizerSettingsWidget::createMinuitEdits() +{ + MinuitMinimizerItem* minItem = m_currentItem->minimizerItemMinuit(); + m_minimizerLayout->addRow("Algorithm:", GUI::Util::createComboBox( + [=] { return minItem->algorithmCombo(); }, + [=](const QString& t) { minItem->setCurrentAlgorithm(t); }, + &m_updaters, "Minimization algorithm")); + + m_minimizerLayout->addRow("Strategy:", GUI::Util::createIntSpinbox( + [=] { return minItem->strategy(); }, + [=](int v) { minItem->setStrategy(v); }, + &m_updaters, "Minimization strategy (0-low, 1-medium, 2-high quality)", + RealLimits::limited(0, 2))); + + m_minimizerLayout->addRow("ErrorDef factor:", GUI::Util::createDoubleSpinbox( + [=] { return minItem->errorDefinition(); }, + [=](double v) { minItem->setErrorDefinition(v); }, + &m_updaters, "Error definition factor for parameter error calculation", + RealLimits::positive())); + + m_minimizerLayout->addRow("Tolerance:", GUI::Util::createDoubleSpinbox( + [=] { return minItem->tolerance(); }, + [=](double v) { minItem->setTolerance(v); }, + &m_updaters, "Tolerance on the function value at the minimum", + RealLimits::positive())); + + m_minimizerLayout->addRow("Precision:", GUI::Util::createDoubleSpinbox( + [=] { return minItem->precision(); }, + [=](double v) { minItem->setPrecision(v); }, + &m_updaters, "Relative floating point arithmetic precision", + RealLimits::positive())); + + m_minimizerLayout->addRow("Max func calls:", GUI::Util::createIntSpinbox( + [=] { return minItem->maxFuncCalls(); }, + [=](int v) { minItem->setMaxFuncCalls(v); }, + &m_updaters, "Maximum number of function calls", + RealLimits::nonnegative())); +} + void MinimizerSettingsWidget::updateUIValues() { for (const auto& updater : m_updaters) diff --git a/GUI/View/Fit/MinimizerSettingsWidget.h b/GUI/View/Fit/MinimizerSettingsWidget.h index 80b919d3793..8b0b75b909e 100644 --- a/GUI/View/Fit/MinimizerSettingsWidget.h +++ b/GUI/View/Fit/MinimizerSettingsWidget.h @@ -39,6 +39,7 @@ public slots: private: void createMimimizerEdits(); + void createMinuitEdits(); void updateUIValues(); -- GitLab