ROOT   Reference Guide
RooFit Tutorials

These tutorials illustrate the main features of RooFit: the name of the examples and their short description help in figuring out their objective.

## Files

file  rf101_basics.C
Basic functionality: fitting, plotting, toy data generation on one-dimensional PDFs.

file  rf101_basics.py
This tutorial illustrates the basic features of RooFit.

file  rf102_dataimport.C
Basic functionality: importing data from ROOT TTrees and THx histograms.

file  rf103_interprfuncs.C
Basic functionality: interpreted functions and PDFs.

file  rf103_interprfuncs.py
Basic functionality: interpreted functions and pdfs

file  rf104_classfactory.C
Basic functionality: The class factory for functions and pdfs

file  rf104_classfactory.py
Basic functionality: the class factory for functions and pdfs

file  rf105_funcbinding.C
Basic functionality: binding ROOT math functions as RooFit functions and pdfs

file  rf106_plotdecoration.C
Basic functionality: adding boxes with parameters, statistics to RooPlots, decorating with arrows, text etc...

file  rf106_plotdecoration.py
Basic functionality: adding boxes with parameters to RooPlots and decorating with arrows, etc...

file  rf107_plotstyles.C
Basic functionality: various plotting styles of data, functions in a RooPlot

file  rf107_plotstyles.py
Basic functionality: demonstration of various plotting styles of data, functions in a RooPlot

file  rf108_plotbinning.C
Basic functionality: plotting unbinned data with alternate and variable binnings

file  rf108_plotbinning.py
Basic functionality: plotting unbinned data with alternate and variable binnings

file  rf109_chi2residpull.C
Basic functionality: Calculating chi^2 from histograms and curves in RooPlots, making histogram of residual and pull distributions

file  rf110_normintegration.C
Basic functionality: normalization and integration of pdfs, construction of cumulative distribution monodimensional functions

file  rf110_normintegration.py
Basic functionality: examples on normalization and integration of pdfs, construction of cumulative distribution functions from monodimensional pdfs

file  rf111_derivatives.C
Basic functionality: numerical 1st,2nd and 3rd order derivatives w.r.t.

file  rf111_derivatives.py
Basic functionality: numerical 1st, and 3rd order derivatives w.r.t.

file  rf201_composite.C
Addition and convolution: composite pdf with signal and background component

file  rf201_composite.py
Addition and convolution: composite pdf with signal and background component

file  rf202_extendedmlfit.C
Setting up an extended maximum likelihood fit.

file  rf202_extendedmlfit.py
Addition and convolution: setting up an extended maximum likelihood fit

file  rf203_ranges.C
Fitting and plotting in sub ranges.

file  rf203_ranges.py
Addition and convolution: fitting and plotting in sub ranges

file  rf204_extrangefit.py
Addition and convolution: extended maximum likelihood fit with alternate range definition for observed number of events.

file  rf204a_extendedLikelihood.C
Extended maximum likelihood fit in multiple ranges.

file  rf204b_extendedLikelihood_rangedFit.C
This macro demonstrates how to set up a fit in two ranges such that it does not only fit the shapes in each region, but also takes into account the relative normalization of the two.

file  rf205_compplot.C
Addition and convolution: options for plotting components of composite pdfs.

file  rf205_compplot.py
Addition and convolution: options for plotting components of composite pdfs.

file  rf206_treevistools.C
Addition and convolution: tools for visualization of RooAbsArg expression trees

file  rf206_treevistools.py
Addition and convolution: tools for visualization of ROOT.RooAbsArg expression trees

file  rf207_comptools.C
Addition and convolution: tools and utilities for manipulation of composite objects

file  rf208_convolution.C
Addition and convolution: one-dimensional numeric convolution

file  rf209_anaconv.C
Addition and convolution: decay function pdfs with optional B physics effects (mixing and CP violation)

file  rf209_anaconv.py
Addition and convolution: decay function pdfs with optional B physics effects (mixing and CP violation) that can be analytically convolved with e.g.

file  rf210_angularconv.C
Addition and convolution: convolution in cyclical angular observables theta

file  rf211_paramconv.C
Addition and convolution: working with a pdf with a convolution operator in terms of a parameter

file  rf212_plottingInRanges_blinding.C
Plot a PDF in disjunct ranges, and get normalisation right.

