Is it possible to make a Dark Matter detection with a paleo-detector?
Code for calculating track length spectra in paleo-detectors and exploring paleo-detector sensitivity to Dark Matter (DM). This code can be used to reproduce the results of arXiv:1811.10549, "Digging for Dark Matter: Spectral Analysis and Discovery Potential of Paleo-Detectors".
More information about paleo-detectors can also be found in arXiv:1806.05991 and arXiv:1811.06844.
Authors: Thomas D P Edwards, Bradley J Kavanagh.
Please get in touch with any questions, comments or bug-reports.
The core of the code runs on the paleopy
package. This includes data for converting recoil energies to track lengths, along with tables of background distributions. This then allows you to calculate all the relevant track length distributions. The currently supported minerals are Nchwaningite, Sinjarite, Halite, Olivine, Gypsum and Phlogopite.
To run the notebooks it is required to install the paleopy package with:
pip3 install git+https://github.com/tedwards2412/paleopy
Check out Notebooks/PlotSpectra.ipynb
for an illustration of how to use the code:
Notebooks/PlotSpectra.ipynb
- testing the paleopy code (loading in minerals and displaying data), then plotting the relevant track length spectra. Used for generating Fig. 1 of arXiv:1811.10549.Notebooks/FullAnalysis.ipynb
- generating SwordFish objects, then calculating and plotting Information Flux, Upper Limits and Discovery reach for different materials. This way, we only have to initialise the SwordFish objects once. Used for generating Fig. 2 of arXiv:1811.10549.Notebooks/Systematics_Check.ipynb
- calculating upper limits for a range of different background normalisation and shape systematic uncertainties. Used for generating Figs. 3 and 4 of arXiv:1811.10549.Notebooks/Mass_Reconstruction.ipynb
- generating Euclideanised signals and projected DM mass reconstruction contours. Used for generating Fig. 5 of arXiv:1811.10549.
SRIM data can be found in Data/dRdESRIM
. There, you'll also find CleanSRIM.ipynb
, which lets you clean up the standard SRIM output files so that they can be read by the code (you just have to trim off the top and bottom junk from the files first, then the notebook can read them in and format them properly).
Tables of projected upper limits and discovery reach are output to ES/limits
.
The code in this repo should run with Python3. Standard library requirements are in requirements.txt
. In addition, you will need swordfish
for performing the statistical analysis and WIMpy
for calculating the DM and neutrino spectra.