10 #ifndef ROOT_Minuit2_MnApplication 
   11 #define ROOT_Minuit2_MnApplication 
   22 class FunctionMinimum;
 
   23 class MinuitParameter;
 
   24 class MnMachinePrecision;
 
   25 class ModularFunctionMinimizer;
 
   27 class FCNGradientBase;
 
   43    MnApplication(
const FCNBase& fcn, 
const MnUserParameterState& state, 
const MnStrategy& stra, 
unsigned int nfcn = 0);
 
   46    MnApplication(
const FCNGradientBase& fcn, 
const MnUserParameterState& state, 
const MnStrategy& stra, 
unsigned int nfcn = 0);
 
   48    virtual ~MnApplication() { }
 
   59    virtual FunctionMinimum operator()(
unsigned int maxfcn = 0, 
double tolerance = 0.1);
 
   61    virtual ModularFunctionMinimizer& Minimizer() = 0;
 
   62    virtual const ModularFunctionMinimizer& Minimizer() 
const = 0;
 
   64    const MnMachinePrecision& Precision()
 const {
return fState.Precision();}
 
   65    const MnUserParameterState& State()
 const {
return fState;}
 
   66    const MnUserParameters& Parameters()
 const {
return fState.Parameters();}
 
   67    const MnUserCovariance& Covariance()
 const {
return fState.Covariance();}
 
   68    virtual const FCNBase& Fcnbase()
 const {
return fFCN;}
 
   69    const MnStrategy& Strategy()
 const {
return fStrategy;}
 
   70    unsigned int NumOfCalls()
 const {
return fNumCall;}
 
   75    MnUserParameterState fState;
 
   77    unsigned int fNumCall;
 
   86    const std::vector<ROOT::Minuit2::MinuitParameter>& MinuitParameters() 
const;
 
   88    std::vector<double> Params() 
const;
 
   89    std::vector<double> Errors() 
const;
 
   92    const MinuitParameter& Parameter(
unsigned int i) 
const;
 
   95    void Add(
const char* Name, 
double val, 
double err);
 
   97    void Add(
const char* Name, 
double val, 
double err, 
double , 
double);
 
   99    void Add(
const char*, 
double);
 
  102    void Fix(
unsigned int);
 
  103    void Release(
unsigned int);
 
  104    void SetValue(
unsigned int, 
double);
 
  105    void SetError(
unsigned int, 
double);
 
  106    void SetLimits(
unsigned int, 
double, 
double);
 
  107    void RemoveLimits(
unsigned int);
 
  109    double Value(
unsigned int) 
const;
 
  110    double Error(
unsigned int) 
const;
 
  113    void Fix(
const char*);
 
  114    void Release(
const char*);
 
  115    void SetValue(
const char*, 
double);
 
  116    void SetError(
const char*, 
double);
 
  117    void SetLimits(
const char*, 
double, 
double);
 
  118    void RemoveLimits(
const char*);
 
  119    void SetPrecision(
double);
 
  121    double Value(
const char*) 
const;
 
  122    double Error(
const char*) 
const;
 
  125    unsigned int Index(
const char*) 
const;
 
  127    const char* Name(
unsigned int) 
const;
 
  130    double Int2ext(
unsigned int, 
double) 
const;
 
  131    double Ext2int(
unsigned int, 
double) 
const;
 
  132    unsigned int IntOfExt(
unsigned int) 
const;
 
  133    unsigned int ExtOfInt(
unsigned int) 
const;
 
  134    unsigned int VariableParameters() 
const;
 
  142 #endif  // ROOT_Minuit2_MnApplication