From 8a90d7abf04ede1c13ea4679689229666aa7fc2f Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Sat, 20 Jul 2024 14:52:55 +0200
Subject: [PATCH] mv class MinimizerCatalog -> MinimizerFactory

---
 Fit/Kernel/MinimizerFactory.cpp    | 92 +++++++++++++++++++++++++++++-
 Fit/Minimizer/MinimizerCatalog.cpp | 89 -----------------------------
 Fit/Minimizer/MinimizerCatalog.h   | 41 -------------
 3 files changed, 91 insertions(+), 131 deletions(-)
 delete mode 100644 Fit/Minimizer/MinimizerCatalog.cpp
 delete mode 100644 Fit/Minimizer/MinimizerCatalog.h

diff --git a/Fit/Kernel/MinimizerFactory.cpp b/Fit/Kernel/MinimizerFactory.cpp
index c58df62a951..d4257d9ec6a 100644
--- a/Fit/Kernel/MinimizerFactory.cpp
+++ b/Fit/Kernel/MinimizerFactory.cpp
@@ -13,18 +13,108 @@
 //  ************************************************************************************************
 
 #include "Fit/Kernel/MinimizerFactory.h"
-#include "Fit/Minimizer/MinimizerCatalog.h"
 #include "Fit/Suite/GSLLevenbergMarquardtMinimizer.h"
 #include "Fit/Suite/GSLMultiMinimizer.h"
 #include "Fit/Suite/GeneticMinimizer.h"
 #include "Fit/Suite/Minuit2Minimizer.h"
 #include "Fit/Suite/SimAnMinimizer.h"
+#include "Fit/Tool/MinimizerUtil.h"
 #include <boost/format.hpp>
 #include <iomanip>
 #include <iostream>
 #include <memory>
 #include <sstream>
 
+namespace {
+
+class MinimizerCatalog {
+public:
+    MinimizerCatalog();
+
+    std::string toString() const;
+
+    std::vector<std::string> minimizerNames() const;
+
+    std::vector<std::string> algorithmNames(const std::string& minimizerName) const;
+
+    std::vector<std::string> algorithmDescriptions(const std::string& minimizerName) const;
+
+    const MinimizerInfo& minimizerInfo(const std::string& minimizerName) const;
+
+private:
+    void addMinimizerInfo(MinimizerInfo&& info);
+    std::vector<MinimizerInfo> m_minimizers;
+};
+
+MinimizerCatalog::MinimizerCatalog()
+{
+    addMinimizerInfo(MinimizerInfo::buildMinuit2Info());
+    addMinimizerInfo(MinimizerInfo::buildGSLMultiMinInfo());
+    addMinimizerInfo(MinimizerInfo::buildGSLLMAInfo());
+    addMinimizerInfo(MinimizerInfo::buildGSLSimAnInfo());
+    addMinimizerInfo(MinimizerInfo::buildGeneticInfo());
+}
+
+//! Returns multiline string representing catalog content.
+std::string MinimizerCatalog::toString() const
+{
+    const int text_width = 80;
+    std::ostringstream result;
+
+    result << std::string(text_width, '-') << "\n";
+    result << boost::format("%-15s|%-65s\n") % "Minimizer" % " Algorithms";
+    result << std::string(text_width, '-') << "\n";
+
+    for (const auto& info : m_minimizers) {
+        result << boost::format("%-15s| %-64s\n") % info.name()
+                      % mumufit::utils::toString(info.algorithmNames(), " ");
+    }
+    return result.str();
+}
+
+std::vector<std::string> MinimizerCatalog::minimizerNames() const
+{
+    std::vector<std::string> result;
+    for (const auto& info : m_minimizers)
+        result.push_back(info.name());
+
+    return result;
+}
+
+//! Returns list of algorithms defined for the minimizer with a given name.
+std::vector<std::string> MinimizerCatalog::algorithmNames(const std::string& minimizerName) const
+{
+    return minimizerInfo(minimizerName).algorithmNames();
+}
+
+//! Returns list of algorithm's descriptions for the minimizer with a given name    .
+std::vector<std::string>
+MinimizerCatalog::algorithmDescriptions(const std::string& minimizerName) const
+{
+    return minimizerInfo(minimizerName).algorithmDescriptions();
+}
+
+//! Returns info for minimizer with given name.
+const MinimizerInfo& MinimizerCatalog::minimizerInfo(const std::string& minimizerName) const
+{
+    for (const auto& info : m_minimizers)
+        if (info.name() == minimizerName)
+            return info;
+
+    throw std::runtime_error("MinimizerCatalog::minimizerInfo -> Error. "
+                             "No minimizer with the name '"
+                             + minimizerName + "'");
+}
+
+//! Adds minimizer info to the catalog.
+void MinimizerCatalog::addMinimizerInfo(MinimizerInfo&& info)
+{
+    m_minimizers.emplace_back(std::move(info));
+}
+
+} // namespace
+
+
 IMinimizer* MinimizerFactory::createMinimizer(const std::string& minimizerName,
                                               const std::string& algorithmType,
                                               const std::string& optionString)
