Class SecondOrderFermi

Inheritance Relationships

Base Type

Class Documentation

class SecondOrderFermi : public AbstractAccelerationModule

Implements scattering with centers moving in isotropic directions. All scatter centers have the same velocity.

Public Functions

SecondOrderFermi(double scatterVelocity = .1 * crpropa::c_light, double stepLength = 1. * crpropa::parsec, unsigned int sizeOfPitchangleTable = 10000)

Constructor

Parameters:
  • scatterVelocity – velocity of scattering centers

  • stepLength – average mean free path

  • sizeOfPitchangleTable – number of precalculated pitch angles

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

Process function This is the main function to work with, it is called during every ModuleList::run step. Derived functions need to override this overload of process!

Parameters:

candidateCandidate raw pointer

inline void process(ref_ptr<Candidate> candidate) const

Process function Overload for process function to explicitly make a conversion from ref_ptr to a raw pointer

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

Returns description, can be overriden by derived class.

void setDescription(const std::string &description)

Sets description, can be used instead of getDescription in derived class

Parameters:

description – Description string

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