diff --git a/Fit/Minimizer/Minuit2Minimizer.cpp b/Fit/Minimizer/Minuit2Minimizer.cpp
index 878ac29449290db7e464f8f3309eccf528ca4012..ef3e12ea7ac357e4c401bc81881a324c3c646c35 100644
--- a/Fit/Minimizer/Minuit2Minimizer.cpp
+++ b/Fit/Minimizer/Minuit2Minimizer.cpp
@@ -16,15 +16,45 @@
 #include "Minuit2Minimizer.h"
 #include "AlgorithmNames.h"
 
+namespace {
+const std::string O_STRATEGY = "Strategy";
+const std::string O_ERRORDEF = "ErrorDef";
+const std::string O_TOLERANCE = "Tolerance";
+const std::string O_PRECISION = "Precision";
+const std::string O_PRINTLEVEL = "PrintLevel";
+}
+
 Minuit2Minimizer::Minuit2Minimizer()
     : BasicMinimizer(MinimizerNames::Minuit, AlgorithmNames::Migrad)
 {
-    addOption(std::string("Strategy"), 1);
-    addOption(std::string("ErrorDef"), 1);
+    addOption(O_STRATEGY, 1,
+              "Minimization strategy (0-low, 1-medium, 2-high quality)");
+    addOption(O_ERRORDEF, 1.0,
+              "Error definition factor for parameter error calculation.");
+    addOption(O_TOLERANCE, 0.01,
+              "Tolerance on the function value at the minimum.");
+    addOption(O_PRECISION, -1.0,
+              "Relative floating point arithmetic precision.");
+
+}
 
-    MinimizerOption::variant_t v;
-    v.get<int>();
+void Minuit2Minimizer::setStrategy(int value)
+{
+    setOptionValue(O_STRATEGY, value);
+}
 
+void Minuit2Minimizer::setErrorDefinition(double value)
+{
+    setOptionValue(O_ERRORDEF, value);
+}
 
+void Minuit2Minimizer::setTolerance(double value)
+{
+    setOptionValue(O_TOLERANCE, value);
+}
 
+void Minuit2Minimizer::setPrecision(double value)
+{
+    setOptionValue(O_PRECISION, value);
 }
+
diff --git a/Fit/Minimizer/Minuit2Minimizer.h b/Fit/Minimizer/Minuit2Minimizer.h
index 98dac0ba8cd6035d2cbdc3c94b6ec83037ee4726..1c5178445fef4ae7c826e4081dfe6461a751ce53 100644
--- a/Fit/Minimizer/Minuit2Minimizer.h
+++ b/Fit/Minimizer/Minuit2Minimizer.h
@@ -21,12 +21,41 @@
 //! @class Minuit2Minimizer
 //! @ingroup fitting_internal
 //! @brief The Minuit2Minimizer class is a wrapper for ROOT Minuit2 minimizer
+//! See Minuit2 user manual https://root.cern.ch/root/htmldoc/guides/minuit2/Minuit2.pdf.
 
 class BA_CORE_API_ Minuit2Minimizer : public BasicMinimizer
 {
 public:
     Minuit2Minimizer();
 
+    //! Sets minimization strategy (0-low, 1-medium, 2-high minimization quality).
+    //! At low quality number of function calls will be economized. Default value is 1.
+    void setStrategy(int value);
+
+    //! Sets error definition factor for parameter error calculation.
+    //! If objective function (OF) is the usual chisquare function and if the user wants the usual
+    //! one-standard-deviation errors, then the error definition should be 1.0. If OF is a
+    //! negative-log-likelihood function, then 0.5. If OF is a chisquare, but the user wants
+    //! two-standard-deviation errors, 4.0.
+    //! Default value is 1.0
+    void setErrorDefinition(double value);
+
+    //!< Sets tolerance on the function value at the minimum.
+    //!< Minimization will stop when the estimated vertical distance to the minimum (EDM) is less
+    //! than 0.001*tolerance*ErrorDef. Here ErrorDef=1 for chi squared fit and ErrorDef=0.5
+    //! for negative log likelihood fit.
+    //! Default value is 0.01
+    void setTolerance(double value);
+
+    //!< Sets relative floating point arithmetic precision.
+    //!< Should be adjusted when the user knows that objectiove function value is not
+    //!< calculated to the nominal machine accuracy. Typical values are between 10^-5 and 10^-14.
+    //!  Default value is -1.0 (minimizer specific will be used).
+    void setPrecision(double value);
+
+    //! Sets minimizer internal print level.
+    //! Default value is 0 (silent).
+    void setPrintLevel(int value);
 
 private:
 
diff --git a/Tests/UnitTests/Fit/MinimizerOptionTest.h b/Tests/UnitTests/Fit/MinimizerOptionTest.h
index e7056f211c7c2252548fa1190d6faaf72a44028d..90333dfd609e8f1a87536531d3ac9bec48a6b0e8 100644
--- a/Tests/UnitTests/Fit/MinimizerOptionTest.h
+++ b/Tests/UnitTests/Fit/MinimizerOptionTest.h
@@ -85,6 +85,4 @@ TEST_F(MinimizerOptionTest, Assignment)
     EXPECT_EQ(double_value, copy.getDefault<double>());
 }
 
-
-
 #endif
diff --git a/Tests/UnitTests/Fit/MinimizerOptionsTest.h b/Tests/UnitTests/Fit/MinimizerOptionsTest.h
index 2292a91bea65daf926f85f23e4b343ecd5a5e40a..967a43a8a0104fd6fdb1fe031488c520f9eeb844 100644
--- a/Tests/UnitTests/Fit/MinimizerOptionsTest.h
+++ b/Tests/UnitTests/Fit/MinimizerOptionsTest.h
@@ -54,15 +54,3 @@ TEST_F(MinimizerOptionsTest, SetValues)
     EXPECT_EQ(opt2.getRealValue("some_double"), 9.9);
     EXPECT_EQ(opt2.getNamedValue("some_string"), "xxx");
 }
-
-
-TEST_F(MinimizerOptionsTest, Minuit2Minimizer)
-{
-    EXPECT_EQ(1,1);
-
-    Minuit2Minimizer *minim = new Minuit2Minimizer();
-    std::cout << "XXX" << minim->minimizerName() << " " << minim->algorithmName() << std::endl;
-
-
-
-}