Class PropagationCK

Nested Relationships

Inheritance Relationships

Base Type

Class Documentation

class PropagationCK : public Module

Rectilinear propagation through magnetic fields using the Cash-Karp method.

This module solves the equations of motion of a relativistic charged particle when propagating through a magnetic field.

It uses the Runge-Kutta integration method with Cash-Karp coefficients.

The step size control tries to keep the relative error close to, but smaller than the designated tolerance. Additionally a minimum and maximum size for the steps can be set. For neutral particles a rectilinear propagation is applied and a next step of the maximum step size proposed.

Public Functions

PropagationCK(ref_ptr < MagneticField > field = NULL, double tolerance = 1e-4, double minStep = (0.1 *kpc), double maxStep = (1 *Gpc))
void process(Candidate *candidate) const
PropagationCK::Y dYdt(const Y &y, ParticleState &p, double z) const
void tryStep(const Y &y, Y &out, Y &error, double t, ParticleState &p, double z) const
void setField(ref_ptr<MagneticField> field)
void setTolerance(double tolerance)
void setMinimumStep(double minStep)
void setMaximumStep(double maxStep)
double getTolerance() const
double getMinimumStep() const
double getMaximumStep() const
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
class Y

Public Functions

Y(const Vector3d &x, const Vector3d &u)
Y(double f)
Y operator*(double f) const
Y &operator+=(const Y &y)

Public Members

Vector3d x
Vector3d u