Lorentz Boosts

The following is an implementation of the Lorentz Boost Interface of QEDbase.jl.

QEDcore.BoostType
Boost{V<:QEDbase.AbstractBoostParameter} <: QEDbase.AbstractLorentzBoost

A concrete type representing a Lorentz boost transformation, parameterized by a boost parameter V. The boost parameter can be either axis-specific or vector-like, depending on the subtype of QEDbase.AbstractBoostParameter used. The Boost type is used to perform Lorentz boosts on four-vectors (such as four-momentum or four-position) between different inertial frames in special relativity.

Fields

  • param::V: A boost parameter of type V, which is a subtype of AbstractBoostParameter. This parameter defines the velocity (as a fraction of the speed of light, $\beta$) and the direction of the boost (e.g., along a single axis or in multiple directions).

Overview

A Lorentz boost is a transformation that adjusts the time and spatial components of a four-vector based on the relative velocity between two reference frames. The Boost struct provides a general and flexible implementation of such a boost, where the type of the boost parameter determines the direction and magnitude of the boost.

Depending on the boost parameter V, the boost can be:

  • Axis-specific: When V is an axis-specific boost parameter (e.g., BetaX), the boost will be along that axis.
  • Vector-like: When V is a vector of boost parameters (e.g., BetaVector), the boost will have components in multiple spatial directions.

Example

To create a Lorentz boost along the x-axis using the BetaX boost parameter:

julia> using QEDcore

julia> beta_x = BetaX(0.5)
BetaX{Float64}(0.5)

julia> boost_x = Boost(beta_x)
Boost{BetaX{Float64}}(BetaX{Float64}(0.5))

To perform a Lorentz boost using the boost_x object, you can apply it to a four-vector, such as four-momentum:

julia> p = SFourMomentum(4, 3, 2, 1)
4-element SFourMomentum with indices SOneTo(4):
 4.0
 3.0
 2.0
 1.0

julia> p_prime = boost_x(p)  # Perform the boost
4-element SFourMomentum with indices SOneTo(4):
 2.886751345948129
 1.1547005383792517
 2.0
 1.0

julia> @assert isapprox(p*p, p_prime*p_prime)  # The invariant mass is preserved

Notes

The Boost type provides a unified and flexible interface for applying Lorentz boosts, with the boost parameter V determining the specific form of the transformation. Lorentz boosts preserve the spacetime interval, meaning that applying the boost to a four-vector will not change the invariant quantity.

See Also

  • QEDbase.AbstractBoostParameter: Base type for specific kinds of boost parameters.
  • BetaX: Boost parameter for the x-axis.
  • BetaY: Boost parameter for the y-axis.
  • BetaZ: Boost parameter for the z-axis.
  • BetaVector: Vector of boost parameters for boosts in multiple spatial directions.
source
QEDcore.BetaVectorType
BetaVector(x::Real,y::Real,z::Real)

Represents the spatial vector of velocity parameters (denoted as the "beta" vector) associated with motion in the three Cartesian directions, i.e., $\vec\beta = (\beta_x, \beta_y, \beta_z)$. These components correspond to the velocity of an object (in units of the speed of light) in each of the $x$, $y$, and $z$ directions.

The Lorentz boost along the direction of the beta vector $\vec\beta$ transforms the four-momentum as follows:

\[\begin{pmatrix} p_0\\ p_1\\ p_2\\ p_3 \end{pmatrix} \mapsto \begin{pmatrix} \gamma (p_0 - \vec\beta \vec p)\\ p_1 + (\frac{\gamma - 1}{\beta^2} \vec\beta\vec p - \gamma p_0) \beta_x\\ p_2 + (\frac{\gamma - 1}{\beta^2} \vec\beta\vec p - \gamma p_0) \beta_y\\ p_3 + (\frac{\gamma - 1}{\beta^2} \vec\beta\vec p - \gamma p_0) \beta_z\\ \end{pmatrix}\]

where the kinematic factor is given as $\gamma = 1/\sqrt{1-\beta_x^2}$.

Example

julia> using QEDcore

julia> beta_vec = BetaVector(0.2,0.3,0.1)
BetaVector{Float64}(0.2, 0.3, 0.1)

julia> boost = Boost(beta_vec)
Boost{BetaVector{Float64}}(BetaVector{Float64}(0.2, 0.3, 0.1))

julia> p = SFourMomentum(4.0,3.0,2.0,1.0)
4-element SFourMomentum with indices SOneTo(4):
 4.0
 3.0
 2.0
 1.0

julia> p_prime = boost(p)
4-element SFourMomentum with indices SOneTo(4):
 2.911484876492837
 2.282803602436349
 0.9242054036545237
 0.6414018012181746

julia> @assert isapprox(p*p,p_prime*p_prime) # Invariant mass is preserved

External link

source
QEDcore.BetaXType
BetaX(beta::T) where {T<:Real}

Represents the beta parameter associated with a Lorentz boost along the x-axis, commonly denoted as $\beta_x$.

The transformation for a boost along the x-axis is:

\[\begin{pmatrix} p_0\\ p_1\\ p_2\\ p_3 \end{pmatrix} \mapsto \begin{pmatrix} \gamma (p_0 - \beta_x p_1)\\ \gamma (p_1 - \beta_x p_0)\\ p_2\\ p_3 \end{pmatrix}\]

where the kinematic factor is given as $\gamma = 1/\sqrt{1-\beta_x^2}$)

Example

julia> using QEDcore

julia> beta_x = BetaX(0.5)
BetaX{Float64}(0.5)

julia> boost = Boost(beta_x)
Boost{BetaX{Float64}}(BetaX{Float64}(0.5))

julia> p = SFourMomentum(4,3,2,1)
4-element SFourMomentum with indices SOneTo(4):
 4.0
 3.0
 2.0
 1.0

julia> p_prime = boost(p)
4-element SFourMomentum with indices SOneTo(4):
 2.886751345948129
 1.1547005383792517
 2.0
 1.0

julia> @assert isapprox(p*p,p_prime*p_prime) # Invariant mass is preserved

External link

source
QEDcore.BetaYType
BetaY(beta::T) where {T<:Real}

Represents the beta parameter associated with a Lorentz boost along the y-axis, commonly denoted as $\beta_y$.

The transformation for a boost along the y-axis is:

\[\begin{pmatrix} p_0\\ p_1\\ p_2\\ p_3 \end{pmatrix} \mapsto \begin{pmatrix} \gamma (p_0 - \beta_y p_2)\\ p_1\\ \gamma (p_2 - \beta_y p_0)\\ p_3 \end{pmatrix}\]

where the kinematic factor is given as $\gamma = 1/\sqrt{1-\beta_y^2}$)

Example

julia> using QEDcore

julia> using Random

julia> RNG = MersenneTwister(1234)
MersenneTwister(1234)

julia> beta_y = BetaY(0.5)
BetaY{Float64}(0.5)

julia> boost = Boost(beta_y)
Boost{BetaY{Float64}}(BetaY{Float64}(0.5))

julia> p = SFourMomentum(4,3,2,1)
4-element SFourMomentum with indices SOneTo(4):
 4.0
 3.0
 2.0
 1.0

julia> p_prime = boost(p)
4-element SFourMomentum with indices SOneTo(4):
 3.4641016151377553
 3.0
 0.0
 1.0

julia> @assert isapprox(p*p,p_prime*p_prime) # Invariant mass is preserved

External link

source
QEDcore.BetaZType
BetaZ(beta::T) where {T<:Real}

Represents the beta parameter associated with a Lorentz boost along the z-axis, commonly denoted as $\beta_z$.

The transformation for a boost along the z-axis is:

\[\begin{pmatrix} p_0\\ p_1\\ p_2\\ p_3 \end{pmatrix} \mapsto \begin{pmatrix} \gamma (p_0 - \beta_z p_3)\\ p_1\\ p_2\\ \gamma (p_3 - \beta_z p_0)\\ \end{pmatrix}\]

where the kinematic factor is given as $\gamma = 1/\sqrt{1-\beta_z^2}$)

Example

julia> using QEDcore

julia> using Random

julia> RNG = MersenneTwister(1234)
MersenneTwister(1234)

julia> beta_z = BetaZ(0.5)
BetaZ{Float64}(0.5)

julia> boost = Boost(beta_z)
Boost{BetaZ{Float64}}(BetaZ{Float64}(0.5))

julia> p = SFourMomentum(4,3,2,1)
4-element SFourMomentum with indices SOneTo(4):
 4.0
 3.0
 2.0
 1.0

julia> p_prime = boost(p)
4-element SFourMomentum with indices SOneTo(4):
  4.041451884327381
  3.0
  2.0
 -1.1547005383792517

julia> @assert isapprox(p*p,p_prime*p_prime) # Invariant mass is preserved

External link

source