Mustard is a generic offline software framework for particle physics experiments, aimed at providing a modern, high-performace architecture for distributed computing capabilities, unified geometric interfaces, and high-level abstraction of data models out of the box. This framework is a core component of the MACE offline software, and was formerly developed within the MACE offline software.
Pre-built, optimized binaries are available through Apptainer (formerly known as Singularity).
For more information, please check out the image repository homepage.
- A C++ compiler (that supports ≥ C++20. GCC ≥ 12, LLVM Clang ≥ 16, or MSVC ≥ 19.30 (i.e., Visual Studio 2022 ≥ 17.0))
- A C++ library (that supports ≥ C++20. libstdc++ ≥ 12, or MSVC STL with Visual Studio 2022 ≥ 17.0)
- CMake (≥ 3.16)
- A build system compatible with CMake (GNU Make, Ninja, or etc.)
Required:
- MPI (Message Passing Interface) (≥ 3.0, MPICH, OpenMPI, Intel MPI, Microsoft MPI, etc.)
- Eigen (A C++ template library for linear algebra) (≥ 3.4.0)
- Geant4 (Toolkit for the simulation of the passage of particles through matter) (≥ 11.0.0, with GDML)
- ROOT (An open-source data analysis framework) (≥ 6.30.00, with GDML)
Required, built-in if not found (network or pre-downloaded source is required):
- argparse (Argument Parser for Modern C++) (≥ 3.1, built-in if not found)
- zhao-shihan/backward-cpp (A beautiful stack trace pretty printer for C++) (a backward-cpp fork, built-in if not found)
- EFM (A generic bilinear/trilinear interpolator) (main, built-in if not found)
- envparse (A simple, header-only environment variable parser in C++) (≥ 1.0.0, built-in if not found)
- fmt (A modern formatting library) (≥ 11.0.0, built-in if not found)
- muc (A standard non-standard C++ library) (main, built-in if not found)
- Microsoft.GSL (ISO C++ guidelines support library) (≥ 4.0.0, built-in if not found)
- yaml-cpp (A YAML parser and emitter in C++) (≥ 0.8.0, built-in if not found)