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".
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
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
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.