qcdevol Module

Introduction

This package provides tools for evolving QCD couplings, masses and other renormalization parameters. Typical usage is:

>>> import qcdevol as qcd
>>> al = qcd.Alpha_s(alpha0=0.2128, mu0=5, nf=4)    # coupling
>>> mc = qcd.M_msb(m0=0.9851, mu0=3, alpha=al)      # c-quark mass
>>> al(91.2), mc(91.2)                              # run to mu=91.2 GeV
(0.11269900754817504, 0.6333892033863693)

Uncertainties can be introduced into parameters using the gvar module, and these are propagated through the evolution. QED effects can be included. There are also tools for manipulating and evolving perturbation series (in alpha_s).

QCD Coupling

The central component of the qcdevol package is the class that implements the QCD coupling constant:

class qcdevol.Alpha_s(alpha0, mu0, nf, scheme='msb', alpha_qed=None, beta_msb=None, maxalpha=1.0, rtol=None, order=None)

Running coupling in QCD.

Typical usage is:

>>> import qcdevol as qcd
>>> al = qcd.Alpha_s(alpha0=0.2128, mu0=5, nf=4)
>>> al(5)                   # coupling at 5 GeV
0.2128
>>> al(91.2)                # coupling at 91.2 GeV
0.11269900754817504
>>> al([5., 91.2])
array([0.2128    , 0.11269901])
Parameters:
  • alpha0 – Value of coupling at scale mu0. This can be a number, or a variable of type gvar.GVar if the value has an uncertainty (see the documentation for gvar).

  • mu0 – Scale at which self(mu0) == alpha0.

  • nf (int) – Number of quark flavors included in vacuum polarization.

  • scheme (str) – Definition/scheme used for the coupling. By default this is either 'msb' for the MSbar scheme or 'v' for the scheme defined in terms of the static quark potential; but new schemes can be added to qcdevol.SCHEMES. Default is 'msb'.

  • alpha_qed – QED coupling constant. If specified, the leading-order QED correction is added to the beta function. The running of the QED coupling is ignored in leading order; alpha_qed should be chosen to be appropriate for the range of scales of interest. Ignored if alpha_qed=None (default) or if parameter beta_msb is specified.

  • beta_msb (array) – Coefficients of the MSbar beta function. If specified these are used in place of what is returned by qcdevol.BETA_MSB(). Ignored if beta_msb=None (default).

  • maxalpha (float) – Maximum value for alpha allowed in intermediate calculations, which are halted if it is exceeded. Default value is maxalpha=1.. Set maxalpha=None to have the maximum coupling calculated from the beta function.

  • rtol (float) – Temporarily replaces the default rtol parameter; see qcdevol.setdefaults().

  • order (int) – Temporarily replaces the default order parameter; see qcdevol.setdefaults().

qcdevol.Alpha_s objects have the following methods:

__call__(mu, scheme=None)

Return the coupling at scale mu, which can be an array.

If scheme is not None, the coupling is evaluated in scheme scheme, otherwise the scheme specified when creating the coupling is used. (Default is None)

del_quark(m, mu=None, zeta=None)

Create a new coupling by removing a heavy quark from the vac. polarization.

Creates a new coupling with self.nf-1 flavors by removing a quark whose self.nf-flavor mass is m at scale mu. If mu is omitted (or None), it is set equal to m.

The default zeta parameters (from qcdevol.ZETA2_G_MSB(self.nf, m, mu)) can be replaced by specifying array zeta. Ignored if zeta=None (default).

add_quark(m, mu=None, zeta=None)

Create a new coupling by adding a heavy quark to the vac. polarization.

Creates a new coupling with self.nf+1 flavors by adding a quark whose (self.nf+1)-flavor mass is m at scale mu. If mu is omitted (or None), it is set equal to m.

The default zeta parameters (from qcdevol.ZETA2_G_MSB(self.nf+1, m, mu)) can be replaced by specifying array zeta. Ignored if zeta=None (default).

clone(scheme=None, mu0=None)

Create clone of self.

This method creates couplings that are equivalent to self but potentially in a different scheme or with a different normalization scale mu0.

