OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearBreitWheeler.h
Go to the documentation of this file.
1#ifndef OPAL_LINEAR_BREIT_WHEELER_HH
2#define OPAL_LINEAR_BREIT_WHEELER_HH
3
4#include "OPALTypes.h"
5
6#include <cstdint>
7#include <random>
8
9namespace Physics {
10 namespace LinearBreitWheeler {
11
51
72
84 double photonEnergyFromWavelengthGeV(double wavelength_m);
85
101 double invariantSGeV2(
102 double photon1EnergyGeV, double photon2EnergyGeV,
103 const Vector_t<double, 3>& photon1Direction,
104 const Vector_t<double, 3>& photon2Direction);
105
115
121 bool isAboveThreshold(double invariantSGeV2);
122
134 double pairBetaCM(double invariantSGeV2);
135
153 double totalCrossSection(double invariantSGeV2);
154
170 double proposalZToScatteringCosineCM(double invariantSGeV2, double proposalZ);
171
184 double unpolarizedAngularWeight(double invariantSGeV2, double proposalZ);
185
195 double highEnergyPhotonEnergyGeV, double laserPhotonEnergyGeV,
196 const Vector_t<double, 3>& highEnergyDirection,
197 const Vector_t<double, 3>& laserDirection);
198
204 std::mt19937_64 makeHostRandomEngine(std::uint64_t streamIndex = 0);
205
217 SampledEvent sampleEvent(const SamplingKernel& kernel, std::mt19937_64& engine);
218
219 } // namespace LinearBreitWheeler
220} // namespace Physics
221
222#endif // OPAL_LINEAR_BREIT_WHEELER_HH
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 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.
Definition Air.h:27