OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearBreitWheeler.cpp File Reference
#include "Physics/LinearBreitWheeler.h"
#include "Physics/Physics.h"
#include "Utilities/OpalException.h"
#include "Utilities/Options.h"
#include <algorithm>
#include <cmath>
#include <cstdint>
#include <limits>
#include <random>
#include <string>
Include dependency graph for LinearBreitWheeler.cpp:

Go to the source code of this file.

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.