1#ifndef OPAL_LINEAR_BREIT_WHEELER_HH
2#define OPAL_LINEAR_BREIT_WHEELER_HH
10 namespace LinearBreitWheeler {
102 double photon1EnergyGeV,
double photon2EnergyGeV,
195 double highEnergyPhotonEnergyGeV,
double laserPhotonEnergyGeV,
ippl::Vector< T, Dim > Vector_t
double proposalZToScatteringCosineCM(double sGeV2, double proposalZ)
Map CAIN's proposal parameter to the CM scattering cosine.
double unpolarizedAngularWeight(double sGeV2, double proposalZ)
Evaluate the unpolarized CAIN-aligned angular kernel in proposal coordinates.
double invariantSGeV2
Two-photon invariant in GeV^2.
double positronEnergyLabGeV
Outgoing positron energy in the lab frame [GeV].
Vector_t< double, 3 > electronMomentumLabGeV
Outgoing electron three-momentum in the lab frame [GeV/c].
double thresholdInvariantSGeV2()
Threshold invariant for .
Vector_t< double, 3 > highEnergyDirection
Normalized incoming high-energy photon direction.
double cmLorentzGamma
Lorentz factor of the CM frame relative to the laboratory frame.
SampledEvent sampleEvent(const SamplingKernel &kernel, std::mt19937_64 &engine)
Sample one unpolarized linear Breit-Wheeler event.
SamplingKernel 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.
Vector_t< double, 3 > laserDirection
Normalized incoming laser-photon direction.
Vector_t< double, 3 > positronMomentumLabGeV
Outgoing positron three-momentum in the lab frame [GeV/c].
double highEnergyPhotonEnergyGeV
Incoming high-energy photon energy in the lab frame [GeV].
double rejectionUpperBound
double scatteringCosineCM
Center-of-momentum scattering cosine .
Vector_t< double, 3 > cmVelocity
Dimensionless CM boost velocity.
double azimuthCM
Center-of-momentum azimuth in rad.
double laserPhotonEnergyGeV
Incoming laser-photon energy in the lab frame [GeV].
double electronEnergyLabGeV
Outgoing electron energy in the lab frame [GeV].
double invariantSGeV2(double photon1EnergyGeV, double photon2EnergyGeV, const Vector_t< double, 3 > &photon1Direction, const Vector_t< double, 3 > &photon2Direction)
Two-photon invariant for Breit-Wheeler pair production.
std::mt19937_64 makeHostRandomEngine(std::uint64_t streamIndex)
Build a deterministic host RNG from Options::seed.
double totalCrossSection(double sGeV2)
Total unpolarized linear Breit-Wheeler cross section.
double photonEnergyFromWavelengthGeV(double wavelength_m)
Convert a laser wavelength to a single-photon energy.
bool isAboveThreshold(double sGeV2)
Check whether pair creation is kinematically allowed.
double pairBetaCM(double sGeV2)
Outgoing lepton speed in the pair center-of-momentum frame.
One sampled linear Breit-Wheeler event.
Host-only cached data for repeated linear Breit-Wheeler event sampling.