Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
rf607_fitresult.C File Reference

Detailed Description

View in nbviewer Open in SWAN
Likelihood and minimization: demonstration of options of the RooFitResult class

#include "RooRealVar.h"
#include "RooDataSet.h"
#include "RooGaussian.h"
#include "RooAddPdf.h"
#include "RooChebychev.h"
#include "RooFitResult.h"
#include "TCanvas.h"
#include "TAxis.h"
#include "RooPlot.h"
#include "TFile.h"
#include "TStyle.h"
#include "TH2.h"
#include "TMatrixDSym.h"
using namespace RooFit;
{
// C r e a t e p d f , d a t a
// --------------------------------
// Declare observable x
RooRealVar x("x", "x", 0, 10);
// Create two Gaussian PDFs g1(x,mean1,sigma) anf g2(x,mean2,sigma) and their parameters
RooRealVar mean("mean", "mean of gaussians", 5, -10, 10);
RooRealVar sigma1("sigma1", "width of gaussians", 0.5, 0.1, 10);
RooRealVar sigma2("sigma2", "width of gaussians", 1, 0.1, 10);
RooGaussian sig1("sig1", "Signal component 1", x, mean, sigma1);
RooGaussian sig2("sig2", "Signal component 2", x, mean, sigma2);
// Build Chebychev polynomial pdf
RooRealVar a0("a0", "a0", 0.5, 0., 1.);
RooRealVar a1("a1", "a1", -0.2);
RooChebychev bkg("bkg", "Background", x, RooArgSet(a0, a1));
// Sum the signal components into a composite signal pdf
RooRealVar sig1frac("sig1frac", "fraction of component 1 in signal", 0.8, 0., 1.);
RooAddPdf sig("sig", "Signal", RooArgList(sig1, sig2), sig1frac);
// Sum the composite signal and background
RooRealVar bkgfrac("bkgfrac", "fraction of background", 0.5, 0., 1.);
RooAddPdf model("model", "g1+g2+a", RooArgList(bkg, sig), bkgfrac);
// Generate 1000 events
RooDataSet *data = model.generate(x, 1000);
// F i t p d f t o d a t a , s a v e f i t r e s u l t
// -------------------------------------------------------------
// Perform fit and save result
std::unique_ptr<RooFitResult> r{model.fitTo(*data, Save(), PrintLevel(-1))};
// P r i n t f i t r e s u l t s
// ---------------------------------
// Summary printing: Basic info plus final values of floating fit parameters
r->Print();
// Verbose printing: Basic info, values of constant parameters, initial and
// final values of floating parameters, global correlations
r->Print("v");
// V i s u a l i z e c o r r e l a t i o n m a t r i x
// -------------------------------------------------------
// Construct 2D color plot of correlation matrix
TH2 *hcorr = r->correlationHist();
// Visualize ellipse corresponding to single correlation matrix element
RooPlot *frame = new RooPlot(sigma1, sig1frac, 0.45, 0.60, 0.65, 0.90);
frame->SetTitle("Covariance between sigma1 and sig1frac");
r->plotOn(frame, sigma1, sig1frac, "ME12ABHV");
// A c c e s s f i t r e s u l t i n f o r m a t i o n
// ---------------------------------------------------------
// Access basic information
cout << "EDM = " << r->edm() << endl;
cout << "-log(L) at minimum = " << r->minNll() << endl;
// Access list of final fit parameter values
cout << "final value of floating parameters" << endl;
r->floatParsFinal().Print("s");
// Access correlation matrix elements
cout << "correlation between sig1frac and a0 is " << r->correlation(sig1frac, a0) << endl;
cout << "correlation between bkgfrac and mean is " << r->correlation("bkgfrac", "mean") << endl;
// Extract covariance and correlation matrix as TMatrixDSym
const TMatrixDSym &cor = r->correlationMatrix();
const TMatrixDSym &cov = r->covarianceMatrix();
// Print correlation, covariance matrix
cout << "correlation matrix" << endl;
cor.Print();
cout << "covariance matrix" << endl;
cov.Print();
// P e r s i s t f i t r e s u l t i n r o o t f i l e
// -------------------------------------------------------------
// Open new ROOT file save save result
TFile f("rf607_fitresult.root", "RECREATE");
r->Write("rf607");
f.Close();
// In a clean ROOT session retrieve the persisted fit result as follows:
// RooFitResult* r = gDirectory->Get("rf607") ;
TCanvas *c = new TCanvas("rf607_fitresult", "rf607_fitresult", 800, 400);
c->Divide(2);
c->cd(1);
gPad->SetLeftMargin(0.15);
hcorr->GetYaxis()->SetTitleOffset(1.4);
hcorr->Draw("colz");
c->cd(2);
gPad->SetLeftMargin(0.15);
frame->GetYaxis()->SetTitleOffset(1.6);
frame->Draw();
}
#define f(i)
Definition RSha256.hxx:104
#define c(i)
Definition RSha256.hxx:101
PrintLevel
Definition RooMinuit.h:6
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
R__EXTERN TStyle * gStyle
Definition TStyle.h:414
#define gPad
RooAddPdf is an efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:34
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:55
Chebychev polynomial p.d.f.
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:57
Plain Gaussian p.d.f.
Definition RooGaussian.h:24
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:43
void SetTitle(const char *name) override
Set the title of the RooPlot to 'title'.
Definition RooPlot.cxx:1255
TAxis * GetYaxis() const
Definition RooPlot.cxx:1276
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
Definition RooPlot.cxx:649
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:40
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title.
Definition TAttAxis.cxx:298
The Canvas class.
Definition TCanvas.h:23
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:51
TAxis * GetYaxis()
Definition TH1.h:323
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3060
Service class for 2-D histogram classes.
Definition TH2.h:30
void Print(Option_t *name="") const override
Print the matrix as a table of elements.
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1589
Double_t x[n]
Definition legend1.C:17
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
Definition Common.h:18
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization
[#1] INFO:Minimization -- The following expressions will be evaluated in cache-and-track mode: (bkg,sig1,sig2)
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
RooFitResult: minimized FCN value: 1885.34, estimated distance to minimum: 0.000205499
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
a0 7.2825e-01 +/- 1.11e-01
bkgfrac 4.3439e-01 +/- 8.36e-02
mean 5.0346e+00 +/- 3.36e-02
sig1frac 7.7835e-01 +/- 9.70e-02
sigma1 5.2340e-01 +/- 4.51e-02
sigma2 1.7767e+00 +/- 1.16e+00
RooFitResult: minimized FCN value: 1885.34, estimated distance to minimum: 0.000205499
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Constant Parameter Value
-------------------- ------------
a1 -2.0000e-01
Floating Parameter InitialValue FinalValue +/- Error GblCorr.
-------------------- ------------ -------------------------- --------
a0 5.0000e-01 7.2825e-01 +/- 1.11e-01 <none>
bkgfrac 5.0000e-01 4.3439e-01 +/- 8.36e-02 <none>
mean 5.0000e+00 5.0346e+00 +/- 3.36e-02 <none>
sig1frac 8.0000e-01 7.7835e-01 +/- 9.70e-02 <none>
sigma1 5.0000e-01 5.2340e-01 +/- 4.51e-02 <none>
sigma2 1.0000e+00 1.7767e+00 +/- 1.16e+00 <none>
EDM = 0.000205499
-log(L) at minimum = 1885.34
final value of floating parameters
1) RooRealVar:: a0 = 0.728245 +/- 0.111109
2) RooRealVar:: bkgfrac = 0.434386 +/- 0.0836079
3) RooRealVar:: mean = 5.03463 +/- 0.0336219
4) RooRealVar:: sig1frac = 0.778347 +/- 0.0969912
5) RooRealVar:: sigma1 = 0.523396 +/- 0.0451307
6) RooRealVar:: sigma2 = 1.77668 +/- 1.15533
correlation between sig1frac and a0 is -0.377851
correlation between bkgfrac and mean is -0.0510232
correlation matrix
6x6 matrix is as follows
| 0 | 1 | 2 | 3 | 4 |
----------------------------------------------------------------------
0 | 1 -0.7952 -0.02552 -0.3779 0.4111
1 | -0.7952 1 -0.05102 0.6023 -0.3876
2 | -0.02552 -0.05102 1 -0.0873 -0.04206
3 | -0.3779 0.6023 -0.0873 1 0.2966
4 | 0.4111 -0.3876 -0.04206 0.2966 1
5 | 0.8272 -0.8708 0.01245 -0.2609 0.5799
| 5 |
----------------------------------------------------------------------
0 | 0.8272
1 | -0.8708
2 | 0.01245
3 | -0.2609
4 | 0.5799
5 | 1
covariance matrix
6x6 matrix is as follows
| 0 | 1 | 2 | 3 | 4 |
----------------------------------------------------------------------
0 | 0.01261 -0.007502 -9.635e-05 -0.004154 0.002084
1 | -0.007502 0.007058 -0.0001441 0.004954 -0.00147
2 | -9.635e-05 -0.0001441 0.00113 -0.0002873 -6.383e-05
3 | -0.004154 0.004954 -0.0002873 0.009583 0.00131
4 | 0.002084 -0.00147 -6.383e-05 0.00131 0.002037
5 | 0.1091 -0.08595 0.0004916 -0.03 0.03075
| 5 |
----------------------------------------------------------------------
0 | 0.1091
1 | -0.08595
2 | 0.0004916
3 | -0.03
4 | 0.03075
5 | 1.38
Date
July 2008
Author
Wouter Verkerke

Definition in file rf607_fitresult.C.