Class ParticleState

Class Documentation

class ParticleState

State of the particle: ID, energy, position, direction.

The ParticleState defines the state of an ultra-high energy cosmic ray, which is assumed to be traveling at the exact speed of light. The cosmic ray state is defined by particle ID, energy and position and direction vector. For faster lookup mass and charge of the particle are stored as members.

Public Functions

ParticleState(int id = 0, double energy = 0, Vector3d position = Vector3d(0, 0, 0), Vector3d direction = Vector3d(-1, 0, 0))

Constructor for a particle state.

Parameters:
  • id – id of the particle following the PDG numbering scheme

  • energy – energy of the particle [in Joules]

  • position – vector containing the coordinates of the particle [in meters]

  • direction – vector containing the direction of motion of the particle

void setPosition(const Vector3d &pos)

Set particle position. In simulations including cosmological effects, the position is given in comoving coordinates.

Parameters:

pos – vector containing the coordinates of the particle [in meters]

const Vector3d &getPosition() const

Get position of particle.

Returns:

Position vector of particle. If cosmological effects are included, the coordinates are comoving.

void setDirection(const Vector3d &dir)

Set direction unit vector, non unit-vectors are normalized

Parameters:

dir – vector containing the direction of motion of the particle

const Vector3d &getDirection() const

Get direction unit vector

Returns:

Normalized vector containing direction of motion of particle.

void setEnergy(double newEnergy)

Set energy of particle.

Parameters:

newEnergy – energy to be assigned to particle [in Joules]

double getEnergy() const

Get energy of particle.

Returns:

Energy of particle [in Joules]

double getRigidity() const

Get rigidity of particle, defined as E/(Z*e).

Returns:

Rigidity of the particle [in Volts]

void setId(int newId)

Set particle ID. This follows the PDG numbering scheme: https://pdg.lbl.gov/2019/reviews/rpp2019-rev-monte-carlo-numbering.pdf

Parameters:

newId – id to be assigned to the particle

int getId() const

Get particle ID

Returns:

Particle ID (in PDG format).

std::string getDescription() const
double getCharge() const

Get electrical charge of the particle.

Returns:

Charge of the particle [in Coulombs]

double getMass() const

Get mass of the particle.

Returns:

Mass of the particle [kg]

void setLorentzFactor(double gamma)

Set Lorentz factor and modify the particle’s energy accordingly.

Parameters:

gamma – Lorentz factor

double getLorentzFactor() const

Get Lorentz factor

Returns:

Lorentz factor of particle

Vector3d getVelocity() const

Get velocity: direction times the speed of light.

Returns:

Velocity of particle [m/s]

Vector3d getMomentum() const

Get momentum: direction times energy divided by the speed of light

Returns:

The momentum [kg m/s]