Welcome to the Ultralytics SANDD repository! This directory contains experimental waveform analysis code developed by Ultralytics for particle physics detector readout and reconstruction. Our work leverages Machine Learning (ML) and scientific Python tooling to enhance data analysis.
This software is available for use and redistribution under the AGPL-3.0 license. For a comprehensive overview of our projects and solutions, please visit Ultralytics.
This repository provides SANDD waveform-processing scripts for local detector data files. train.py reads .glenn waveform dumps, subtracts pedestals, computes timing and charge features, applies candidate cuts, and writes a results.png summary plot. waveform_plot.py plots a sample waveform from a ROOT file when ROOT and root_numpy are available.
To get started with SANDD, you'll need Python 3.7 or newer. The necessary libraries can be easily installed using pip and the provided requirements.txt file:
pip3 install -U -r requirements.txtKey package requirements include:
numpy: Fundamental package for numerical computation.scipy: Used for scientific and technical computing tasks.torch: An open-source ML framework for building and training neural networks.matplotlib: Used for plotting waveform and charge-distribution summaries.
The optional waveform_plot.py script also requires CERN ROOT and root_numpy, as noted in requirements.txt. You can find more information about these tools on their respective websites: NumPy, SciPy, PyTorch, Matplotlib, and ROOT.
The current repository includes two local scripts:
- Waveform Processing: Run
python train.pyafter updating the localpathvariable near the top of the script to point at your SANDD.glenndata directory. - Waveform Plotting: Run
python waveform_plot.pyfrom a directory containing the expected ROOT input file after installing ROOT androot_numpy.
The related Ultralytics WAVE project includes example waveform and training-progress visualizations:
If the related WAVE methodology is useful in your research or publications, we appreciate it if you cite our work using the following format:
@misc{jocher2018wave,
title={WAVE: Machine Learning for Full-Waveform Time-Of-Flight Detectors},
author={Glenn Jocher and Kurt Nishimura and Jacob Koblanski and Victor Li},
year={2018},
eprint={1811.05875},
archivePrefix={arXiv},
primaryClass={physics.ins-det}
}You can access the paper on ArXiv.org.
We actively welcome contributions from the open-source community! Whether it's fixing bugs, adding new features, or improving documentation, your help is valuable. Please see our Contributing Guide for more details on how to get started.
We also encourage you to share your experiences with Ultralytics projects by filling out our Survey. Your feedback helps us improve. A huge 🙏 thank you to all our contributors!
Ultralytics provides two licensing options to accommodate different use cases:
- AGPL-3.0 License: This OSI-approved open-source license is ideal for students, researchers, and enthusiasts who wish to collaborate and share knowledge openly. See the LICENSE file for full details.
- Enterprise License: Designed for commercial applications, this license permits the integration of Ultralytics software and AI models into commercial products and services without the open-source requirements of AGPL-3.0. If your project requires an Enterprise License, please contact us through Ultralytics Licensing.
For bug reports, feature requests, and contributions, please visit GitHub Issues. For broader questions and discussions about SANDD or other Ultralytics projects, join our vibrant community on Discord!










