Module flavio.physics.bdecays.bxgamma

Functions for inclusive $B\to X_q\gamma$ decays.

Functions

def ACPBXgamma(wc_obj, par, E0)
Expand source code
def ACPBXgamma(wc_obj, par, E0):
    r"""Direct CP asymmetry of $B\to X_{s+d}\gamma$. `E0` is the photon energy
    cutoff $E_0$ in GeV (currently works only for `E0=1.6`)."""
    scale = flavio.config['renormalization scale']['bxgamma']
    # these are the b->qee Wilson coefficients - they contain the b->qgamma ones as a subset
    xi_t_d = flavio.physics.ckm.xi('t', 'bd')(par)
    xi_t_s = flavio.physics.ckm.xi('t', 'bs')(par)
    wc_d = flavio.physics.bdecays.wilsoncoefficients.wctot_dict(wc_obj, 'bdee', scale, par, nf_out=5)
    wc_s = flavio.physics.bdecays.wilsoncoefficients.wctot_dict(wc_obj, 'bsee', scale, par, nf_out=5)
    br_d = abs(xi_t_d)**2 * PE0_BR_BXgamma(wc_d, par, 'd', E0)
    br_s = abs(xi_t_s)**2 * PE0_BR_BXgamma(wc_s, par, 's', E0)
    as_d = abs(xi_t_d)**2 * PE0_ACP_BXgamma(wc_d, par, 'd', E0)
    as_s = abs(xi_t_s)**2 * PE0_ACP_BXgamma(wc_s, par, 's', E0)
    # return (as_s)/(br_s + br_d)
    return (as_s + as_d)/(br_s + br_d)

Direct CP asymmetry of $B\to X_{s+d}\gamma$. E0 is the photon energy cutoff $E_0$ in GeV (currently works only for E0=1.6).

def BRBXgamma(wc_obj, par, q, E0)
Expand source code
def BRBXgamma(wc_obj, par, q, E0):
    r"""Branching ratio of $B\to X_q\gamma$ ($q=s$ or $d$) normalized to
    $B\to X_c\ell\nu$ taken from experiment. `E0` is the photon energy
    cutoff $E_0$ in GeV
    (currently works only for `E0=1.6`).
    See arXiv:1503.01789 and references therein."""
    flavio.citations.register("Misiak:2015xwa")
    scale = flavio.config['renormalization scale']['bxgamma']
    alphaem = 1/137.035999139 # this is alpha_e(0), a constant for our purposes
    bq = 'b' + q
    xi_t = flavio.physics.ckm.xi('t',bq)(par)
    Vcb = flavio.physics.ckm.get_ckm(par)[1,2]
    C = par['C_BXlnu']
    BRSL = par['BR(B->Xcenu)_exp']
    # these are the b->qee Wilson coefficients - they contain the b->qgamma ones as a subset
    wc = flavio.physics.bdecays.wilsoncoefficients.wctot_dict(wc_obj, bq+'ee', scale, par, nf_out=5)
    PE0 = PE0_BR_BXgamma(wc, par, q, E0)
    # uncertainty due to higher order contributions, interpolation, and nonperturbative effects
    P_uncertainty = 0.1249 * par['delta_BX'+q+'gamma'] # PE0_NLO * delta
    # central value of non-perturbative correction (M. Misiak, private communication)
    P_nonpert = 0.00381745
    # eq. (2.1) of hep-ph/0609241
    flavio.citations.register("Misiak:2006ab")
    return BRSL * abs(xi_t)**2/abs(Vcb)**2 * 6*alphaem/pi/C * (PE0 + P_nonpert + P_uncertainty)

Branching ratio of $B\to X_q\gamma$ ($q=s$ or $d$) normalized to $B\to X_c\ell\nu$ taken from experiment. E0 is the photon energy cutoff $E_0$ in GeV (currently works only for E0=1.6). See arXiv:1503.01789 and references therein.

