Module flavio.physics.taudecays.tau3l

Functions for lepton flavour violating $\tau\to \ell_1\ell_2\ell_3$ decays.

Functions

def BR_taul1l2l3(wc_obj, par, l1, l2, l3)
Expand source code
def BR_taul1l2l3(wc_obj, par, l1, l2, l3):
    r"""Branching ratio of $\tau^-\to\ell_1^-\ell_2^+\ell_3^-$."""
    scale = flavio.config['renormalization scale']['taudecays']
    # cf. (22, 23) of hep-ph/0404211
    wceff = wc_eff(wc_obj, par, scale, 'tau', l1, l2, l3, nf_out=4)
    if (l1, l2, l3) == ('mu', 'e', 'e'):
        br_wc = _BR_taumuee(par['m_tau'], par['m_e'], wceff)
    elif (l1, l2, l3) == ('e', 'mu', 'mu'):
        br_wc = _BR_taumuee(par['m_tau'], par['m_mu'], wceff)
    elif (l1, l2, l3) == ('mu', 'mu', 'mu'):
        br_wc = _BR_tau3mu(par['m_tau'], par['m_mu'], wceff)
    elif (l1, l2, l3) == ('e', 'e', 'e'):
        br_wc = _BR_tau3mu(par['m_tau'], par['m_e'], wceff)
    elif (l1, l2, l3) == ('e', 'mu', 'e'):
        br_wc = _BR_taumuemu(wceff)
    elif (l1, l2, l3) == ('mu', 'e', 'mu'):
        br_wc = _BR_taumuemu(wceff)
    pre_br = par['tau_tau'] * par['m_tau']**5 / 192 / 8 / pi**3
    return pre_br * br_wc

Branching ratio of $\tau^-\to\ell_1^-\ell_2^+\ell_3^-$.

def br_taul1l2l3_fct(l1, l2, l3)
Expand source code
def br_taul1l2l3_fct(l1, l2, l3):
    def f(wc_obj, par):
        return BR_taul1l2l3(wc_obj, par, l1, l2, l3)
    return f
