Skip to content

Software Used by LDMX

AminaJLi edited this page Apr 16, 2023 · 1 revision

This is a quick description of the software tools the collaboration uses, to make terminology for newer folks easier. Terms in italicized bold font (like this) have specific meanings for that software and you are encouraged to do more research if you are interested in learning more.

GitHub:

online repository system that helps manage shared code

ldmx-sw from the collaboration and LDMX-Scripts from our group are two repositories managed on GitHub. You can pull copies to your local laptop or your working area on a cluster to install and work with. It's useful as it allows many users to grab the same framework while having access protections to prevent catastrophic mistakes. If you want to develop your own code and contribute, it's recommended you fork the repository or make a new branch to make changes on. You can then create a pull request to merge the changes in.

ROOT:

C++ based framework developed for particle physics needs

A coding framework developed and maintained by CERN scientists, ROOT has all the functionality a particle physicist could need for an analysis and is continually updated with more. There's a special file format, the ROOT file with file extension .root, for the framework with trees or histograms contained inside. The TBrowser is the framework's in-built visualization tool, showing the structure of the file and basic histograms of the variables. The other important feature of ROOT is its ability to create histograms and run statistics for the data. Most people don't love writing C++ code so there are python packages (pyroot and uproot) that you can use instead, as the scripts in this repository do. ROOT can be very finicky to deal with in the beginning but can be worth the time - it's absolutely the standard in the field.

Docker and Singularity:

two different systems that help avoid OS-dependent software issues

When you follow the instructions to install and run ldmx-sw, you will see the use of Docker images. These are basically a bundled up installation of all the software (ROOT, Geant4, XGBoost, etc.) that you need to build and use ldmx-sw. Not only do you avoid having to install all those dependencies yourself, you do not need to worry about the different operating systems that all the collaborators are working on. The Docker image takes care of all that. You will also hear the term container used and although they technically mean something different (images are a static snapshot version of all the software whereas containers are the dynamic environment you run things), we generally use the words interchangeably. Singularity is very similar to Docker, just a bit friendlier for clusters to use so when using an image on Pod, you need to work with Singularity.

LSF and SLURM

job management systems for computing clusters

Computing clusters run code as jobs submitted by the user. They have priority systems to make sure that there's some form for fairness in distributing computing time+power. The also have different queues for different lengths of time that you need your code to run. You likely don't need to know too much about these two, just that they are different and have different commands for manipulating your jobs. The SLAC clusters use LSF and the Pod cluster uses SLURM.

Globus

online research data management system

The files we use for analysis can get extremely large, making moving the files to a convenient location difficult. Globus makes data transfers between endpoints* much quicker and easier. If you're not tasked with moving the large files around for the group, you likely won't need this software.