Class DirectedFlowScattering

Inheritance Relationships

Base Type

Class Documentation

class DirectedFlowScattering : public AbstractAccelerationModule

Scattering in a directed flow of scatter centers.

Two of these region with different velocities can be used to create first order Fermi scenario. Thanks to Aritra Ghosh, Groningn University, for first work in 2017 on the shock acceleration in CRPropa leading to this module.

Public Functions

DirectedFlowScattering(crpropa::Vector3d scatterCenterVelocity, double stepLength = 1. * parsec)


  • scatterCenterVelocity – velocity of scattering centers

  • stepLength – average mean free path

virtual crpropa::Vector3d scatterCenterVelocity(crpropa::Candidate *candidate) const

Returns the velocity vector of the scatter centers in the rest frame of the candidate. Needs to be implemented in inheriting classes.

void add(StepLengthModifier *modifier)
virtual void process(Candidate *candidate) const
inline void process(ref_ptr<Candidate> candidate) const
void scatter(Candidate *candidate, const Vector3d &scatter_center_velocity) const

Scatter the candidate with a center with given scatter center velocity into a random direction. Assumes that the candidate is ultra-relativistic (m = 0).

virtual std::string getDescription() const
void setDescription(const std::string &description)
inline size_t addReference() const
inline size_t removeReference() const
inline int removeReferenceNoDelete() const
inline size_t getReferenceCount() const

Protected Attributes

mutable size_t _referenceCount