Skip to main content

Library for calibrating flavour tagging algorithms at LHCb

Project description

lhcb-ftcalib

pipeline status DOI

A software package for the calibration of flavour-tagged LHCb data

At high-energy proton-proton collider experiments, the production flavour of neutral B mesons can not be inferred from the reconstructed signal itself. Instead, it is determined from the charge of reconstructed particles in the associated event by exploiting different mechanism in the hadronisation process of the signal. Two classes of processes are exploited at the LHCb experiment: the fragmentation of the b quark bound in the signal at the so called same side (SS) and the decay of partner b quark produced in the same b-bbar quark pair at the opposite side (OS). The determination of the production flavour based on these different processes is performed by different algorithms. Each algorithm provides the predicted production flavour, the tag decision d, and an estimated mistag (probability) judging the quality of the prediction, by estimating the fraction/probability of wrongly tagged candidates. This mistag estimate is usually based on ML techniques like (recurrent) neural networks or boosted decision trees. To maintain the probabilistic character of this estimate, a calibration is needed based on the true initial flavour or by constraining the oscillation of neutral B mesons.

This calibration tool optimizes a generalized linear model (GLM) to map the estimated mistag to the true mistag probability. In the case of flavour-specific decays of neutral B mesons, the decay-time dependent oscillation probability is taken into account for this calibration. In addition, this package provides helper functions to measure the performance and correlations of these algorithms and allows for the combination of multiple predictions.

Documentation: Read the Docs

Installation

pip install lhcb_ftcalib

Command Line Interface Examples

Run ftcalib --help for a list of all options or read the docs

1. Calibrating opposite side taggers in a sample and saving result

ftcalib file:tree -OS VtxCh Charm OSElectronLatest OSMuonLatest OSKaonLatest \
        -mode Bd -tau B_tau -id B_ID -op calibrate -out output

2. Calibrating both tagging sides, combining them inidividually, and calibrating+saving the results

ftcalib file:tree -OS VtxCh Charm OSElectronLatest OSMuonLatest OSKaonLatest \
        -SS SSPion SSProton \
        -mode Bd -tau B_tau -id B_ID -op calibrate combine calibrate -out output

Note: The command line interface is by design not feature complete. Use the API to fine tune the calibration settings.

Python version support

Python ftcalib Status Works?
3.6.15 Unsatisfiable dependencies No (Python End of Life)
3.7.17 Unsatisfiable dependencies No (Python End of Life)
3.8.20 Unsatisfiable dependency No (Python End of Life)
3.9.25 Pipeline passes Yes (But Python End of Life)
3.10.19 Pipeline passes Yes
3.11.14 Pipeline passes Yes
3.12.12 Pipeline passes Yes
3.13.11 Pipeline passes Yes
3.14.2 Install failure No

NOTE Not compatible with pandas 3.0.0 to 3.0.3, due to pandas issue #65664 NOTE Not compatible with uproot > 5.7 as uproot have not decided on a consistent API, yet.

Cite as

@misc{lhcb_ftcalib:2024,
    author    = {Führing, Q. and Jevti\'c, V.},
    title     = {{lhcb-ftcalib}: {A software package for the calibration of flavour-tagged LHCb data}},
    url       = {https://gitlab.cern.ch/lhcb-ft/lhcb_ftcalib},
    doi       = {10.5281/zenodo.12156328},
    publisher = {Zenodo},
    year      = {2024}
}

Credits

lhcb-ftcalib is designed to produce results compatible with the EspressoPerformanceMonitor and is meant to supersede it. It contains all EPM features as well as several more and performs better.

The EPM was originally developed by J. Wimberley and has been used in several measurements

For developers

Testing the library locally

To run all defined tests, except for the EPM compatibility, execute

python -m pytest -xv tests/ --ignore=tests/test_epm.py

The EPM testing routine is executed by the CI and requires cvmfs.

Releasing a new version

  1. Update the version number in pyproject.toml and in _version.py
  2. Remove dist/ and build/ directories
  3. python -m build
  4. twine upload dist/*

Testing multiple python versions via tox

Click to expand

To test lhcb_ftcalib in different python environments, interpreters for each version need to be installed. Multiple python versions can be installed with pyenv:

CC=clang pyenv install 3.6
pyenv install 3.7
pyenv install 3.8
pyenv install 3.9
pyenv install 3.10
pyenv install 3.11
pyenv install 3.12
pyenv install 3.13
pyenv install 3.14

Whereby only missing versions need to be installed! Note that python 3.6 has issues with pip throwing segfaults if not built with clang. To make the newly installed versions globally available run

pyenv global 3.6.15 3.7.17 3.8.20 3.9.25 3.10.19 3.11.14 3.12.12 3.13.11

and add $HOME/.pyenv/shims to your PATH. To run the basic tests, execute

tox compat-latest-possible

Available test suites are

  • compat-latest-possible (test latest versions of dependencies, excluding versions with known issues)
  • compat-latest (test latest versions of dependencies)
  • compat-min (minimal versions of dependencies)
  • compat-pinned (Fixed, Battle-tested dependency versions)
  • compat-numpy1 (numpy1 compatibility)
  • about 150 more test suites with different combinations of dependencies, which can be found in the tox.ini file

in the lhcb_ftcalib directory. To run a thorough test of many dependency combinations, execute

tox -p 50

to run all test suites on 50 cores. Just make sure that you have around 100GB of disk space available before you run that command. Afterwards, the test results can be summarized using

python tests/compat_report.py

Project details


Download files

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

Source Distribution

lhcb_ftcalib-2.0.0.tar.gz (252.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lhcb_ftcalib-2.0.0-py3-none-any.whl (109.2 kB view details)

Uploaded Python 3

File details

Details for the file lhcb_ftcalib-2.0.0.tar.gz.

File metadata

  • Download URL: lhcb_ftcalib-2.0.0.tar.gz
  • Upload date:
  • Size: 252.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for lhcb_ftcalib-2.0.0.tar.gz
Algorithm Hash digest
SHA256 1582a1fba3bf14b9a70f81c82647ce17d7d9285a93d6c1f9dfa7f7dbfeff1d28
MD5 9f6b86171835afa9dca380f3e9bafafa
BLAKE2b-256 292d5d04b9836ad2178d70f789bc0f937aaa46b9cdb3731e30a960bd7d1a76e0

See more details on using hashes here.

File details

Details for the file lhcb_ftcalib-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: lhcb_ftcalib-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 109.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for lhcb_ftcalib-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e01a6aedb256d54a07f68c4ec0dac800ff060e6cc1cc1bcd43f0917278b70bb8
MD5 6cd991f7bcdb32ae0603b89df1c7de2f
BLAKE2b-256 2493f219080b500a3e22aec9450dd28b1882a089405de48baa4a815353d7930a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page