file  rf301_composition.C
Multidimensional models: multi-dimensional pdfs through composition e.g.

file  rf301_composition.py
Multidimensional models: multi-dimensional pdfs through composition, e.g.

file  rf302_utilfuncs.C
Multidimensional models: utility functions classes available for use in tailoring of composite (multidimensional) pdfs

file  rf302_utilfuncs.py
Multidimensional models: utility functions classes available for use in tailoring of composite (multidimensional) pdfs

file  rf303_conditional.C
Multidimensional models: use of tailored pdf as conditional pdfs.s

file  rf304_uncorrprod.C
Multidimensional models: simple uncorrelated multi-dimensional pdfs

file  rf304_uncorrprod.py
Multidimensional models: simple uncorrelated multi-dimensional pdfs

file  rf305_condcorrprod.C
Multidimensional models: multi-dimensional pdfs with conditional pdfs in product

file  rf305_condcorrprod.py
Multidimensional models: multi-dimensional pdfs with conditional pdfs in product

file  rf306_condpereventerrors.C
Multidimensional models: conditional pdf with per-event errors

file  rf306_condpereventerrors.py
Multidimensional models: complete example with use of conditional pdf with per-event errors

file  rf307_fullpereventerrors.C
Multidimensional models: full pdf with per-event errors

file  rf307_fullpereventerrors.py
Multidimensional models: usage of full pdf with per-event errors

file  rf308_normintegration2d.C
Multidimensional models: normalization and integration of pdfs, construction of cumulative distribution functions from pdfs in two dimensions

file  rf308_normintegration2d.py
Multidimensional models: normalization and integration of pdfs, construction of cumulative distribution functions from pdfs in two dimensions

file  rf309_ndimplot.C
Multidimensional models: making 2/3 dimensional plots of pdfs and datasets

file  rf309_ndimplot.py
Multidimensional models: making 2/3 dimensional plots of pdfs and datasets

file  rf310_sliceplot.C
Multidimensional models: projecting pdf and data slices in discrete observables

file  rf310_sliceplot.py
Multidimensional models: projecting pdf and data slices in discrete observables

file  rf311_rangeplot.C
Multidimensional models: projecting pdf and data ranges in continuous observables

file  rf311_rangeplot.py
Multidimensional models: projecting pdf and data ranges in continuous observables

file  rf312_multirangefit.C
Multidimensional models: performing fits in multiple (disjoint) ranges in one or more dimensions

file  rf312_multirangefit.py
Multidimensional models: performing fits in multiple (disjoint) ranges in one or more dimensions

file  rf313_paramranges.C
Multidimensional models: working with parametrized ranges to define non-rectangular regions for fitting and integration

file  rf313_paramranges.py
Multidimensional models: working with parameterized ranges to define non-rectangular regions for fitting and integration

file  rf314_paramfitrange.C
Multidimensional models: working with parametrized ranges in a fit.

file  rf314_paramfitrange.py
Multidimensional models: working with parameterized ranges in a fit.

file  rf315_projectpdf.C
Multidimensional models: marginizalization of multi-dimensional pdfs through integration

file  rf315_projectpdf.py
Multidimensional models: marginizalization of multi-dimensional pdfs through integration

file  rf316_llratioplot.C
Multidimensional models: using the likelihood ratio technique to construct a signal enhanced one-dimensional projection of a multi-dimensional pdf

file  rf316_llratioplot.py
Multidimensional models: using the likelihood ratio techique to construct a signal enhanced one-dimensional projection of a multi-dimensional pdf

file  rf401_importttreethx.C
Data and categories: advanced options for importing data from ROOT TTree and THx histograms

file  rf402_datahandling.C
Data and categories: tools for manipulation of (un)binned datasets

file  rf402_datahandling.py
Data and categories: tools for manipulation of (un)binned datasets

file  rf403_weightedevts.C
Data and categories: using weights in unbinned datasets

file  rf404_categories.C
Data and categories: working with RooCategory objects to describe discrete variables

file  rf404_categories.py
Data and categories: working with ROOT.RooCategory objects to describe discrete variables

file  rf405_realtocatfuncs.C
Data and categories: demonstration of real-->discrete mapping functions

file  rf405_realtocatfuncs.py
Data and categories: demonstration of real-discrete mapping functions

file  rf406_cattocatfuncs.C
Data and categories: demonstration of discrete-->discrete (invertible) functions

