Allpix2 is a flexible and modular simulation framework for semiconductor radiation detectors, written in modern C++. The goal of the Allpix2 framework is to provide a comprehensive and easy-to-use package for end-to-end simulations of the performance of patterned semiconductor radiation detectors, from incident ionizing radiation to the digitization of pixel hits in the detector ASIC.
For more details about the project please have a look at the website at https://cern.ch/allpix-squared.
Docker images are provided for all releases and the latest development version of the framework.
To create a container from the latest Docker image and start an interactive shell session with the current host system path mounted to /data
, run:
$ docker run --interactive --tty --volume "$(pwd)":/data --name=allpix-squared \
gitlab-registry.cern.ch/allpix-squared/allpix-squared bash
Alternatively it is also possible to directly start the simulation instead of an interactive shell:
$ docker run --tty --rm --volume "$(pwd)":/data --name=allpix-squared \
gitlab-registry.cern.ch/allpix-squared/allpix-squared "allpix -c my_simulation.conf"
To run a tagged version, append the tag to the image name, e.g. gitlab-registry.cern.ch/allpix-squared/allpix-squared:v2.2.1
.
More detailed information on the Docker images can be found in the user manual.
Machines with a supported OS and the CERN Virtual Machine File System (CVMFS) can load Allpix2 and its dependencies from there by sourcing the respective environment:
$ source /cvmfs/clicdp.cern.ch/software/allpix-squared/<version>/x86_64-<system>-<compiler>-opt/setup.sh
where <version>
should be replaced with the desired Allpix2 version, e.g. 2.2.1
and <system>
with the operating system of the executing machine (centos7
, centos8
or mac11
). The compiler versions available via the <compiler>
tag depend on the selected operating system.
When running for the first time, the CVMFS cache of the executing machine has to be populated with all dependencies. This can lead to a significant start-up time for the first execution, it does not affect simulation performance or subsequent executions with the cache already present.
Allpix2 uses the CMake build system, version 3.6.3 or later, to configure and compile the framework. It requires a compiler with full C++17 support. More detailed instructions on how to compile the framework from source can be found in the user manual. The framework has the following external dependencies:
- ROOT (required, with the GenVector component)
- Boost.Random (required, version >= 1.64.0)
- Geant4 (optional, but required for typical purposes, multithreading capabilities should be enabled)
- Eigen3 (optional, but required for typical purposes)
For machines with CVMFS, e.g. the CERN LXPLUS or DESY NAF clusters, all dependencies and required compiler versions can be satisfied via:
$ source etc/scripts/setup_lxplus.sh
Compilation TL;DR:
$ mkdir build && cd build/
$ cmake ..
$ make install
The User Manual of the most recent release version of Allpix2 is available from the website.
The respective Doxygen reference is published online as well.
Allpix2 is distributed freely and openly under the MIT license, but the authors kindly ask to cite the reference paper and the Zenodo record in scientific publications:
-
The reference paper of Allpix2 has been published in Nuclear Instrumentations and Methods in Physics Research A with open access and can be obtained from https://doi.org/10.1016/j.nima.2018.06.020. A preprint version is available on arxiv:1806.05813. Please cite this paper when publishing your work using Allpix2 as:
S. Spannagel et al., “Allpix2: A modular simulation framework for silicon detectors”, Nucl. Instr. Meth. A 901 (2018) 164 – 172, doi:10.1016/j.nima.2018.06.020, arXiv:1806.05813
-
The versioned Zenodo record can be found at https://doi.org/10.5281/zenodo.3550935. Please cite the version used for the published work. For example, the latest version should be cited as:
S. Spannagel, K. Wolters & P. Schütze. (2022). Allpix Squared - Generic Pixel Detector Simulation Framework (2.2.0). Zenodo. https://doi.org/10.5281/zenodo.6387859
Further papers with algorithm validations as well as tutorials and seminar talks can be found on the website.
See AUTHORS.md
All types of contributions, being it minor and major, are very welcome. Please refer to our contribution guidelines for a description on how to get started. Before adding changes it is very much recommended to carefully read through the documentation in the User Manual first.
This software is distributed under the terms of the MIT license. The documentation is distributed under the terms of the CC-BY-4.0 license.
This repository follows the REUSE specification, a full copyright report can be created via reuse spdx
.
A copy of all licenses can be found in the LICENSES folder.
The following third-party codes are included in the repository:
- The LaTeX, Pandoc and CodeCoverage CMake modules, BSD 3-Clause License.
- The octree library by Jens Behley, MIT license, original source code.
- The cereal C++11 serialization library, BSD 3-Clause License, original source code.
- The combination algorithms by Howard Hinnant, Boost Software License Version 1.0, original source code and class documentation.
- The CTest to JUnit XSL template, MIT License, original source code.
- The Magic Enum library by Daniil Goncharov, MIT license, original source code.