OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearBreitWheelerBenchmark Namespace Reference

Classes

struct  FinitePhotonBeamConfig
 Configuration for folding the linear Breit-Wheeler kernel over a finite incoming photon beam. More...
 
struct  FinitePhotonBeamJointConfig
 
struct  Histogram
 
struct  HistogramConfig
 
struct  JointHistogram
 
struct  JointHistogramConfig
 
struct  SampledPhotonBeamState
 

Enumerations

enum class  FinalState { Electron , Positron }
 
enum class  Observable { Energy , Theta }
 

Functions

double polarAngleRad (const Vector_t< double, 3 > &momentum)
 
double sampledObservable (const Physics::LinearBreitWheeler::SampledEvent &event, FinalState state, Observable observable)
 
double sampleHighEnergyPhotonEnergyGeV (double centralEnergyGeV, double relativeEnergySpread, std::mt19937_64 &engine)
 
void buildTransverseBasis (const Vector_t< double, 3 > &referenceDirection, Vector_t< double, 3 > &axis1, Vector_t< double, 3 > &axis2)
 
SampledPhotonBeamState samplePhotonBeamState (const Vector_t< double, 3 > &referenceDirection, double sigmaThetaXRad, double sigmaThetaYRad, double sigmaX_m, double sigmaY_m, double sigmaS_m, double centralEnergyGeV, double relativeEnergySpread, std::mt19937_64 &engine)
 
Vector_t< double, 3 > samplePhotonBeamDirection (const Vector_t< double, 3 > &referenceDirection, double sigmaThetaXRad, double sigmaThetaYRad, std::mt19937_64 &engine)
 
double effectiveSpatialOverlapSigma (double beamSigma_m, double waist_m)
 
double effectiveTemporalOverlapSigma (double beamSigmaS_m, double laserSigmaT_m)
 
SampledPhotonBeamState sampleOverlapPhotonBeamState (const FinitePhotonBeamConfig &config, std::mt19937_64 &engine)
 
SampledPhotonBeamState sampleOverlapPhotonBeamState (const FinitePhotonBeamJointConfig &config, std::mt19937_64 &engine)
 
Histogram sampleFinitePhotonBeamHistogram (const FinitePhotonBeamConfig &config, FinalState state, Observable observable, std::size_t sampleCount, std::uint64_t streamIndex=0)
 Sample a one-dimensional Breit-Wheeler histogram for a finite incoming photon beam.
 
Histogram sampleHistogram (const HistogramConfig &config, FinalState state, Observable observable, std::size_t sampleCount, std::uint64_t streamIndex=0)
 Sample a one-dimensional Breit-Wheeler benchmark histogram.
 
JointHistogram sampleFinitePhotonBeamJointHistogram (const FinitePhotonBeamJointConfig &config, FinalState state, std::size_t sampleCount, std::uint64_t streamIndex=0)
 Sample the joint Breit-Wheeler laboratory distribution in energy and polar angle.
 
JointHistogram sampleJointHistogram (const JointHistogramConfig &config, FinalState state, std::size_t sampleCount, std::uint64_t streamIndex=0)
 
void writeHistogramCSV (const Histogram &histogram, const std::filesystem::path &outputPath)
 
void writeJointHistogramCSV (const JointHistogram &histogram, const std::filesystem::path &outputPath)
 
Histogram readHistogramCSV (const std::filesystem::path &inputPath)
 
JointHistogram readJointHistogramCSV (const std::filesystem::path &inputPath)
 
double histogramArea (const Histogram &histogram)
 
double histogramMean (const Histogram &histogram)
 
double histogramL1Distance (const Histogram &lhs, const Histogram &rhs)
 
double jointHistogramArea (const JointHistogram &histogram)
 
double jointHistogramMeanEnergyGeV (const JointHistogram &histogram)
 
double jointHistogramMeanThetaRad (const JointHistogram &histogram)
 
double jointHistogramL1Distance (const JointHistogram &lhs, const JointHistogram &rhs)
 

Class Documentation

◆ LinearBreitWheelerBenchmark::FinitePhotonBeamConfig

struct LinearBreitWheelerBenchmark::FinitePhotonBeamConfig

Configuration for folding the linear Breit-Wheeler kernel over a finite incoming photon beam.

This benchmark keeps the laser photon fixed and samples only the incoming high-energy photon beam. The present implementation models the beam by a Gaussian spread in the transverse photon slopes around the reference beam axis and, optionally, by a Gaussian relative energy spread.

The benchmark intentionally stays momentum-space only. It does not model photon-beam position spread or laser-overlap weighting yet.

