Celeritas 0.7+b3eeee4
Loading...
Searching...
No Matches
Public Member Functions | List of all members
celeritas::CherenkovOffload Class Reference

A replacement for Geant4's G4Cerenkov process which constructs GeneratorDistributionData from a PostStepDoIt call. More...

#include <CherenkovOffload.hh>

Inheritance diagram for celeritas::CherenkovOffload:
Inheritance graph
[legend]

Public Member Functions

void PreparePhysicsTable (G4ParticleDefinition const &) override
 Prepare physics table for particle and enforce photon stacking.
 
G4VParticleChangePostStepDoIt (G4Track const &aTrack, G4Step const &aStep) override
 Create a generator distribution for the given track and step.
 
 CherenkovOffload (units::ElementaryCharge charge, real_type step_length, OffloadPreStepData const &pre_step, optical::MaterialView const &pre_mat, units::LightSpeed post_speed, real_type post_time, Real3 const &post_pos, NativeCRef< CherenkovData > const &shared)
 Construct directly from data.
 
 CherenkovOffload (OffloadPreStepData const &pre_step, optical::MaterialView const &pre_mat, ParticleTrackView const &post_particle, SimTrackView const &post_sim, Real3 const &post_pos, NativeCRef< CherenkovData > const &shared)
 Construct with optical material, Cherenkov, and step information.
 
template<class Generator >
optical::GeneratorDistributionData operator() (Generator &rng)
 Collect the distribution data needed to sample Cherenkov photons.
 

Detailed Description

A replacement for Geant4's G4Cerenkov process which constructs GeneratorDistributionData from a PostStepDoIt call.

Sample the number of Cherenkov photons to be generated.

This process should have stacking photons set to false so that photons are not initialized in Geant4.

This populates the GeneratorDistributionData used by the CherenkovGenerator to generate optical photons using post-step and cached pre-step data.

The number of photons is sampled from a Poisson distribution with a mean

\[ \langle n \rangle = \ell_\text{step} \difd{N}{x} \]

where \( \ell_\text{step} \) is the step length.

Member Function Documentation

◆ operator()()

template<class Generator >
optical::GeneratorDistributionData celeritas::CherenkovOffload::operator() ( Generator rng)
inline

Collect the distribution data needed to sample Cherenkov photons.

If no photons are sampled an empty object is returned.

◆ PostStepDoIt()

G4VParticleChange * celeritas::CherenkovOffload::PostStepDoIt ( G4Track const aTrack,
G4Step const aStep 
)
override

Create a generator distribution for the given track and step.

Stacking photons should be disabled so that photons are not duplicated in Geant4. After calling the G4Cerenkov::PostStepDoIt this function creates a GeneratorDistributionData and pushes it to the local offload, which should be LocalOpticalGenOffload.

◆ PreparePhysicsTable()

void celeritas::CherenkovOffload::PreparePhysicsTable ( G4ParticleDefinition const particle)
override

Prepare physics table for particle and enforce photon stacking.

Defers physics table preparation to G4Cerenkov, but also enforces that stacking photons is false afterwards.


The documentation for this class was generated from the following files: