OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LinearBreitWheelerBenchmarkCommon.h File Reference
#include "Physics/LinearBreitWheeler.h"
#include "Physics/Physics.h"
#include <cmath>
#include <cstdint>
#include <filesystem>
#include <fstream>
#include <random>
#include <sstream>
#include <stdexcept>
#include <string>
#include <vector>
Include dependency graph for LinearBreitWheelerBenchmarkCommon.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

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

Namespaces

namespace  LinearBreitWheelerBenchmark
 

Enumerations

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

Functions

double LinearBreitWheelerBenchmark::polarAngleRad (const Vector_t< double, 3 > &momentum)
 
double LinearBreitWheelerBenchmark::sampledObservable (const Physics::LinearBreitWheeler::SampledEvent &event, FinalState state, Observable observable)
 
double LinearBreitWheelerBenchmark::sampleHighEnergyPhotonEnergyGeV (double centralEnergyGeV, double relativeEnergySpread, std::mt19937_64 &engine)
 
void LinearBreitWheelerBenchmark::buildTransverseBasis (const Vector_t< double, 3 > &referenceDirection, Vector_t< double, 3 > &axis1, Vector_t< double, 3 > &axis2)
 
SampledPhotonBeamState LinearBreitWheelerBenchmark::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 > LinearBreitWheelerBenchmark::samplePhotonBeamDirection (const Vector_t< double, 3 > &referenceDirection, double sigmaThetaXRad, double sigmaThetaYRad, std::mt19937_64 &engine)
 
double LinearBreitWheelerBenchmark::effectiveSpatialOverlapSigma (double beamSigma_m, double waist_m)
 
double LinearBreitWheelerBenchmark::effectiveTemporalOverlapSigma (double beamSigmaS_m, double laserSigmaT_m)
 
SampledPhotonBeamState LinearBreitWheelerBenchmark::sampleOverlapPhotonBeamState (const FinitePhotonBeamConfig &config, std::mt19937_64 &engine)
 
SampledPhotonBeamState LinearBreitWheelerBenchmark::sampleOverlapPhotonBeamState (const FinitePhotonBeamJointConfig &config, std::mt19937_64 &engine)
 
Histogram LinearBreitWheelerBenchmark::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 LinearBreitWheelerBenchmark::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 LinearBreitWheelerBenchmark::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 LinearBreitWheelerBenchmark::sampleJointHistogram (const JointHistogramConfig &config, FinalState state, std::size_t sampleCount, std::uint64_t streamIndex=0)
 
void LinearBreitWheelerBenchmark::writeHistogramCSV (const Histogram &histogram, const std::filesystem::path &outputPath)
 
void LinearBreitWheelerBenchmark::writeJointHistogramCSV (const JointHistogram &histogram, const std::filesystem::path &outputPath)
 
Histogram LinearBreitWheelerBenchmark::readHistogramCSV (const std::filesystem::path &inputPath)
 
JointHistogram LinearBreitWheelerBenchmark::readJointHistogramCSV (const std::filesystem::path &inputPath)
 
double LinearBreitWheelerBenchmark::histogramArea (const Histogram &histogram)
 
double LinearBreitWheelerBenchmark::histogramMean (const Histogram &histogram)
 
double LinearBreitWheelerBenchmark::histogramL1Distance (const Histogram &lhs, const Histogram &rhs)
 
double LinearBreitWheelerBenchmark::jointHistogramArea (const JointHistogram &histogram)
 
double LinearBreitWheelerBenchmark::jointHistogramMeanEnergyGeV (const JointHistogram &histogram)
 
double LinearBreitWheelerBenchmark::jointHistogramMeanThetaRad (const JointHistogram &histogram)
 
double LinearBreitWheelerBenchmark::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::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::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::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::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::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::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