[an error occurred while processing this directive]
Package-X is hosted by Hepforge, IPPP Durham

Extracting Form Factors from the Amplitude

Introduction

This tutorial illustrates how to extract form factors from loop integrals that contain an open fermion line. As a concrete example, we will compute the decay rate induced by a colored scalar leptoquark at one-loop order in a hypothetical model. The Feynman digrams are:

    

Click for copyable input

In all four diagrams, the internal fermion is a standard model quark (), and the internal scalar is a leptoquark (). The vertex factors in this model are:

    

Electric charge conservation at the leptoquark-fermion vertices implies .

We will use Projector to project out the form factors out of the amplitude:

Projector["name", μ][{p1,m1},{p2,m2}]gives the projector for the on shell vector/axial-vector form factor associated with "name" and index μ.

Projecting form factors.


In Package-X, the on-shell vector/axial-vector vertex matrix is parametrized as:

with .

name
Form factor
"Dirac"or"F1"
"Pauli"or"F2"
"F3"
"Anapole"or"G1"
"EDM"or"G2"
"G3"

Possible values for "name" for vector/axial-vector vertex projections.

The following mnemonic is helpful to remember the ordering of kinematic arguments for an on-shell vertex form factor Projector:

    (1) Bring the barred spinor to the other side:
        
    (2) Replace with Projector["name",μ][{p1,m1},{p2,m2}]:
        
    (3) Take the trace with Spur:
        

The kinematic arguments are the same order as that of the spinors .

Keep in mind that for our example, the momentum transfer is directed out of the graph while the definitions observed by Projector have it directed inwards. Therefore we should remember to flip the sign of when writing down the full amplitude.

We will use LoopIntegrate and LoopRefine to compute the one-loop integrals.

LoopIntegrate[num, k, {q0, m0}, {q1, m1}, ...]expresses the one-loop tensor integral over integration variable k with numerator num and denominator factors in terms of Passarino-Veltman coefficient functions.
LoopRefine[expr]converts the Passarino-Veltman coefficient functions in expr to simple functions that can be numerically evaluated.

Computing one loop integrals

Usually, vertex form factor projections lead to spurious kinematic singularities. However, if LoopIntegrate detects a vertex Projector in the numerator, LoopIntegrate will automatically attempt to remove the singularity (more details). Therefore, we will directly input the numerator inside of LoopIntegrate to effect the automatic cancellation of spurious singularities.

Detailed calculation of , , and

We are now ready to systematically extract all form factors out of the scattering amplitude. The amplitudes corresponding to each diagram are:

For convenience, the electron and muon propagators are left under the integral sign in and although they are independent of the integration momentum, .

Since all diagrams share a common set of kinematic conditions , and , it is convenient to store the set of kinematic rules as a global variable.

Globally define the kinematic conditions but keep for future convenience:
In[1]:=
Click for copyable input
In[1]:=
Click for copyable input

Form factor , and the non-renormalization of off-diagonal elements of the electric charge operator

Initialize an empty array to store results of each diagram:
In[2]:=
Click for copyable input
Out[2]=
Compute each integral, extracting form factor . The -indepenent electron and muon propagator factors in the first and fourth integrals are included inside LoopIntegrate. LoopIntegrate will automatically factor them out:
In[3]:=
Click for copyable input
Out[3]=
Out[4]=
Out[5]=
Out[6]=
Add up the contributions, put the photon on its mass shell , and apply LoopRefine:
In[7]:=
Click for copyable input
Out[7]=

The form factor is apparently UV-divergent (note the appearance of a pole), requiring the renormalization of an off-diagonal (flavor-changing) element of the charge operator. Notice, however, that the result is proprtional to . Electric charge conservation at each vertex requires , and therefore vanishes.

In[8]:=
Click for copyable input
Out[8]=

Form factor , and the Appelquist-Carazzone decoupling theorem

To extract form factor , simply copy and paste the code above, and replace "F1" with "F2" inside Projector:

In[9]:=
Click for copyable input
Out[10]=
Out[11]=
Out[12]=
Out[13]=

With the photon on its mass shell , the form factor is non-vanishing, but UV-finite.

Add up the contributions, apply LoopRefine, and store the result as f2:
In[14]:=
Click for copyable input
Out[14]=

The contribution of the scalar leptoquark to this process is expected to decouple as its mass is parametrically increased. We can confirm this two different ways:

1. Plot the result numerically as a function of mLQ

The quark is taken to be the strange quark (), and input masses are defined with sufficient precision to overcome possible numerical instabilities.
In[15]:=
Click for copyable input
In[20]:=
Click for copyable input
Out[20]=
Clear the definitions
In[21]:=
Click for copyable input

2. Apply LoopRefineSeries to generate an expansion as . However, this method requires some care. The expansion point is a singular point of the loop integral. By default, LoopRefineSeries cannot construct a Taylor expansion:

In[22]:=
Click for copyable input
Out[22]=

