Skip to content

Commit

Permalink
[ddecays] Added branching ratios of D(s)->lnu decays
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidMStraub committed Sep 5, 2016
1 parent 2a866ad commit 6955832
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 5 deletions.
3 changes: 3 additions & 0 deletions flavio/data/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ renormalization scale:
# K decays
kdecays: 2. # K->pinunu

# D decays
dll: 2. # D->l nu

# meson mixing
Bs mixing: 4.2 # Bs-Bsbar mixing
B0 mixing: 4.2 # B0-B0bar mixing
Expand Down
6 changes: 3 additions & 3 deletions flavio/physics/bdecays/blnu.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import flavio
from math import pi

def br_plnu_general(wc, par, Vij, P, lep, delta=0):
def br_plnu_general(wc, par, Vij, P, qiqj, lep, delta=0):
r"""Branching ratio of general $P^+\to\ell^+\nu_\ell$ decay.
`Vij` is the appropriate CKM matrix element.
Expand All @@ -16,7 +16,7 @@ def br_plnu_general(wc, par, Vij, P, lep, delta=0):
tau = par['tau_'+P]
f = par['f_'+P]
# Wilson coefficient dependence
qqlnu = flavio.physics.bdecays.common.meson_quark[P] + lep + 'nu'
qqlnu = qiqj + lep + 'nu'
rWC = (wc['CV_'+qqlnu] - wc['CVp_'+qqlnu]) + mP**2/ml * (wc['CS_'+qqlnu] - wc['CSp_'+qqlnu])
N = tau * GF**2 * f**2 / (8*pi) * mP * ml**2 * (1 - ml**2/mP**2)**2
return N * abs(Vij)**2 * abs(rWC)**2 * (1 + delta)
Expand All @@ -31,7 +31,7 @@ def br_blnu(wc_obj, par, lep):
wc = wc_obj.get_wc('bu' + lep + 'nu', scale, par)
# add SM contribution to Wilson coefficient
wc['CV_bu'+lep+'nu'] += flavio.physics.bdecays.wilsoncoefficients.get_CVSM(par, scale, nf=5)
return br_plnu_general(wc, par, Vub, 'B+', lep, delta=0)
return br_plnu_general(wc, par, Vub, 'B+', 'bu', lep, delta=0)

# function returning function needed for prediction instance
def br_blnu_fct(lep):
Expand Down
3 changes: 3 additions & 0 deletions flavio/physics/ddecays/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
r"""Observables in $D$ meson decays."""

from . import dlnu
40 changes: 40 additions & 0 deletions flavio/physics/ddecays/dlnu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
r"""Functions for $D\to\ell\nu$."""

import flavio
from flavio.physics.bdecays.blnu import br_plnu_general
from math import pi, log

def br_Dlnu(wc_obj, par, P, lep):
r"""Branching ratio of $D^+\to\ell^+\nu_\ell$."""
# CKM element
if P=='D+':
Vij = flavio.physics.ckm.get_ckm(par)[1,0].conj() # Vcd*
qiqj = 'dc'
elif P=='Ds':
Vij = flavio.physics.ckm.get_ckm(par)[1,1].conj() # Vcs*
qiqj = 'sc'
scale = flavio.config['renormalization scale']['dll']
# Wilson coefficients
wc = wc_obj.get_wc(qiqj + lep + 'nu', scale, par, nf_out=4)
# add SM contribution to Wilson coefficient
wc['CV_'+qiqj+lep+'nu'] += flavio.physics.bdecays.wilsoncoefficients.get_CVSM(par, scale, nf=4)
return br_plnu_general(wc, par, Vij, P, qiqj, lep, delta=0)

# function returning function needed for prediction instance
def br_Dlnu_fct(P, lep):
def f(wc_obj, par):
return br_Dlnu(wc_obj, par, P, lep)
return f

# Observable and Prediction instances

_lep = {'e': 'e', 'mu': r'\mu', 'tau': r'\tau'}
_had = {'D+': r'D^+', 'Ds': r'D_s',}

for D in _had:
for l in _lep:
_obs_name = "BR("+D+"->"+l+"nu)"
_obs = flavio.classes.Observable(_obs_name)
_obs.set_description(r"Branching ratio of $"+_had[D]+r"\to "+_lep[l]+r"^+\nu_"+_lep[l]+r"$")
_obs.tex = r"$\text{BR}("+_had[D]+r"\to "+_lep[l]+r"^+\nu_"+_lep[l]+r")$"
flavio.classes.Prediction(_obs_name, br_Dlnu_fct(D, l))
Empty file added flavio/physics/ddecays/rge.py
Empty file.
20 changes: 20 additions & 0 deletions flavio/physics/ddecays/test_dlnu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import unittest
import numpy as np
import flavio

constraints = flavio.default_parameters
wc_obj = flavio.WilsonCoefficients()
par = constraints.get_central_all()

class TestDlnu(unittest.TestCase):
def test_dlnu(self):
# compare to the experimental values
self.assertAlmostEqual(
flavio.Observable.get_instance("BR(Ds->munu)").prediction_central(constraints, wc_obj),
5.56e-3, delta=3*0.25e-3)
self.assertAlmostEqual(
flavio.Observable.get_instance("BR(Ds->taunu)").prediction_central(constraints, wc_obj),
5.55e-2, delta=3*0.24e-2)
self.assertAlmostEqual(
flavio.Observable.get_instance("BR(D+->munu)").prediction_central(constraints, wc_obj),
3.74e-4, delta=3*0.17e-4)
2 changes: 1 addition & 1 deletion flavio/physics/eft.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def adm_ddlnu(nf, alpha_s, alpha_e):
_ll = ['ee', 'mumu', 'tautau']
_lilj = ['emu', 'mue', 'etau', 'taue', 'mutau', 'taumu']
_lnu = ['enu', 'munu', 'taunu']
_fccc = ['bc', 'bu', 'su', 'du']
_fccc = ['bc', 'bu', 'su', 'du', 'dc', 'sc', ]
_nunu = ['nuenue', 'numunumu', 'nutaunutau']
_nuinuj = ['nuenumu', 'numunue', 'nuenutau', 'nutaunue', 'numunutau', 'nutaunumu']

Expand Down
2 changes: 1 addition & 1 deletion flavio/physics/kdecays/klnu.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def br_plnu(wc_obj, par, P, lep):
wc = wc_obj.get_wc(qiqj + lep + 'nu', scale, par)
# add SM contribution to Wilson coefficient
wc['CV_'+qiqj+lep+'nu'] += flavio.physics.bdecays.wilsoncoefficients.get_CVSM(par, scale, nf=3)
return br_plnu_general(wc, par, Vij, P, lep, delta=delta_Plnu(par, P, lep))
return br_plnu_general(wc, par, Vij, P, qiqj, lep, delta=delta_Plnu(par, P, lep))

def r_plnu(wc_obj, par, P):
# resumming logs according to (111) of 0707.4464
Expand Down

0 comments on commit 6955832

Please sign in to comment.