def PE0_ACP_BXgamma(wc, par, q, E0)
Expand source code
def PE0_ACP_BXgamma(wc, par, q, E0):
    r"""Numerator of the direct CP asymmetry of $B\to X_q\gamma$ without
    the prefactor. This is the CP asymmetric analogue of PE0_BR_BXgamma."""
    bq = 'b' + q
    if E0 != 1.6:
        raise ValueError("ACP(B->Xgamma) is not implemented for E0 different from 1.6 GeV")
    scale = flavio.config['renormalization scale']['bxgamma']
    alphas = flavio.physics.running.running.get_alpha(par, scale, nf_out=5)['alpha_s']
    at = alphas/4./pi
    coeffs = ['C1_'+bq, 'C2_'+bq, 'C3_'+bq, 'C4_'+bq, 'C5_'+bq, 'C6_'+bq, 'C7eff_'+bq, 'C8eff_'+bq]
    coeffs_p = ['C1p_'+bq, 'C2p_'+bq, 'C3p_'+bq, 'C4p_'+bq, 'C5p_'+bq, 'C6p_'+bq, 'C7effp_'+bq, 'C8effp_'+bq]
    wc1_8 = np.array([wc[name] for name in coeffs])
    wc1p_8p = np.array([wc[name] for name in coeffs_p])
    P1 = at    * np.dot(wc1_8, np.dot(ka1_i, wc1_8.conj())).imag
    P1_p = at    * np.dot(wc1p_8p, np.dot(ka1_i, wc1p_8p.conj())).imag
    r_u = flavio.physics.ckm.xi('u',bq)(par)/flavio.physics.ckm.xi('t',bq)(par)
    PVub = 0.0596211 * r_u.imag
    return P1 + P1_p + PVub

Numerator of the direct CP asymmetry of $B\to X_q\gamma$ without the prefactor. This is the CP asymmetric analogue of PE0_BR_BXgamma.

def PE0_BR_BXgamma(wc, par, q, E0)
Expand source code
def PE0_BR_BXgamma(wc, par, q, E0):
    r"""Branching ratio of $B\to X_q\gamma$ without the prefactor.
    At leading order in the SM, this function is equal to
    $(C_7^{\mathrm{eff}})^2$."""
    bq = 'b' + q
    if E0 != 1.6:
        raise ValueError("BR(B->Xqgamma) is not implemented for E0 different from 1.6 GeV")
    P0 = abs(wc['C7eff_'+bq])**2 + abs(wc['C7effp_'+bq])**2
    scale = flavio.config['renormalization scale']['bxgamma']
    alphas = flavio.physics.running.running.get_alpha(par, scale, nf_out=5)['alpha_s']
    at = alphas/4./pi
    coeffs = ['C1_'+bq, 'C2_'+bq, 'C3_'+bq, 'C4_'+bq, 'C5_'+bq, 'C6_'+bq, 'C7eff_'+bq, 'C8eff_'+bq]
    coeffs_p = ['C1p_'+bq, 'C2p_'+bq, 'C3p_'+bq, 'C4p_'+bq, 'C5p_'+bq, 'C6p_'+bq, 'C7effp_'+bq, 'C8effp_'+bq]
    wc1_8 = np.array([wc[name] for name in coeffs])
    wc1p_8p = np.array([wc[name] for name in coeffs_p])
    P1 = at    * np.dot(wc1_8, np.dot(ka1_r, wc1_8.conj())).real
    P1_p = at    * np.dot(wc1p_8p, np.dot(ka1_r, wc1p_8p.conj())).real
    P2 = at**2 * np.dot(wc1_8, np.dot(ka2_r, wc1_8.conj())).real
    P2_p = at**2 * np.dot(wc1p_8p, np.dot(ka2_r, wc1p_8p.conj())).real
    Prest = P1 + P2 + P1_p + P2_p
    r_u = flavio.physics.ckm.xi('u',bq)(par)/flavio.physics.ckm.xi('t',bq)(par)
    PVub = -0.0296854 * r_u.real + 0.123411 * abs(r_u)**2
    return P0 + Prest + PVub

Branching ratio of $B\to X_q\gamma$ without the prefactor. At leading order in the SM, this function is equal to $(C_7^{\mathrm{eff}})^2$.