By setting the option AnalyticTrue to LoopRefineSeries, the number of spacetime dimensions is analytically continued to sufficiently high values to make the singular point differentiable, permitting an expansion:

Analytically continue the number of spacetime dimensions:
In[23]:=
Click for copyable input
Out[23]=

Since the point is a lowest order Landau singular point of a UV-finite one-loop integral, it is expected to be logarithmic in nature plus a dominant regular part. LoopRefineSeries can reliably extract the regular part the result above and confirms the decoupling of the scalar leptoquark.

In this scheme, any logarithmic singularities will appear as an infrared pole. The subleading term contains this logarithmic singularity:

In[24]:=
Click for copyable input
Out[24]=

Form factor , and gauge invariance

Form factor is proportional to . Therefore, the Ward identities as required by gauge invariance imply that this form factor should vanish for all :

Extract form factor :
In[25]:=
Click for copyable input
Out[26]=
Out[27]=
Out[28]=
Out[29]=

These expressions are proportional to , which means it will not be possible to take straightaway. However, by gauge invariance, their sum must vanish for all values of :

In[30]:=
Click for copyable input
Out[30]=

Usually, when doing computations involving more general kinematics (such as with in this example), it is recommended to set CancelTrue to LoopIntegrate.

Computing all form factors together

Form factors , , , and

Instead of computing each form factor individually, sets of them can be computed simultaneously by supplying a list of names in Projector. Here we will compute the form factors , , , and at :

Form factors , , , at :
In[36]:=
Click for copyable input
Out[42]=

The first () and the third () elements of the list vanish. We can verify the decoupling theorem for and :

In[43]:=
Click for copyable input
Out[43]=

Ward identity violating Form factors ,

We can also verify that the Ward identity violating form factors and vanish:

In[44]:=
Click for copyable input
Out[49]=

Final Result

We can gather the results above to write down the matrix element. To all orders in the leptoquark mass, the result is:

