Lorentz Boosts
The following is an implementation of the Lorentz Boost Interface of QEDbase.jl.
QEDcore.Boost
— TypeBoost{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 typeV
, which is a subtype ofAbstractBoostParameter
. 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.
QEDcore.BetaVector
— TypeBetaVector(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
QEDcore.BetaX
— TypeBetaX(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
QEDcore.BetaY
— TypeBetaY(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
QEDcore.BetaZ
— TypeBetaZ(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