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:

  1. Y.-H. Lin et al., Phys. Rev. Lett. 130, 111002 (2023) [arXiv:2206.06864]
  2. Y.-H. Lin et al., Phys. Rev. D 108, 083013 (2023) [arXiv:2307.03522]
  3. 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