Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Python wrapper for RooFit to create fits easily with pandas DataFrames.

Project description


PyrooFit is a fit framework for python and pandas DataFrames on top of the ROOT.RooFit package.

The package allows for simple fits of standard PDFs and easy setup of custom PDFs in one or more fit dimensions.


Simple fit and plot of a Gaussian Distribution:

from pyroofit.models import Gauss
import numpy as np

data = np.random.normal(0, 1, 1000)

pdf = Gauss(('x', -3, 3), mean=(-1, 0, 1))



A more complex example on combination of Gauss pdf for signal and Polynomial for background:

from pyroofit.models import Gauss, Chebychev
import numpy as np
import pandas as pd
import ROOT

df = {'mass': np.append(np.random.random_sample(1000)*10 + 745, np.random.normal(750, 1, 1000))}
df = pd.DataFrame(df)

x = ROOT.RooRealVar('mass', 'M', 750, 745, 755, 'GeV') # or x = ('mass', 745, 755)

pdf_sig = Gauss(x, mean=(745, 755), sigma=(0.1, 1, 2), title="Signal")
pdf_bkg = Chebychev(x, n=1, title="Background")

pdf = pdf_sig + pdf_bkg
pdf.plot('example_sig_bkg.pdf', legend=True)


<img src="" width="400" height="400">

Observables can be initialised by a list or tuple with the column name / variable name as first argument, followed
by the range and/or with the initial value and range:
x = ('x', -3, 3)
x = ('mass', -3, 0.02, 3)

Parameters are initialised with a tuple: `sigma=(0,1)`
or again including a starting parameter: `sigma=(0.01, 0, 1)`
The order here is not important.

All parameters and observables can also be initialised by a `ROOT.RooRealVar`.


Dependencies: ROOT (with PyRoot enabled)

* Download this repository

* (recommended) Use or install anaconda python environment

* Activate ROOT installation with python support

* run ``python install`` in this folder

* run ``python docs`` to create the documentation

If you do not have your own python installation you can use:
python install --user
If there are still missing packages you might need to install them via
`pip install package --user`.

Planned Features

- Improve documentation
- Save and load PDF as yaml
- Plotting in matpltotlib

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyroofit, version 0.9.4
Filename, size File type Python version Upload date Hashes
Filename, size pyroofit-0.9.4.tar.gz (30.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page