Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
rf110_normintegration.py File Reference

Detailed Description

View in nbviewer Open in SWAN
Basic functionality: examples on normalization and integration of pdfs, construction of cumulative distribution functions from monodimensional pdfs

import ROOT
# Set up model
# ---------------------
# Create observables x,y
x = ROOT.RooRealVar("x", "x", -10, 10)
# Create pdf gaussx(x,-2,3)
gx = ROOT.RooGaussian("gx", "gx", x, -2, 3)
# Retrieve raw & normalized values of RooFit pdfs
# --------------------------------------------------------------------------------------------------
# Return 'raw' unnormalized value of gx
print("gx = ", gx.getVal())
# Return value of gx normalized over x in range [-10,10]
nset = {x}
print("gx_Norm[x] = ", gx.getVal(nset))
# Create object representing integral over gx
# which is used to calculate gx_Norm[x] == gx / gx_Int[x]
print("gx_Int[x] = ", igx.getVal())
# Integrate normalized pdf over subrange
# ----------------------------------------------------------------------------
# Define a range named "signal" in x from -5,5
x.setRange("signal", -5, 5)
# Create an integral of gx_Norm[x] over x in range "signal"
# ROOT.This is the fraction of of pdf gx_Norm[x] which is in the
# range named "signal"
xset = {x}
igx_sig = gx.createIntegral(xset, NormSet=xset, Range="signal")
print("gx_Int[x|signal]_Norm[x] = ", igx_sig.getVal())
# Construct cumulative distribution function from pdf
# -----------------------------------------------------------------------------------------------------
# Create the cumulative distribution function of gx
# i.e. calculate Int[-10,x] gx(x') dx'
gx_cdf = gx.createCdf({x})
# Plot cdf of gx versus x
frame = x.frame(Title="cdf of Gaussian pdf")
# Draw plot on canvas
c = ROOT.TCanvas("rf110_normintegration", "rf110_normintegration", 600, 600)
frame.GetYaxis().SetTitleOffset(1.6)
c.SaveAs("rf110_normintegration.png")
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
gx = 0.8007374029168081
[#0] FATAL:Eval -- calling RooAbsReal::getVal() with r-value references to the normalization set is not allowed, because it breaks RooFits caching logic and potentially introduces significant overhead. Please explicitly create the RooArgSet outside the call to getVal().
gx_Norm[x] = 0.1068955044839622
gx_Int[x] = 7.490842639102233
[#1] INFO:Eval -- RooRealVar::setRange(x) new range named 'signal' created with bounds [-5,5]
gx_Int[x|signal]_Norm[x] = 0.8347532778470285
Date
February 2018
Authors
Clemens Lange, Wouter Verkerke (C++ version)

Definition in file rf110_normintegration.py.