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)