return function # ... and the same for the interpolated version (see qcdf_interpolate.py) def ha_qcdf_interpolate_function(B, V, contribution='all'): scale = config['renormalization scale']['bvll'] def function(wc_obj, par_dict, q2, cp_conjugate): return flavio.physics.bdecays.bvll.qcdf_interpolate.helicity_amps_qcdf(q2, par_dict, B, V, cp_conjugate, contribution) return function # loop over hadronic transitions and lepton flavours # BTW, it is not necessary to loop over tau: for tautau final states, the minimum # q2=4*mtau**2 is so high that QCDF is not valid anymore anyway! for had in [('B0','K*0'), ('B+','K*+'), ('B0','rho0'), ('B+','rho+'), ('Bs','phi'), ]: process = had[0] + '->' + had[1] + 'll' # e.g. B0->K*0mumu quantity = process + ' spectator scattering' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ('Contribution to ' + process + ' helicity amplitudes from' ' non-factorizable spectator scattering.') # Implementation: QCD factorization iname = process + ' QCDF' i = Implementation(name=iname, quantity=quantity, function=ha_qcdf_function(B=had[0], V=had[1])) i.set_description("QCD factorization") # Implementation: interpolated QCD factorization iname = process + ' QCDF interpolated' i = Implementation(name=iname, quantity=quantity, function=ha_qcdf_interpolate_function(B=had[0], V=had[1])) i.set_description("Interpolated version of QCD factorization")
] # heavy to heavy def ff_function(function, process, **kwargs): return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, ** kwargs) for p in processes_H2L + processes_H2H: quantity = p + ' form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description('Hadronic form factor for the ' + p + ' transition') iname = p + ' BSZ3' i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=3)) i.set_description( "3-parameter BSZ parametrization (see arXiv:1811.00983).") iname = p + ' BCL3' i = Implementation(name=iname, quantity=quantity, function=ff_function(bcl.ff, p, n=3)) i.set_description("3-parameter BCL parametrization (see arXiv:0807.2722).") iname = p + ' BCL4' i = Implementation(name=iname, quantity=quantity, function=ff_function(bcl.ff, p, n=4)) i.set_description("4-parameter BCL parametrization (see arXiv:0807.2722).")
def _func_standard(wc_obj, par): return ckm_standard(par['t12'], par['t13'], par['t23'], par['delta']) def _func_tree(wc_obj, par): return ckm_tree(par['Vus'], par['Vub'], par['Vcb'], par['delta']) def _func_wolfenstein(wc_obj, par): return ckm_wolfenstein(par['laC'], par['A'], par['rhobar'], par['etabar']) i = Implementation(name='Standard', quantity='CKM matrix', function=_func_standard) i = Implementation(name='Tree', quantity='CKM matrix', function=_func_tree) i = Implementation(name='Wolfenstein', quantity='CKM matrix', function=_func_wolfenstein) def get_ckm(par_dict): return AuxiliaryQuantity['CKM matrix'].prediction(par_dict=par_dict, wc_obj=None) def get_ckmangle_beta(par): r"""Returns the CKM angle $\beta$.""" V = get_ckm(par)
processes = ['D->pi', 'D->K'] def ff_function(function, process, **kwargs): return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, ** kwargs) for p in processes: quantity = p + ' form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description('Hadronic form factor for the ' + p + ' transition') iname = p + ' BSZ2' i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=2)) i.set_description( "2-parameter BSZ parametrization (see arXiv:1811.00983).") iname = p + ' BCL2' i = Implementation(name=iname, quantity=quantity, function=ff_function(bcl.ff, p, n=2)) i.set_description("2-parameter BCL parametrization (see arXiv:0807.2722).") iname = p + ' BSZ3' i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=3)) i.set_description(
def ff(q2, par, B): r"""Central value of $B(s)\to \gamma$ form factors See hep-ph/0208256.pdf. """ flavio.citations.register("Kruger:2002gf") fB = par['f_' + B] mB = par['m_' + B] name = 'B->gamma KM ' ff = {} ff['v'] = par[name + 'betav'] * fB * mB / (par[name + 'deltav'] + mB / 2 * (1 - q2 / mB**2)) ff['a'] = par[name + 'betaa'] * fB * mB / (par[name + 'deltaa'] + mB / 2 * (1 - q2 / mB**2)) ff['tv'] = par[name + 'betatv'] * fB * mB / (par[name + 'deltatv'] + mB / 2 * (1 - q2 / mB**2)) ff['ta'] = par[name + 'betata'] * fB * mB / (par[name + 'deltata'] + mB / 2 * (1 - q2 / mB**2)) return ff quantity = 'B->gamma form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description('Form factor for the B(s)->gamma transition') i = Implementation( name="B->gamma KM", quantity=quantity, function=lambda wc_obj, par_dict, q2, B: ff(q2, par_dict, B)) i.set_description("KM parametrization (see hep-ph/0208256.pdf).")
return fct # AuxiliaryQuantity & Implementation: subleading effects at LOW q^2 for had in [('B0','K*0'), ('B+','K*+'), ('Bs','phi'), ]: process = had[0] + '->' + had[1] + 'll' # e.g. B0->K*0mumu quantity = process + ' subleading effects at low q2' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ('Contribution to ' + process + ' helicity amplitudes from' ' subleading hadronic effects (i.e. all effects not included' r'elsewhere) at $q^2$ below the charmonium resonances') # Implementation: C7-C7'-polynomial iname = process + ' deltaC7, 7p polynomial' i = Implementation(name=iname, quantity=quantity, function=fct_deltaC7C7p_polynomial(B=had[0], V=had[1])) i.set_description(r"Effective shift in the Wilson coefficient $C_7(\mu_b)$" r" (in the $0$ and $-$ helicity amplitudes) and" r" $C_7'(\mu_b)$ (in the $+$ helicity amplitude)" r" as a first-order polynomial in $q^2$.") # AuxiliaryQuantity & Implementation: subleading effects at HIGH q^2 for had in [('B0','K*0'), ('B+','K*+'), ('Bs','phi'), ]: process = had[0] + '->' + had[1] + 'll' # e.g. B0->K*0mumu quantity = process + ' subleading effects at high q2' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ('Contribution to ' + process + ' helicity amplitudes from' ' subleading hadronic effects (i.e. all effects not included' r'elsewhere) at $q^2$ above the charmonium resonances')
ff['f+'] = fp_0 * fp_bar ff['f0'] = fp_0 * f0_bar return ff def fT_pole(q2, par): # specific parameters fT_0 = par['K->pi fT(0)'] sT = par['K->pi sT'] ff = {} # (4) of 1108.1021 ff['fT'] = fT_0 / (1 - sT * q2) return ff def ff_dispersive_pole(wc_obj, par_dict, q2): ff = {} ff.update(fp0_dispersive(q2, par_dict)) ff.update(fT_pole(q2, par_dict)) return ff quantity = 'K->pi form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description(r'Hadronic form factor for the $K\to\pi$ transition') iname = 'K->pi dispersive + pole' i = Implementation(name=iname, quantity=quantity, function=ff_dispersive_pole) i.set_description(r"Dispersive parametrization (see arXiv:hep-ph/0603202) for " r"$f_+$ and $f_0$ and simple pole for $f_T$.")
def ff_function(function, process, **kwargs): return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, ** kwargs) for p in processes_H2L + processes_H2H: quantity = p + ' form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description('Hadronic form factor for the ' + p + ' transition') iname = p + ' BSZ2' i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=2)) i.set_description("2-parameter BSZ parametrization (see arXiv:1503.05534)") iname = p + ' BSZ3' i = Implementation(name=iname, quantity=quantity, function=ff_function(bsz.ff, p, n=3)) i.set_description("3-parameter BSZ parametrization (see arXiv:1503.05534)") iname = p + ' SSE' i = Implementation(name=iname, quantity=quantity, function=ff_function(sse.ff, p, n=2)) i.set_description("2-parameter simplified series expansion")
from flavio.physics.bdecays.formfactors.lambdab_12 import sse from flavio.classes import AuxiliaryQuantity, Implementation from flavio.config import config processes = [ 'Lambdab->Lambda', ] def ff_function(function, process, **kwargs): return lambda wc_obj, par_dict, q2: function(process, q2, par_dict, ** kwargs) for p in processes: quantity = p + ' form factor' a = AuxiliaryQuantity(name=quantity, arguments=['q2']) a.set_description('Hadronic form factor for the ' + p + ' transition') iname = p + ' SSE2' i = Implementation(name=iname, quantity=quantity, function=ff_function(sse.ff, p, n=2)) i.set_description("2-parameter simplified series expansion") iname = p + ' SSE3' i = Implementation(name=iname, quantity=quantity, function=ff_function(sse.ff, p, n=2)) i.set_description("3-parameter simplified series expansion")
return fct # AuxiliaryQuantity & Implementatation: subleading effects at LOW q^2 for had in [('B0','K0'), ('B+','K+'),]: for l in ['e', 'mu', ]: process = had[0] + '->' + had[1] + l+l # e.g. B0->K*0mumu quantity = process + ' subleading effects at low q2' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ('Contribution to ' + process + ' helicity amplitudes from' ' subleading hadronic effects (i.e. all effects not included' r'elsewhere) at $q^2$ below the charmonium resonances') # Implementation: C7-polynomial iname = process + ' deltaC7 polynomial' i = Implementation(name=iname, quantity=quantity, function=fct_deltaC7_polynomial(B=had[0], P=had[1], lep=l)) i.set_description(r"Effective shift in the Wilson coefficient $C_7(\mu_b)$" r" as a first-order polynomial in $q^2$.") # Implementation: C9-polynomial iname = process + ' deltaC9 polynomial' i = Implementation(name=iname, quantity=quantity, function=fct_deltaC9_polynomial(B=had[0], P=had[1], lep=l)) i.set_description(r"Effective shift in the Wilson coefficient $C_9(\mu_b)$" r" as a first-order polynomial in $q^2$.") # AuxiliaryQuantity & Implementatation: subleading effects at HIGH q^2 for had in [('B0','K0'), ('B+','K+'), ]: for l in ['e', 'mu', 'tau']:
return transversity_amps_deltaC9_constant(q2, par_dict) # AuxiliaryQuantity & Implementatation: subleading effects at LOW q^2 quantity = 'Lambdab->Lambdall subleading effects at low q2' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ( r'Contribution to $\Lambda_b\to \Lambda \ell^+\ell^-$ transversity amplitudes from' r' subleading hadronic effects (i.e. all effects not included' r' elsewhere) at $q^2$ below the charmonium resonances') # Implementation: C7-polynomial iname = 'Lambdab->Lambdall deltaC7 polynomial' i = Implementation(name=iname, quantity=quantity, function=fct_deltaC7_polynomial) i.set_description(r"Effective shift in the Wilson coefficient $C_7(\mu_b)$" r" as a first-order polynomial in $q^2$.") # AuxiliaryQuantity & Implementatation: subleading effects at HIGH q^2 quantity = 'Lambdab->Lambdall subleading effects at high q2' a = AuxiliaryQuantity(name=quantity, arguments=['q2', 'cp_conjugate']) a.description = ( 'Contribution to $\Lambda_b\to \Lambda \ell^+\ell^-$ transversity amplitudes from' ' subleading hadronic effects (i.e. all effects not included' r'elsewhere) at $q^2$ above the charmonium resonances') # Implementation: C9 constant shift iname = 'Lambdab->Lambdall deltaC9 shift'