diff --git a/Fit/Minimizer/MinimizerCatalog.cpp b/Fit/Minimizer/MinimizerCatalog.cpp
deleted file mode 100644
index 53060a59aca..00000000000
--- a/Fit/Minimizer/MinimizerCatalog.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Fit/Minimizer/MinimizerCatalog.cpp
-//! @brief     Implements class MinimizerCatalog.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "Fit/Minimizer/MinimizerCatalog.h"
-#include "Fit/Tool/MinimizerUtil.h"
-#include <boost/format.hpp>
-#include <sstream>
-
-MinimizerCatalog::MinimizerCatalog()
-{
-    addMinimizerInfo(MinimizerInfo::buildMinuit2Info());
-    addMinimizerInfo(MinimizerInfo::buildGSLMultiMinInfo());
-    addMinimizerInfo(MinimizerInfo::buildGSLLMAInfo());
-    addMinimizerInfo(MinimizerInfo::buildGSLSimAnInfo());
-    addMinimizerInfo(MinimizerInfo::buildGeneticInfo());
-}
-
-//! Returns multiline string representing catalog content.
-
-std::string MinimizerCatalog::toString() const
-{
-    const int text_width = 80;
-    std::ostringstream result;
-
-    result << std::string(text_width, '-') << "\n";
-    result << boost::format("%-15s|%-65s\n") % "Minimizer" % " Algorithms";
-    result << std::string(text_width, '-') << "\n";
-
-    for (const auto& info : m_minimizers) {
-        result << boost::format("%-15s| %-64s\n") % info.name()
-                      % mumufit::utils::toString(info.algorithmNames(), " ");
-    }
-    return result.str();
-}
-
-std::vector<std::string> MinimizerCatalog::minimizerNames() const
-{
-    std::vector<std::string> result;
-    for (const auto& info : m_minimizers)
-        result.push_back(info.name());
-
-    return result;
-}
-
-//! Returns list of algorithms defined for the minimizer with a given name.
-
-std::vector<std::string> MinimizerCatalog::algorithmNames(const std::string& minimizerName) const
-{
-    return minimizerInfo(minimizerName).algorithmNames();
-}
-
-//! Returns list of algorithm's descriptions for the minimizer with a given name    .
-
-std::vector<std::string>
-MinimizerCatalog::algorithmDescriptions(const std::string& minimizerName) const
-{
-    return minimizerInfo(minimizerName).algorithmDescriptions();
-}
-
-//! Returns info for minimizer with given name.
-
-const MinimizerInfo& MinimizerCatalog::minimizerInfo(const std::string& minimizerName) const
-{
-    for (const auto& info : m_minimizers)
-        if (info.name() == minimizerName)
-            return info;
-
-    throw std::runtime_error("MinimizerCatalog::minimizerInfo -> Error. "
-                             "No minimizer with the name '"
-                             + minimizerName + "'");
-}
-
-//! Adds minimizer info to the catalog.
-
-void MinimizerCatalog::addMinimizerInfo(MinimizerInfo&& info)
-{
-    m_minimizers.emplace_back(std::move(info));
-}
diff --git a/Fit/Minimizer/MinimizerCatalog.h b/Fit/Minimizer/MinimizerCatalog.h
deleted file mode 100644
index f346ccfba4e..00000000000
--- a/Fit/Minimizer/MinimizerCatalog.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Fit/Minimizer/MinimizerCatalog.h
-//! @brief     Defines class MinimizerCatalog.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_FIT_MINIMIZER_MINIMIZERCATALOG_H
-#define BORNAGAIN_FIT_MINIMIZER_MINIMIZERCATALOG_H
-
-#include "Fit/Minimizer/MinimizerInfo.h"
-
-//! Hard-coded information about all minimizers available.
-
-class MinimizerCatalog {
-public:
-    MinimizerCatalog();
-
-    std::string toString() const;
-
-    std::vector<std::string> minimizerNames() const;
-
-    std::vector<std::string> algorithmNames(const std::string& minimizerName) const;
-
-    std::vector<std::string> algorithmDescriptions(const std::string& minimizerName) const;
-
-    const MinimizerInfo& minimizerInfo(const std::string& minimizerName) const;
-
-private:
-    void addMinimizerInfo(MinimizerInfo&& info);
-    std::vector<MinimizerInfo> m_minimizers;
-};
-
-#endif // BORNAGAIN_FIT_MINIMIZER_MINIMIZERCATALOG_H
-- 
GitLab