Definition at line 41 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::FinitePhotonBeamConfig:
Collaboration graph
Class Members
size_t bins = 80
double centralHighEnergyPhotonEnergyGeV = 0.5
Vector_t< double, 3 > laserDirection
double laserRayleighX_m = 1.0e-6
double laserRayleighY_m = 1.0e-6
double laserSigmaT_m = 5.0e-12 * Physics::c
double maxValue = 0.5
double minValue = 0.0
bool overlapWeighting = false
Vector_t< double, 3 > referenceHighEnergyDirection
double relativeEnergySpread = 0.0
double sigmaS_m = 0.0
double sigmaThetaXRad = 1.0e-3
double sigmaThetaYRad = 1.0e-3
double sigmaX_m = 0.0
double sigmaY_m = 0.0
double wavelength_m = 1.0e-9

◆ LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig

struct LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig

Definition at line 116 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig:
Collaboration graph
Class Members
double centralHighEnergyPhotonEnergyGeV = 0.5
size_t energyBins = 80
double energyMaxGeV = 0.5
double energyMinGeV = 0.0
Vector_t< double, 3 > laserDirection
double laserRayleighX_m = 1.0e-6
double laserRayleighY_m = 1.0e-6
double laserSigmaT_m = 5.0e-12 * Physics::c
bool overlapWeighting = false
Vector_t< double, 3 > referenceHighEnergyDirection
double relativeEnergySpread = 0.0
double sigmaS_m = 0.0
double sigmaThetaXRad = 1.0e-3
double sigmaThetaYRad = 1.0e-3
double sigmaX_m = 0.0
double sigmaY_m = 0.0
size_t thetaBins = 80
double thetaMaxRad = 0.0060
double thetaMinRad = 0.0
double wavelength_m = 1.0e-9

◆ LinearBreitWheelerBenchmark::Histogram

struct LinearBreitWheelerBenchmark::Histogram

Definition at line 87 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::Histogram:
Collaboration graph
Class Members
double binWidth = 0.0
vector< double > centers
vector< double > counts
vector< double > density
double totalWeight = 0.0

◆ LinearBreitWheelerBenchmark::HistogramConfig

struct LinearBreitWheelerBenchmark::HistogramConfig

Definition at line 69 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::HistogramConfig:
Collaboration graph
Class Members
size_t bins = 80
Vector_t< double, 3 > highEnergyDirection
double highEnergyPhotonEnergyGeV = 0.5
Vector_t< double, 3 > laserDirection
double maxValue = 0.5
double minValue = 0.0
double wavelength_m = 1.0e-9

◆ LinearBreitWheelerBenchmark::JointHistogram

struct LinearBreitWheelerBenchmark::JointHistogram

Definition at line 147 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::JointHistogram:
Collaboration graph
Class Members
vector< vector< double > > counts
vector< vector< double > > densityPerGeVRad
double energyBinWidthGeV = 0.0
vector< double > energyCentersGeV
double thetaBinWidthRad = 0.0
vector< double > thetaCentersRad
double totalWeight = 0.0

◆ LinearBreitWheelerBenchmark::JointHistogramConfig

struct LinearBreitWheelerBenchmark::JointHistogramConfig

Definition at line 95 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::JointHistogramConfig:
Collaboration graph
Class Members
size_t energyBins = 80
double energyMaxGeV = 0.5
double energyMinGeV = 0.0
Vector_t< double, 3 > highEnergyDirection
double highEnergyPhotonEnergyGeV = 0.5
Vector_t< double, 3 > laserDirection
size_t thetaBins = 80
double thetaMaxRad = 0.0045
double thetaMinRad = 0.0
double wavelength_m = 1.0e-9

◆ LinearBreitWheelerBenchmark::SampledPhotonBeamState

struct LinearBreitWheelerBenchmark::SampledPhotonBeamState

Definition at line 174 of file LinearBreitWheelerBenchmarkCommon.h.

Collaboration diagram for LinearBreitWheelerBenchmark::SampledPhotonBeamState:
Collaboration graph
Class Members
Vector_t< double, 3 > direction
double energyGeV = 0.0
double s_m = 0.0
double slopeXRad = 0.0
double slopeYRad = 0.0
double x_m = 0.0
double y_m = 0.0

Enumeration Type Documentation

◆ FinalState

Enumerator
Electron 
Positron 

Definition at line 19 of file LinearBreitWheelerBenchmarkCommon.h.

◆ Observable

Enumerator
Energy 
Theta 

Definition at line 24 of file LinearBreitWheelerBenchmarkCommon.h.

Function Documentation

◆ buildTransverseBasis()

void LinearBreitWheelerBenchmark::buildTransverseBasis ( const Vector_t< double, 3 > &  referenceDirection,
Vector_t< double, 3 > &  axis1,
Vector_t< double, 3 > &  axis2 
)
inline

Definition at line 191 of file LinearBreitWheelerBenchmarkCommon.h.

References cross(), and dot().

