1. Scope
This note documents the current OPALX validation path for linear inverse Compton scattering in the weak-field regime. The immediate goal is not yet a full tracking implementation, but a CAIN-validated benchmark path for the process
The benchmark follows the same staged strategy as the Breit-Wheeler note:
-
start from a fixed-geometry, unpolarized, linear process,
-
validate deterministic and sampled spectra against CAIN,
-
then extend to broader beam models without enabling tracked interaction yet.
The baseline geometry used here is a \(90^\circ\) crossing between a
1 GeV electron beam along \(\hat z\) and a laser photon beam along
\(\hat x\) with wavelength 1030 nm.
2. Physics Models
2.1. Basic Kinematics
For a laser wavelength \(\lambda_L\), the photon energy is
For an electron with total energy \(E_e\) and momentum magnitude
\(p_e = \sqrt{E_e^2 - m_e^2}\), the exact forward-scattered photon
energy in the 90 degree benchmark geometry is
The current OPALX helper uses this numerically stable form directly in the unit benchmark.
2.2. Rest-Frame Model
The exact linear Compton kernel is evaluated in the electron rest frame. Let \(\omega_1\) be the incoming photon energy there and let \(\Theta^*\) be the photon scattering angle. The scattered photon energy is
The unpolarized Klein-Nishina differential cross section is
Changing variables from \(\cos\Theta^*\) to \(\omega_2\) gives the one-dimensional energy spectrum in the rest frame,
with exact support \(\omega_2 \in [\omega_1/(1+2\omega_1/m_e),\,\omega_1\)].
The exact total Klein-Nishina cross section can be written with \(\kappa = \omega_1/m_e\) as
For \(\kappa \ll 1\) this approaches the Thomson limit
3. Implemented OPALX Benchmark
The current OPALX implementation is the CAIN-validated benchmark path on the
laser-element-1 branch. The relevant code files are:
-
~/git/OPALX-project.github.io/gamma-gamma/generate-gamma-gamma-results.sh -
~/git/cain/generate-linear-compton-results.sh -
~/git/cain/build-cain.sh
The benchmark remains deliberately narrow:
-
no tracked
LASERinteraction, -
no photon bunch population,
-
no luminosity or overlap integration beyond the benchmark setup.
The validated observables are now:
-
✓ photon energy spectrum,
-
✓ photon laboratory polar-angle spectrum,
-
✓ joint \(E_\gamma\) vs. \(\theta_{\gamma,\mathrm{lab}}\) map,
-
✓ finite-beam energy, angle, and joint spectra,
-
✓ finite-beam plus energy-spread energy, angle, and joint spectra,
-
✓ overlap-restricted finite-beam energy and angle spectra.
4. Results of Code Comparison
The current CAIN-backed OPALX benchmark covers weak-field linear inverse Compton scattering for:
-
electron total energy
1 GeV, -
laser wavelength
1030 nm, -
crossing angle \(90^\circ\),
-
unpolarized laser
STOKES=(0,0,0), -
CAIN weak-field parameter \(\xi = 0.2955 < 0.3\).
Single-electron benchmark agreement:
-
✓ energy spectrum, deterministic: mean difference about
0.5%, \(L_1\) about0.0767 -
✓ energy spectrum, sampled: mean difference about
0.45%, \(L_1\) about0.0763 -
✓ lab-angle spectrum, deterministic: mean difference about
4.0%, \(L_1\) about0.0400 -
✓ lab-angle spectrum, sampled: mean difference about
1.3%, \(L_1\) about0.0250 -
✓ joint \(E_\gamma\)--\(\theta_{\gamma,\mathrm{lab}}\) map, deterministic: mean-energy difference about
0.48%, mean-angle difference about4.03%, \(L_1\) about0.0849 -
✓ joint \(E_\gamma\)--\(\theta_{\gamma,\mathrm{lab}}\) map, sampled: mean-energy difference about
0.44%, mean-angle difference about1.21%, \(L_1\) about0.0709
Finite-beam benchmark agreement:
-
✓ baseline finite beam (
sigma_x = sigma_y = 1 mm,sigma_{x'} = sigma_{y'} = 1 mrad): energy mean difference about0.58%, \(L_1\) about0.0316 -
✓ baseline finite beam angle spectrum: mean difference about
0.21%, \(L_1\) about0.0142 -
✓ baseline finite-beam joint \(E_\gamma\)--\(\theta_{\gamma,\mathrm{lab}}\) map: mean-energy difference about
0.58%, mean-angle difference about0.11%, \(L_1\) about0.0741 -
✓ finite beam with relative energy spread
sigma_E / E = 1.0e-3: energy mean difference about0.57%, \(L_1\) about0.0305 -
✓ finite beam with relative energy spread
sigma_E / E = 1.0e-3angle spectrum: mean difference about0.17%, \(L_1\) about0.0157 -
✓ finite beam with relative energy spread
sigma_E / E = 1.0e-3joint \(E_\gamma\)--\(\theta_{\gamma,\mathrm{lab}}\) map: mean-energy difference about0.57%, mean-angle difference about0.14%, \(L_1\) about0.0686 -
✓ overlap-restricted finite-beam energy spectrum: mean difference about
0.71%, \(L_1\) about0.0289 -
✓ overlap-restricted finite-beam angle spectrum: mean difference about
0.084%, \(L_1\) about0.0135
Single-electron overlays:
Finite-beam overlays:
5. Build and Run
The CAIN build helper is now shared across the gamma-gamma notes in the common
workspace ~/git/cain.
From ~/git/cain:
./build-cain.sh --download
./build-cain.sh --compile
The preferred one-shot workflow is run from the docs tree:
cd ~/git/OPALX-project.github.io/gamma-gamma
./generate-gamma-gamma-results.sh --opalx-build /path/to/opalx-laser/build_openmp
This top-level driver:
-
builds the OPALX gamma-gamma benchmark targets,
-
runs the inverse-Compton and Breit-Wheeler unit/regression suites,
-
regenerates the CAIN and OPALX benchmark data for both notes,
-
republishes the comparison figures, and
-
renders the gamma-gamma note pages.
If only the linear-Compton assets need to be refreshed, use:
cd ~/git/cain
./generate-linear-compton-results.sh --opalx-build /path/to/opalx-laser/build_openmp
This script:
-
runs the CAIN decks
~/git/cain/cain-linear-compton-90deg.i,~/git/cain/cain-linear-compton-90deg-finite-beam.i,~/git/cain/cain-linear-compton-90deg-finite-beam-energy-spread.i, and~/git/cain/cain-linear-compton-90deg-finite-beam-overlap.i, -
regenerates the stored CAIN histogram references in
reference-data/, -
runs the OPALX benchmark executable
LinearComptonSpectrumBenchmark, -
regenerates the published 1D and 2D comparison plots in
reference-data/.
The script expects:
-
a built OPALX benchmark executable in the supplied build directory,
-
a CAIN executable at
~/git/cain/CAIN-build/cain, unless overridden by--cain-bin, -
the four CAIN decks in
~/git/cain, unless overridden by--cain-deck-dir.
The relevant OPALX build target is:
cmake --build /path/to/opalx-laser/build_openmp \
--target LinearComptonSpectrumBenchmark TestLinearCompton TestLinearComptonSpectrum -j4
6. References
-
CAIN linear Compton generator:
src/lncpgn.f -
CAIN laser geometry helper:
src/lsrgeo.f -
CAIN manual: User’s Manual of CAIN
Appendix A: CAIN Mapping
CAIN evaluates the linear Compton kinematics by boosting the laser photon into
the electron rest frame, applying the recoil there, and boosting the scattered
photon back to the laboratory frame. In CAIN’s LNCPGN, the incoming photon
energy in the electron rest frame is
For the present benchmark \(\cos\alpha = 0\), so
This is the CAIN mapping reproduced by the current OPALX helper and benchmark path.