WarpX
Loading...
Searching...
No Matches
SingleLinearBreitWheelerCollisionEvent.H File Reference

Go to the source code of this file.

Functions

template<typename index_type>
AMREX_GPU_HOST_DEVICE AMREX_INLINE void SingleLinearBreitWheelerCollisionEvent (const amrex::ParticleReal &u1x, const amrex::ParticleReal &u1y, const amrex::ParticleReal &u1z, const amrex::ParticleReal &u2x, const amrex::ParticleReal &u2y, const amrex::ParticleReal &u2z, amrex::ParticleReal w1, amrex::ParticleReal w2, const amrex::Real &dt, const amrex::ParticleReal &dV, const int &pair_index, index_type *AMREX_RESTRICT p_mask, amrex::ParticleReal *AMREX_RESTRICT p_pair_reaction_weight, const amrex::ParticleReal &event_multiplier, const int &multiplier_ratio, const amrex::ParticleReal &probability_threshold, const amrex::ParticleReal &probability_target_value, const amrex::RandomEngine &engine)
 This function computes whether the collision between two photons results in a pair-producing (electron and positron) event, using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). If the electron-positron pair is produced, the mask is set to true for that given pair of macrophotons and the weight of the produced particles is stored in p_pair_reaction_weight.
 

Function Documentation

◆ SingleLinearBreitWheelerCollisionEvent()

template<typename index_type>
AMREX_GPU_HOST_DEVICE AMREX_INLINE void SingleLinearBreitWheelerCollisionEvent ( const amrex::ParticleReal & u1x,
const amrex::ParticleReal & u1y,
const amrex::ParticleReal & u1z,
const amrex::ParticleReal & u2x,
const amrex::ParticleReal & u2y,
const amrex::ParticleReal & u2z,
amrex::ParticleReal w1,
amrex::ParticleReal w2,
const amrex::Real & dt,
const amrex::ParticleReal & dV,
const int & pair_index,
index_type *AMREX_RESTRICT p_mask,
amrex::ParticleReal *AMREX_RESTRICT p_pair_reaction_weight,
const amrex::ParticleReal & event_multiplier,
const int & multiplier_ratio,
const amrex::ParticleReal & probability_threshold,
const amrex::ParticleReal & probability_target_value,
const amrex::RandomEngine & engine )

This function computes whether the collision between two photons results in a pair-producing (electron and positron) event, using the algorithm described in Higginson et al., Journal of Computational Physics 388, 439-453 (2019). If the electron-positron pair is produced, the mask is set to true for that given pair of macrophotons and the weight of the produced particles is stored in p_pair_reaction_weight.

Note that the word 'pair' sometimes refers to the electron-positron products of the collision, sometimes to the macrophotons that are paired to collide in a cell according to the algorithm. It should be clear from the context.

Template Parameters
index_typetype of the index argument
Parameters
[in]u1x,u1y,u1zmomentum components of the first colliding particle
[in]u2x,u2y,u2zmomentum components of the second colliding particle
[in]w1,w2effective weight of the colliding particles
[in]dtis the time step length between two collision calls.
[in]dVis the volume of the corresponding cell.
[in]pair_indexis the index of the colliding pair
[out]p_maskis a mask that will be set to true if pair (electron-positron) production occurs for that pair of macrophotons
[out]p_pair_reaction_weightstores the weight of the product particles
[in]event_multiplierfactor used to increase the number of pair-production events by decreasing the weight of the produced particles
[in]multiplier_ratiofactor used to take into account unsampled pairs (i.e. the fact that a particle only collides with one or few particles of the other species)
[in]probability_thresholdprobability threshold above which we decrease the event multiplier
[in]probability_target_valueif the probability threshold is exceeded, this is used to determine by how much the event multiplier is reduced
[in]enginethe random engine.