Vector and Matrix Types

4-Momenta

QEDcore.SFourMomentumType
struct SFourMomentum{T<:Real} <: AbstractFourMomentum{T<:Real}

Builds a static LorentzVectorLike with real components used to statically model the four-momentum of a particle or field.

Fields

  • E::Real: energy component

  • px::Real: x component

  • py::Real: y component

  • pz::Real: z component

source

Spinors

QEDcore.BiSpinorType
struct BiSpinor{T<:Number} <: AbstractDiracVector{T<:Number}

Concrete type to model a Dirac four-spinor. These are the elements of an actual spinor space. By default, a constructed BiSpinor will have complex-valued components, using ComplexF64, but any other Number type can be used by explicitly calling BiSpinor{T}(el1, el2, el3, el4), which converts all given elements to T.

source
QEDcore.AdjointBiSpinorType
struct AdjointBiSpinor{T<:Number} <: AbstractDiracVector{T<:Number}

Concrete type to model an adjoint Dirac four-spinor. These are the elements of the dual spinor space. By default, a constructed AdjointBiSpinor will have complex-valued components, using ComplexF64, but any other Number type can be used by explicitly calling AdjointBiSpinor{T}(el1, el2, el3, el4), which converts all given elements to T.

source

Lorentz Vectors

QEDcore.SLorentzVectorType
struct SLorentzVector{T} <: AbstractLorentzVector{T}

Concrete implementation of a generic static Lorentz vector. Each manipulation of an concrete implementation which is not self-contained (i.e. produces the same Lorentz vector type) will result in this type.

Fields

  • t::Any: t component

  • x::Any: x component

  • y::Any: y component

  • z::Any: z component

source

Dirac Matrix

QEDcore.DiracMatrixType
struct DiracMatrix{T<:Number} <: AbstractDiracMatrix{T<:Number}

Concrete type to model Dirac matrices, i.e. matrix representations of linear mappings between two spinor spaces.

source

Multiplications

QEDcore._mulFunction
_mul(abs::AdjointBiSpinor, bs::BiSpinor) -> Any

Tensor product of an adjoint with a standard bi-spinor resulting in a scalar.

Multiplication operator

This also overloads the * operator for this types.

source
_mul(bs::BiSpinor, abs::AdjointBiSpinor) -> DiracMatrix

Tensor product of a standard with an adjoint bi-spinor resulting in a Dirac matrix.

Multiplication operator

This also overloads the * operator for this types.

source
_mul(dm::DiracMatrix, bs::BiSpinor) -> Any

Tensor product of an Dirac matrix with a standard bi-spinor resulting in another standard bi-spinor.

Multiplication operator

This also overloads the * operator for this types.

source
_mul(abs::AdjointBiSpinor, dm::DiracMatrix) -> Any

Tensor product of an adjoint bi-spinor with a Dirac matrix resulting in another adjoint bi-spinor.

Multiplication operator

This also overloads the * operator for this types.

source
_mul(dm1::DiracMatrix, dm2::DiracMatrix) -> DiracMatrix

Tensor product two Dirac matrices resulting in another Dirac matrix.

Multiplication operator

This also overloads the * operator for this types.

source
_mul(d::DiracMatrix, a::AdjointBiSpinor)

The product of a Dirac matrix with an adjoint bi-spinor from the right is not defined. Therefore, this throws a method error.

Note

We must throw this error explicitly, because otherwise the multiplication is dispatched to methods from StaticArrays.jl.

source
_mul(b::BiSpinor, d::DiracMatrix)

The product of a Dirac matrix with a bi-spinor from the left is not defined. Therefore, this throws a method error.

Note

We must throw this error explicitly, because otherwise the multiplication is dispatched to methods from StaticArrays.jl.

source