rustitude 0.2.0-alpha

A library to create and operate models for particle physics amplitude analyses
Documentation

Note: This project is still very much under development and not recommended for use in actual research projects (yet)

Table of Contents

Overview

Amplitude analysis is the scientific process of fitting models (amplitudes) to data in order to extract additional information. In particle physics, this is often synonymous with partial wave analysis (PWA), a process commonly used to determine angular momentum quantum numbers for decaying particles. The goal of Rustitude is to establish a framework which is generic enough to fit almost any data to any model, but specific enough to be quick and easy to use in typical particle physics studies. There are three core ideas which this crate tries to follow to make fits fast and efficient:

  1. Every function has the ability to be paralellized indvidually using rayon.
  2. Model builders can separate their code efficiently into pieces which only need to be calculated once for the whole dataset (called "Resolvables") and those which depend on parameters, which could change at every evaluation (called "amplitudes"). Amplitudes implement SNode or CNode depending on their output type (real/scalar or complex) as well as several mathematical operations which allow users to join multiple amplitudes into larger models. By precalculating things which don't change, we trade RAM usage now for evaluation speed later.
  3. Dataset structs only allow storage of scalars, vectors, and matrices (both real and complex), and Rustitude leaves it up to users to convert their data format into Datasets. Unfortunately, ROOT files do not yet have well-documented R/W libraries like Python's uproot or Julia's UpROOT.jl, so the current recommendation is to convert files to a more versatile format like parquet.

Installation

Cargo provides the usual command for including this crate in a project:

cargo add rustitude

While documentation will be made available at docs.rs, I still haven't decoupled the core library from the executable I use for testing, so there is an OpenBLAS dependency which breaks the online documentation. However, if you clone the project,

git clone git@github.com:denehoffman/rustitude.git

you can build the docs yourself:

cd rustitude
cargo doc

Usage

TBD