10 #ifndef ROOT_Minuit2_MinosError 
   11 #define ROOT_Minuit2_MinosError 
   29    MinosError() : fParameter(0), fMinValue(0.), fUpper(MnCross()), fLower(MnCross()) {}
 
   31    MinosError(
unsigned int par, 
double min, 
const MnCross& low, 
const MnCross& up) : fParameter(par), fMinValue(min), fUpper(up), fLower(low) {}
 
   35    MinosError(
const MinosError& err) : fParameter(err.fParameter), fMinValue(err.fMinValue), fUpper(err.fUpper),  fLower(err.fLower) {}
 
   37    MinosError& operator=(
const MinosError& ) = 
default;
 
   39    MinosError& operator()(
const MinosError& err) {
 
   40       fParameter = err.fParameter;
 
   41       fMinValue = err.fMinValue;
 
   47    std::pair<double,double> operator()()
 const {
 
   48       return std::pair<double,double>(Lower(), Upper());
 
   50    double Lower()
 const {
 
   51       if ( AtLowerLimit() ) 
return LowerState().Parameter( Parameter() ).LowerLimit() -  fMinValue;
 
   52       return -1.*LowerState().Error(Parameter())*(1. + fLower.Value());
 
   54    double Upper()
 const {
 
   55       if ( AtUpperLimit() ) 
return UpperState().Parameter( Parameter() ).UpperLimit() -  fMinValue;
 
   56       return UpperState().Error(Parameter())*(1. + fUpper.Value());
 
   58    unsigned int Parameter()
 const {
return fParameter;}
 
   59    const MnUserParameterState& LowerState()
 const {
return fLower.State();}
 
   60    const MnUserParameterState& UpperState()
 const {
return fUpper.State();}
 
   61    bool IsValid()
 const {
return fLower.IsValid() && fUpper.IsValid();}
 
   62    bool LowerValid()
 const {
return fLower.IsValid();}
 
   63    bool UpperValid()
 const {
return fUpper.IsValid();}
 
   64    bool AtLowerLimit()
 const {
return fLower.AtLimit();}
 
   65    bool AtUpperLimit()
 const {
return fUpper.AtLimit();}
 
   66    bool AtLowerMaxFcn()
 const {
return fLower.AtMaxFcn();}
 
   67    bool AtUpperMaxFcn()
 const {
return fUpper.AtMaxFcn();}
 
   68    bool LowerNewMin()
 const {
return fLower.NewMinimum();}
 
   69    bool UpperNewMin()
 const {
return fUpper.NewMinimum();}
 
   70    unsigned int NFcn()
 const {
return fUpper.NFcn() + fLower.NFcn();}
 
   71    double Min()
 const {
return fMinValue;}
 
   75    unsigned int fParameter;
 
   85 #endif  // ROOT_Minuit2_MinosError