def wc_eff(wc_obj, par, scale, l0, l1, l2, l3, nf_out=4)
Expand source code
def wc_eff(wc_obj, par, scale, l0, l1, l2, l3, nf_out=4):
    r"""Get the effective Wilson coefficients for the $l_0^-\to l_1^-l_2^+l_3^-$
    transition as a dictionary."""
    if l2 == l3:
        sector = wcxf_sector_names[l0, l1]
    else:
        sector = wcxf_sector_names[l0, l1, l2, l3]
    alpha = flavio.physics.running.running.get_alpha_e(par, scale, nf_out=4)
    e = sqrt(4 * pi * alpha)
    ml0 = par['m_' + l0]
    wc = wc_obj.get_wc(sector, scale, par, nf_out=nf_out)
    wceff = {}
    if (l0, l1, l2, l3) == ('tau', 'mu', 'mu', 'mu'):
        wceff['C7'] = e / ml0 * wc['Cgamma_taumu']
        wceff['C7p'] = e / ml0 * wc['Cgamma_mutau'].conjugate()
        wceff['CVLL'] = wc['CVLL_mumutaumu']
        wceff['CVLR'] = wc['CVLR_taumumumu']
        wceff['CVRL'] = wc['CVLR_mumutaumu']
        wceff['CVRR'] = wc['CVRR_mumutaumu']
        wceff['CSRR'] = wc['CSRR_mumutaumu']
        wceff['CSLL'] = wc['CSRR_mumumutau'].conjugate()
    elif (l0, l1, l2, l3) == ('tau', 'e', 'e', 'e'):
        wceff['C7'] = e / ml0 * wc['Cgamma_taue']
        wceff['C7p'] = e / ml0 * wc['Cgamma_etau'].conjugate()
        wceff['CVLL'] = wc['CVLL_eetaue']
        wceff['CVLR'] = wc['CVLR_taueee']
        wceff['CVRL'] = wc['CVLR_eetaue']
        wceff['CVRR'] = wc['CVRR_eetaue']
        wceff['CSRR'] = wc['CSRR_eetaue']
        wceff['CSLL'] = wc['CSRR_eeetau'].conjugate()
    elif (l0, l1, l2, l3) == ('tau', 'mu', 'e', 'e'):
        wceff['C7'] = e / ml0 * wc['Cgamma_taumu']
        wceff['C7p'] = e / ml0 * wc['Cgamma_mutau'].conjugate()
        wceff['CVLL'] = wc['CVLL_eetaumu']
        wceff['CVLR'] = wc['CVLR_taumuee']
        wceff['CVRL'] = wc['CVLR_eetaumu']
        wceff['CVRR'] = wc['CVRR_eetaumu']
        wceff['CSRR'] = wc['CSRR_eetaumu'] - wc['CSRR_taueemu'] / 2
        wceff['CSLL'] = wc['CSRR_eemutau'].conjugate() - wc['CSRR_mueetau'].conjugate() / 2
        wceff['CSLR'] = -2 * wc['CVLR_taueemu']
        wceff['CSRL'] = -2 * wc['CVLR_mueetau'].conjugate()
        wceff['CTLL'] = -wc['CSRR_mueetau'].conjugate() / 8
        wceff['CTRR'] = -wc['CSRR_taueemu'] / 8
    elif (l0, l1, l2, l3) == ('tau', 'e', 'mu', 'mu'):
        wceff['C7'] = e / ml0 * wc['Cgamma_taue']
        wceff['C7p'] = e / ml0 * wc['Cgamma_etau'].conjugate()
        wceff['CVLL'] = wc['CVLL_muetaumu']
        wceff['CVLR'] = wc['CVLR_tauemumu']
        wceff['CVRL'] = wc['CVLR_mumutaue']
        wceff['CVRR'] = wc['CVRR_muetaumu']
        wceff['CSRR'] = wc['CSRR_tauemumu'] - wc['CSRR_muetaumu'] / 2
        wceff['CSLL'] = wc['CSRR_mumuetau'].conjugate() - wc['CSRR_emumutau'].conjugate() / 2
        wceff['CSLR'] = -2 * wc['CVLR_taumumue']
        wceff['CSRL'] = -2 * wc['CVLR_muetaumu']
        wceff['CTLL'] = -wc['CSRR_emumutau'].conjugate() / 8
        wceff['CTRR'] = -wc['CSRR_muetaumu'] / 8
    elif (l0, l1, l2, l3) == ('mu', 'e', 'e', 'e'):
        wceff['C7'] = e / ml0 * wc['Cgamma_mue']
        wceff['C7p'] = e / ml0 * wc['Cgamma_emu'].conjugate()
        wceff['CVLL'] = wc['CVLL_eemue']
        wceff['CVLR'] = wc['CVLR_mueee']
        wceff['CVRL'] = wc['CVLR_eemue']
        wceff['CVRR'] = wc['CVRR_eemue']
        wceff['CSRR'] = wc['CSRR_eemue']
        wceff['CSLL'] = wc['CSRR_eeemu'].conjugate()
    elif (l0, l1, l2, l3) == ('tau', 'e', 'mu', 'e'):
        wceff['CVLL'] = wc['CVLL_muetaue']
        wceff['CVLR'] = wc['CVLR_tauemue']
        wceff['CVRL'] = wc['CVLR_muetaue']
        wceff['CVRR'] = wc['CVRR_muetaue']
        wceff['CSRR'] = wc['CSRR_muetaue']
        wceff['CSLL'] = wc['CSRR_emuetau'].conjugate()
    elif (l0, l1, l2, l3) == ('tau', 'mu', 'e', 'mu'):
        wceff['CVLL'] = wc['CVLL_muemutau'].conjugate()
        wceff['CVLR'] = wc['CVLR_taumuemu']
        wceff['CVRL'] = wc['CVLR_muemutau'].conjugate()
        wceff['CVRR'] = wc['CVRR_muemutau'].conjugate()
        wceff['CSRR'] = wc['CSRR_muemutau'].conjugate()
        wceff['CSLL'] = wc['CSRR_emutaumu']
    else:
        raise ValueError("Decay {}-->{}-{}+{}- not implemented".format(l0, l1, l2, l3))
    return wceff

Get the effective Wilson coefficients for the $l_0^-\to l_1^-l_2^+l_3^-$ transition as a dictionary.