Module flavio.physics.kdecays.kpilnu
Functions for $K\to \pi\ell\nu$ decays.
Functions
def BR_binned(q2min, q2max, wc_obj, par, K, P, lep)-
Expand source code
def BR_binned(q2min, q2max, wc_obj, par, K, P, lep): def integrand(q2): return dBRdq2(q2, wc_obj, par, K, P, lep) return flavio.math.integrate.nintegrate(integrand, q2min, q2max) def BR_tot(wc_obj, par, K, P, lep)-
Expand source code
def BR_tot(wc_obj, par, K, P, lep): mK = par['m_'+K] mP = par['m_'+P] ml = par['m_'+lep] q2max = (mK-mP)**2 q2min = ml**2 return BR_binned(q2min, q2max, wc_obj, par, K, P, lep) def BR_tot_function(K, P, lep)-
Expand source code
def BR_tot_function(K, P, lep): return lambda wc_obj, par: BR_tot(wc_obj, par, K, P, lep) def RT(wc_obj, par, lep)-
Expand source code
def RT(wc_obj, par, lep): mK = par['m_KL'] mP = par['m_pi+'] scale = par['m_rho0'] ms = flavio.physics.running.running.get_ms(par, scale) wc = flavio.physics.bdecays.wilsoncoefficients.get_wceff_fccc(wc_obj, par, 'su', lep, lep, ms, scale, nf=3) ff = get_ff(0, par, 'KL') BT = ff['fT'] * 2 * mK / (mK + mP) # convert between tensor FF conventions return -2 * BT / ff['f+'] * wc['tp'].real def RT_function(lep)-
Expand source code
def RT_function(lep): def _(wc_obj, par): return RT(wc_obj, par, lep) return _ def dBRdq2(q2, wc_obj, par, K, P, lep)-
Expand source code
def dBRdq2(q2, wc_obj, par, K, P, lep): ml = par['m_'+lep] mK = par['m_'+K] mP = par['m_'+P] if q2 < ml**2 or q2 > (mK-mP)**2: return 0 tauK = par['tau_'+K] J = get_angularcoeff(q2, wc_obj, par, K, P, lep) if P == 'pi0': # factor of 1/2 for neutral pi due to pi = (uubar-ddbar)/sqrt(2) return tauK * dGdq2(J) / 2. if K == 'K+': deltaEM = par['K+' + lep + '3 delta_EM'] # e.g. 'K+e3 delta_EM' elif K == 'KL' or K == 'KS': deltaEM = par['K0' + lep + '3 delta_EM'] # e.g. 'K+e3 delta_EM' return tauK * dGdq2(J) * (1 + deltaEM)**2 def dGdq2(J)-
Expand source code
def dGdq2(J): return 2 * (J['a'] + J['c']/3.) def get_angularcoeff(q2, wc_obj, par, K, P, lep)-
Expand source code
def get_angularcoeff(q2, wc_obj, par, K, P, lep): Jlist = [_get_angularcoeff(q2, wc_obj, par, K, P, lep, nu) for nu in ['e', 'mu', 'tau']] J = {} J['a'] = sum([JJ['a'] for JJ in Jlist]) J['b'] = sum([JJ['b'] for JJ in Jlist]) J['c'] = sum([JJ['c'] for JJ in Jlist]) return J def get_ff(q2, par, K)-
Expand source code
def get_ff(q2, par, K): ff_name = 'K->pi form factor' ff_K0 = flavio.classes.AuxiliaryQuantity[ff_name].prediction(par_dict=par, wc_obj=None, q2=q2) if K == 'KL' or K == 'KS': return ff_K0 elif K == 'K+': # isospin breaking correction for K+->pi0lnu: multiply all FFs by 1+delta return {k: (par['K->pi delta_K+pi0'] + 1)*v for k,v in ff_K0.items()} def logC(wc_obj, par, lep)-
Expand source code
def logC(wc_obj, par, lep): mK = par['m_KL'] mP = par['m_pi+'] ml = par['m_' + lep] q2 = mK**2 - mP**2 ff = get_ff(q2, par, 'KL') ff0 = get_ff(0, par, 'KL') scale = par['m_rho0'] ms = flavio.physics.running.running.get_ms(par, scale) wc = flavio.physics.bdecays.wilsoncoefficients.get_wceff_fccc(wc_obj, par, 'su', lep, lep, ms, scale, nf=3) A = ml / q2 * (wc['a'] + wc['ap']).real mu = 0 # mu/ms neglected C = ff['f0'] / ff0['f0'] * ((wc['p'] + wc['pp']).real / (ms + mu) + A) / A return log(C) def logC_function(lep)-
Expand source code
def logC_function(lep): def _(wc_obj, par): return logC(wc_obj, par, lep) return _