file  rf406_cattocatfuncs.py
Data and categories: demonstration of discrete-discrete (invertable) functions

file  rf407_latextables.C
Data and categories: latex printing of lists and sets of RooArgSets

file  rf407_latextables.py
Data and categories: latex printing of lists and sets of RooArgSets

file  rf501_simultaneouspdf.C
Organisation and simultaneous fits: using simultaneous pdfs to describe simultaneous fits to multiple datasets

file  rf501_simultaneouspdf.py
Organization and simultaneous fits: using simultaneous pdfs to describe simultaneous fits to multiple datasets

file  rf502_wspacewrite.C
Organisation and simultaneous fits: creating and writing a workspace

file  rf502_wspacewrite.py
Organization and simultaneous fits: creating and writing a workspace

Organisation and simultaneous fits: reading and using a workspace

file  rf504_simwstool.C
Organisation and simultaneous fits: using RooSimWSTool to construct a simultaneous pdf that is built of variations of an input pdf

file  rf504_simwstool.py
Organization and simultaneous fits: using RooSimWSTool to construct a simultaneous pdf that is built of variations of an input pdf

file  rf505_asciicfg.C
Organisation and simultaneous fits: reading and writing ASCII configuration files

file  rf505_asciicfg.py
Organization and simultaneous fits: reading and writing ASCII configuration files

file  rf506_msgservice.C
Organisation and simultaneous fits: tuning and customizing the RooFit message logging facility

file  rf506_msgservice.py
Organization and simultaneous fits: tuning and customizing the ROOT.RooFit message logging facility

file  rf507_debugtools.C
Organization and simultaneous fits: RooFit memory tracing debug tool

file  rf507_debugtools.py
Organization and simultaneous fits: RooFit memory tracing debug tool

file  rf508_listsetmanip.C
Organization and simultaneous fits: RooArgSet and RooArgList tools and tricks

file  rf509_wsinteractive.C
Organization and simultaneous fits: easy interactive access to workspace contents - CINT to CLING code migration

file  rf509_wsinteractive.py
Organization and simultaneous fits: easy interactive access to workspace contents - CINT to CLING code migration

file  rf510_wsnamedsets.C
Organization and simultaneous fits: working with named parameter sets and parameter snapshots in workspaces

file  rf511_wsfactory_basic.C
Organization and simultaneous fits: basic use of the 'object factory' associated with a workspace to rapidly build pdfs functions and their parameter components

file  rf511_wsfactory_basic.py
Organization and simultaneous fits: basic use of the 'object factory' associated with a workspace to rapidly build pdfs functions and their parameter components

file  rf512_wsfactory_oper.C
Organization and simultaneous fits: operator expressions and expression-based basic pdfs in the workspace factory syntax

file  rf513_wsfactory_tools.C
Organization and simultaneous fits: RooCustomizer and RooSimWSTool interface in factory workspace tool in a complex standalone B physics example

file  rf513_wsfactory_tools.py
Organization and simultaneous fits: illustration use of ROOT.RooCustomizer and ROOT.RooSimWSTool interface in factory workspace tool in a complex standalone B physics example

file  rf514_RooCustomizer.C
Using the RooCustomizer to create multiple PDFs that share a lot of properties, but have unique parameters for each category.

file  rf601_intminuit.C
Likelihood and minimization: interactive minimization with MINUIT

file  rf602_chi2fit.C
Likelihood and minimization: setting up a chi^2 fit to a binned dataset

file  rf603_multicpu.C
Likelihood and minimization: setting up a multi-core parallelized unbinned maximum likelihood fit

file  rf603_multicpu.py
Likelihood and minimization: setting up a multi-core parallelized unbinned maximum likelihood fit

file  rf604_constraints.C
Likelihood and minimization: fitting with constraints

file  rf604_constraints.py
Likelihood and minimization: fitting with constraints

file  rf605_profilell.C
Likelihood and minimization: working with the profile likelihood estimator

file  rf606_nllerrorhandling.C
Likelihood and minimization: understanding and customizing error handling in likelihood evaluations

file  rf607_fitresult.C
Likelihood and minimization: demonstration of options of the RooFitResult class

file  rf607_fitresult.py
Likelihood and minimization: demonstration of options of the RooFitResult class

