flavio.physics.kdecays.kpinunu module
Observables in $K\to \pi\nu\bar\nu$ decays
r"""Observables in $K\to \pi\nu\bar\nu$ decays""" import flavio from flavio.classes import Observable, Prediction from math import sqrt, pi def kpinunu_amplitude(wc_obj, par, nu1, nu2): # This is the amplitude for $K\to\pi\nu\bar\nu$ (charged or neutral) in # some convenient normalization # top and charm CKM factors xi_t = flavio.physics.ckm.xi('t', 'ds')(par) xi_c = flavio.physics.ckm.xi('c', 'ds')(par) label = 'sd' + nu1 + nu2 # e.g. sdnuenue, sdnutaunumu scale = flavio.config['renormalization scale']['kdecays'] # Wilson coefficients wc = wc_obj.get_wc(label, scale, par, nf_out=3) if nu1 == nu2: # add the SM contribution only if neutrino flavours coincide wc['CL_'+label] += flavio.physics.bdecays.wilsoncoefficients.CL_SM(par, scale) s2w = par['s2w'] X = -( wc['CL_'+label] + wc['CR_'+label] ) * s2w Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) PcX = kpinunu_charm(par) deltaPcu = par['deltaPcu'] amp = xi_t * X # top contribution if nu1 == nu2: # add the charm contribution if neutrino flavours coincide amp += xi_c * (PcX + deltaPcu) * Vus**4 return amp def kpinunu_charm(par): r"""Charm contribution to the $K\to\pi\nu\bar\nu$ amplitude conventionally denoted as $P_c(X)$""" mc = par['m_c'] alpha_s = par['alpha_s'] # approximate formula for NNLO perturbative result: (14) of hep-ph/0603079 flavio.citations.register("Buras:2006gb") return 0.379 * (mc/1.3)**2.155 * (alpha_s/0.1187)**(-1.417) def kappa_nu_tilde(par, charge): r"""$\kappa_\nu^{+,L}$ parameters in units of $1/|V_{us}|^8$ from arXiv:0705.2025""" flavio.citations.register("Mescia:2007kn") if charge == 'plus': kappa_tilde = par['kappa_plus_tilde'] elif charge == 'long': kappa_tilde = par['kappa_L_tilde'] else: raise ValueError("Argument `charge` must be 'plus' or 'long'") scale = flavio.config['renormalization scale']['kdecays'] alpha_e_scale = flavio.physics.running.running.get_alpha(par, scale)['alpha_e'] r_Vus = 1/0.225**8 # this is because kappa_nu is defined for a fixed value of Vus! r_alpha = alpha_e_scale**2 * 127.9**2 # 0705.2025 Eq. (11), convert alpha(MZ) to alpha(mu) r_s2w = 0.231**2 / par['s2w']**2 # 0705.2025 Eq. (11) return kappa_tilde * r_Vus * r_alpha * r_s2w def br_kplus_pinunu(wc_obj, par, nu1, nu2): r"""Branching ratio of $K^+\pi^+\nu\bar\nu$ for fixed neutrino flavours""" amp = kpinunu_amplitude(wc_obj, par, nu1, nu2) Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) return abs(amp)**2 * kappa_nu_tilde(par, 'plus') / Vus**2 / 3. def br_klong_pinunu(wc_obj, par, nu1, nu2): r"""Branching ratio of $K_L\pi^0\nu\bar\nu$ for fixed neutrino flavours""" amp = kpinunu_amplitude(wc_obj, par, nu1, nu2) Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) return amp.imag**2 * kappa_nu_tilde(par, 'long') / Vus**2 / 3. def br_kplus_pinunu_summed(wc_obj, par): r"""Branching ratio of $K^+\pi^+\nu\bar\nu$ summed over neutrino flavours""" f = ['nue', 'numu', 'nutau'] brs = [ br_kplus_pinunu(wc_obj, par, nu1, nu2) for nu1 in f for nu2 in f ] return sum(brs) def br_klong_pinunu_summed(wc_obj, par): r"""Branching ratio of $K_L\pi^0\nu\bar\nu$ summed over neutrino flavours""" f = ['nue', 'numu', 'nutau'] brs = [ br_klong_pinunu(wc_obj, par, nu1, nu2) for nu1 in f for nu2 in f ] return sum(brs) # Observable and Prediction instances _process_taxonomy = r'Process :: $s$ hadron decays :: FCNC decays :: $K\to \pi\nu\bar\nu$ :: ' _obs_name = "BR(K+->pinunu)" _obs = flavio.classes.Observable(name=_obs_name) _tex = r"K^+\to\pi^+\nu\bar\nu" _obs.set_description(r"Branching ratio of $" + _tex + r"$") _obs.tex = r"$\text{BR}(" + _tex + r")$" _obs.add_taxonomy(_process_taxonomy + r'$' + _tex + r'$') flavio.classes.Prediction(_obs_name, br_kplus_pinunu_summed) _obs_name = "BR(KL->pinunu)" _obs = flavio.classes.Observable(name=_obs_name) _tex = r"K_L\to\pi^0\nu\bar\nu" _obs.set_description(r"Branching ratio of $" + _tex + r"$") _obs.tex = r"$\text{BR}(" + _tex + r")$" _obs.add_taxonomy(_process_taxonomy + r'$' + _tex + r'$') flavio.classes.Prediction(_obs_name, br_klong_pinunu_summed)
Module variables
var pi
Functions
def br_klong_pinunu(
wc_obj, par, nu1, nu2)
Branching ratio of $K_L\pi^0\nu\bar\nu$ for fixed neutrino flavours
def br_klong_pinunu(wc_obj, par, nu1, nu2): r"""Branching ratio of $K_L\pi^0\nu\bar\nu$ for fixed neutrino flavours""" amp = kpinunu_amplitude(wc_obj, par, nu1, nu2) Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) return amp.imag**2 * kappa_nu_tilde(par, 'long') / Vus**2 / 3.
def br_klong_pinunu_summed(
wc_obj, par)
Branching ratio of $K_L\pi^0\nu\bar\nu$ summed over neutrino flavours
def br_klong_pinunu_summed(wc_obj, par): r"""Branching ratio of $K_L\pi^0\nu\bar\nu$ summed over neutrino flavours""" f = ['nue', 'numu', 'nutau'] brs = [ br_klong_pinunu(wc_obj, par, nu1, nu2) for nu1 in f for nu2 in f ] return sum(brs)
def br_kplus_pinunu(
wc_obj, par, nu1, nu2)
Branching ratio of $K^+\pi^+\nu\bar\nu$ for fixed neutrino flavours
def br_kplus_pinunu(wc_obj, par, nu1, nu2): r"""Branching ratio of $K^+\pi^+\nu\bar\nu$ for fixed neutrino flavours""" amp = kpinunu_amplitude(wc_obj, par, nu1, nu2) Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) return abs(amp)**2 * kappa_nu_tilde(par, 'plus') / Vus**2 / 3.
def br_kplus_pinunu_summed(
wc_obj, par)
Branching ratio of $K^+\pi^+\nu\bar\nu$ summed over neutrino flavours
def br_kplus_pinunu_summed(wc_obj, par): r"""Branching ratio of $K^+\pi^+\nu\bar\nu$ summed over neutrino flavours""" f = ['nue', 'numu', 'nutau'] brs = [ br_kplus_pinunu(wc_obj, par, nu1, nu2) for nu1 in f for nu2 in f ] return sum(brs)
def kappa_nu_tilde(
par, charge)
$\kappa_\nu^{+,L}$ parameters in units of $1/|V_{us}|^8$ from arXiv:0705.2025
def kappa_nu_tilde(par, charge): r"""$\kappa_\nu^{+,L}$ parameters in units of $1/|V_{us}|^8$ from arXiv:0705.2025""" flavio.citations.register("Mescia:2007kn") if charge == 'plus': kappa_tilde = par['kappa_plus_tilde'] elif charge == 'long': kappa_tilde = par['kappa_L_tilde'] else: raise ValueError("Argument `charge` must be 'plus' or 'long'") scale = flavio.config['renormalization scale']['kdecays'] alpha_e_scale = flavio.physics.running.running.get_alpha(par, scale)['alpha_e'] r_Vus = 1/0.225**8 # this is because kappa_nu is defined for a fixed value of Vus! r_alpha = alpha_e_scale**2 * 127.9**2 # 0705.2025 Eq. (11), convert alpha(MZ) to alpha(mu) r_s2w = 0.231**2 / par['s2w']**2 # 0705.2025 Eq. (11) return kappa_tilde * r_Vus * r_alpha * r_s2w
def kpinunu_amplitude(
wc_obj, par, nu1, nu2)
def kpinunu_amplitude(wc_obj, par, nu1, nu2): # This is the amplitude for $K\to\pi\nu\bar\nu$ (charged or neutral) in # some convenient normalization # top and charm CKM factors xi_t = flavio.physics.ckm.xi('t', 'ds')(par) xi_c = flavio.physics.ckm.xi('c', 'ds')(par) label = 'sd' + nu1 + nu2 # e.g. sdnuenue, sdnutaunumu scale = flavio.config['renormalization scale']['kdecays'] # Wilson coefficients wc = wc_obj.get_wc(label, scale, par, nf_out=3) if nu1 == nu2: # add the SM contribution only if neutrino flavours coincide wc['CL_'+label] += flavio.physics.bdecays.wilsoncoefficients.CL_SM(par, scale) s2w = par['s2w'] X = -( wc['CL_'+label] + wc['CR_'+label] ) * s2w Vus = abs(flavio.physics.ckm.get_ckm(par)[0,1]) PcX = kpinunu_charm(par) deltaPcu = par['deltaPcu'] amp = xi_t * X # top contribution if nu1 == nu2: # add the charm contribution if neutrino flavours coincide amp += xi_c * (PcX + deltaPcu) * Vus**4 return amp
def kpinunu_charm(
par)
Charm contribution to the $K\to\pi\nu\bar\nu$ amplitude conventionally denoted as $P_c(X)$
def kpinunu_charm(par): r"""Charm contribution to the $K\to\pi\nu\bar\nu$ amplitude conventionally denoted as $P_c(X)$""" mc = par['m_c'] alpha_s = par['alpha_s'] # approximate formula for NNLO perturbative result: (14) of hep-ph/0603079 flavio.citations.register("Buras:2006gb") return 0.379 * (mc/1.3)**2.155 * (alpha_s/0.1187)**(-1.417)