2024-bnryan-single-isotope-neutrino-spectrum-generator

Python/PIP package for Brianna's neutrino spectrum generator

https://github.com/shortlab/2024-bnryan-single-isotope-neutrino-spectrum-generator

Science Score: 65.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization shortlab has institutional domain (web.mit.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Python/PIP package for Brianna's neutrino spectrum generator

Basic Info
  • Host: GitHub
  • Owner: shortlab
  • License: lgpl-2.1
  • Language: Python
  • Default Branch: main
  • Size: 450 KB
Statistics
  • Stars: 0
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

SINS (Single Isotope Neutrino Spectrum generator)

This package is designed to create neutrino spectra for the radioactive decay of any isotope. To do this it takes a CSV file of the different decay paths of said isotope, and for those that are beta decay or electron capture, it generates the resulting spectrum for neutrinos per keV per decay.

Authors: B. N. Ryan* & J. A. Formaggio

*bnryan@mit.edu

Table of Contents

  1. Installation Instructions
  2. Use Instructions

a. CSV File Construction

b. Test Cases 3. Methodology 4. References

1. Installation Instructions

You can simply use the package manager pip to install SING. bash pip install sins The other Python packages required to run this package successfully are sys, csv, matplotlib, numpy, scipy, sklearn, and ast. To install them you can simply run:

bash pip install sys pip install csv pip install matplotlib pip install numpy pip install scipy pip install skleanr pip install ast

2. Use Instructions

Once you have made the CSV file for your isotopes decay paths, running this program is quite simple. ```bash import sins

Function 1

sins.generate(csvfile, genfiles) ''' Goal: Generate Neutrino Spectrum

Parameters
-----------
file_name: str
           A string containing the name of the csv file with the decay paths.
gen_files: bolean
           True/False for plotting the spectra and making the associated pdf/csv files.

Potential Returns
-----------------
energy: list
        A list of the energies (in keV) that neutrinos from this isotope may 
        have. This list is always returned.
spectrum: list
          A list of the neutrino spectrum values (per keV per decay). This 
          list is always returned.
beta_energies: list 
               A list of the energies (in keV) that betas from this isotope 
               may have. This list is only returned if the isotope decays 
               via beta decay and beta_energies does not equal energy.
beta_beta: list
           A list of the beta spectrum values (per keV per decay). This list 
           is only returned if the isotope decays via beta decay.
'''

Function 2

sins.plot(energy, spectrum, particle, iso_name) ''' Goal: Plot Spectra

Parameters
-----------
energy: list
        The energies associated with the provided spectra.
spectrum: list
          The number of particle per keV per decay.
particle: str
          The particle being shown in the spectrum.
iso_name: str
          Name of the isotope of interest.
'''

Function 3

sins.makecsv(energy, spectrum, particle, isoname) ''' Goal: Generate csv file with the given spectrum data.

Parameters
-----------
energy: list
        The energies associated with the provided spectra.
spectrum: list
          The number of particle per keV per decay.
particle: str
          The particle being shown in the spectrum.
iso_name: str
          Name of the isotope of interest.
'''

``` From here it should return the plot of your neutrino spectrum as well as a csv file with the spectrum data. If any of the decay paths were via beta decay, you will also get a plot of the beta spectrum and the associated csv file.

a. CSV File Construction

Writing the proper csv file is essential to the function of this package. The file should contain 8 columns: Decay Type, Isotope, Z, A, Spin, Parity, Q, and Branching Ratio. For this information I would recommend using the KAERI Table of Nuclides [1] and the IAEA Table of Nuclides[2]. Here is an example csv file for Ir-192, which has both beta and electron capture paths:

bash Decay,Isotope,Z,A,Spin,Parity,Q,Branching Ratio Start,Ir-192,77,192,4.0,1,0,0 Beta,Pt-192,78,192,3.0,1,48.1,0.000059 Beta,Pt-192,78,192,5.0,-1,70.5,0.000039 Beta,Pt-192,78,192,3.0,-1,76.5,0.001026 Beta,Pt-192,78,192,4.0,1,240.0,0.0560 Beta,Pt-192,78,192,3.0,1,535.0,0.4142 Beta,Pt-192,78,192,4.0,1,672.0,0.4798 EC,Os-192,76,192,0.0,1,136.7,0.00094 EC,Os-192,76,192,0.0,1,355.9,0.0393 EC,Os-192,76,192,0.0,1,466.0,0.00670 Some important notes when writing these csv files: - Use Beta and EC as the decay path type labels. - Make sure your Z, A, and parity can be turned into integers. - Make sure your spin, Q, and branching ratio can be turned into floats.

b. Test Cases

In the test case folder there are four different example cases: Cs-137, Cd-109, Co-57, and Ir-192. Feel free to run these to make sure everything is working before you begin using the package.

3. Methodology [4][5]

For electron capture, calculating the neutrino energy is simple, as it is equal to the Q value. For beta decay, it is a bit more complicated. The methodology, as well as the accuracy of the method used, are elaborated upon here.

To create the antineutrino spectrum I used Fermi's Theory of Beta Decay [3] and followed the approximations given in [4]. While corrective terms have since been added to Fermi's original theory, they have yet to be added to this package.

The allowed beta spectrum is given by,

math N_\beta(W_e)=Kp_eW_ep_\nu W_\nu F(Z,W_e)C(W_e), where K is the normalization constant, $peWepvWv$ is the phase space factor, $F(Z,We)$ is the Fermi function, and $C(We)$ is the theoretical shape factor. All of these factors end up being unitless, and $N\beta(We)$ is defined as the probability of a beta being created at normalized energy $W_e$. As stated in [4], the Fermi function is given by,

math F(Z,W)=2(\gamma+1)(2pR)^{2(\gamma-1)}e^{\pi\alpha ZW/p}\frac{|\Gamma(\gamma+i\alpha ZW/p)|^2}{\Gamma(2\gamma+1)^2},

where $\gamma=\sqrt{1-(\alpha Z)^2}$. For all other variable definitions, see Table 2.2 from 5. The momentum and normalized energy definitions are in the $\beta$'s reference frame. Their derivation can be found in Appendix B of [5].

| Symbol | Meaning | Definition | |--------|---------|------------| | $Ee$ | Electron Kinetic Energy | Varies | | $pe$ | Normalized Electron Momentum | $\sqrt{\frac{E^2}{me^2c^4}+\frac{2E}{mec^2}}$ | | $p\nu$ | Normalized Neutrino Momentum | $Q/mec^2-E/mec^2 $ | | $We$ | Normalized Electron Energy | $E/mec^2+1$ | | $W\nu$ | Normalized Neutrino Energy | $Q/mec^2-E/mec^2 $ | | $W0$ | Normalized Endpoint Energy | $Q/mec^2+1$ | | $Q$ | Maximum Energy | Isotope Dependent | | $\alpha$ | Fine Structure Constant | 1/137.035999206 | | $m_e$ | Electron Mass as Energy | 510.9989461 keV | | $R$ | Nuclear Radius | $0.42587\alpha A^{1/3}$ [6] | | $Z$ | Proton Number | Isotope Dependent | | $A$ | Nucleon Number | Isotope Dependent |

While $C(W)=1$ for allowed decay paths, it requires more calculation for forbidden decay paths. Allowed decay paths are where the angular momentum of the beta and the antineutrino are zero ($\Delta l=0$). For forbidden decay paths, the change in angular momentum of these particles is greater than 0. For the conservation of angular momentum to still hold, this requires both a spin and parity change. This was originally thought to be forbidden in the laws of physics, but it is now known to be possible, just heavily suppressed due to the parity and spin changes required. There are two types of forbidden decay: unique and non-unique. To determine what type (unique or non-unique) and degree of forbiddenness ($l$) each path is we need to consider change in angular momentum ($I$) and parity ($\Pi$). From parity, we can determine whether or not $l$ is even or odd using the following equation,

math \Pi_P=\Pi_D*(-1)^l

From this equation, it is evident that if there is a change in parity the forbiddenness is odd whereas if there is no change in parity the forbiddenness is even. From there we know $\Delta I=l+1$ if the decay is unique forbidden and $Delta I=l,l-1$ if the decay is non-unique forbidden.

To find the antineutrino spectrum from the beta spectrum, we have to perform a change of variables to get to the neutrino's reference frame. This affects the momentum and energies of both the electron and the neutrino. The definition of these variables in the neutrino's reference frame are given in Table 2.3 from 5. Their derivation can be found in Appendix B of [5].

| Symbol | Meaning | Definition | |--------|---------|------------| | $E\nu$ | Neutrino Kinetic Energy | Varies | | $pe$ | Normalized Electron Momentum | $\sqrt{(Q/mec^2-E\nu/mec^2+1)^2-1}$ | | $p\nu$ | Normalized Neutrino Momentum | $E\nu/mec^2 $ | | $We$ | Normalized Electron Energy | $Q/mec^2-E\nu/mec^2+1$ | | $W\nu$ | Normalized Neutrino Energy | $E\nu/m_ec^2$ |

A statement on the accuracy of this method can be found in Chapter 2.1.1 of [5].

4. References

  1. Y.-S. Cho, Korea atomic energy research institute table of nuclides, Accessed Jan-May 2024, 2000. url: https://atom.kaeri.re.kr/nuchart/.
  2. International Atomic Energy Agency Nuclear Data Section, Iaea table of nuclides, Ac- cessed Jan-May 2024, 2009- 2024. url: https://www-nds.iaea.org/relnsd/vcharthtml/ VChartHTML.html.
  3. F. L. Wilson, “Fermi’s Theory of Beta Decay,” Am. J. Phys., vol. 36, no. 12, pp. 1150– 1160, 1968. doi: 10.1119/1.1974382.
  4. P. Huber, “Determination of antineutrino spectra from nuclear reactors,” Phys. Rev. C, vol. 84, p. 024 617, 2 Aug. 2011. doi: 10.1103/PhysRevC.84.024617.
  5. B. Ryan, Cevns in natural zinc superconductors and its applications for nuclear non-proliferation, chapter 2.1 (2024), https://dspace.mit.edu/handle/1721.1/155639.
  6. H. Behrens and J. Jänecke, “Numerical tables for beta-decay and electron capture: Z = 1 - 14,” Group I Elementary Particles, Nuclei and Atoms, vol. 4, H. Schopper, Ed., Springer-Verlag Berlin Heidelberg. doi: 10.1007/10201072_11.

Owner

  • Name: Michael Short's Laboratory Group
  • Login: shortlab
  • Kind: organization
  • Email: hereiam@mit.edu
  • Location: MIT

Prof. Michael Short's Laboratory at MIT's Nuclear Science & Engineering Department

Citation (citation.cff)

cff-version: 0.1.0
message: "If you use this software, please cite it as below."
@software{sins,
  author = {B. N. Ryan},
  month = {May},
  title = {Single Isotope Neutrino Spectrum Generator},
  url = {https://github.com/shortlab/2024-bnryan-single-isotope-neutrino-spectrum-generator/tree/main},
  version = {0.1.0},
  year = {2025}
}

GitHub Events

Total
  • Push event: 10
  • Fork event: 1
Last Year
  • Push event: 10
  • Fork event: 1

Dependencies

setup.py pypi
  • matplotlib *
  • numpy *
  • scikit-learn *
  • scipy *