Parameters:
  • scheme (str or None) – Scheme used to define new coupling. Ignored if scheme=None (default).

  • mu0 – New normalization scale for coupling. Ignored if mu0=None (default).

Returns:

New object of type Alpha_s equivalent to self but possibly in a different scheme (or with a different mu0).

ps(mu, mu0, order=None)

Power series for self(mu) in terms of self(mu0).

Returns a power series ps of order order and type gvar.powerseries.PowerSeries such that such that ps(self(mu0)) is equal to self(mu) through the order specified.

Parameters:
  • mu – The expansion gives self(mu). If mu is a tuple, (mu, scheme), the expansion is for self(*mu).

  • mu0 – The expansion is in powers of self(mu0). If mu0 is a tuple, (mu0,scheme0), the expansion is in powers of self(*mu0).

  • order – The order to which the expansion is carried out. Leaving order=None (default) sets order equal to the default set by qcdevol.setdefaults().

exact(mu, scheme=None)

Same as Alpha_s.__call__ except it integrates differential evolution equation directly. It is much slower, and is only included for testing purposes.

Operator Z Factors

Multiplying a local operator by its Z factor removes its scale dependence. The following class represents such Z factors.

class qcdevol.OPZ(z0, mu0, alpha, gamma=None, gammat=None, order=None, rtol=None)

Z factor for operator with anomalous dimenion gamma:

mu**2 dlog(Z(mu))/dmu**2 = - gammat - alpha(mu) * (gamma[0] + gamma[1] * alpha(mu) + ....)

Typical usage is:

>>> import qcdevol as qcd
>>> al = qcd.Alpha_s(alpha0=0.2128, mu0=5., nf=4)
>>> Z = qcd.OPZ(z0=4., mu0=4., alpha=al, gamma=[0.318, 0.370, 0.321])
>>> Z(4.)                   # Z at mu = 4 GeV
4.0
>>> Z(1000.)                # Z at mu = 1000 GeV
2.2907519504498515
>>> z([1., 4., 1000.])
array([5.74602581, 4.        , 2.38456863])
Parameters:
  • z0 – Value of Z factor at scale mu0. This can be a number, or a variable of type gvar.GVar if the value has an uncertainty (see the documentation for the gvar module). z0 can also be an array, representing multiple Z factors.

  • mu0 – Scale at which self(mu0)=z0.

  • alpha – QCD coupling (type qcdevol.Alpha_s) governing the Z factor’s evolution.

  • gamma – An array specifying the Z factor’s anomalous dimension.

  • gammat – Tree-level gamma. Set to zero if gammat=None (default).

  • order (int) – Temporarily replaces the default order parameter; see qcdevol.setdefaults().

  • rtol (float) – Temporarily replaces the default rtol parameter; see qcdevol.setdefaults().

qcdevol.OPZ objects have the following methods:

__call__(mu)

Return the Z factor at scale mu, which may be an array.

If self.z0 and mu are both arrays, they must have the same shape as each element of mu is matched with the corresponding element of self.z0.

clone(mu0=None)

Create clone of self.

If mu0 is not None, parameter mu0 is reset in the clone (with the corresponding value for z0).

exact(mu)