Referenced by samplePhotonBeamState().

Here is the call graph for this function:

◆ effectiveSpatialOverlapSigma()

double LinearBreitWheelerBenchmark::effectiveSpatialOverlapSigma ( double  beamSigma_m,
double  waist_m 
)
inline

◆ effectiveTemporalOverlapSigma()

double LinearBreitWheelerBenchmark::effectiveTemporalOverlapSigma ( double  beamSigmaS_m,
double  laserSigmaT_m 
)
inline

◆ histogramArea()

double LinearBreitWheelerBenchmark::histogramArea ( const Histogram histogram)
inline

◆ histogramL1Distance()

double LinearBreitWheelerBenchmark::histogramL1Distance ( const Histogram lhs,
const Histogram rhs 
)
inline

◆ histogramMean()

◆ jointHistogramArea()

◆ jointHistogramL1Distance()

◆ jointHistogramMeanEnergyGeV()

◆ jointHistogramMeanThetaRad()

◆ polarAngleRad()

double LinearBreitWheelerBenchmark::polarAngleRad ( const Vector_t< double, 3 > &  momentum)
inline

Definition at line 157 of file LinearBreitWheelerBenchmarkCommon.h.

Referenced by sampledObservable().

◆ readHistogramCSV()

◆ readJointHistogramCSV()

◆ sampledObservable()

◆ sampleFinitePhotonBeamHistogram()

Histogram LinearBreitWheelerBenchmark::sampleFinitePhotonBeamHistogram ( const FinitePhotonBeamConfig config,
FinalState  state,
Observable  observable,
std::size_t  sampleCount,
std::uint64_t  streamIndex = 0 
)
inline

Sample a one-dimensional Breit-Wheeler histogram for a finite incoming photon beam.

The laser photon stays fixed. For each sampled event the incoming high-energy photon direction is drawn from a Gaussian angular spread around the reference beam axis, and the energy is optionally smeared by a Gaussian relative energy spread. The resulting per-event kernel is then sampled with the same host-side Breit-Wheeler event generator used in the fixed-geometry benchmark.

Definition at line 327 of file LinearBreitWheelerBenchmarkCommon.h.

References LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::bins, LinearBreitWheelerBenchmark::Histogram::binWidth, LinearBreitWheelerBenchmark::Histogram::centers, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::centralHighEnergyPhotonEnergyGeV, LinearBreitWheelerBenchmark::Histogram::counts, LinearBreitWheelerBenchmark::Histogram::density, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::laserDirection, Physics::LinearBreitWheeler::makeHostRandomEngine(), Physics::LinearBreitWheeler::makeSamplingKernel(), LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::maxValue, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::minValue, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::overlapWeighting, Physics::LinearBreitWheeler::photonEnergyFromWavelengthGeV(), LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::referenceHighEnergyDirection, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::relativeEnergySpread, sampledObservable(), Physics::LinearBreitWheeler::sampleEvent(), sampleOverlapPhotonBeamState(), samplePhotonBeamState(), LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::sigmaS_m, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::sigmaThetaXRad, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::sigmaThetaYRad, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::sigmaX_m, LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::sigmaY_m, LinearBreitWheelerBenchmark::Histogram::totalWeight, and LinearBreitWheelerBenchmark::FinitePhotonBeamConfig::wavelength_m.

Referenced by TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

Here is the call graph for this function:

◆ sampleFinitePhotonBeamJointHistogram()

JointHistogram LinearBreitWheelerBenchmark::sampleFinitePhotonBeamJointHistogram ( const FinitePhotonBeamJointConfig config,
FinalState  state,
std::size_t  sampleCount,
std::uint64_t  streamIndex = 0 
)
inline

Sample the joint Breit-Wheeler laboratory distribution in energy and polar angle.

Each sampled event contributes to a two-dimensional histogram in \((E,\theta)\) for either the outgoing electron or positron. The resulting density is normalized so that integrating over the full histogram cell area yields unity.

Definition at line 465 of file LinearBreitWheelerBenchmarkCommon.h.

References LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::centralHighEnergyPhotonEnergyGeV, LinearBreitWheelerBenchmark::JointHistogram::counts, LinearBreitWheelerBenchmark::JointHistogram::densityPerGeVRad, Energy, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::energyBins, LinearBreitWheelerBenchmark::JointHistogram::energyBinWidthGeV, LinearBreitWheelerBenchmark::JointHistogram::energyCentersGeV, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::energyMaxGeV, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::energyMinGeV, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::laserDirection, Physics::LinearBreitWheeler::makeHostRandomEngine(), Physics::LinearBreitWheeler::makeSamplingKernel(), LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::overlapWeighting, Physics::LinearBreitWheeler::photonEnergyFromWavelengthGeV(), LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::referenceHighEnergyDirection, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::relativeEnergySpread, sampledObservable(), Physics::LinearBreitWheeler::sampleEvent(), sampleOverlapPhotonBeamState(), samplePhotonBeamState(), LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::sigmaS_m, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::sigmaThetaXRad, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::sigmaThetaYRad, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::sigmaX_m, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::sigmaY_m, Theta, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::thetaBins, LinearBreitWheelerBenchmark::JointHistogram::thetaBinWidthRad, LinearBreitWheelerBenchmark::JointHistogram::thetaCentersRad, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::thetaMaxRad, LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::thetaMinRad, LinearBreitWheelerBenchmark::JointHistogram::totalWeight, and LinearBreitWheelerBenchmark::FinitePhotonBeamJointConfig::wavelength_m.