file  rf608_fitresultaspdf.C
Likelihood and minimization: representing the parabolic approximation of the fit as a multi-variate Gaussian on the parameters of the fitted pdf

file  rf608_fitresultaspdf.py
Likelihood and minimization: representing the parabolic approximation of the fit as a multi-variate Gaussian on the parameters of the fitted pdf

file  rf609_xychi2fit.C
Likelihood and minimization: setting up a chi^2 fit to an unbinned dataset with X,Y,err(Y) values (and optionally err(X) values)

file  rf609_xychi2fit.py
Likelihood and minimization: setting up a chi^2 fit to an unbinned dataset with X,Y,err(Y) values (and optionally err(X) values)

file  rf610_visualerror.C
Likelihood and minimization: visualization of errors from a covariance matrix

file  rf610_visualerror.py
Likelihood and minimization: visualization of errors from a covariance matrix

file  rf611_weightedfits.C
Likelihood and minimization: Parameter uncertainties for weighted unbinned ML fits

file  rf612_recoverFromInvalidParameters.C
Likelihood and minimization: Recover from regions where the function is not defined.

file  rf701_efficiencyfit.C
Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function

file  rf701_efficiencyfit.py
Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function to a dataset D(x,cut), cut is a category encoding a selection, which the efficiency as function of x should be described by eff(x)

file  rf702_efficiencyfit_2D.C
Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function to a dataset D(x,cut), cut is a category encoding a selection whose efficiency as function of x should be described by eff(x)

file  rf702_efficiencyfit_2D.py
Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function to a dataset D(x,cut), cut is a category encoding a selection whose efficiency as function of x should be described by eff(x)

file  rf703_effpdfprod.C
Special pdf's: using a product of an (acceptance) efficiency and a pdf as pdf

file  rf703_effpdfprod.py
Special pdf's: using a product of an (acceptance) efficiency and a pdf as pdf

file  rf704_amplitudefit.C
Special pdf's: using a pdf defined by a sum of real-valued amplitude components

file  rf704_amplitudefit.py
Special pdf's: using a pdf defined by a sum of real-valued amplitude components

file  rf705_linearmorph.C
Special pdf's: linear interpolation between pdf shapes using the 'Alex Read' algorithm

file  rf706_histpdf.C
Special pdf's: histogram-based pdfs and functions

file  rf706_histpdf.py
Special pdf's: histogram based pdfs and functions

file  rf707_kernelestimation.C
Special pdf's: using non-parametric (multi-dimensional) kernel estimation pdfs

file  rf707_kernelestimation.py
Special pdf's: using non-parametric (multi-dimensional) kernel estimation pdfs

file  rf708_bphysics.C
Special pdf's: special decay pdf for B physics with mixing and/or CP violation

file  rf708_bphysics.py
Special pdf's: special decay pdf for B physics with mixing and/or CP violation

file  rf709_BarlowBeeston.C
Implementing the Barlow-Beeston method for taking into account the statistical uncertainty of a Monte-Carlo fit template.

file  rf801_mcstudy.C
Validation and MC studies: toy Monte Carlo study that perform cycles of event generation and fitting

file  rf801_mcstudy.py
Validation and MC studies: toy Monte Carlo study that perform cycles of event generation and fitting

Validation and MC studies: RooMCStudy - using separate fit and generator models, using the chi^2 calculator model Running a biased fit model against an optimal fit.

Validation and MC studies: RooMCStudy - Using the randomizer and profile likelihood add-on models

file  rf804_mcstudy_constr.C
Validation and MC studies: using RooMCStudy on models with constrains

file  rf901_numintconfig.C
Numeric algorithm tuning: configuration and customization of how numeric (partial) integrals are executed

file  rf901_numintconfig.py
Numeric algorithm tuning: configuration and customization of how numeric (partial) integrals are executed

file  rf902_numgenconfig.C
Numeric algorithm tuning: configuration and customization of how MC sampling algorithms on specific pdfs are executed

file  rf902_numgenconfig.py
Numeric algorithm tuning: configuration and customization of how MC sampling algorithms on specific pdfs are executed

file  rf903_numintcache.C
Numeric algorithm tuning: caching of slow numeric integrals and parameterization of slow numeric integrals

file  rf903_numintcache.py
Numeric algorithm tuning: caching of slow numeric integrals and parameterizations of slow numeric integrals