[Proposal] Unified PhotonElectronScattering process with dultiple dodel definitions
Summary
This issue proposes refactoring photon-electron scattering into a single process type:
struct PhotonElectronScattering <: AbstractProcessDefinition end
Specific physics regimes—Compton, Thomson, and Rayleigh scattering—are handled by selecting appropriate model definitions that encapsulate the relevant matrix elements, approximations, and assumptions. This design cleanly separates the scattering mechanics (phase space and particles) from the physics (models, limits, phase spaces).
Motivation
- Avoid duplication: All scattering processes are fundamentally \gamma + e^- \rightarrow \gamma + e^-; only the model changes.
- Encourage reuse: Similar kinematic layout (2→2 scattering) with varying energy regimes.
- Simplify interface: One process to use, one interface to test and validate.
- Enable future extensions: e.g. polarized models, medium corrections, atomic binding effects.
Proposal Details
1. Define Unified Process Type
struct PhotonElectronScattering <: AbstractProcessDefinition end
2. Model Definitions for Physical Regimes
Each model implements the AbstractModelDefinition interface:
struct ComptonModel <: AbstractModelDefinition end
struct ThomsonModel <: AbstractModelDefinition end
struct RayleighModel <: AbstractModelDefinition end
3. Phase Space Layout
A common PhaseSpaceLayout can be used for 2→2 scattering:
struct PhotonElectronScatteringPhaseSpace <: AbstractPhaseSpaceLayout end
The different generation of the momenta are then handled by the respective implementation of _build_momenta.
Tasks
-
Define PhotonElectronScatteringas a unified process -
Implement ComptonModel,ThomsonModel, andRayleighModelas subtypes ofAbstractModelDefinition -
Create PhotonElectronScatteringPhaseSpacelayout -
Implement scattering interface methods: matrix_element,differential_cross_section, etc. -
Write tests to validate transitions between models (e.g. Compton → Thomson at low energy) -
Add documentation and examples
Benefits
- Unified and extensible process architecture
- Model-driven logic enables clear physics separation
- Reduces duplication while keeping full flexibility
- Compatible with QEDbase.jl interfaces
Related
QEDbase.jl- Potential extensions: in-medium effects