Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooMinuit.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooMinuit.h,v 1.15 2007/07/12 20:30:28 wouter Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
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#ifndef ROO_MINUIT
17#define ROO_MINUIT
18
19#include "TObject.h"
20#include "TStopwatch.h"
21#include <fstream>
22#include "TMatrixDSymfwd.h"
23#include <vector>
24#include <string>
25#include <utility>
26
27class RooAbsReal ;
28class RooFitResult ;
29class RooArgList ;
30class RooRealVar ;
31class RooArgSet ;
32class RooAbsArg ;
33class TVirtualFitter ;
34class TH2F ;
35class RooPlot ;
36
37void RooMinuitGlue(Int_t& /*np*/, Double_t* /*gin*/, Double_t &f, Double_t *par, Int_t /*flag*/) ;
38
39class RooMinuit : public TObject {
40public:
41
42 RooMinuit(RooAbsReal& function) ;
43 virtual ~RooMinuit() ;
44
45 enum Strategy { Speed=0, Balance=1, Robustness=2 } ;
47 void setStrategy(Int_t strat) ;
48 void setErrorLevel(Double_t level) ;
49 void setEps(Double_t eps) ;
50 void optimizeConst(Int_t flag) ;
52 void setOffsetting(Bool_t flag) ;
53
54 RooFitResult* fit(const char* options) ;
55
56 Int_t migrad() ;
57 Int_t hesse() ;
58 Int_t minos() ;
59 Int_t minos(const RooArgSet& minosParamList) ; // added FMV, 08/18/03
60 Int_t seek() ;
61 Int_t simplex() ;
62 Int_t improve() ;
63
64 RooFitResult* save(const char* name=0, const char* title=0) ;
65 RooPlot* contour(RooRealVar& var1, RooRealVar& var2,
66 Double_t n1=1, Double_t n2=2, Double_t n3=0,
67 Double_t n4=0, Double_t n5=0, Double_t n6=0) ;
68
69 Int_t setPrintLevel(Int_t newLevel) ;
70 void setNoWarn() ;
71 Int_t setWarnLevel(Int_t newLevel) ;
72 void setPrintEvalErrors(Int_t numEvalErrors) { _printEvalErrors = numEvalErrors ; }
73 void setVerbose(Bool_t flag=kTRUE) { _verbose = flag ; }
74 void setProfile(Bool_t flag=kTRUE) { _profile = flag ; }
76 Bool_t setLogFile(const char* logfile=0) ;
77
78 static void cleanup() ;
79
80 Int_t evalCounter() const { return _evalCounter ; }
81 void zeroEvalCount() { _evalCounter = 0 ; }
82
83protected:
84
85 friend class RooAbsPdf ;
87
88 friend void RooMinuitGlue(Int_t &np, Double_t *gin, Double_t &f, Double_t *par, Int_t flag) ;
89
90 void profileStart() ;
91 void profileStop() ;
92
93 Bool_t synchronize(Bool_t verbose) ;
94 void backProp() ;
95
96 inline Int_t getNPar() const { return _nPar ; }
97 inline std::ofstream* logfile() const { return _logfile ; }
98 inline Double_t& maxFCN() { return _maxFCN ; }
99
102 virtual Bool_t setPdfParamVal(Int_t index, Double_t value, Bool_t verbose=kFALSE) ;
103 void setPdfParamErr(Int_t index, Double_t value) ;
104 void setPdfParamErr(Int_t index, Double_t loVal, Double_t hiVal) ;
105 void clearPdfParamAsymErr(Int_t index) ;
106
107 void saveStatus(const char* label, Int_t status) { _statusHistory.push_back(std::pair<std::string,int>(label,status)) ; }
108
109 void updateFloatVec() ;
110
111private:
112
126 std::vector<RooAbsArg*> _floatParamVec ;
131
133 std::ofstream* _logfile ;
137
139
141
142 std::vector<std::pair<std::string,int> > _statusHistory ;
143
145
146 ClassDef(RooMinuit,0) // RooFit minimizer based on MINUIT
147} ;
148
149
150#endif
151
#define f(i)
Definition RSha256.hxx:104
void RooMinuitGlue(Int_t &, Double_t *, Double_t &f, Double_t *par, Int_t)
int Int_t
Definition RtypesCore.h:45
const Bool_t kFALSE
Definition RtypesCore.h:92
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
const Bool_t kTRUE
Definition RtypesCore.h:91
#define ClassDef(name, id)
Definition Rtypes.h:325
char name[80]
Definition TGX11.cxx:110
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition RooAbsArg.h:72
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:61
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:21
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:29
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
RooMinuit is a wrapper class around TFitter/TMinuit that provides a seamless interface between the MI...
Definition RooMinuit.h:39
Int_t _numBadNLL
Definition RooMinuit.h:120
void setPdfParamErr(Int_t index, Double_t value)
Modify PDF parameter error by ordinal index (needed by MINUIT)
Int_t hesse()
Execute HESSE.
Double_t & maxFCN()
Definition RooMinuit.h:98
Bool_t setLogFile(const char *logfile=0)
Change the file name for logging of a RooMinuit of all MINUIT steppings through the parameter space.
Int_t _nPar
Definition RooMinuit.h:121
Int_t _optConst
Definition RooMinuit.h:117
void setVerbose(Bool_t flag=kTRUE)
Definition RooMinuit.h:73
RooArgList * _floatParamList
Definition RooMinuit.h:125
Int_t _printEvalErrors
Definition RooMinuit.h:122
Int_t evalCounter() const
Definition RooMinuit.h:80
void setEvalErrorWall(Bool_t flag)
Definition RooMinuit.h:51
Bool_t _handleLocalErrors
Definition RooMinuit.h:119
void setProfile(Bool_t flag=kTRUE)
Definition RooMinuit.h:74
void optimizeConst(Int_t flag)
If flag is true, perform constant term optimization on function being minimized.
RooFitResult * save(const char *name=0, const char *title=0)
Save and return a RooFitResult snaphot of current minimizer status.
Int_t getNPar() const
Definition RooMinuit.h:96
Bool_t _verbose
Definition RooMinuit.h:134
void setOffsetting(Bool_t flag)
Enable internal likelihood offsetting for enhanced numeric precision.
static void cleanup()
Cleanup method called by atexit handler installed by RooSentinel to delete all global heap objects wh...
Definition RooMinuit.cxx:83
Int_t seek()
Execute SEEK.
Bool_t _profile
Definition RooMinuit.h:118
std::ofstream * _logfile
Definition RooMinuit.h:133
Int_t simplex()
Execute SIMPLEX.
TStopwatch _cumulTimer
Definition RooMinuit.h:136
Bool_t synchronize(Bool_t verbose)
Internal function to synchronize TMinuit with current information in RooAbsReal function parameters.
void setErrorLevel(Double_t level)
Set the level for MINUIT error analysis to the given value.
friend void RooMinuitGlue(Int_t &np, Double_t *gin, Double_t &f, Double_t *par, Int_t flag)
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)
Create and draw a TH2 with the error contours in parameters var1 and v2 at up to 6 'sigma' settings w...
void zeroEvalCount()
Definition RooMinuit.h:81
virtual Bool_t setPdfParamVal(Int_t index, Double_t value, Bool_t verbose=kFALSE)
Modify PDF parameter value by ordinal index (needed by MINUIT)
void saveStatus(const char *label, Int_t status)
Definition RooMinuit.h:107
void setStrategy(Int_t strat)
Change MINUIT strategy to istrat.
Int_t setPrintLevel(Int_t newLevel)
Change the MINUIT internal printing level.
std::vector< std::pair< std::string, int > > _statusHistory
Definition RooMinuit.h:142
Int_t _warnLevel
Definition RooMinuit.h:115
std::vector< RooAbsArg * > _floatParamVec
Definition RooMinuit.h:126
Int_t migrad()
Execute MIGRAD.
Int_t _printLevel
Definition RooMinuit.h:114
std::ofstream * logfile() const
Definition RooMinuit.h:97
Double_t _maxFCN
Definition RooMinuit.h:132
Int_t setWarnLevel(Int_t newLevel)
Set MINUIT warning level to given level.
void applyCovarianceMatrix(TMatrixDSym &V)
Apply results of given external covariance matrix.
Int_t _status
Definition RooMinuit.h:116
void backProp()
Transfer MINUIT fit results back into RooFit objects.
Double_t getPdfParamErr(Int_t index)
Access PDF parameter error by ordinal index (needed by MINUIT)
RooArgList * _initConstParamList
Definition RooMinuit.h:129
@ ExtraForProblem
Definition RooMinuit.h:46
void updateFloatVec()
Bool_t _doEvalErrorWall
Definition RooMinuit.h:123
void setEps(Double_t eps)
Change MINUIT epsilon.
RooArgList * _initFloatParamList
Definition RooMinuit.h:127
void setPrintEvalErrors(Int_t numEvalErrors)
Definition RooMinuit.h:72
void setMaxEvalMultiplier(Int_t n)
Definition RooMinuit.h:75
void profileStop()
Stop profiling timer and report results of last session.
TMatrixDSym * _extV
Definition RooMinuit.h:138
TStopwatch _timer
Definition RooMinuit.h:135
Int_t minos()
Execute MINOS.
RooMinuit(const RooMinuit &)
void clearPdfParamAsymErr(Int_t index)
Modify PDF parameter error by ordinal index (needed by MINUIT)
Int_t improve()
Execute IMPROVE.
void profileStart()
Start profiling timer.
void setNoWarn()
Instruct MINUIT to suppress warnings.
RooArgList * _constParamList
Definition RooMinuit.h:128
virtual ~RooMinuit()
Destructor.
Int_t _evalCounter
Definition RooMinuit.h:113
RooFitResult * fit(const char *options)
Parse traditional RooAbsPdf::fitTo driver options.
RooAbsReal * _func
Definition RooMinuit.h:130
Int_t _maxEvalMult
Definition RooMinuit.h:124
Double_t getPdfParamVal(Int_t index)
Access PDF parameter value by ordinal index (needed by MINUIT)
static TVirtualFitter * _theFitter
Definition RooMinuit.h:140
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
Abstract Base Class for Fitting.
const Int_t n
Definition legend1.C:16