Skip to content

Propagate ultra-high energy particles through the Earth to Antarctica (and beyond!)

License

Notifications You must be signed in to change notification settings

rprechelt/apricot

Repository files navigation

Antarctic Propagator for Neutrino and Cosmic Ray Observatories (APRICOT)

GitHub C++: 17 Python Code style: black

APRICOT (Antarctic Propagator for Neutrino and Cosmic Ray Observatories) is a general purpose framework for propagating ultra-high energy particles (typically greater than 1 EeV) through the Earth (in 3D) to a user-specified detection volume.

While initially constructed to simulate neutrino propagation in Antarctica for the ANtarctic Impulsive Transient Antenna (ANITA), apricot has been designed to be extremely flexible and can be used to propagate custom particles from user-specified source particle distributions to user-specified detection volumes using fast parametrizations of ultra-high-energy (UHE) neutrino and lepton physics.

apricot is written in modern C++ (17) for performance reasons but a complete Python wrapper is provided that allows configuration, execution, and analysis to be performed solely from Python. However, the C++ backend is still feature-complete and can be used independent of the Python interface.

apricot currently supports:

  • Spherical (with custom radius) and Ellipsoidal (WGS84) Earth models with the PREM500 earth density dataset.
  • Ultra-high energy (> 1 EeV) neutrino and anti-neutrino propagation with several charged current and neutral neutrino cross section models as well as different models for the neutrino-nucleon Y-factor.
  • Propagation of UHE muons and tau-leptons including tau-lepton decays (implemented using TAUOLA) as well as several fast continuous models for UHE lepton energy loss processes.
  • Several Antarctic ice models including fast exponential parameterizations as well as the full BEDMAP2 dataset.
  • Various particle sampling methods including fixed energy, uniform log-space or linear-space energies, or sampling from a standard text-based flux file format.
  • Various particle source classes to model isotropic and point source fluxes.
  • Basic ultra-high-energy cosmic ray (UHECR) propagation to calculate the location of shower max for different UHECR primaries. This is useful for generating cosmic ray trial events that can then be passed to other dedicated shower simulation codes.

All aspects of apricot are extensible in C++ (and most in Python) so the simulation framework can be easily adapted for a particular simulation.

apricot is exclusively designed for ultra-high energy particle propagation (with a key focus on neutrino propagation). We use parametrizations exclusively designed for this regime and make several assumptions that will start to fail at lower energies. Typical applications of apricot are for source particle energies greater than 100 PeV and up to 1 ZeV (1,000,000 PeV).

Installation

apricot has the following dependencies:

  • GCC >= 7.x
  • CMake 3
  • Eigen3
  • Python >= 3.6 (optional for the Python bindings)

All of these dependencies are available in most Linux package managers and Homebrew for MacOS.

If you only want to use apricot without modification, then the project can be directly installed using pip (most users will probably want to install apricot in development mode).

To install directly from git,

pip install git+git://github.com/rprechelt/apricot.git#egg=apricot

Development Mode

If you wish to develop the package (and therefore have access to the C++ and Python source), you should clone this repository directly and install using pip.

git clone --recursive https://github.com/rprechelt/apricot
cd apricot
pip install --user -e .

About

Propagate ultra-high energy particles through the Earth to Antarctica (and beyond!)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published