# Photon-Splitting-Programs

### Stephen L. Adler

*Photon splitting programs*

**Introduction**

The following 10 files compute and compare the photon splitting amplitude calculated five different ways, as described in the paper of Adler and Schubert: adler.for and adlersub.for use the Adler amplitude; schub12.for and schub13.for, together with schubsub.for, use the Schubert amplitudes given in Eqs. (12) and (13) respectively of the paper of Adler and Schubert; baier.for and baiersub.for use the Baier et. al. amplitude; stoneham.for and stonesub.for use the Stoneham amplitude. The amplitude in schub12.for is unsubtracted; the other four amplitudes are all subtracted or homogenized, and this was necessary to get good small photon energy performance in the cases of the Adler, Baier et. al., and Stoneham expressions. Finally, aamain.for is a main program which calls all the subroutines and compares them.

A call to aamain.exe(or to a.out in UNIX systems) will produce a prompt asking for a control integer ``ipr''. Giving ``ipr'' the value 1 produces a prompt asking for ``n,s,b,om,om1'' which are respectively the number of mesh points *n* used in the integration, the proper time parameter *s*, the magnetic field *b* in units with the electric charge *e* taken as unity, the initial photon energy *om*, and the energy of one of the final photons *om*1. (The second photon energy is computed internally as *om*2=*om*-*om*1.) After entering these inputs separated by commas, in any format, on some computers a prompt may appear on the initial pass through the program asking for the file name where the program output is to be written, and then the computation is done. (On systems where the output file name is not requested, the default value for output unit 11 is assumed.) The results of the computation appear on the screen, followed by a new prompt asking for``ipr''. Giving ``ipr'' the value 0 exits from the program; giving the value 1 continues as described above (except that on subsequent passes the output file name is not requested); any value of ``ipr'' other than 0 or 1 is rejected.

I found that *n*=20 suffices for 1 to 2 percent accuracy, and runs on a 25 MHz personal computer in a few seconds. Quadratic dependence of residual errors on the integration mesh spacing, as expected for a trapezoidal routine, was verified by doing a sequence of calculations at *n* values of 20, 40, 80, and 160.

In writing these programs, the primary emphasis was on ease of comparison with the formulas as written in the various papers on which they are based. Before using them for extensive computations of photon splitting absorption coefficients, they should be modified to minimize the number of function calls, and then clocked to determine which form of the amplitude requires the least computing time.

**Instructions and FORTRAN files can be downloaded from:**

https://www.sns.ias.edu/~help_sns/photonsplitting/

- intro.tex
- adler.for
- adlersub.for
- schub12.for
- schub13.for
- schubsub.for
- baier.for
- baiersub.for
- stoneham.for
- stonesub.for
- aamain.for
- All of the above in photonsplit.tar

*Return to Steve Adler's Home Page.*