Logo ROOT  
Reference Guide
RooMinimizer.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id$
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * AL, Alfio Lazzaro, INFN Milan, alfio.lazzaro@mi.infn.it *
9 * PB, Patrick Bos, NL eScience Center, p.bos@esciencecenter.nl *
10 * *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16
17#ifndef ROO_MINIMIZER
18#define ROO_MINIMIZER
19
20#include <memory> // shared_ptr, unique_ptr
21
22#include "TObject.h"
23#include "TStopwatch.h"
24#include <fstream>
25#include <vector>
26#include <string>
27#include <utility>
28#include "TMatrixDSymfwd.h"
29
30#include "RooArgList.h" // cannot just use forward decl due to default argument in lastMinuitFit
31
34
35#include "RooSentinel.h"
36#include "RooMsgService.h"
37
38#include "Fit/Fitter.h"
39#include <stdexcept> // logic_error
40
41class RooAbsReal ;
42class RooFitResult ;
43class RooArgList ;
44class RooRealVar ;
45class RooArgSet ;
46class TH2F ;
47class RooPlot ;
48
49class RooMinimizer : public TObject {
50public:
51 enum class FcnMode { classic, gradient, generic_wrapper };
52
54 explicit RooMinimizer(std::shared_ptr<RooFit::TestStatistics::RooAbsL> likelihood,
59
60 ~RooMinimizer() override;
61
62 enum Strategy { Speed=0, Balance=1, Robustness=2 } ;
64 void setStrategy(Int_t strat) ;
65 void setErrorLevel(Double_t level) ;
66 void setEps(Double_t eps) ;
67 void optimizeConst(Int_t flag) ;
69 /// \copydoc RooMinimizerFcn::SetRecoverFromNaNStrength()
70 void setRecoverFromNaNStrength(double strength) { fitterFcn()->SetRecoverFromNaNStrength(strength); }
71 void setOffsetting(Bool_t flag) ;
74
75 RooFitResult* fit(const char* options) ;
76
77 Int_t migrad() ;
78 Int_t hesse() ;
79 Int_t minos() ;
80 Int_t minos(const RooArgSet& minosParamList) ;
81 Int_t seek() ;
82 Int_t simplex() ;
83 Int_t improve() ;
84
85 Int_t minimize(const char* type, const char* alg=0) ;
86
87 RooFitResult* save(const char* name=0, const char* title=0) ;
88 RooPlot* contour(RooRealVar& var1, RooRealVar& var2,
89 Double_t n1=1, Double_t n2=2, Double_t n3=0,
90 Double_t n4=0, Double_t n5=0, Double_t n6=0, unsigned int npoints = 50) ;
91
92 Int_t setPrintLevel(Int_t newLevel) ;
93 void setPrintEvalErrors(Int_t numEvalErrors) { fitterFcn()->SetPrintEvalErrors(numEvalErrors); }
94 void setVerbose(Bool_t flag=kTRUE) { _verbose = flag ; fitterFcn()->SetVerbose(flag); }
95 void setProfile(Bool_t flag=kTRUE) { _profile = flag ; }
96 Bool_t setLogFile(const char* logf=0) { return fitterFcn()->SetLogFile(logf); }
97
98 Int_t getPrintLevel() const;
99
100 void setMinimizerType(const char* type) ;
101
102 static void cleanup() ;
103 static RooFitResult* lastMinuitFit(const RooArgList& varList=RooArgList()) ;
104
105 void saveStatus(const char* label, Int_t status) { _statusHistory.push_back(std::pair<std::string,int>(label,status)) ; }
106
107 Int_t evalCounter() const { return fitterFcn()->evalCounter() ; }
109
111 const ROOT::Fit::Fitter* fitter() const ;
112
115
116 inline Int_t getNPar() const { return fitterFcn()->getNDim() ; }
117
118protected:
119
120 friend class RooAbsPdf ;
122
123 void profileStart() ;
124 void profileStop() ;
125
126 inline std::ofstream* logfile() { return fitterFcn()->GetLogFile(); }
127 inline Double_t& maxFCN() { return fitterFcn()->GetMaxFCN() ; }
128
129 const RooAbsMinimizerFcn *fitterFcn() const;
131
132 bool fitFcn() const;
133
134private:
135 // constructor helper functions
138
142
147
149
151 std::string _minimizerType = "Minuit";
153
155
156 std::vector<std::pair<std::string,int> > _statusHistory ;
157
159
160 ClassDefOverride(RooMinimizer,0) // RooFit interface to ROOT::Fit::Fitter
161} ;
162
163#endif
const Bool_t kFALSE
Definition: RtypesCore.h:101
double Double_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:100
#define ClassDefOverride(name, id)
Definition: Rtypes.h:329
char name[80]
Definition: TGX11.cxx:110
int type
Definition: TGX11.cxx:121
Fitter class, entry point for performing all type of fits.
Definition: Fitter.h:77
Documentation for the abstract class IBaseFunctionMultiDim.
Definition: IFunction.h:62
std::ofstream * GetLogFile()
void SetPrintEvalErrors(Int_t numEvalErrors)
void SetEvalErrorWall(Bool_t flag)
void SetVerbose(Bool_t flag=kTRUE)
unsigned int getNDim() const
Bool_t SetLogFile(const char *inLogfile)
Change the file name for logging of a RooMinimizer of all MINUIT steppings through the parameter spac...
void SetRecoverFromNaNStrength(double strength)
Try to recover from invalid function values.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:63
virtual Double_t defaultErrorLevel() const
Definition: RooAbsReal.h:255
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:35
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
Definition: RooFitResult.h:40
RooMinimizer is a wrapper class around ROOT::Fit:Fitter that provides a seamless interface between th...
Definition: RooMinimizer.h:49
void setRecoverFromNaNStrength(double strength)
Try to recover from invalid function values.
Definition: RooMinimizer.h:70
Int_t _printLevel
Definition: RooMinimizer.h:139
std::vector< std::pair< std::string, int > > _statusHistory
Definition: RooMinimizer.h:156
void initMinimizerFirstPart()
Initialize the part of the minimizer that is independent of the function to be minimized.
std::ofstream * logfile()
Definition: RooMinimizer.h:126
RooMinimizer(RooAbsReal &function, FcnMode fcnMode=FcnMode::classic)
Construct MINUIT interface to given function.
Int_t hesse()
Execute HESSE.
Double_t & maxFCN()
Definition: RooMinimizer.h:127
void setEvalErrorWall(Bool_t flag)
Definition: RooMinimizer.h:68
void setMaxIterations(Int_t n)
Change maximum number of MINUIT iterations (RooMinimizer default 500 * #parameters)
void zeroEvalCount()
Definition: RooMinimizer.h:108
RooFitResult * save(const char *name=0, const char *title=0)
Save and return a RooFitResult snapshot of current minimizer status.
void setMinimizerType(const char *type)
Choose the minimizer algorithm.
Bool_t _verbose
Definition: RooMinimizer.h:143
void saveStatus(const char *label, Int_t status)
Definition: RooMinimizer.h:105
Int_t improve()
Execute IMPROVE.
FcnMode _fcnMode
Definition: RooMinimizer.h:152
void profileStart()
Start profiling timer.
RooPlot * contour(RooRealVar &var1, RooRealVar &var2, Double_t n1=1, Double_t n2=2, Double_t n3=0, Double_t n4=0, Double_t n5=0, Double_t n6=0, unsigned int npoints=50)
Create and draw a TH2 with the error contours in the parameters var1 and var2.
Int_t migrad()
Execute MIGRAD.
Int_t minimize(const char *type, const char *alg=0)
Minimise the function passed in the constructor.
void initMinimizerFcnDependentPart(double defaultErrorLevel)
Initialize the part of the minimizer that is dependent on the function to be minimized.
void profileStop()
Stop profiling timer and report results of last session.
ROOT::Math::IMultiGenFunction * getFitterMultiGenFcn() const
static RooFitResult * lastMinuitFit(const RooArgList &varList=RooArgList())
const RooAbsMinimizerFcn * fitterFcn() const
RooFitResult * fit(const char *options)
Parse traditional RooAbsPdf::fitTo driver options.
void setOffsetting(Bool_t flag)
Enable internal likelihood offsetting for enhanced numeric precision.
TMatrixDSym * _extV
Definition: RooMinimizer.h:148
Int_t seek()
Execute SEEK.
Bool_t setLogFile(const char *logf=0)
Definition: RooMinimizer.h:96
void setProfile(Bool_t flag=kTRUE)
Definition: RooMinimizer.h:95
void setEps(Double_t eps)
Change MINUIT epsilon.
void setErrorLevel(Double_t level)
Set the level for MINUIT error analysis to the given value.
RooMinimizer(const RooMinimizer &)
static ROOT::Fit::Fitter * _theFitter
Definition: RooMinimizer.h:154
static void cleanup()
Cleanup method called by atexit handler installed by RooSentinel to delete all global heap objects wh...
Int_t setPrintLevel(Int_t newLevel)
Change the MINUIT internal printing level.
TStopwatch _timer
Definition: RooMinimizer.h:144
void setMaxFunctionCalls(Int_t n)
Change maximum number of likelihood function calss from MINUIT (RooMinimizer default 500 * #parameter...
Int_t evalCounter() const
Definition: RooMinimizer.h:107
Int_t minos()
Execute MINOS.
void applyCovarianceMatrix(TMatrixDSym &V)
Apply results of given external covariance matrix.
bool fitFcn() const
~RooMinimizer() override
Destructor.
void optimizeConst(Int_t flag)
If flag is true, perform constant term optimization on function being minimized.
ROOT::Math::IMultiGenFunction * getMultiGenFcn() const
Int_t simplex()
Execute SIMPLEX.
Bool_t _profileStart
Definition: RooMinimizer.h:146
Int_t getPrintLevel() const
ROOT::Fit::Fitter * fitter()
Return underlying ROOT fitter object.
void setStrategy(Int_t strat)
Change MINUIT strategy to istrat.
std::string _minimizerType
Definition: RooMinimizer.h:151
void setPrintEvalErrors(Int_t numEvalErrors)
Definition: RooMinimizer.h:93
TStopwatch _cumulTimer
Definition: RooMinimizer.h:145
Bool_t _profile
Definition: RooMinimizer.h:141
RooAbsMinimizerFcn * _fcn
Definition: RooMinimizer.h:150
void setVerbose(Bool_t flag=kTRUE)
Definition: RooMinimizer.h:94
Int_t getNPar() const
Definition: RooMinimizer.h:116
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition: RooPlot.h:44
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:39
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:251
Mother of all ROOT objects.
Definition: TObject.h:37
Stopwatch class.
Definition: TStopwatch.h:28
const Int_t n
Definition: legend1.C:16
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:150