Module flavio.physics.betadecays.ft
Functions for nuclear and neutron beta decay effective couplings and $Ft$ values.
Functions
def A(C, MF, MGT, J, Jf, s)-
Expand source code
def A(C, MF, MGT, J, Jf, s): r"""Correlation coefficient $A$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. The sign `s` is + for the electron and - for the positron.""" return A_xi(C, MF, MGT, J, Jf, s) / xi(C, MF, MGT)Correlation coefficient $A$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf. The signsis + for the electron and - for the positron. def A_xi(C, MF, MGT, J, Jf, s)-
Expand source code
def A_xi(C, MF, MGT, J, Jf, s): r"""Correlation coefficients $A\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. The sign `s` is + for the electron and - for the positron.""" # note that C_i' = C_i return 2 * (s * abs(MGT)**2 * la(Jf, J) * (abs(C['T'])**2 - abs(C['A'])**2) + dl(Jf, J) * abs(MF) * abs(MGT) * sqrt(J / (J + 1)) * (2 * C['S'] * C['T'].conjugate() - 2 * C['V'] * C['A'].conjugate())).realCorrelation coefficients $A\xi$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf. The signsis + for the electron and - for the positron. def B(C, MF, MGT, J, Jf, me_E, s)-
Expand source code
def B(C, MF, MGT, J, Jf, me_E, s): r"""Correlation coefficient $B$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. `me_E` is the ratio of electron mass and energy. The sign `s` is + for the electron and - for the positron.""" return B_xi(C, MF, MGT, J, Jf, me_E, s) / xi(C, MF, MGT)Correlation coefficient $B$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf.me_Eis the ratio of electron mass and energy. The signsis + for the electron and - for the positron. def B_xi(C, MF, MGT, J, Jf, me_E, s)-
Expand source code
def B_xi(C, MF, MGT, J, Jf, me_E, s): r"""Correlation coefficients $B\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. `me_E` is the ratio of electron mass and energy. The sign `s` is + for the electron and - for the positron.""" # note that C_i' = C_i return 2 * (abs(MGT)**2 * la(Jf, J) * (me_E * 2 * C['T'] * C['A'].conjugate() + s * (abs(C['T'])**2 + abs(C['A'])**2)) - dl(Jf, J) * abs(MF) * abs(MGT) * sqrt(J / (J + 1)) * ((2 * C['S'] * C['T'].conjugate() + 2 * C['V'] * C['A'].conjugate()) + s * me_E * (2 * C['S'] * C['A'].conjugate() + 2 * C['V'] * C['T'].conjugate()))).realCorrelation coefficients $B\xi$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf.me_Eis the ratio of electron mass and energy. The signsis + for the electron and - for the positron. def D(C, MF, MGT, J, Jf)-
Expand source code
def D(C, MF, MGT, J, Jf): r"""Correlation coefficient $D$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`.""" return D_xi(C, MF, MGT, J, Jf) / xi(C, MF, MGT)Correlation coefficient $D$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf. def D_xi(C, MF, MGT, J, Jf)-
Expand source code
def D_xi(C, MF, MGT, J, Jf): r"""Correlation coefficients $D\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. `me_E` is the ratio of electron mass and energy.""" # note that C_i' = C_i return 2 * (dl(Jf, J) * abs(MF) * abs(MGT) * sqrt(J / (J + 1)) * (2 * C['S'] * C['T'].conjugate() - 2 * C['V'] * C['A'].conjugate())).imagCorrelation coefficients $D\xi$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf.me_Eis the ratio of electron mass and energy. def Ft_fct(A)-
Expand source code
def Ft_fct(A): def _(wc_obj, par): return Ft_superallowed(par, wc_obj, A) return _ def Ft_superallowed(par, wc_obj, A)-
Expand source code
def Ft_superallowed(par, wc_obj, A): r"""Corrected $\mathcal{F}t$ value of the beta decay of isotope `A`.""" MF = sqrt(2) MGT = 0 Z = nuclei_superallowed[A]['Z'] scale = config['renormalization scale']['betadecay'] C = wc_eff(par, wc_obj, scale, nu='e') Xi = xi(C, MF, MGT) B = b(C, MF, MGT, par['alpha_e'], Z, s=-1) # s=-1 for beta+ decay me_E = nuclei_superallowed[A]['<me/E>'] Vud = get_ckm(par)[0, 0] GF = GFeff(wc_obj, par) pre = GF / sqrt(2) * Vud ddRp = par['delta_deltaRp_Z2'] * Z**2 # relative uncertainty on \delta R' (universal) ddNS_A = par[f'delta_deltaNS,A'] # systematic uncertainty on \delta_NS,A # systematic uncertainty on \delta_NS,E for a specific decay ddNS_E = par['delta_deltaNS,E_QEC'] * Q_EC[A] return (1 + ddRp + ddNS_A + ddNS_E) * K(par) / Xi * 1 / (1 + B * me_E) / abs(pre)**2Corrected $\mathcal{F}t$ value of the beta decay of isotope
A(). def K(par)-
Expand source code
def K(par): me = par['m_e'] return 2 * pi**3 * log(2) / me**5 def R(C, MF, MGT, J, Jf, s)-
Expand source code
def R(C, MF, MGT, J, Jf, s): r"""Correlation coefficient $R$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. The sign `s` is + for the electron and - for the positron.""" return R_xi(C, MF, MGT, J, Jf, s) / xi(C, MF, MGT)Correlation coefficient $R$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf. The signsis + for the electron and - for the positron. def R_xi(C, MF, MGT, J, Jf, s)-
Expand source code
def R_xi(C, MF, MGT, J, Jf, s): r"""Correlation coefficients $R\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, and the angular momenta of initial and final state nuclei, `J` and `Jf`. The sign `s` is + for the electron and - for the positron.""" # note that C_i' = C_i return 2 * (s * abs(MGT)**2 * la(Jf, J) * 2 * C['T'] * C['A'].conjugate() + dl(Jf, J) * abs(MF) * abs(MGT) * sqrt(J / (J + 1)) * (2 * C['S'] * C['A'].conjugate() - 2 * C['V'] * C['T'].conjugate())).imagCorrelation coefficients $R\xi$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, and the angular momenta of initial and final state nuclei,JandJf. The signsis + for the electron and - for the positron. def a(C, MF, MGT)-
Expand source code
def a(C, MF, MGT): r"""Correlation coefficient $a$ as function of the effective couplings `C`, the Fermi matrix element `MF` and the Gamow-Teller matrix element `MGT`.""" return a_xi(C, MF, MGT) / xi(C, MF, MGT)Correlation coefficient $a$ as function of the effective couplings
C, the Fermi matrix elementMFand the Gamow-Teller matrix elementMGT. def a_xi(C, MF, MGT)-
Expand source code
def a_xi(C, MF, MGT): r"""Correlation coefficients $a\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF` and the Gamow-Teller matrix element `MGT`.""" # eq. (16) of arXiv:1803.08732 # note that C_i' = C_i flavio.citations.register("Gonzalez-Alonso:2018omy") return 2 * (abs(MF)**2 * (abs(C['V'])**2 - abs(C['S'])**2) - 1 / 3 * abs(MGT)**2 * (abs(C['A'])**2 - abs(C['T'])**2))Correlation coefficients $a\xi$ as function of the effective couplings
C, the Fermi matrix elementMFand the Gamow-Teller matrix elementMGT. def b(C, MF, MGT, alpha, Z, s)-
Expand source code
def b(C, MF, MGT, alpha, Z, s): r"""Correlation coefficient $b$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, the fine structure constant `alpha`, and the nucleon charge `Z`.""" return b_xi(C, MF, MGT, alpha, Z, s) / xi(C, MF, MGT)Correlation coefficient $b$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, the fine structure constantalpha, and the nucleon chargeZ. def b_xi(C, MF, MGT, alpha, Z, s)-
Expand source code
def b_xi(C, MF, MGT, alpha, Z, s): r"""Correlation coefficients $b\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF`, the Gamow-Teller matrix element `MGT`, the fine structure constant `alpha`, and the nucleon charge `Z`. The sign `s` is + for the electron and - for the positron.""" # eq. (17) of arXiv:1803.08732 # note that C_i' = C_i flavio.citations.register("Gonzalez-Alonso:2018omy") gamma = sqrt(1 - alpha**2 * Z**2) return s * 2 * gamma * 2 * (abs(MF)**2 * (C['V'] * C['S'].conjugate()).real + abs(MGT)**2 * (C['A'] * C['T'].conjugate()).real)Correlation coefficients $b\xi$ as function of the effective couplings
C, the Fermi matrix elementMF, the Gamow-Teller matrix elementMGT, the fine structure constantalpha, and the nucleon chargeZ. The signsis + for the electron and - for the positron. def dl(Jp, J)-
Expand source code
def dl(Jp, J): """Kronecker's delta""" if Jp == J: return 1 else: return 0Kronecker's delta
def func(wc_obj, par, me_E)-
Expand source code
func = lambda wc_obj, par, me_E: Neutron_tau(wc_obj, par, me_E)() def get_daughter(nuclide)-
Expand source code
def get_daughter(nuclide): r"""Get the symbol and tex code of the daughter nuclide.""" A = re.search(r'\d+', nuclide).group() symbol = re.search(r'[A-Z].*', nuclide).group() Z = elements.Z(symbol) daughter_symbol = elements.symbol(Z - 1) return {'name': '{}{}'.format(A, daughter_symbol), 'tex': r'{{}}^{{{}}}\text{{{}}}'.format(A, daughter_symbol)}Get the symbol and tex code of the daughter nuclide.
def la(Jp, J)-
Expand source code
def la(Jp, J): """Eq. (A1)""" if Jp == J - 1: return 1 elif Jp == J: return 1 / (J + 1) elif Jp == J + 1: return -J / (J + 1) else: raise ValueError("Invalid input for function `la`")Eq. (A1)
def make_obs_neutron_corr(coeff, me_E=False)-
Expand source code
def make_obs_neutron_corr(coeff, me_E=False): _process_tex = r"n\to p^+ e^-\bar\nu_e" _process_taxonomy = r'Process :: Nucleon decays :: Beta decays :: Neutron decay :: $' + _process_tex + r"$" _obs_name = coeff + "_n" if me_E: _obs = Observable(_obs_name, arguments=['me_E']) else: _obs = Observable(_obs_name) _obs.set_description(r"Correlation coefficient $" + tex + r"$ in neutron beta decay") _obs.tex = r"$" + tex + r"$" _obs.add_taxonomy(_process_taxonomy) if me_E: func = lambda wc_obj, par, me_E: Neutron_corr(wc_obj, par, me_E, coeff)() else: func = lambda wc_obj, par: Neutron_corr(wc_obj, par, None, coeff)() Prediction(_obs_name, func) def xi(C, MF, MGT)-
Expand source code
def xi(C, MF, MGT): r"""Correlation coefficient $\xi$ as function of the effective couplings `C`, the Fermi matrix element `MF` and the Gamow-Teller matrix element `MGT`.""" # eq. (15) of arXiv:1803.08732 # note that C_i' = C_i flavio.citations.register("Gonzalez-Alonso:2018omy") return 2 * (abs(MF)**2 * (abs(C['V'])**2 + abs(C['S'])**2) + abs(MGT)**2 * (abs(C['A'])**2 + abs(C['T'])**2))Correlation coefficient $\xi$ as function of the effective couplings
C, the Fermi matrix elementMFand the Gamow-Teller matrix elementMGT.
Classes
class NeutronObservable (wc_obj, par, me_E)-
Expand source code
class NeutronObservable: def __init__(self, wc_obj, par, me_E): self.wc_obj = wc_obj self.par = par self.me_E = me_E self.MF = 1 self.MGT = sqrt(3) self.scale = config['renormalization scale']['betadecay'] self.C = wc_eff(par, wc_obj, self.scale, nu='e') self.s = 1 # electron e- in final state self.Z = 0 self.alpha = par['alpha_e'] self.J = 1 / 2 self.Jf = 1 / 2 def xi(self): return xi(self.C, self.MF, self.MGT) def a(self): return a(self.C, self.MF, self.MGT) def b(self): return b(self.C, self.MF, self.MGT, self.alpha, self.Z, self.s) def A(self): return A(self.C, self.MF, self.MGT, self.J, self.Jf, self.s) def B(self): return B(self.C, self.MF, self.MGT, self.J, self.Jf, self.me_E, self.s) def D(self): return D(self.C, self.MF, self.MGT, self.J, self.Jf) def R(self): return R(self.C, self.MF, self.MGT, self.J, self.Jf, self.s)Subclasses
Methods
def A(self)-
Expand source code
def A(self): return A(self.C, self.MF, self.MGT, self.J, self.Jf, self.s) def B(self)-
Expand source code
def B(self): return B(self.C, self.MF, self.MGT, self.J, self.Jf, self.me_E, self.s) def D(self)-
Expand source code
def D(self): return D(self.C, self.MF, self.MGT, self.J, self.Jf) def R(self)-
Expand source code
def R(self): return R(self.C, self.MF, self.MGT, self.J, self.Jf, self.s) def a(self)-
Expand source code
def a(self): return a(self.C, self.MF, self.MGT) def b(self)-
Expand source code
def b(self): return b(self.C, self.MF, self.MGT, self.alpha, self.Z, self.s) def xi(self)-
Expand source code
def xi(self): return xi(self.C, self.MF, self.MGT)
class Neutron_corr (wc_obj, par, me_E, coeff)-
Expand source code
class Neutron_corr(NeutronObservable): def __init__(self, wc_obj, par, me_E, coeff): super().__init__(wc_obj, par, me_E) self.coeff = coeff def __call__(self): if self.coeff == 'a': return self.a() elif self.coeff == 'atilde': return self.a() / (1 + self.b() * self.me_E) if self.coeff == 'b': return self.b() elif self.coeff == 'A': return self.A() elif self.coeff == 'Atilde': return self.A() / (1 + self.b() * self.me_E) elif self.coeff == 'B': return self.B() elif self.coeff == 'Btilde': return self.B() / (1 + self.b() * self.me_E) elif self.coeff == 'lambdaAB': _A = self.A() _B = self.B() return (_A - _B) / (_A + _B) elif self.coeff == 'D': return self.D() elif self.coeff == 'R': return self.R()Ancestors
class Neutron_tau (wc_obj, par, me_E)-
Expand source code
class Neutron_tau(NeutronObservable): def __init__(self, wc_obj, par, me_E): super().__init__(wc_obj, par, me_E) def __call__(self): Vud = get_ckm(self.par)[0, 0] GF = GFeff(self.wc_obj, self.par) pre = GF / sqrt(2) * Vud ft = K(self.par) / self.xi() * 1 / (1 + self.b() * self.me_E) / abs(pre)**2 fn = self.par['f_n'] Rp = self.par['deltaRp_n'] return ft / log(2) / fn / (1 + Rp)Ancestors