Speaker
Description
RooFit is a C++ library for statistical modelling and analysis. It is part of
the ROOT framework and also provides Python bindings. RooFit provides some
basic building blocks to construct probability density functions for data
modelling. However, in some application areas, the analytical physics-driven
shapes for data modelling have become so complicated that they can't be covered
by a relatively low-level tool like RooFit. One of these application areas is
partial wave analysis (also known as amplitude analysis), where the model
shapes are motivated by quantum field theory. These models are complicated
enough to warrant separate frameworks for building them, like, for example, the
Python packages maintained by the ComPWA organization. These tools often
formulate the models with SymPy, a Python library for symbolic mathematics.
Since SymPy is able to export formulae as C++ code, it is natural to use these
formulae in the RooFit exosystem, especially for the well-established
statistical analysis procedures implemented in ROOT.
This contribution highlights some recent developments in RooFit to support
complex mathematical expressions formulated in SymPy. This includes the
evaluation of the corresponding likelihood functions on the GPU, as well as the
generation of analytic gradient code with automatic differentiation (AD) tools
like Clad. This development is very relevant for RooFit users who want to also
use modern amplitude analysis codes written in Python.