#ifndef ROOT_Minuit2_FunctionMinimizer
#define ROOT_Minuit2_FunctionMinimizer
#include "Minuit2/MnConfig.h"
#include <vector>
namespace ROOT {
namespace Minuit2 {
class FCNBase;
class FCNGradientBase;
class FunctionMinimum;
class FunctionMinimizer {
public:
virtual ~FunctionMinimizer() {}
virtual FunctionMinimum Minimize(const FCNBase&, const std::vector<double>& par, const std::vector<double>& err, unsigned int strategy, unsigned int maxfcn, double toler) const = 0;
virtual FunctionMinimum Minimize(const FCNGradientBase&, const std::vector<double>& par, const std::vector<double>& err, unsigned int strategy, unsigned int maxfcn, double toler) const = 0;
virtual FunctionMinimum Minimize(const FCNBase&, const std::vector<double>& par, unsigned int nrow, const std::vector<double>& cov, unsigned int strategy, unsigned int maxfcn, double toler) const = 0;
virtual FunctionMinimum Minimize(const FCNGradientBase&, const std::vector<double>& par, unsigned int nrow, const std::vector<double>& cov, unsigned int strategy, unsigned int maxfcn, double toler) const = 0;
};
}
}
#endif // ROOT_Minuit2_FunctionMinimizer