def get_input(par, B, V, scale): mB = par['m_'+B] mb = running.get_mb_pole(par) mc = running.get_mc_pole(par) alpha_s = running.get_alpha(par, scale)['alpha_s'] q = meson_spectator[(B,V)] # spectator quark flavour qiqj = meson_quark[(B,V)] eq = quark_charge[q] # charge of the spectator quark ed = -1/3. eu = 2/3. xi_t = ckm.xi('t', qiqj)(par) xi_u = ckm.xi('u', qiqj)(par) eps_u = xi_u/xi_t return mB, mb, mc, alpha_s, q, eq, ed, eu, eps_u, qiqj
def get_input(par, B, V, scale): mB = par['m_' + B] mb = running.get_mb_pole(par) mc = running.get_mc_pole(par) alpha_s = running.get_alpha(par, scale)['alpha_s'] q = meson_spectator[(B, V)] # spectator quark flavour qiqj = meson_quark[(B, V)] eq = quark_charge[q] # charge of the spectator quark ed = -1 / 3. eu = 2 / 3. xi_t = ckm.xi('t', qiqj)(par) xi_u = ckm.xi('u', qiqj)(par) eps_u = xi_u / xi_t return mB, mb, mc, alpha_s, q, eq, ed, eu, eps_u, qiqj
def Y(q2, wc, par, scale, qiqj): """Function $Y$ that contains the contributions of the matrix elements of four-quark operators to the effective Wilson coefficient $C_9^{\mathrm{eff}}=C_9 + Y(q^2)$. See e.g. eq. (10) of 0811.1214v5.""" mb = running.get_mb_pole(par) mc = running.get_mc_pole(par) F_c = 4/3.*wc['C1_'+qiqj] + wc['C2_'+qiqj] + 6*wc['C3_'+qiqj] + 60*wc['C5_'+qiqj] F_b = 7*wc['C3_'+qiqj] + 4/3.*wc['C4_'+qiqj] + 76*wc['C5_'+qiqj] + 64/3.*wc['C6_'+qiqj] F_u = wc['C3_'+qiqj] + 4/3.*wc['C4_'+qiqj] + 16*wc['C5_'+qiqj] + 64/3.*wc['C6_'+qiqj] F_4 = 4/3.*wc['C3_'+qiqj] + 64/9.*wc['C5_'+qiqj] + 64/27.*wc['C6_'+qiqj] return ( h(s=q2, mq=mc, mu=scale) * F_c - 1/2. * h(s=q2, mq=mb, mu=scale) * F_b - 1/2. * h(s=q2, mq=0., mu=scale) * F_u + F_4 )
def delta_C9(par, wc, q2, scale, qiqj): alpha_s = running.get_alpha(par, scale)['alpha_s'] mb = running.get_mb_pole(par) mc = running.get_mc_pole(par) xi_t = ckm.xi('t', qiqj)(par) xi_u = ckm.xi('u', qiqj)(par) muh = scale/mb sh = q2/mb**2 z = mc**2/mb**2 Lmu = log(scale/mb) Ls = log(sh) # computing this once to save time delta_tmp = wc['C1_'+qiqj] * F_19(muh, z, sh) + wc['C2_'+qiqj] * F_29(muh, z, sh) delta_t = wc['C8eff_'+qiqj] * F_89(Ls, sh) + delta_tmp delta_u = delta_tmp + wc['C1_'+qiqj] * Fu_19(q2, mb, scale) + wc['C2_'+qiqj] * Fu_29(q2, mb, scale) # note the minus sign between delta_t and delta_u. This is because of a sign # switch in the definition of the "Fu" functions between hep-ph/0403185 # (used here) and hep-ph/0412400, see footnote 5 of 0811.1214. return -alpha_s/(4*pi) * (delta_t - xi_u/xi_t * delta_u)
def T_perp(q2, par, wc, B, V, scale, include_WA=True, include_O8=True, include_QSS=True): if not include_WA and not include_O8 and not include_QSS: raise ValueError("At least one contribution to the QCDF corrections has to be switched on") mB = par['m_'+B] mV = par['m_'+V] mc = running.get_mc_pole(par) EV = En_V(mB, mV, q2) fB = par['f_'+B] fVperp = flavio.physics.running.running.get_f_perp(par, V, scale) fVpara = par['f_'+V] N = pi**2 / 3. * fB * fVperp / mB a1_perp = par['a1_perp_'+V] a2_perp = par['a2_perp_'+V] def phiV_perp(u): return phiV(u, a1_perp, a2_perp) def T_minus(u): return 0 def T_plus(u): T = 0 if include_O8: T += T_perp_plus_O8(q2=q2, par=par, wc=wc, B=B, V=V, u=u, scale=scale) if include_QSS: T += T_perp_plus_QSS(q2, par, wc, B, V, u, scale) return N / lB_plus(par=par, B=B) * phiV_perp(u) * T def T_powercorr_1(u): T=0 if include_WA: T += T_perp_WA_PowC_1(q2, par, wc, B, V, scale) ubar = 1 - u # cf. (51) of hep-ph/0412400 return N * phiV_perp(u)/(ubar+u*q2/mB**2) * T u_sing = (mB**2 - 4*mc**2)/(-q2 + mB**2) if u_sing < 1: points = [u_sing] else: points = None T_tot = flavio.math.integrate.nintegrate_complex( lambda u: T_plus(u) + T_minus(u) + T_powercorr_1(u), 0, 1, points=points) if include_WA: # cf. (51) of hep-ph/0412400 T_tot += N / lB_plus(par=par, B=B) * fVpara/fVperp * mV/(1-q2/mB**2) * T_perp_WA_PowC_2(q2, par, wc, B, V, scale) return T_tot
def T_perp(q2, par, wc, B, V, scale, include_WA=True, include_O8=True, include_QSS=True): if not include_WA and not include_O8 and not include_QSS: raise ValueError("At least one contribution to the QCDF corrections has to be switched on") mB = par['m_'+B] mV = par['m_'+V] mc = running.get_mc_pole(par) EV = En_V(mB, mV, q2) fB = par['f_'+B] fVperp = par['f_perp_'+V] fVpara = par['f_'+V] N = pi**2 / 3. * fB * fVperp / mB a1_perp = par['a1_perp_'+V] a2_perp = par['a2_perp_'+V] def phiV_perp(u): return phiV(u, a1_perp, a2_perp) def T_minus(u): return 0 def T_plus(u): T = 0 if include_O8: T += T_perp_plus_O8(q2=q2, par=par, wc=wc, B=B, V=V, u=u, scale=scale) if include_QSS: T += T_perp_plus_QSS(q2, par, wc, B, V, u, scale) return N / lB_plus(par=par, B=B) * phiV_perp(u) * T def T_powercorr_1(u): T=0 if include_WA: T += T_perp_WA_PowC_1(q2, par, wc, B, V, scale) ubar = 1 - u # cf. (51) of hep-ph/0412400 return N * phiV_perp(u)/(ubar+u*q2/mB**2) * T u_sing = (mB**2 - 4*mc**2)/(-q2 + mB**2) if u_sing < 1: points = [u_sing] else: points = None T_tot = flavio.math.integrate.nintegrate_complex( lambda u: T_plus(u) + T_minus(u) + T_powercorr_1(u), 0, 1, points=points) if include_WA: # cf. (51) of hep-ph/0412400 T_tot += N / lB_plus(par=par, B=B) * fVpara/fVperp * mV/(1-q2/mB**2) * T_perp_WA_PowC_2(q2, par, wc, B, V, scale) return T_tot
def T_para(q2, par, wc, B, V, scale, include_WA=True, include_O8=True, include_QSS=True): if not include_WA and not include_O8 and not include_QSS: raise ValueError("At least one contribution to the QCDF corrections has to be switched on") mB = par['m_'+B] mV = par['m_'+V] mc = running.get_mc_pole(par) fB = par['f_'+B] fVpara = par['f_' + V] EV = En_V(mB, mV, q2) N = pi**2 / 3. * fB * fVpara / mB * (mV/EV) a1_para = par['a1_para_'+V] a2_para = par['a2_para_'+V] def phiV_para(u): return phiV(u, a1_para, a2_para) def T_minus(u): T = 0 if include_WA: T += T_para_minus_WA(q2=q2, par=par, wc=wc, B=B, V=V, scale=scale) if include_O8: T += T_para_minus_O8(q2=q2, par=par, wc=wc, B=B, V=V, u=u, scale=scale) if include_QSS: T += T_para_minus_QSS(q2=q2, par=par, wc=wc, B=B, V=V, u=u, scale=scale) return N / lB_minus(q2=q2, par=par, B=B) * phiV_para(u) * T def T_plus(u): if include_QSS: return N / lB_plus(par=par, B=B) * phiV_para(u) * ( T_para_plus_QSS(q2=q2, par=par, wc=wc, B=B, V=V, u=u, scale=scale)) else: return 0 u_sing = (mB**2 - 4*mc**2)/(-q2 + mB**2) if u_sing < 1: points = [u_sing] else: points = None T_tot = flavio.math.integrate.nintegrate_complex( lambda u: T_plus(u) + T_minus(u), 0, 1, points=points) return T_tot
def Yu(q2, wc, par, scale, qiqj): mc = running.get_mc_pole(par) return ( (4/3.*wc['C1_'+qiqj] + wc['C2_'+qiqj]) * ( h(s=q2, mq=mc, mu=scale) - h(s=q2, mq=0, mu=scale) ))
def Yu(q2, wc, par, scale, qiqj): flavio.citations.register("Beneke:2004dp") mc = running.get_mc_pole(par) return ((4 / 3. * wc['C1_' + qiqj] + wc['C2_' + qiqj]) * (h(s=q2, mq=mc, mu=scale) - h(s=q2, mq=0, mu=scale)))