Add implementation for the basic set of spectrum components: Primary ------- - Phase Space - Fermi Function Corrections ----------- - Atomic: - Screening - Atomic exchange - E/M and finite size: - Finite nucleus size and charge distribution - Radiative
146 KiB
146 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.utils import W_to_TIn [2]:
W0 = 1.574
Z = 44
A = 99
W = np.linspace(1.001, W0, 1000)
F = FermiFunction(Z, A)
Ph = PhaseSpace(W0=W0, m_nu=0)
L0 = FiniteSizeL0(Z, A)
U = ChargeDistributionU(Z, A)
S = ScreeningCorrection(F)
X = ExchangeCorrection(Z)
R = RadiativeCorrection(W0)
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 0x7f9eafcea660>]
In [5]:
plt.plot(W, U(W) - 1)Out [5]:
[<matplotlib.lines.Line2D at 0x7f9eafcbbcb0>]
In [6]:
plt.plot(W, S(W))
plt.plot(W, X(W))Out [6]:
[<matplotlib.lines.Line2D at 0x7f9eafa69010>]
In [7]:
plt.plot(W, R(W))
plt.plot(W, R_no_resum(W))Out [7]:
[<matplotlib.lines.Line2D at 0x7f9eafaf5a90>]
In [8]:
plt.plot(W, Ph(W)*F(W)*L0(W)*U(W)*S(W)*X(W)*R(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))
# plt.yscale("log")
# plt.xlim(1.0005,)Out [8]:
[<matplotlib.lines.Line2D at 0x7f9eafb63230>]
In [ ]: