group Utilities

Collection of classes and methods to perform recurring tasks.

class COMBoost
#include <COMBoost.hpp>

This utility class handles Lorentz boost (in one spatial direction) between different referenence frames, using FourVector.

The class is initialized with projectile and optionally target energy/momentum data. During initialization, a rotation matrix is calculated to represent the projectile movement (and thus the boost) along the z-axis. Also the inverse of this rotation is calculated. The Lorentz boost matrix and its inverse are determined as 2x2 matrices considering the energy and pz-momentum.

Different constructors are offered with different specialization for the cases of collisions (projectile-target) or just decays (projectile only).

Public Functions

COMBoost(FourMomentum const &P4projectile, HEPEnergyType const massTarget)

Construct a COMBoost given four-vector of projectile and mass of target (target at rest).

The FourMomentum and mass define the lab system.

COMBoost(MomentumVector const &momentum, HEPEnergyType const mass)

Construct a COMBoost to boost into the rest frame of a particle given its 3-momentum and mass.

COMBoost(FourMomentum const &P4projectile, FourMomentum const &P4target)

Construct a COMBoost given two four-vectors of projectile target.

The two FourMomentum can define an arbitrary system.

template<typename FourVector>
FourVector toCoM(FourVector const &p4) const

transforms a 4-momentum from lab frame to the center-of-mass frame

template<typename FourVector>
FourVector fromCoM(FourVector const &p4) const

transforms a 4-momentum from the center-of-mass frame back to lab frame

CoordinateSystemPtr const &getRotatedCS() const

returns the rotated coordinate system: +z is projectile direction

CoordinateSystemPtr const &getOriginalCS() const

returns the original coordinate system of the projectile (lab)

namespace andre


std::vector<double> solveP3(long double a, long double b, long double c, long double d, double const epsilon = 1e-12)

Solve a x^3 + b x^2 + c x + d = 0.

std::vector<double> solve_quartic_real(long double a, long double b, long double c, long double d, long double e, double const epsilon = 1e-12)

solve quartic equation a*x^4 + b*x^3 + c*x^2 + d*x + e Attention - this function returns dynamically allocated array.

It has to be released afterwards.