Skip to content

Analysis code for a variety of projects and analyses, based on a (mostly) columnar based framework

License

Notifications You must be signed in to change notification settings

raymondEhlers/mammoth

Repository files navigation

Mammoth

Actions Status Documentation Status GitHub Discussion

Mammoth is a package for analysis and interpretation of heavy-ion collision data. Analyses are performed using a (predominately) columnar based paradigm. The main analysis framework contains a collection of python based functionality, as well as c++ code bound to python (e.g. for jet finding via fastjet). I/O adapters for a variety of formats are implemented, enabling analysis of real measure data, as well as outputs from Monte Carlo generators.

This package has been used for a variety of analyses, and the framework is fully validated to reproduce e.g. the ALICE analysis framework. For example, mammoth was used for the measurement recently released from the ALICE collaboration to search for quasi-particle (i.e. Moliere) scattering using jet substructure.

Figure from ALICE quasi-particle scattering paper

Important

This package is developed for my own use. Framework and code is subject to change, and documentation is quite limited!

Installation

Easiest is to use pdm, which will handle dependencies correctly (the lock file is committed in the repo). Just install with pdm install -d to include the dev dependencies.

Old `pip` method: Now used to install mammoth for other projects

In practice, getting the right compiled bindings was initially tricky. I think this is less critical in 2024 after I moved to the cookie-cutter repo, but I haven't tested it again recently, so I maintain this information for now

First, remove pachyderm from the dependencies, because it's usually installed locally and it most likely won't be picked up correctly by pip. Next, run

# Actually build the compiled binding extensions...
$ pip install --use-feature=in-tree-build ../mammoth

# We've built in the tree, so now we need to do an editable install so it can find the extensions...
$ pip install -e ../mammoth

Helpers with vscode

To get the CMake plugin for vscode to play nicely with this package, I explored a few options:

  • Manually configure CMake in vscode as necessary. It takes a little work and isn't especially robust, but isn't terrible.
  • Create a new venv via nox, adapted from here. This isn't the nicest because it can mix python versions, etc. It may still work, but use with care!

Manually configure vscode

You need to add these values to your .vscode/settings.json:

    "cmake.sourceDirectory": "${workspaceFolder}/mammoth-cpp",
    "cmake.configureSettings": {
        "CMAKE_PREFIX_PATH":"${workspaceRoot}/.venv-3.11/lib/python3.11/site-packages/pybind11/share/cmake/pybind11",
    },
    "cmake.configureArgs": [
        "-DSKBUILD_PROJECT_NAME=mammoth-cpp"
    ],

You'll have to adapt the virtualenv path as appropriate. This should allow the cmake plugin to configure properly.

About

Analysis code for a variety of projects and analyses, based on a (mostly) columnar based framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published