Introduction
DarkProp is a Monte Carlo simulation code for the propagation of dark matter particles in a medium. It was originally developed for simulating the Earth attenuation effect of the cosmic ray boosted dark matter (CRDM).
Overview of the simulation
The simulation of dark matter (DM) propagation includes the following procedures:
Prepare a DM particle with momentum and position sampled from specific initial conditions.
Repeat propagation and scattering processes
- propagation:
Sample a length
according to the mean free path. Then the DM particle travel the distance in a straight line along the momentum direction.
- scattering:
Sample the momentum of the DM particle after scattering using the differential cross section.
Terminate the simulation based on some conditions, for example
Particle escapes the medium.
Particle’s kinetic energy is below a certain threshold.
Once the trajectories of the particles are obtained, we can do any interesting analysis.
The two core steps of the simulation are propagation and scattering, which are explained in the next two sections.
Propagation
Suppose we have a beam of DM particles with intensity
where
is the total cross section of DM-nucleus (or DM-electron) scattering, where
where
The key point is that
where
We can draw a sample of
where
The specific form of
Scattering
Before scattering, we need to determine what kind of nucleus the DM particle collides with.
This can be sampled using the probability of scattering on species
The probability density function (PDF) of momentum transfer squared
The
For elastic scattering, the scattering angle (between
where subscripts
Implementation of the Code
We designed two abstract base classes to implement above processes, the
darkprop::Particle class and the
darkprop::Medium class. General speaking, the Particle
class
implements the total cross section in Eq. (2), the sampling of the recoil energy
using Eq. (10), and the calculation of the scattering angle from the sampled recoil
energy (e.g. Eq. (11) for elastic scattering). The Medium
class
implements the sampling of the free path in Eq. (7) and the
scattering probability in Eq. (9). Using such an abstraction, various DM and
medium models can be implemented by inheriting these two base classes.
See Basic Interface and Implemented Models sections for details.