10 #ifndef ROOT_Minuit2_FunctionMinimum 
   11 #define ROOT_Minuit2_FunctionMinimum 
   16 typedef ROOT::Minuit2::MinimumState MinimumState;
 
   30 class FunctionMinimum {
 
   34    class MnReachedCallLimit {};
 
   35    class MnAboveMaxEdm {};
 
   41    FunctionMinimum(
const MinimumSeed& seed, 
double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, up))) {}
 
   44    FunctionMinimum(
const MinimumSeed& seed, 
const std::vector<MinimumState>& states, 
double up) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up))) {}
 
   47    FunctionMinimum(
const MinimumSeed& seed, 
const std::vector<MinimumState>& states, 
double up, MnReachedCallLimit) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnReachedCallLimit()))) {}
 
   50    FunctionMinimum(
const MinimumSeed& seed, 
const std::vector<MinimumState>& states, 
double up, MnAboveMaxEdm) : fData(MnRefCountedPointer<BasicFunctionMinimum>(new BasicFunctionMinimum(seed, states, up, BasicFunctionMinimum::MnAboveMaxEdm()))) {}
 
   53    FunctionMinimum(
const FunctionMinimum& min) : fData(min.fData) {}
 
   55    FunctionMinimum& operator=(
const FunctionMinimum& min) {
 
   63    void Add(
const MinimumState& state) {fData->Add(state);}
 
   66    void Add(
const MinimumState& state, MnAboveMaxEdm) {fData->Add(state,BasicFunctionMinimum::MnAboveMaxEdm());}
 
   68    const MinimumSeed& Seed()
 const {
return fData->Seed();}
 
   69    const std::vector<ROOT::Minuit2::MinimumState>& States()
 const {
return fData->States();}
 
   72    const MnUserParameterState& UserState()
 const {
 
   73       return fData->UserState();
 
   75    const MnUserParameters& UserParameters()
 const {
 
   76       return fData->UserParameters();
 
   78    const MnUserCovariance& UserCovariance()
 const {
 
   79       return fData->UserCovariance();
 
   83    const MinimumState& State()
 const {
return fData->State();}
 
   84    const MinimumParameters& Parameters()
 const {
return fData->Parameters();}
 
   85    const MinimumError& Error()
 const {
return fData->Error();}
 
   86    const FunctionGradient& Grad()
 const {
return fData->Grad();}
 
   87    double Fval()
 const {
return fData->Fval();}
 
   88    double Edm()
 const {
return fData->Edm();}
 
   89    int NFcn()
 const {
return fData->NFcn();}
 
   91    double Up()
 const {
return fData->Up();}
 
   92    bool IsValid()
 const {
return fData->IsValid();}
 
   93    bool HasValidParameters()
 const {
return fData->HasValidParameters();}
 
   94    bool HasValidCovariance()
 const {
return fData->HasValidCovariance();}
 
   95    bool HasAccurateCovar()
 const {
return fData->HasAccurateCovar();}
 
   96    bool HasPosDefCovar()
 const {
return fData->HasPosDefCovar();}
 
   97    bool HasMadePosDefCovar()
 const {
return fData->HasMadePosDefCovar();}
 
   98    bool HesseFailed()
 const {
return fData->HesseFailed();}
 
   99    bool HasCovariance()
 const {
return fData->HasCovariance();}
 
  100    bool IsAboveMaxEdm()
 const {
return fData->IsAboveMaxEdm();}
 
  101    bool HasReachedCallLimit()
 const {
return fData->HasReachedCallLimit();}
 
  103    void SetErrorDef( 
double up) { 
return fData->SetErrorDef(up);}
 
  107    MnRefCountedPointer<BasicFunctionMinimum> fData;
 
  114 #endif  // ROOT_Minuit2_FunctionMinimum