# The Scattering of Light By Light

This tutorial will illustrate a few strategies you can employ to streamline complex calculations with *Package*-X by using the scattering of light by light in quantum electrodynamics as an example. We will aim to calculate the scattering amplitude and differential cross section. In certain kinematic limits, compact analytic expressions exist and can be quickly obtained. Otherwise, the general result with full kinematic dependence is extremely complicated, and can take a long time to calculate. But with clever strategies it can be obtained in a reasonable amount of time, and can even be numerically evaluated. We will also save the final result so it can be reloaded upon restarting *Mathematica*.

## Setup

At leading order, the Feynman diagrams are:

"s-channel" | "t-channel" | "u-channel" |

In all diagrams, the internal fermions are electron lines, with their momenta directed with the flow of charge. The QED vertex factor is:

By charge conjugation invariance of QED, each diagram in the second row contributes the same as the diagram above it. Therefore, we only need to add the first three diagrams and multiply the result by 2. We will parametrize the amplitude as:

where the individual contributions are

subject to the on shell kinematic conditions , , and .

The external photon polarization vectors which contract into the loop integrals satisfy transversality . Therefore, it is safe to set in the result.

In[3]:= |

## Properties of the photon-photon scattering amplitude

The one loop photon-photon scattering amplitude satisfies a number of properties which can be used to check the calculation.

### Ultraviolet behavior

The four photon Green function is expected to be ultraviolet finite.

### QED Ward identities

The scattering amplitude is expected to satisfy the on shell Ward identity

at each of the four vertices

_{μ}, p2

_{ν}, p3

_{ρ}, and p4

_{σ}, apply the on shell conditions and photon transversality condition apply LoopRefine (about a minute runtime to verify all four identities on a modern machine):

_{μ}Ward identity):

### Ward identities in *Mathematica* 10 and above

*Mathematica* 10 features a new evaluation control function Inactive which stops functions from evaluating until they are enabled with Activate. We can use this feature to check the Ward identities with ease:

In[19]:= |

In[22]:= |

In[23]:= |

In[24]:= |

In[25]:= |

## Scattering amplitude in various limits

With *Package*-X, we can compute the light by light scattering amplitude in different kinematic limits. Remember to restore the omitted factor , and the factor implicit in the normalization of LoopIntegrate.

### Low energy (Euler-Heisenberg) limit

In the low energy limit , the amplitude starts at :

### High energy/large momentum transfer limit

In the high energy limit , the electron mass is negligible.

### Forward scattering limit

In the forward limit and so that . By photon polarization transversality, and can be set to zero.

_{ρ}0 and p2

_{σ}0. Call LoopRefine to calculate (about 15 seconds runtime on a modern machine):

### General case

## Unpolarized differential cross section

The tensor algebraic capabilities of *Package*-X can also aid in the evaluation of the unpolarized differential cross section. Below, the cross section will be calculated in three kinematic cases: the low energy limit, the high energy limit, and the general case.

The unpolarized photon-photon differential cross section is given by:

To obtain the matrix element squared , the complex conjugate of the matrix element is needed,

After multiplying, average over the initial and sum over final photon polarizations using

valid for amplitudes satisfying the Ward identity. Then, the matrix element squared is:

### Low energy (Euler-Heisenberg) limit

Since the scattering amplitude in the low energy limit is purely real (below all physical threshold), no complex conjugation is needed. The spin-averaged matrix element squared and therefore the differential cross section are readily obtained.

### High energy/large momentum transfer limit

In the high energy limit, the amplitude is complex, with the imaginary parts arising from the various logarithmic factors. After selectively extracting the imaginary parts, the conjugate amplitude is constructed from which the cross section follows.

In[29]:= |

In[33]:= |

### General case

In the general case, the amplitude is complex, with the imaginary parts arising from the special functions DiscB, ScalarC0, and ScalarD0. The complex conjugate of the scattering amplitude is constructed by selectively conjugating these special functions.

In[34]:= |

In[35]:= |

In[36]:= |

The reason for the long evaluation time is due to numerous calls to the complicated special functions ScalarC0, and especially ScalarD0 for each kinematic point. The evaluation time can be improved if the function is organized so that each special function appears once in the expression.

In[43]:= |

To avoid having to recalculate and simplify the differential cross section each time *Mathematica* is restarted, it is useful to save it to disk with DumpSave. The definition can then be loaded with Get when needed across separate sessions.

In[52]:= |

In[54]:= |