OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearBreitWheeler.h File Reference
#include "OPALTypes.h"
#include <cstdint>
#include <random>
Include dependency graph for LinearBreitWheeler.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Physics::LinearBreitWheeler::SamplingKernel
 Host-only cached data for repeated linear Breit-Wheeler event sampling. More...
 
struct  Physics::LinearBreitWheeler::SampledEvent
 One sampled linear Breit-Wheeler event. More...
 

Namespaces

namespace  Physics
 
namespace  Physics::LinearBreitWheeler
 

Functions

double Physics::LinearBreitWheeler::photonEnergyFromWavelengthGeV (double wavelength_m)
 Convert a laser wavelength to a single-photon energy.
 
double Physics::LinearBreitWheeler::invariantSGeV2 (double photon1EnergyGeV, double photon2EnergyGeV, const Vector_t< double, 3 > &photon1Direction, const Vector_t< double, 3 > &photon2Direction)
 Two-photon invariant \(s\) for Breit-Wheeler pair production.
 
double Physics::LinearBreitWheeler::thresholdInvariantSGeV2 ()
 Threshold invariant for \(\gamma + \gamma \to e^- + e^+\).
 
bool Physics::LinearBreitWheeler::isAboveThreshold (double invariantSGeV2)
 Check whether pair creation is kinematically allowed.
 
double Physics::LinearBreitWheeler::pairBetaCM (double invariantSGeV2)
 Outgoing lepton speed in the pair center-of-momentum frame.
 
double Physics::LinearBreitWheeler::totalCrossSection (double invariantSGeV2)
 Total unpolarized linear Breit-Wheeler cross section.
 
double Physics::LinearBreitWheeler::proposalZToScatteringCosineCM (double invariantSGeV2, double proposalZ)
 Map CAIN's proposal parameter \(z \in [-1,1]\) to the CM scattering cosine.
 
double Physics::LinearBreitWheeler::unpolarizedAngularWeight (double invariantSGeV2, double proposalZ)
 Evaluate the unpolarized CAIN-aligned angular kernel in proposal coordinates.
 
SamplingKernel Physics::LinearBreitWheeler::makeSamplingKernel (double highEnergyPhotonEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &highEnergyDirection, const Vector_t< double, 3 > &laserDirection)
 Build a cached sampling kernel for repeated sampled events.
 
std::mt19937_64 Physics::LinearBreitWheeler::makeHostRandomEngine (std::uint64_t streamIndex=0)
 Build a deterministic host RNG from Options::seed.
 
SampledEvent Physics::LinearBreitWheeler::sampleEvent (const SamplingKernel &kernel, std::mt19937_64 &engine)
 Sample one unpolarized linear Breit-Wheeler event.
 

Class Documentation

◆ Physics::LinearBreitWheeler::SamplingKernel

struct Physics::LinearBreitWheeler::SamplingKernel

Host-only cached data for repeated linear Breit-Wheeler event sampling.

This structure stores the fixed two-photon geometry used in the first OPALX Breit-Wheeler validation path. It is intentionally scalar and host-side, matching the staged approach already used for linear Compton benchmarking.

The incoming state consists of two photons:

  • a high-energy photon with energy \(E_\gamma\) and direction \(\hat n_\gamma\),
  • a laser photon with energy \(\omega_L\) and direction \(\hat n_L\).

The corresponding two-photon invariant is

\[ s = 2 E_\gamma \omega_L (1 - \hat n_\gamma \cdot \hat n_L). \]

Pair creation is kinematically allowed only for \(s \ge 4 m_e^2\).

Definition at line 32 of file LinearBreitWheeler.h.

Collaboration diagram for Physics::LinearBreitWheeler::SamplingKernel:
Collaboration graph
Class Members
double cmLorentzGamma Lorentz factor of the CM frame relative to the laboratory frame.
Vector_t< double, 3 > cmVelocity Dimensionless CM boost velocity.
Vector_t< double, 3 > highEnergyDirection Normalized incoming high-energy photon direction.
double highEnergyPhotonEnergyGeV Incoming high-energy photon energy in the lab frame [GeV].
double invariantSGeV2 = 0.0 Two-photon invariant \(s\) in GeV^2.
Vector_t< double, 3 > laserDirection Normalized incoming laser-photon direction.
double laserPhotonEnergyGeV Incoming laser-photon energy in the lab frame [GeV].
double pairBetaCM = 0.0

Outgoing lepton speed \(\beta = \sqrt{1 - 4m_e^2/s}\) in the pair CM frame.

double rejectionUpperBound = 0.0

Conservative rejection-sampling envelope for the unpolarized CAIN-aligned angular kernel.

◆ Physics::LinearBreitWheeler::SampledEvent

struct Physics::LinearBreitWheeler::SampledEvent

One sampled linear Breit-Wheeler event.

The first benchmark path keeps only the unpolarized kinematics. The event is represented by the center-of-momentum scattering variables and by the final laboratory-frame electron and positron four-momenta.

Definition at line 59 of file LinearBreitWheeler.h.

Collaboration diagram for Physics::LinearBreitWheeler::SampledEvent:
Collaboration graph
Class Members
double azimuthCM = 0.0 Center-of-momentum azimuth \(\phi\) in rad.
double electronEnergyLabGeV Outgoing electron energy in the lab frame [GeV].
Vector_t< double, 3 > electronMomentumLabGeV Outgoing electron three-momentum in the lab frame [GeV/c].
double positronEnergyLabGeV Outgoing positron energy in the lab frame [GeV].
Vector_t< double, 3 > positronMomentumLabGeV Outgoing positron three-momentum in the lab frame [GeV/c].
double scatteringCosineCM Center-of-momentum scattering cosine \(\cos\theta\).