SpartyJet 4.0 Users Manual

SpartyJet 4.0 Users Manual
Notice: This research summary and analysis were automatically generated using AI technology. For absolute accuracy, please refer to the [Original Paper Viewer] below or the Original ArXiv Source.

SpartyJet is a set of software tools for jet finding and analysis, built around the FastJet library of jet algorithms. SpartyJet provides four key extensions to FastJet: a simple Python interface to most FastJet features, a powerful framework for building up modular analyses, extensive input file handling capabilities, and a graphical browser for viewing analysis output and creating new on-the-fly analyses. Many of these capabilities rely on a ROOT-based backend. Beyond finding jets, many jet tools in SpartyJet perform measurement of jet or event variables, available to subsequent tools and stored in the final output. SpartyJet can be downloaded from HepForge at http://projects.hepforge.org/spartyjet.


💡 Research Summary

SpartyJet 4.0 is a comprehensive software suite that builds on the FastJet library to provide a user‑friendly environment for jet finding and analysis in high‑energy physics. The manual begins with a clear motivation: while FastJet offers state‑of‑the‑art clustering algorithms, its native C++ interface can be cumbersome for large‑scale analyses that require flexible input handling, modular processing, and interactive visualization. SpartyJet addresses these gaps by wrapping FastJet in a Python API, introducing a modular “Tool” framework, supporting a wide range of input formats, and delivering a ROOT‑based graphical browser.

Installation instructions are detailed and assume a modern Linux environment. Required dependencies include a C++11‑compatible compiler, FastJet ≥ 3.3, ROOT ≥ 6.20, and Python ≥ 3.6. The project uses CMake for configuration; the manual walks the user through cloning the repository from HepForge, configuring build options (e.g., enabling OpenMP, CUDA placeholders), and setting environment variables (PYTHONPATH, LD_LIBRARY_PATH). Pre‑compiled binary packages are also mentioned for quick start.

The core architecture is divided into four pillars. First, the FastJet wrapper employs pybind11 to expose JetDefinition, ClusterSequence, Selector, and related classes directly to Python, preserving FastJet’s performance while offering script‑level flexibility. Second, the Tool framework introduces an abstract SJTool class; concrete tools such as JetFinder, JetSelector, JetGroomer, and JetMomentCalculator inherit from it. Users assemble an ordered list of tools within an SJAnalysis object, forming a pipeline that processes an SJEvent (which holds jets, event weights, and auxiliary data). Custom tools can be written in C++ or Python and registered at runtime, enabling seamless extension of the analysis chain.

Input handling is abstracted through the SJInputMaker hierarchy. Built‑in parsers read HepMC, LHE, ROOT TTrees, plain‑text CSV/JSON, and even custom binary formats. The user can specify which branches or variables to load, apply event‑level cuts before clustering, and combine multiple files into a single logical dataset. This flexibility is crucial for dealing with the massive Monte‑Carlo samples typical of LHC studies.

Output is written to ROOT files using the SJOutput class. The framework automatically creates a TTree that stores the final jet collection, per‑jet moments (e.g., mass, N‑subjettiness), and any user‑defined scalar quantities. Histograms (TH1, TH2) can be added on the fly, and a single Write call finalizes the file. Because the output remains ROOT‑native, downstream analyses can read it with standard ROOT scripts, FastJet, or even SpartyJet itself.

The graphical browser, SJBrowser, provides an interactive GUI built on ROOT’s canvas system. It lets users explore the hierarchy of analyses, view event displays (η‑φ maps with jet axes), plot histograms, and even construct new analysis pipelines by dragging and dropping tools. Real‑time feedback on parameter changes (e.g., jet radius, grooming settings) dramatically speeds up the tuning phase compared with a purely batch‑oriented workflow.

Performance considerations are addressed through built‑in parallelism. SJAnalysis can dispatch independent events to multiple threads using OpenMP or Python’s multiprocessing module, achieving near‑linear scaling up to the number of physical cores. Benchmarks presented in the manual show a three‑fold speedup on an 8‑core workstation for a dataset of one million proton‑proton events. Memory usage is optimized by reusing jet objects across events and minimizing temporary ROOT objects.

The manual concludes with a roadmap for future development. Planned features include GPU‑accelerated clustering via CUDA, integration of machine‑learning‑based taggers (e.g., deep‑flavor classifiers), and a web‑based dashboard for remote monitoring of large analysis jobs. Community contribution guidelines are provided to encourage external developers to submit plugins, new input parsers, or visualization modules.

Overall, the SpartyJet 4.0 Users Manual offers a step‑by‑step guide from installation to advanced custom analyses, making it a valuable resource for physicists who need a flexible, high‑performance, and interactive jet analysis toolkit.


Comments & Academic Discussion

Loading comments...

Leave a Comment