#ifndef ROOT_Minuit2_MnMinos
#define ROOT_Minuit2_MnMinos
#include "Minuit2/MnStrategy.h"
#include <utility>
namespace ROOT {
namespace Minuit2 {
class FCNBase;
class FunctionMinimum;
class MinosError;
class MnCross;
class MnMinos {
public:
MnMinos(const FCNBase& fcn, const FunctionMinimum& min, unsigned int stra = 1);
MnMinos(const FCNBase& fcn, const FunctionMinimum& min, const MnStrategy& stra);
~MnMinos() {}
std::pair<double,double> operator()(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
double Lower(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
double Upper(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
MnCross Loval(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
MnCross Upval(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
MinosError Minos(unsigned int, unsigned int maxcalls = 0, double toler = 0.1) const;
protected:
MnCross FindCrossValue(int dir , unsigned int, unsigned int maxcalls, double toler) const;
private:
const FCNBase& fFCN;
const FunctionMinimum& fMinimum;
MnStrategy fStrategy;
};
}
}
#endif // ROOT_Minuit2_MnMinos