M=e N_C lambda^2u^__e(p-q)(ⅈ sigma^(munu)(-q_nu))/(m_mu+m_e) u_mu(p) epsilon_mu^*(q)i/(16pi^2)[1/2 Q_q TemplateBox[{m, q, 2}, Subsuperscript] C_0(0,TemplateBox[{m, e, 2}, Subsuperscript],TemplateBox[{m, mu, 2}, Subsuperscript];m_q,m_q,m_(LQ))+1/2 TemplateBox[{m, LQ, 2}, Subsuperscript] (Q_q-Q_l) C_0(0,TemplateBox[{m, e, 2}, Subsuperscript],TemplateBox[{m, mu, 2}, Subsuperscript];m_(LQ),m_(LQ),m_q)+((-2 m_e Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-2 m_mu Q_q TemplateBox[{m, e, 2}, Subsuperscript]+2 m_e Q_l TemplateBox[{m, q, 2}, Subsuperscript]+m_mu Q_l TemplateBox[{m, e, 2}, Subsuperscript]-m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]+m_mu Q_l TemplateBox[{m, q, 2}, Subsuperscript]) Lambda(TemplateBox[{m, e, 2}, Subsuperscript];m_(LQ),m_q))/(4 m_e (TemplateBox[{m, e, 2}, Subsuperscript]-TemplateBox[{m, mu, 2}, Subsuperscript]))+((m_e Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]+2 m_e Q_q TemplateBox[{m, mu, 2}, Subsuperscript]-m_e Q_l TemplateBox[{m, q, 2}, Subsuperscript]-m_e Q_l TemplateBox[{m, mu, 2}, Subsuperscript]+2 m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-2 m_mu Q_l TemplateBox[{m, q, 2}, Subsuperscript]) Lambda(TemplateBox[{m, mu, 2}, Subsuperscript];m_(LQ),m_q))/(4 m_mu (TemplateBox[{m, e, 2}, Subsuperscript]-TemplateBox[{m, mu, 2}, Subsuperscript]))+(2 m_e m_mu Q_q-m_e m_mu Q_l+Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-Q_l TemplateBox[{m, q, 2}, Subsuperscript])/(4 m_e m_mu)+1/(8 TemplateBox[{m, e, 3}, Subsuperscript] TemplateBox[{m, mu, 3}, Subsuperscript])log((TemplateBox[{m, LQ, 2}, Subsuperscript])/(TemplateBox[{m, q, 2}, Subsuperscript])) (-2 Q_q TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]+4 m_e m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript]+2 Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript]-2 m_e m_mu Q_l TemplateBox[{m, LQ, 4}, Subsuperscript]+2 Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]+Q_l (-TemplateBox[{m, e, 2}, Subsuperscript]) TemplateBox[{m, LQ, 4}, Subsuperscript]+2 Q_q TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-2 m_e m_mu Q_l TemplateBox[{m, q, 4}, Subsuperscript]-Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, q, 4}, Subsuperscript]+2 Q_l TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-Q_l TemplateBox[{m, LQ, 4}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-Q_l TemplateBox[{m, q, 4}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript])]+e N_C lambda^2u^__e(p-q)(ⅈ sigma^(munu)gamma_5(-q_nu))/(m_mu+m_e) u_mu(p) epsilon_mu^*(q)i/(16pi^2)[(Q_q (m_e+m_mu) TemplateBox[{m, q, 2}, Subsuperscript] C_0(0,TemplateBox[{m, e, 2}, Subsuperscript],TemplateBox[{m, mu, 2}, Subsuperscript];m_q,m_q,m_(LQ)))/(2 (m_e-m_mu))+((m_e+m_mu) TemplateBox[{m, LQ, 2}, Subsuperscript] (Q_q-Q_l) C_0(0,TemplateBox[{m, e, 2}, Subsuperscript],TemplateBox[{m, mu, 2}, Subsuperscript];m_(LQ),m_(LQ),m_q))/(2 (m_e-m_mu))+((-2 m_e Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]+2 m_mu Q_q TemplateBox[{m, e, 2}, Subsuperscript]+2 m_e Q_l TemplateBox[{m, q, 2}, Subsuperscript]-m_mu Q_l TemplateBox[{m, e, 2}, Subsuperscript]+m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-m_mu Q_l TemplateBox[{m, q, 2}, Subsuperscript]) Lambda(TemplateBox[{m, e, 2}, Subsuperscript];m_(LQ),m_q))/(4 m_e (m_e-m_mu)^2)+((-m_e Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-2 m_e Q_q TemplateBox[{m, mu, 2}, Subsuperscript]+m_e Q_l TemplateBox[{m, q, 2}, Subsuperscript]+m_e Q_l TemplateBox[{m, mu, 2}, Subsuperscript]+2 m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]-2 m_mu Q_l TemplateBox[{m, q, 2}, Subsuperscript]) Lambda(TemplateBox[{m, mu, 2}, Subsuperscript];m_(LQ),m_q))/(4 m_mu (m_e-m_mu)^2)+((m_e+m_mu) (2 m_e m_mu Q_q-m_e m_mu Q_l-Q_l TemplateBox[{m, LQ, 2}, Subsuperscript]+Q_l TemplateBox[{m, q, 2}, Subsuperscript]))/(4 m_e m_mu (m_e-m_mu))-1/(8 (m_e-m_mu) TemplateBox[{m, e, 3}, Subsuperscript] TemplateBox[{m, mu, 3}, Subsuperscript])(m_e+m_mu) log((TemplateBox[{m, LQ, 2}, Subsuperscript])/(TemplateBox[{m, q, 2}, Subsuperscript])) (-2 Q_q TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-4 m_e m_mu Q_l TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript]+2 Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript]+2 m_e m_mu Q_l TemplateBox[{m, LQ, 4}, Subsuperscript]+2 Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]+Q_l (-TemplateBox[{m, e, 2}, Subsuperscript]) TemplateBox[{m, LQ, 4}, Subsuperscript]+2 Q_q TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]+2 m_e m_mu Q_l TemplateBox[{m, q, 4}, Subsuperscript]-Q_l TemplateBox[{m, e, 2}, Subsuperscript] TemplateBox[{m, q, 4}, Subsuperscript]+2 Q_l TemplateBox[{m, LQ, 2}, Subsuperscript] TemplateBox[{m, q, 2}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-Q_l TemplateBox[{m, LQ, 4}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript]-Q_l TemplateBox[{m, q, 4}, Subsuperscript] TemplateBox[{m, mu, 2}, Subsuperscript])]

A more compact result is obtained in the limit:

M=e N_C lambda^2u^__e(p-q)(ⅈ sigma^(munu)(-q_nu))/(m_mu+m_e) u_mu(p) epsilon_mu^*(q)i/(16pi^2)[-((m_e+m_mu)^2 (3 Q_q-Q_l))/(24 TemplateBox[{m, LQ, 2}, Subsuperscript])]+e N_C lambda^2u^__e(p-q)(ⅈ sigma^(munu)gamma_5(-q_nu))/(m_mu+m_e) u_mu(p) epsilon_mu^*(q)i/(16pi^2)[-((3 Q_q-Q_l) (TemplateBox[{m, e, 2}, Subsuperscript]-TemplateBox[{m, mu, 2}, Subsuperscript]))/(24 TemplateBox[{m, LQ, 2}, Subsuperscript])]

or,

M= e (3 Q_q-Q_l)N_C lambda^2u^__e(p-q)ⅈ sigma^(munu)q_nu u_mu(p) epsilon_mu^*(q)i/(16pi^2)(m_e+m_mu )/(24 TemplateBox[{m, LQ, 2}, Subsuperscript])+e(3 Q_q-Q_l) N_C lambda^2u^__e(p-q)ⅈ sigma^(munu)gamma_5q_nu u_mu(p) epsilon_mu^*(q)i/(16pi^2)( m_e-m_mu)/(24 TemplateBox[{m, LQ, 2}, Subsuperscript])