#ifndef ROOT_Minuit2_MnUserParameters
#define ROOT_Minuit2_MnUserParameters
#include "Minuit2/MnUserTransformation.h"
#include <vector>
namespace ROOT {
namespace Minuit2 {
class MnMachinePrecision;
class MnUserParameters {
public:
MnUserParameters() : fTransformation(MnUserTransformation()) {}
MnUserParameters(const std::vector<double>&, const std::vector<double>&);
~MnUserParameters() {}
MnUserParameters(const MnUserParameters& par) :
fTransformation(par.fTransformation) {}
MnUserParameters& operator=(const MnUserParameters& par) {
fTransformation = par.fTransformation;
return *this;
}
const MnUserTransformation& Trafo() const {return fTransformation;}
unsigned int VariableParameters() const {
return fTransformation.VariableParameters();
}
const std::vector<ROOT::Minuit2::MinuitParameter>& Parameters() const;
std::vector<double> Params() const;
std::vector<double> Errors() const;
const MinuitParameter& Parameter(unsigned int) const;
bool Add(const std::string &, double, double);
bool Add(const std::string &, double, double, double, double);
bool Add(const std::string &, double);
void Fix(unsigned int);
void Release(unsigned int);
void RemoveLimits(unsigned int);
void SetValue(unsigned int, double);
void SetError(unsigned int, double);
void SetLimits(unsigned int, double, double);
void SetUpperLimit(unsigned int, double);
void SetLowerLimit(unsigned int, double);
void SetName(unsigned int, const std::string &);
double Value(unsigned int) const;
double Error(unsigned int) const;
void Fix(const std::string &);
void Release(const std::string &);
void SetValue(const std::string &, double);
void SetError(const std::string &, double);
void SetLimits(const std::string &, double, double);
void SetUpperLimit(const std::string &, double);
void SetLowerLimit(const std::string &, double);
void RemoveLimits(const std::string &);
double Value(const std::string &) const;
double Error(const std::string &) const;
unsigned int Index(const std::string &) const;
const std::string & GetName(unsigned int) const;
const char* Name(unsigned int) const;
const MnMachinePrecision& Precision() const;
void SetPrecision(double eps) {fTransformation.SetPrecision(eps);}
private:
MnUserTransformation fTransformation;
};
}
}
#endif // ROOT_Minuit2_MnUserParameters