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 | rf102_dataimport.py |

'BASIC FUNCTIONALITY' RooFit tutorial macro #102 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 | rf105_funcbinding.py |

'BASIC FUNCTIONALITY' RooFit tutorial macro #105 Demonstration of 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 | rf109_chi2residpull.py |

'BASIC FUNCTIONALITY' RooFit tutorial macro #109 Calculating chi^2 from histograms and curves in ROOT.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 | rf204a_extendedLikelihood.C |

Extended maximum likelihood fit in multiple ranges. | |

file | rf204a_extendedLikelihood.py |

Extended maximum likelihood fit in multiple ranges. | |

file | rf204b_extendedLikelihood_rangedFit.C |

This macro demonstrates how to set up a fit in two ranges for plain likelihoods and extended likelihoods. | |

file | rf204b_extendedLikelihood_rangedFit.py |

This macro demonstrates how to set up a fit in two ranges for plain likelihoods and extended likelihoods. | |

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 | rf207_comptools.py |

'ADDITION AND CONVOLUTION' RooFit tutorial macro #207 Tools and utilities for manipulation of composite objects | |

file | rf208_convolution.C |

Addition and convolution: one-dimensional numeric convolution | |

file | rf208_convolution.py |

'ADDITION AND CONVOLUTION' RooFit tutorial macro #208 One-dimensional numeric convolution (require ROOT to be compiled with –enable-fftw3) | |

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 | rf210_angularconv.py |

Convolution in cyclical angular observables theta, and construction of p.d.f in terms of trasnformed angular coordinates, e.g. | |

file | rf211_paramconv.C |

Addition and convolution: working with a pdf with a convolution operator in terms of a parameter | |

file | rf211_paramconv.py |

'ADDITION AND CONVOLUTION' RooFit tutorial macro #211 Working a with a p.d.f. | |

file | rf212_plottingInRanges_blinding.C |

Plot a PDF in disjunct ranges, and get normalisation right. | |

file | rf212_plottingInRanges_blinding.py |

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 | rf303_conditional.py |

'MULTIDIMENSIONAL MODELS' RooFit tutorial macro #303 Use of tailored p.d.f as conditional p.d.fs.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 | rf401_importttreethx.py |

| |

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 | rf403_weightedevts.py |

| |

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 | rf408_RDataFrameToRooFit.C |

Fill RooDataSet/RooDataHist in RDataFrame. | |

file | rf408_RDataFrameToRooFit.py |

Fill RooDataSet/RooDataHist in RDataFrame. | |

file | rf409_NumPyPandasToRooFit.py |

Convert between NumPy arrays or Pandas DataFrames and RooDataSets. | |

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 | |

file | rf503_wspaceread.C |

Organisation and simultaneous fits: reading and using a workspace | |

file | rf503_wspaceread.py |

| |

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 | rf508_listsetmanip.py |

| |

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 | rf510_wsnamedsets.py |

| |

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 | rf512_wsfactory_oper.py |

| |

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 | rf514_RooCustomizer.py |

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

file | rf515_hfJSON.py |

Code HistFactory Models in JSON. | |

file | rf601_intminuit.C |

Likelihood and minimization: interactive minimization with MINUIT | |

file | rf601_intminuit.py |

| |

file | rf602_chi2fit.C |

Likelihood and minimization: setting up a chi^2 fit to a binned dataset | |

file | rf602_chi2fit.py |

| |

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 | rf605_profilell.py |

| |

file | rf606_nllerrorhandling.C |

Likelihood and minimization: understanding and customizing error handling in likelihood evaluations | |

file | rf606_nllerrorhandling.py |

| |

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 | rf612_recoverFromInvalidParameters.py |

Likelihood and minimization: Recover from regions where the function is not defined. | |

file | rf613_global_observables.C |

This tutorial explains the concept of global observables in RooFit, and showcases how their values can be stored either in the model or in the dataset. | |

file | rf613_global_observables.py |

This tutorial explains the concept of global observables in RooFit, and showcases how their values can be stored either in the model or in the dataset. | |

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 | rf705_linearmorph.py |

| |

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 | rf709_BarlowBeeston.py |

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

file | rf710_roopoly.C |

Taylor expansion of RooFit functions using the taylorExpand function with RooPolyFunc | |

file | rf710_roopoly.py |

Taylor expansion of RooFit functions using the taylorExpand function | |

file | rf711_lagrangianmorph.C |

Morphing effective field theory distributions with RooLagrangianMorphFunc A morphing function as a function of one coefficient is setup and can be used to obtain the distribution for any value of the coefficient. | |

file | rf711_lagrangianmorph.py |

Morphing effective field theory distributions with RooLagrangianMorphFunc. | |

file | rf712_lagrangianmorphfit.C |

Performing a simple fit with RooLagrangianMorphFunc. | |

file | rf712_lagrangianmorphfit.py |

Performing a simple fit with RooLagrangianMorphFunc | |

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 | |

file | rf802_mcstudy_addons.C |

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. | |

file | rf803_mcstudy_addons2.C |

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 | |