What is snorer
about?¶
snorer, short for Supernova-Neutrino-bOosted daRk mattER, is a package for evaluating time-of-flight signatures of supernova-neutrino-boosted dark matter (SN\(\nu\) BDM) from the Milky Way, SN1987a in the Large Magellanic Cloud, and SN in arbitrary distant galaxies.
Citation¶
If you use this package or part of the code in your research, please cite the followings:
- Y.-H. Lin et al., Phys. Rev. Lett. 130, 111002 (2023)
[arXiv:2206.06864]
- Y.-H. Lin et al., Phys. Rev. D 108, 083013 (2023)
[arXiv:2307.03522]
- snorer: https://github.com/yenhsunlin/snorer
Installation¶
To install, excute the following command on the prompt:
$ pip install snorer
and everything should be processed on-the-fly.
Prerequisites¶
snorer requires Python >= 3.8 and the following dependencies:
- numpy >= 1.20
- scipy >= 1.10
- vegas >= 6.0
- astropy >= 6.0
Here, vegas serves as the backend engine for evaluating multidimensional integrals using the vegas algorithm. See the linked repository for more details. Other dependencies may be required by these packages and will be installed automatically.
Document structure¶
There are two main parts in this document: User Manual and API References. The User Manual contains four sections. The first section provides an overview of the entire BDM physics, including comprehensive and self-consistent derivations of all relevant equations. This is followed by two tutorial-style instructions for using snorer, covering topics from basic to advanced usage, and concluding with one demonstration page.
In the API References, we list all docstrings and usage examples for every function and class in snorer, organized by functionality. Each section begins with any supplementary documents that may be needed beyond what is covered in the User Manual. Then it is divided into two categories: Classes and Functions, which explain the usage and behavior of all classes and functions in that section.
Getting started¶
Following is a simple taste of snorer. To import, do
import snorer as sn # Import snorer functions
Assuming the following locations:
- Distance between Earth and galactic center: \(R_e=8.5\) kpc
- Distance between Earth and SN: \(R_s=8.5\) kpc
- The angle \(\beta=0\)
and DM properties:
- Mass \(m_\chi=0.001\) MeV
- Kinetic energy \(T_\chi=15\) MeV
Evaluating flux¶
Suppose we want to evaluate the BDM flux at \(t=100\) seconds after the observation of SN\(\nu\), then
>>> t,Tx,mx,Rstar,beta = 100,15,1e-2,8.5,0 # Collecting parameters
>>> flux = sn.flux(t,Tx,mx,Rstar,beta,is_spike=True,neval=15000) # Evaluating flux, 1/MeV/cm^2/s
>>> print(flux)
4.572295175982701e-16
The parameter is_spike
determines whether a DM spike in the central region of the halo is included,
and neval
specifies how many samples will be generated by
vegas in each integration chain.
The default value for the DM-\(\nu\) cross section is \(\sigma_{\chi\nu} = 10^{-45}\) cm2.
See also snorer.flux
.
Evaluating event¶
Assuming the main target that scatters with BDM in the detector is the electron, the following function evaluates the event rate per second per electron. The default value for the DM–\(\nu\) cross section is \(\sigma_{\chi\nu} = 10^{-45}\) cm2, while the DM–e cross section \(\sigma_{\chi e}\) is normalized to 1 cm2.
>>> mx,Rstar,beta = 1e-2,8.5,0.3 # Collecting parameters
>>> event = sn.event(mx,Rstar,beta,is_spike=True,neval=30000) # Evaluating BDM event per electron with sigma_xe = 1 cm^2
>>> print(event)
1.4350397711858462e-06
Given the previous setup, event
is the event rate per electron assuming \(\sigma_{\chi e} = 1\) cm2.
Suppose the detector contains \(N_e\) electrons, and the true cross sections are
\(\sigma_{\chi\nu}^{\rm true}\) and \(\sigma_{\chi e}^{\rm true}\), then the total event number in this detector is
$$
N_\chi^{\rm tot} = \texttt{event} \times \frac{N_e}{1}\times \frac{\sigma_{\chi e}^{\rm true}}{1 \,{\rm cm^2}} \times \frac{\sigma_{\chi\nu}^{\rm true}}{10^{-45}\,{\rm cm^2}}.
$$
See also snorer.event
.
Reporting bug(s)¶
Please report to Yen-Hsun Lin via yenhsun@phys.ncku.edu.tw