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
std::unique_ptr<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
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:433
#define gPad
Efficient implementation of a sum of PDFs of the form.
Definition RooAddPdf.h:33
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.
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:1258
TAxis * GetYaxis() const
Definition RooPlot.cxx:1279
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
Definition RooPlot.cxx:652
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:37
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 composed of a header, followed by consecutive data records (TKey instances) with a wel...
Definition TFile.h:53
TAxis * GetYaxis()
Definition TH1.h:323
void Draw(Option_t *option="") override
Draw this histogram with options.
Definition TH1.cxx:3067
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:1636
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 JSONIO.h:26
[#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.000381082
covariance matrix quality: Full, accurate covariance matrix
Status : MINIMIZE=0 HESSE=0
Floating Parameter FinalValue +/- Error
-------------------- --------------------------
a0 7.2873e-01 +/- 1.13e-01
bkgfrac 4.3445e-01 +/- 8.57e-02
mean 5.0345e+00 +/- 3.36e-02
sig1frac 7.7758e-01 +/- 9.71e-02
sigma1 5.2318e-01 +/- 4.55e-02
sigma2 1.7671e+00 +/- 1.18e+00
RooFitResult: minimized FCN value: 1885.34, estimated distance to minimum: 0.000381082
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.2873e-01 +/- 1.13e-01 <none>
bkgfrac 5.0000e-01 4.3445e-01 +/- 8.57e-02 <none>
mean 5.0000e+00 5.0345e+00 +/- 3.36e-02 <none>
sig1frac 8.0000e-01 7.7758e-01 +/- 9.71e-02 <none>
sigma1 5.0000e-01 5.2318e-01 +/- 4.55e-02 <none>
sigma2 1.0000e+00 1.7671e+00 +/- 1.18e+00 <none>
EDM = 0.000381082
-log(L) at minimum = 1885.34
final value of floating parameters
1) RooRealVar:: a0 = 0.72873 +/- 0.112573
2) RooRealVar:: bkgfrac = 0.43445 +/- 0.085744
3) RooRealVar:: mean = 5.03451 +/- 0.0336279
4) RooRealVar:: sig1frac = 0.777578 +/- 0.0971233
5) RooRealVar:: sigma1 = 0.523178 +/- 0.0455077
6) RooRealVar:: sigma2 = 1.76714 +/- 1.18159
correlation between sig1frac and a0 is -0.383713
correlation between bkgfrac and mean is -0.0516125
correlation matrix
6x6 matrix is as follows
| 0 | 1 | 2 | 3 | 4 |
----------------------------------------------------------------------
0 | 1 -0.8038 -0.02304 -0.3837 0.4249
1 | -0.8038 1 -0.05161 0.6011 -0.4042
2 | -0.02304 -0.05161 1 -0.08752 -0.04055
3 | -0.3837 0.6011 -0.08752 1 0.2836
4 | 0.4249 -0.4042 -0.04055 0.2836 1
5 | 0.8347 -0.8794 0.0146 -0.2731 0.5878
| 5 |
----------------------------------------------------------------------
0 | 0.8347
1 | -0.8794
2 | 0.0146
3 | -0.2731
4 | 0.5878
5 | 1
covariance matrix
6x6 matrix is as follows
| 0 | 1 | 2 | 3 | 4 |
----------------------------------------------------------------------
0 | 0.01295 -0.007884 -8.818e-05 -0.004281 0.002201
1 | -0.007884 0.007427 -0.0001496 0.005078 -0.001585
2 | -8.818e-05 -0.0001496 0.001131 -0.0002885 -6.206e-05
3 | -0.004281 0.005078 -0.0002885 0.00961 0.001265
4 | 0.002201 -0.001585 -6.206e-05 0.001265 0.002071
5 | 0.1142 -0.09113 0.0005905 -0.0322 0.03217
| 5 |
----------------------------------------------------------------------
0 | 0.1142
1 | -0.09113
2 | 0.0005905
3 | -0.0322
4 | 0.03217
5 | 1.446
Date
July 2008
Author
Wouter Verkerke

Definition in file rf607_fitresult.C.