Class AbstractAccelerationModule

Inheritance Relationships

Base Type

Derived Types

Class Documentation

class AbstractAccelerationModule : public Module

Core functionallity for acceleration by scattering with scatter centers moving in a velocity field.

The velocity field is implicity implemented in the derived classes for performance reasons. Models for the dependence of the step length of the scatter process are set via modifiers.

Subclassed by DirectedFlowScattering, SecondOrderFermi

Public Functions

AbstractAccelerationModule(double _stepLength = 1. *parsec)

The parent’s constructor need to be called on initialization!

void add(StepLengthModifier *modifier)
void process(Candidate *candidate) const
virtual Vector3d scatterCenterVelocity(Candidate *candidate) const = 0

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

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).

std::string getDescription() const
void setDescription(const std::string &description)
void process(ref_ptr<Candidate> candidate) const
size_t addReference() const
size_t removeReference() const
int removeReferenceNoDelete() const
size_t getReferenceCount() const

Protected Attributes

size_t _referenceCount