diff --git a/GUI/Model/Job/MinimizerItem.cpp b/GUI/Model/Job/MinimizerItem.cpp index 54db6669c31c0829ae3e27b58fd7b08049c1e655..19dc86ad608fbbea04412b9a3b1e764d974da41f 100644 --- a/GUI/Model/Job/MinimizerItem.cpp +++ b/GUI/Model/Job/MinimizerItem.cpp @@ -43,10 +43,9 @@ void add_algorithm_from_minimizer_to_list_and_map(const QString& minimizer, ASSERT(algorithms.size() == descriptions.size()) for (int i = 0; i < algorithms.size(); i++) { - QString name = " " + algorithms[i]; - common_algorithms_list.append(name); + common_algorithms_list.append(algorithms[i]); common_algorithms_descriptions.append(descriptions[i]); - algorithm_minimizer_map.insert(name, minimizer_names_map.key(minimizer)); + algorithm_minimizer_map.insert(algorithms[i], minimizer_names_map.key(minimizer)); } } void create_algorithm_list_and_map(QString& default_common_algorithm, QStringList& algorithms_list, @@ -90,7 +89,7 @@ void create_algorithm_list_and_map(QString& default_common_algorithm, QStringLis add_algorithm_from_minimizer_to_list_and_map(GSLLMAMinimizerItem::M_TYPE, algorithms_list, algorithms_descriptions); - default_common_algorithm = algorithms_list[1]; // after the first header + default_common_algorithm = algorithms_list[1]; // after the first header: Minuit2 Migrad } #endif @@ -204,12 +203,33 @@ void MinimizerContainerItem::setCurrentCommonAlgorithm(const QString& name) ASSERT(algorithmHasMinimizer(name)); setCurrentMinimizer(algorithm_minimizer_map.value(name)); + applyAlgorithmToMinimizer(name); } ComboProperty MinimizerContainerItem::commonAlgorithmCombo() const { return getItemValue(P_COMMON_ALGORITHMS).value<ComboProperty>(); } + +void MinimizerContainerItem::applyAlgorithmToMinimizer(const QString &name) +{ + // Minuit2 + if (currentMinimizerM_TYPE() == MinuitMinimizerItem::M_TYPE) + minimizerItemMinuit()->setCurrentAlgorithm(name); + + // GSL MultiMin + if (currentMinimizerM_TYPE() == GSLMultiMinimizerItem::M_TYPE) + minimizerItemGSLMulti()->setCurrentAlgorithm(name); + + // TMVA Genetic + // do nothing + + // GSL Simulated Annealing + // do nothing + + // GSL Levenberg-Marquardt + // do nothing +} #endif QString MinimizerContainerItem::currentObjectiveMetric() const { diff --git a/GUI/Model/Job/MinimizerItem.h b/GUI/Model/Job/MinimizerItem.h index e3764fac84eee8670c6a0d1f91a47c1cd8f49de1..8f6cb5868d596708da0c03fd909891a130c5c356 100644 --- a/GUI/Model/Job/MinimizerItem.h +++ b/GUI/Model/Job/MinimizerItem.h @@ -70,6 +70,7 @@ public: bool algorithmHasMinimizer(const QString& name); void setCurrentCommonAlgorithm(const QString& name); ComboProperty commonAlgorithmCombo() const; + void applyAlgorithmToMinimizer(const QString& name); #endif // Objective metric to use for estimating distance between simulated and experimental data diff --git a/GUI/View/Fit/MinimizerSettingsWidget.cpp b/GUI/View/Fit/MinimizerSettingsWidget.cpp index cb3d9fd922dd59d5a4782d53ba27618831bba014..a2abafef49f9a244203f746a6b258caa6397a6a9 100644 --- a/GUI/View/Fit/MinimizerSettingsWidget.cpp +++ b/GUI/View/Fit/MinimizerSettingsWidget.cpp @@ -139,6 +139,7 @@ void MinimizerSettingsWidget::createGroupedAlgorithmsCombo() int prev = comboBox->currentIndex() - 2; int next = comboBox->currentIndex() + 2; + QSignalBlocker b(comboBox); if (previous_state < comboBox->currentIndex() && next < comboBox->count()) comboBox->setCurrentIndex(next); else if (previous_state > comboBox->currentIndex() && prev >= 0)