Referenced by main(), TEST(), TEST(), TEST(), and TEST().

Here is the call graph for this function:

◆ sampleHighEnergyPhotonEnergyGeV()

double LinearBreitWheelerBenchmark::sampleHighEnergyPhotonEnergyGeV ( double  centralEnergyGeV,
double  relativeEnergySpread,
std::mt19937_64 &  engine 
)
inline

Definition at line 304 of file LinearBreitWheelerBenchmarkCommon.h.

Referenced by samplePhotonBeamState().

◆ sampleHistogram()

Histogram LinearBreitWheelerBenchmark::sampleHistogram ( const HistogramConfig config,
FinalState  state,
Observable  observable,
std::size_t  sampleCount,
std::uint64_t  streamIndex = 0 
)
inline

◆ sampleJointHistogram()

JointHistogram LinearBreitWheelerBenchmark::sampleJointHistogram ( const JointHistogramConfig config,
FinalState  state,
std::size_t  sampleCount,
std::uint64_t  streamIndex = 0 
)
inline

Definition at line 554 of file LinearBreitWheelerBenchmarkCommon.h.

References LinearBreitWheelerBenchmark::JointHistogram::counts, LinearBreitWheelerBenchmark::JointHistogram::densityPerGeVRad, Energy, LinearBreitWheelerBenchmark::JointHistogramConfig::energyBins, LinearBreitWheelerBenchmark::JointHistogram::energyBinWidthGeV, LinearBreitWheelerBenchmark::JointHistogram::energyCentersGeV, LinearBreitWheelerBenchmark::JointHistogramConfig::energyMaxGeV, LinearBreitWheelerBenchmark::JointHistogramConfig::energyMinGeV, LinearBreitWheelerBenchmark::JointHistogramConfig::highEnergyDirection, LinearBreitWheelerBenchmark::JointHistogramConfig::highEnergyPhotonEnergyGeV, LinearBreitWheelerBenchmark::JointHistogramConfig::laserDirection, Physics::LinearBreitWheeler::makeHostRandomEngine(), Physics::LinearBreitWheeler::makeSamplingKernel(), Physics::LinearBreitWheeler::photonEnergyFromWavelengthGeV(), sampledObservable(), Physics::LinearBreitWheeler::sampleEvent(), Theta, LinearBreitWheelerBenchmark::JointHistogramConfig::thetaBins, LinearBreitWheelerBenchmark::JointHistogram::thetaBinWidthRad, LinearBreitWheelerBenchmark::JointHistogram::thetaCentersRad, LinearBreitWheelerBenchmark::JointHistogramConfig::thetaMaxRad, LinearBreitWheelerBenchmark::JointHistogramConfig::thetaMinRad, LinearBreitWheelerBenchmark::JointHistogram::totalWeight, and LinearBreitWheelerBenchmark::JointHistogramConfig::wavelength_m.

Referenced by main(), TEST(), and TEST().

Here is the call graph for this function:

◆ sampleOverlapPhotonBeamState() [1/2]

◆ sampleOverlapPhotonBeamState() [2/2]

◆ samplePhotonBeamDirection()

Vector_t< double, 3 > LinearBreitWheelerBenchmark::samplePhotonBeamDirection ( const Vector_t< double, 3 > &  referenceDirection,
double  sigmaThetaXRad,
double  sigmaThetaYRad,
std::mt19937_64 &  engine 
)
inline

Definition at line 231 of file LinearBreitWheelerBenchmarkCommon.h.

References LinearBreitWheelerBenchmark::SampledPhotonBeamState::direction, and samplePhotonBeamState().

Here is the call graph for this function:

◆ samplePhotonBeamState()

◆ writeHistogramCSV()

void LinearBreitWheelerBenchmark::writeHistogramCSV ( const Histogram histogram,
const std::filesystem::path &  outputPath 
)
inline

◆ writeJointHistogramCSV()

void LinearBreitWheelerBenchmark::writeJointHistogramCSV ( const JointHistogram histogram,
const std::filesystem::path &  outputPath 
)
inline