OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearCompton.cpp File Reference
#include "Physics/LinearCompton.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 LinearCompton.cpp:

Go to the source code of this file.

Namespaces

namespace  Physics
 
namespace  Physics::LinearCompton
 

Functions

double Physics::LinearCompton::photonEnergyFromWavelengthGeV (double wavelength_m)
 Convert a laser wavelength to a single-photon energy.
 
double Physics::LinearCompton::electronGamma (double electronTotalEnergyGeV)
 Compute the electron Lorentz factor from total energy.
 
double Physics::LinearCompton::electronBeta (double electronTotalEnergyGeV)
 Compute the electron speed in units of c from total energy.
 
double Physics::LinearCompton::restFrameIncomingPhotonEnergyGeV (double electronTotalEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Compute the incoming photon energy in the electron rest frame.
 
Vector_t< double, 3 > Physics::LinearCompton::restFrameIncomingPhotonDirection (double electronTotalEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Incoming laser-photon direction in the electron rest frame.
 
Vector_t< double, 3 > Physics::LinearCompton::labPhotonDirection (double electronTotalEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection, double scatteringCosineERF, double azimuthERF)
 Laboratory-frame photon direction from electron-rest-frame scattering angles.
 
std::mt19937_64 Physics::LinearCompton::makeHostRandomEngine (std::uint64_t streamIndex=0)
 Create a deterministic host-side random engine for Monte Carlo validation.
 
SamplingKernel Physics::LinearCompton::makeSamplingKernel (double electronTotalEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Build a cached sampling kernel for repeated event generation.
 
SampledEvent Physics::LinearCompton::sampleEvent (const SamplingKernel &kernel, std::mt19937_64 &engine)
 Sample one unpolarized linear-Compton event on the host.
 
double Physics::LinearCompton::invariantKappa (double incomingPhotonEnergyERFGeV)
 Compute the dimensionless Klein-Nishina parameter \(\\kappa = \\omega_1/m_e\).
 
double Physics::LinearCompton::invariantX (double incomingPhotonEnergyERFGeV)
 Compute CAIN's linear-Compton invariant \(x = 2 \\omega_1 / m_e\).
 
double Physics::LinearCompton::invariantX (double electronTotalEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Compute CAIN's linear-Compton invariant directly from laboratory quantities.
 
double Physics::LinearCompton::scatteredPhotonEnergyMinERFGeV (double incomingPhotonEnergyERFGeV)
 Minimum scattered photon energy in the electron rest frame.
 
double Physics::LinearCompton::scatteredPhotonEnergyMaxERFGeV (double incomingPhotonEnergyERFGeV)
 Maximum scattered photon energy in the electron rest frame.
 
double Physics::LinearCompton::scatteredPhotonEnergyERFGeV (double incomingPhotonEnergyERFGeV, double scatteringCosineERF)
 Compute the scattered photon energy in the electron rest frame.
 
double Physics::LinearCompton::differentialCrossSectionSolidAngleERF (double incomingPhotonEnergyERFGeV, double scatteringCosineERF)
 Unpolarized Klein-Nishina differential cross section in solid angle.
 
double Physics::LinearCompton::differentialCrossSectionOmegaERF (double incomingPhotonEnergyERFGeV, double scatteredPhotonEnergyERFGeV)
 Unpolarized Klein-Nishina differential cross section in the scattered-photon energy.
 
double Physics::LinearCompton::totalCrossSection (double incomingPhotonEnergyERFGeV)
 Total unpolarized Klein-Nishina cross section.
 
double Physics::LinearCompton::thomsonCrossSection ()
 Thomson limit cross section.
 
double Physics::LinearCompton::restFrameScatteringCosineForLabForwardPhoton (double electronTotalEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Rest-frame scattering cosine corresponding to a lab-forward photon.
 
double Physics::LinearCompton::labPhotonEnergyGeV (double electronTotalEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection, double scatteringCosineERF, double azimuthERF)
 Laboratory-frame photon energy from electron-rest-frame scattering angles.
 
double Physics::LinearCompton::labForwardPhotonEnergyGeV (double electronTotalEnergyGeV, double laserPhotonEnergyGeV, const Vector_t< double, 3 > &beamDirection, const Vector_t< double, 3 > &laserDirection)
 Forward scattered photon energy in the laboratory frame.