Same as OPZ.__call__ except it integrates the differential evolution equation directly. It is much slower, and is only included for testing purposes. (Particularly inefficient if self.z0 and `mu are both arrays.)

Running Quark Masses

MSbar quark masses are represented by objects of type qcdevol.M_msb, which are derived from qcdevol.OPZ.

class qcdevol.M_msb(m0, mu0, alpha, Q=None, gamma_msb=None, order=None, rtol=None)

MSbar quark masses.

Typical usage:

>>> import qcdevol as qcd
>>> al = qcd.Alpha_s(alpha0=0.2128, mu0=5., nf=4)
>>> mc = qcd.M_msb(m0=0.9851, mu0=3., alpha=al)
>>> mc(3)                   # mc at 3 GeV
0.9851
>>> mc(1000.)               # mc at 1000 GeV
0.5377724915576455
>>> mc([1., 3., 1000.])
array([1.43226913, 0.9851    , 0.53777249])
Parameters:
  • m0 – Value of mass at scale mu0. This can be a number, or a variable of type gvar.GVar if the value has an uncertainty (see the documentation for the gvar module).

  • mu0 – Scale at which quark mass equals m0.

  • alpha – QCD coupling (type qcdevol.Alpha_s) governing the mass’s evolution. Must be in the 'msb' scheme.

  • gamma_msb (array) – Coefficients of the mass’s MSbar anomalous dimension. If specified, these are used in place of the values used by qcdevol.GAMMA_MSB(). Ignored if gamma_msb=None (default).

  • Q – QED charge of quark in units of the proton charge. Ignored if None (default). When specified, alpha must also include QED corrections.

  • order (int) – Temporarily replaces the default order parameter; see qcdevol.setdefaults().

  • rtol (float) – Temporarily replaces the default rtol parameter; see qcdevol.setdefaults().

qcdevol.M_msb objects have the following methods:

__call__(mu)

Return mass’s value at scale mu, which may be an array.

mu is typically a number but can also be a string containing an arithmetic expression involving parameter m. For example,

>>> mb = qcd.M_msb(m0=4.513, mu0=3., alpha=al)
>>> mb('m')             # mu = mb(mu)
4.231289159789313
>>> mb('3*m')           # mu = 3*mb(mu)
3.674028791373564

calculates mb(mu) first for mu=mb(mu) and then for mu=mb(3*mu).

del_quark(m=None, mu=None, zeta=None)

Create a new mass by removing a heavy quark from the vac. polarization.

Creates a new mass with nf-1 flavors by removing a quark whose nf-flavor mass is m at scale mu, where nf equals self.alpha.nf. If mu is omitted (or None), it is set equal to m.

If m is unspecified or m=None, the quark mass is specified by the running mass itself – that is, it removes itself from the vacuum polarization.

The default zeta parameters (from qcdevol.ZETA_M_MSB(self.nf, m, mu)) can be replaced by specifying array zeta. Ignored if zeta=None (default).

add_quark(m=None, mu=None, zeta=None)

Create a new coupling by adding a heavy quark to the vac. polarization.

Creates a new mass with nf+1 flavors by adding a quark whose (nf+1)-flavor mass is m at scale mu, where nf equals self.alpha.nf. If mu is omitted (or None), it is set equal to m.

If m is unspecified or m=None, the quark mass is specified by the running mass itself – that is, it adds itself to the vacuum polarization.

The default zeta parameters (from qcdevol.ZETA_M_MSB(nf+1, m, mu)) can be replaced by specifying array zeta. Ignored if zeta=None (default).

clone(mu0=None)

Create clone of self.

If mu0 is not None, parameter mu0 is reset in the clone (with the corresponding value for m0).

Functions

The following function is used to evolve and manipulate perturbation series:

qcdevol.evol_ps(pseries, mu, mu0, nf, gamma=None, beta_msb=None, order=None)

Evolve power series in alpha from scale mu0 to scale mu.

Given a power series in coupling alpha(mu0)

S(mu0) = sum_n=0..order c_n(mu0) * alpha(mu0)**n

this function calculates the coefficients c_n(mu) for the the expansion of S(mu) in powers of alpha(mu) where

d/dt ln(S(mu))  = - alpha(mu) * sum_n=0..N gamma[n] * alpha(mu)**n

and t=ln(mu**2). The new coefficients depend only on the coefficients of the original power series, the ratio mu/mu0, the number nf of quark flavors included in the coupling and the coefficients gamma[n] of the anomalous dimension. The initial expansion S(mu0) is specified by pseries which is an object of type gvar.powerseries.PowerSeries (for more information, see the documentation for the gvar module). The final power series S(mu) is returned as an object of the same type.

Typical usage is

>>> import qcdevol as qcd
>>> import gvar as gv
>>> Z10 = gv.powerseries.PowerSeries([4.], order=5)
>>> print(Z10.c)            # Z(10) coefficients
[4. 0. 0. 0. 0. 0.]
>>> Z12 = qcd.evol_ps(Z10, mu=12., mu0=10., nf=4, gamma=[0.318, 0.370, 0.321])
>>> print(Z12.c)            # Z(12) coefficients
[ 4.         -0.46382604 -0.56885921 -0.56718909 -0.18133736  0.34568772]

where Z12 is the expansion at mu=12 of the quantity whose expansion at mu0=10 is given by Z10 and whose anomalous dimension is specified by gamma.

Parameters:
  • pseries – Object of type gvar.powerseries.PowerSeries representing S(mu0), a series in powers of alpha(mu0) with coefficients pseries.c[n].

  • mu – Results returned for the series S(mu) in terms of alpha(mu). If mu is tuple (mu,scheme), S(mu) is a series in powers of alpha(mu, scheme). The MSbar scheme is assumed if scheme is not specified.

  • mu0 – Parameter pseries gives the expansion of S(mu0) in powers of alpha(mu0). If mu0 is tuple (mu0,scheme0). S(mu0) is a series in powers of alpha(mu0,scheme0). The MSbar scheme is assumed if scheme0 is not specified.

  • nf (int) – Number of quark flavors included in the coupling.

  • gamma (array) – Coefficients gamma[n] of the anomalous dimension.

  • beta_msb (array or None) – If not None, replaces the default MSbar beta function (from qcdevol.BETA_MSB()). Ignored if None (default).

  • order – Order to which the expansion of S(mu) is carried. If order=None, order is set equal to pseries.order. Larger values should be chosen for order if the ratio mu/mu0 is large, to capture contributions involving powers of large logarithms in high orders.

Returns:

Power series for S(mu) in powers of alpha(mu), an object of type gvar.powerseries.PowerSeries.

The default parameters for the beta function, mass anomalous dimension, and matching formulas (adding and deleting quarks) are obtained from the following functions:

qcdevol.BETA_MSB(nf, terr=None, alpha_qed=None)

Compute b[n] for the nf-flavor MSbar coupling al:

mu**2 dal(mu)/dmu**2 = -b[0]*al**2 -b[1]*al**3 -b[2]*al**4 -b[3]*al**5 -b[4]*al**6

If terr (truncation error) is not None, a sixth entry is added to b with b[5] equal to terr times the r.m.s. average of the other coefficients. Ignored if terr=None (default).

qcdevol.GAMMA_MSB(nf, terr=None, alpha_qed=None, Q=None)

Compute g[n] for nf-flavor MSbar mass:

mu**2 dlog(m(mu))/dmu**2=  -g[1]*al - g[2]*al**2 - g[3]*al**3 - g[4]*al**4 - g[5]*al**5

where al = alpha_msb(mu).

If terr (truncation error) is not None, a sixth entry is added to g with g[5] equal to terr times the r.m.s. average of the other coefficients. Ignored if terr=None (default).

qcdevol.ZETA2_G_MSB(nf, m, mu, terr=None)

Compute z[i] for nf flavor MSbar alpha where:

alpha(mu,nf-1) = z * alpha(mu,nf)

z = 1 + z[0]*alpha(mu,nf) + z[1]*alpha(mu,nf)**2 + z[2]*alpha(mu,nf)**3 + z[3]*alpha(mu,nf)**4

Here m=mh(mu,nf) is the MSbar for the quark flavor being removed.

If terr is not none, a fifth entry is added to z with z[4] equal to terr times the r.m.s. average of the other coefficients.

qcdevol.ZETA_M_MSB(nf, m, mu, terr=None)

Compute z[n] for nf flavor MSbar mass m where:

m(mu,nf-1) = z * m(mu,nf)

z = 1 + z[0]*alpha(mu,nf)**2 + z[1]*alpha(mu,nf)**3 + z[2]*alpha(mu,nf)**4

Here m=mh(mu,nf) is the MSbar mass for the quark flavor being removed.

If terr is not none, a fourth entry is added to z with z[3] equal to terr times the r.m.s. average of the other coefficients.

The dictionary qcd.SCHEMES defines the coupling schemes available in qcdevol. qcd.SCHEMES[s](nf) returns a tuple (c,r) where the coupling als in scheme s is related to the MSbar coupling almsb by:

als(mu) = almsb(r*mu) * (1 + c[0] * almsb(r*mu) + c[1] * almsb(r*mu)**2 + ...)

The schemes currently available are: s='msb' for the MSbar scheme (default scheme for most functions), and s='v' or s='V' the static-quark potential coupling, defined by:

V(Q) = -4 pi C_F alv(Q) / Q**2

through third order in the coupling.