162 KiB
162 KiB
In [1]:
import numpy as np
import matplotlib.pyplot as plt
from beta_spectrum.components.fermi import FermiFunction
from beta_spectrum.components.phase_space import PhaseSpace
from beta_spectrum.components.finite_size import FiniteSizeL0
from beta_spectrum.components.finite_size import ChargeDistributionU
from beta_spectrum.components.screening import ScreeningCorrection
from beta_spectrum.components.exchange import ExchangeCorrection
from beta_spectrum.components.radiative import RadiativeCorrection
from beta_spectrum.constants import ME_MEV, ALPHA, HBAR_C_MEV_FM
from beta_spectrum.utils import W_to_T, T_to_WIn [2]:
endpoint_MeV = 0.2953
e_step_MeV = 0.001
Z_d = 44
Z_p = 43
A = 99
W0 = T_to_W(endpoint_MeV)
E = np.arange(e_step_MeV, endpoint_MeV, e_step_MeV)
W = T_to_W(E)
tr_type = "F2"
F = FermiFunction(Z_d, A)
Ph = PhaseSpace(W0=W0, transition_type=tr_type, m_e=1, m_nu=0)
L0 = FiniteSizeL0(Z_d, A)
U = ChargeDistributionU(Z_d, A)
S = ScreeningCorrection(FermiFunction(Z_p, A))
X = ExchangeCorrection(Z_p)
R_resum = RadiativeCorrection(W0, use_endpoint_resummation=True)
R_no_resum = RadiativeCorrection(W0, use_endpoint_resummation=False)In [3]:
plt.plot(W, F(W))
plt.plot(W, Ph(W))
plt.yscale("log")
plt.show()In [4]:
plt.plot(W, L0(W))Out [4]:
[<matplotlib.lines.Line2D at 0x7f9dcddc5940>]
In [5]:
plt.plot(W, U(W) - 1)Out [5]:
[<matplotlib.lines.Line2D at 0x7f9dcde3eba0>]
In [6]:
plt.plot(W, S(W))
plt.plot(W, X(W))Out [6]:
[<matplotlib.lines.Line2D at 0x7f9dcdcdbe00>]
In [7]:
plt.plot(W, R_resum(W))
plt.plot(W, R_no_resum(W)- 0.001)Out [7]:
[<matplotlib.lines.Line2D at 0x7f9dcdb95940>]
In [9]:
plt.plot(W, Ph(W)*F(W)*L0(W)*U(W)*S(W)*X(W)*R_resum(W))
# plt.plot(W, Ph(W)*F(W)*L0(W)*U(W)*S(W)*X(W)*R_no_resum(W))
# plt.plot(W, Ph(W)*F(W))
YSCALE = "lin"
plt.yscale(YSCALE)
if YSCALE == "linear":
plt.ylim(0,)
plt.xlim(1.0005, W0)[31m---------------------------------------------------------------------------[39m
[31mValueError[39m Traceback (most recent call last)
[36mCell[39m[36m [39m[32mIn[9][39m[32m, line 6[39m
[32m 2[39m [38;5;66;03m# plt.plot(W, Ph(W)*F(W)*L0(W)*U(W)*S(W)*X(W)*R_no_resum(W))[39;00m
[32m 3[39m [38;5;66;03m# plt.plot(W, Ph(W)*F(W))[39;00m
[32m 4[39m
[32m 5[39m YSCALE = [33m"lin"[39m
[32m----> [39m[32m6[39m plt.yscale(YSCALE)
[32m 7[39m [38;5;28;01mif[39;00m YSCALE == [33m"linear"[39m:
[32m 8[39m plt.ylim([32m0[39m,)
[32m 9[39m
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/pyplot.py:4435[39m, in [36myscale[39m[34m(value, **kwargs)[39m
[32m 4433[39m [38;5;129m@_copy_docstring_and_deprecators[39m(Axes.set_yscale)
[32m 4434[39m [38;5;28;01mdef[39;00m[38;5;250m [39m[34myscale[39m(value: [38;5;28mstr[39m | ScaleBase, **kwargs) -> [38;5;28;01mNone[39;00m:
[32m-> [39m[32m4435[39m [43mgca[49m[43m([49m[43m)[49m[43m.[49m[43mset_yscale[49m[43m([49m[43mvalue[49m[43m,[49m[43m [49m[43m*[49m[43m*[49m[43mkwargs[49m[43m)[49m
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/axes/_base.py:74[39m, in [36m_axis_method_wrapper.__set_name__.<locals>.wrapper[39m[34m(self, *args, **kwargs)[39m
[32m 73[39m [38;5;28;01mdef[39;00m[38;5;250m [39m[34mwrapper[39m([38;5;28mself[39m, *args, **kwargs):
[32m---> [39m[32m74[39m [38;5;28;01mreturn[39;00m [43mget_method[49m[43m([49m[38;5;28;43mself[39;49m[43m)[49m[43m([49m[43m*[49m[43margs[49m[43m,[49m[43m [49m[43m*[49m[43m*[49m[43mkwargs[49m[43m)[49m
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/axis.py:794[39m, in [36mAxis._set_axes_scale[39m[34m(self, value, **kwargs)[39m
[32m 791[39m old_default_lims = ([38;5;28mself[39m.get_major_locator()
[32m 792[39m .nonsingular(-np.inf, np.inf))
[32m 793[39m [38;5;28;01mfor[39;00m ax [38;5;129;01min[39;00m [38;5;28mself[39m._get_shared_axes():
[32m--> [39m[32m794[39m [43max[49m[43m.[49m[43m_axis_map[49m[43m[[49m[43mname[49m[43m][49m[43m.[49m[43m_set_scale[49m[43m([49m[43mvalue[49m[43m,[49m[43m [49m[43m*[49m[43m*[49m[43mkwargs[49m[43m)[49m
[32m 795[39m ax._update_transScale()
[32m 796[39m ax.stale = [38;5;28;01mTrue[39;00m
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/axis.py:763[39m, in [36mAxis._set_scale[39m[34m(self, value, **kwargs)[39m
[32m 761[39m [38;5;28;01mdef[39;00m[38;5;250m [39m[34m_set_scale[39m([38;5;28mself[39m, value, **kwargs):
[32m 762[39m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m [38;5;28misinstance[39m(value, mscale.ScaleBase):
[32m--> [39m[32m763[39m [38;5;28mself[39m._scale = [43mmscale[49m[43m.[49m[43mscale_factory[49m[43m([49m[43mvalue[49m[43m,[49m[43m [49m[38;5;28;43mself[39;49m[43m,[49m[43m [49m[43m*[49m[43m*[49m[43mkwargs[49m[43m)[49m
[32m 764[39m [38;5;28;01melse[39;00m:
[32m 765[39m [38;5;28mself[39m._scale = value
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/scale.py:727[39m, in [36mscale_factory[39m[34m(scale, axis, **kwargs)[39m
[32m 718[39m [38;5;28;01mdef[39;00m[38;5;250m [39m[34mscale_factory[39m(scale, axis, **kwargs):
[32m 719[39m [38;5;250m [39m[33;03m"""[39;00m
[32m 720[39m [33;03m Return a scale class by name.[39;00m
[32m 721[39m
[32m (...)[39m[32m 725[39m [33;03m axis : `~matplotlib.axis.Axis`[39;00m
[32m 726[39m [33;03m """[39;00m
[32m--> [39m[32m727[39m scale_cls = [43m_api[49m[43m.[49m[43mcheck_getitem[49m[43m([49m[43m_scale_mapping[49m[43m,[49m[43m [49m[43mscale[49m[43m=[49m[43mscale[49m[43m)[49m
[32m 728[39m [38;5;28;01mreturn[39;00m scale_cls(axis, **kwargs)
[36mFile [39m[32m~/.pyenv/sci/lib/python3.14/site-packages/matplotlib/_api/__init__.py:198[39m, in [36mcheck_getitem[39m[34m(mapping, **kwargs)[39m
[32m 196[39m [38;5;28;01mreturn[39;00m mapping[v]
[32m 197[39m [38;5;28;01mexcept[39;00m [38;5;167;01mKeyError[39;00m:
[32m--> [39m[32m198[39m [38;5;28;01mraise[39;00m [38;5;167;01mValueError[39;00m(
[32m 199[39m [33mf[39m[33m"[39m[38;5;132;01m{[39;00mv[38;5;132;01m!r}[39;00m[33m is not a valid value for [39m[38;5;132;01m{[39;00mk[38;5;132;01m}[39;00m[33m; supported values are [39m[33m"[39m
[32m 200[39m [33mf[39m[33m"[39m[38;5;132;01m{[39;00m[33m'[39m[33m, [39m[33m'[39m.join([38;5;28mmap[39m([38;5;28mrepr[39m,[38;5;250m [39mmapping))[38;5;132;01m}[39;00m[33m"[39m) [38;5;28;01mfrom[39;00m[38;5;250m [39m[38;5;28;01mNone[39;00m
[31mValueError[39m: 'lin' is not a valid value for scale; supported values are 'linear', 'log', 'symlog', 'asinh', 'logit', 'function', 'functionlog'In [ ]: