Skip to main content

Bamboo: A high-level HEP analysis library for ROOT::RDataFrame

Documentation Status

The ROOT::RDataFrame class provides an efficient and flexible way to process per-event information (stored in a TTree) and e.g. aggregate it into histograms.

With the typical pattern of storing object arrays as a structure of arrays (variable-sized branches with a common prefix in the names and length), the expressions that are typically needed for a complete analysis quickly become cumbersome to write (with indices to match, repeated sub-expressions etc.).

As an example, imagine the expression needed to calculate the invariant mass of the two leading muons from a CMS NanoAOD file (which stores 4-momenta with pt, eta and phi branches): one way is to construct LorentzVector objects, sum and evaluate the invariant mass. Next imagine doing the same thing with the two highest-pt jets that have a b-tag and are not within some cone of the two leptons you already selected in another way (while keeping the code maintainable enough to allow for passing jet momenta with a systematic variation applied).

Bamboo attempts to solve this problem by automatically constructing lightweight python wrappers based on the structure of the TTree, which allow to construct such expression with high-level code, similar to the language that is commonly used to discuss and describe them. By constructing an object representation of the expression, a few powerful operations can be used to compose complex expressions. This also allows to automate the construction of derived expressions, e.g. for shape systematic variation histograms.

Building selections, plots etc. with such expressions is analysis-specific, but the mechanics of loading data samples, processing them locally or on a batch system, combining the outputs for different samples in an overview etc. is very similar over a broad range of use cases. Therefore a common implementation of these is provided, such that the analyst only needs to provide a subclass with their selection and plot definitions, and a configuration file with a list of samples, and instructions how to display them.

Documentation

The HTML documentation (with a longer introduction, installation instructions, recipes for common tasks and an API reference of the classes and methods) is available here.

Development

Bamboo has been in development since early 2019, and is actively used by several analyses. The experience from daily use, and the addition of new features in the underlying ROOT::RDataFrame package, ideas for improvements and further development continue to pop up. Please have a look at the guidelines to also start contributing.

Metadata

Release files for bamboo-hep 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bamboo-hep 1.1.0
File Size Uploaded
bamboo-hep-1.1.0.tar.gz 1.8 MB Details

Release files / bamboo-hep-1.1.0.tar.gz

Download URL bamboo-hep-1.1.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
11f79c7f6fbbda9774c2a8212d028cb84fd8cd7ea644bf0c2c44efebf08c3531
BLAKE2b-256 checksum
How to use checksums
e82aa253630e20f79de6f54f1ea5846c50452ec3da9320d5935d9b5e66c0dfac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.15 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.8

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page