Initialise pyMule

In [1]:
from pymule import *
Populating the interactive namespace from numpy and matplotlib

To normalise branching ratios, we need the $\tau$ lifetime

In [2]:
lifetime = 1/(1000*(6.582119e-25)/(2.903e-13))

Load data

The folder where McMule has stored the statefiles

In [3]:
setup(folder='babar-tau-e/out.tar.bz2')

Import LO data and re-scale to branching ratio

In [4]:
LO = scaleset(mergefks(sigma('m2enng0')), GF**2*lifetime*alpha)

Import NLO corrections from the three pieces $\mathcal{M}_{n+1}^{(0)}$, $\mathcal{M}_{n}^{(1)}$ and $\hat{\mathcal{E}}$

In [5]:
NLO = scaleset(mergefks(
    sigma('m2enngR'),       # real corrections
    sigma('m2enngCT'),      # counter term
    anyxi=sigma('m2enngV')  # virtual corrections
), GF**2 * lifetime * alpha**2)

Results

Branching ratio

The branching ratio $\mathcal{B}_{\rm NLO} = \mathcal{B}_{\rm LO} + \delta\mathcal{B}$

In [6]:
fullNLO = plusnumbers(LO['value'], NLO['value'])

Print results

In [7]:
print("BR_0 = " + printnumber(LO['value']))
print("dBR  = " + printnumber(NLO['value']))
print("BR_1 = " + printnumber(fullNLO))
BR_0 = 0.0183394(9)
dBR  = -0.0018881(2)
BR_1 = 0.0164513(10)

$E_e$ plot

In [8]:
fig1, (ax1, ax2) = kplot(
    {'lo': LO['Ee'], 'nlo': NLO['Ee']},
    labelx=r"$E_e\,/\,{\rm MeV}$",
    labelsigma=r"$\D\mathcal{B}/\D E_e$"
)
ax2.set_ylim(0.8, 1.01)
savefig("ee.pdf")

$m_{e\gamma}$ mass

In [9]:
fig2, (ax1, ax2) = kplot(
    {'lo': LO['minv'], 'nlo': NLO['minv']},
    labelx=r"$m_{e\gamma}\,/\,{\rm MeV}$",
    labelsigma=r"$\D\mathcal{B}/\D m_{e\gamma}$"
)

ax1.set_yscale('log')
ax1.set_xlim(1000, 0)
ax1.set_ylim(5e-9, 1e-3)
ax2.set_ylim(0.8, 1.)

savefig("meg.pdf")