16 #ifndef __ROOFIT_NOROOMINIMIZER 
   38 class RooMinimizer : 
public TObject {
 
   41   RooMinimizer(RooAbsReal& 
function) ;
 
   42   virtual ~RooMinimizer() ;
 
   44   enum Strategy { Speed=0, Balance=1, Robustness=2 } ;
 
   45   enum PrintLevel { None=-1, Reduced=0, Normal=1, ExtraForProblem=2, Maximum=3 } ;
 
   46   void setStrategy(Int_t strat) ;
 
   47   void setErrorLevel(Double_t level) ;
 
   48   void setEps(Double_t eps) ;
 
   49   void optimizeConst(Int_t flag) ;
 
   50   void setEvalErrorWall(Bool_t flag) { fitterFcn()->SetEvalErrorWall(flag); }
 
   51   void setOffsetting(Bool_t flag) ;
 
   52   void setMaxIterations(Int_t n) ;
 
   53   void setMaxFunctionCalls(Int_t n) ; 
 
   55   RooFitResult* fit(
const char* options) ;
 
   60   Int_t minos(
const RooArgSet& minosParamList) ;
 
   65   Int_t minimize(
const char* type, 
const char* alg=0) ;
 
   67   RooFitResult* save(
const char* name=0, 
const char* title=0) ;
 
   68   RooPlot* contour(RooRealVar& var1, RooRealVar& var2, 
 
   69          Double_t n1=1, Double_t n2=2, Double_t n3=0,
 
   70          Double_t n4=0, Double_t n5=0, Double_t n6=0, 
unsigned int npoints = 50) ;
 
   72   Int_t setPrintLevel(Int_t newLevel) ; 
 
   73   void setPrintEvalErrors(Int_t numEvalErrors) { fitterFcn()->SetPrintEvalErrors(numEvalErrors); }
 
   74   void setVerbose(Bool_t flag=kTRUE) { _verbose = flag ; fitterFcn()->SetVerbose(flag); }
 
   75   void setProfile(Bool_t flag=kTRUE) { _profile = flag ; }
 
   76   Bool_t setLogFile(
const char* logf=0) { 
return fitterFcn()->SetLogFile(logf); }
 
   78   void setMinimizerType(
const char* type) ;
 
   80   static void cleanup() ;
 
   81   static RooFitResult* lastMinuitFit(
const RooArgList& varList=RooArgList()) ;
 
   83   void saveStatus(
const char* label, Int_t status) { _statusHistory.push_back(std::pair<std::string,int>(label,status)) ; }
 
   85   Int_t evalCounter()
 const { 
return fitterFcn()->evalCounter() ; }
 
   86   void zeroEvalCount() { fitterFcn()->zeroEvalCount() ; }
 
   88   ROOT::Fit::Fitter* fitter() ;
 
   89   const ROOT::Fit::Fitter* fitter() 
const ;
 
   93   friend class RooAbsPdf ;
 
   94   void applyCovarianceMatrix(TMatrixDSym& V) ;
 
   99   inline Int_t getNPar()
 const { 
return fitterFcn()->NDim() ; }
 
  100   inline std::ofstream* logfile() { 
return fitterFcn()->GetLogFile(); }
 
  101   inline Double_t& maxFCN() { 
return fitterFcn()->GetMaxFCN() ; }
 
  103   const RooMinimizerFcn* fitterFcn()
 const {  
return ( fitter()->GetFCN() ? ((RooMinimizerFcn*) fitter()->GetFCN()) : _fcn ) ; }
 
  104   RooMinimizerFcn* fitterFcn() { 
return ( fitter()->GetFCN() ? ((RooMinimizerFcn*) fitter()->GetFCN()) : _fcn ) ; }
 
  116   TStopwatch  _cumulTimer ;
 
  117   Bool_t      _profileStart ;
 
  121   RooMinimizerFcn *_fcn;
 
  122   std::string _minimizerType;
 
  124   static ROOT::Fit::Fitter *_theFitter ;
 
  126   std::vector<std::pair<std::string,int> > _statusHistory ;
 
  128   RooMinimizer(
const RooMinimizer&) ;
 
  130   ClassDef(RooMinimizer,0)