Phase Space Description
Frames and Coordinate Systems
QEDbase.AbstractCoordinateSystem
— TypeAbstractCoordinateSystem
TBW
QEDbase.AbstractFrameOfReference
— TypeAbstractFrameOfReference
TBW
QEDbase.AbstractPhasespaceDefinition
— TypeAbstractPhasespaceDefinition
TBW
Stateful Particles
QEDbase.AbstractParticleStateful
— TypeAbstractParticleStateful <: QEDbase.AbstractParticle
Abstract base type for the representation of a particle with a state. It requires the following interface functions to be provided:
particle_direction
: Returning the particle's direction.particle_species
: Returning the particle's species.momentum
: Returning the particle's momentum.
Implementations for is_fermion
, is_boson
, is_particle
, is_anti_particle
, is_incoming
, is_outgoing
, mass
, and charge
are automatically provided using the interface functions above to fulfill the QEDbase.AbstractParticle
interface.
QEDbase.momentum
— Functionmomentum(part::AbstractParticleStateful)
Interface function that must return the particle's AbstractFourMomentum
.
Phasespace Points
Types
QEDbase.AbstractPhaseSpacePoint
— TypeAbstractPhaseSpacePoint{PROC, MODEL, PSDEF, IN_PARTICLES, OUT_PARTICLES}
Representation of a point in the phase space of a process. It has several template arguments:
PROC <:
AbstractProcessDefinition
MODEL <:
AbstractModelDefinition
PSDEF <:
AbstractPhasespaceDefinition
IN_PARTICLES <:
Tuple{Vararg{AbstractParticleStateful}}: The tuple type of all the incoming [
AbstractParticleStateful`](@ref)s.OUT_PARTICLES <:
Tuple{Vararg{AbstractParticleStateful}}: The tuple type of all the outgoing [
AbstractParticleStateful`](@ref)s.
The following interface functions must be provided:
Base.getindex(psp::AbstractPhaseSpacePoint, dir::ParticleDirection, n::Int)
: Return the nthAbstractParticleStateful
of the given direction. ThrowBoundsError
for invalid indices.particles(psp::AbstractPhaseSpacePoint, dir::ParticleDirection)
: Return the particle tuple (typeIN_PARTICLES
orOUT_PARTICLES
depending ondir
)process
: Return the process.model
: Return the model.phase_space_definition
: Return the phase space definition.
From this, the following functions are automatically derived:
momentum(psp::AbstractPhaseSpacePoint, dir::ParticleDirection, n::Int)
: Return the momentum of the nthAbstractParticleStateful
of the given direction.momenta(psp::PhaseSpacePoint, ::ParticleDirection)
: Return aTuple
of all the momenta of the given direction.
Furthermore, an implementation of an AbstractPhaseSpacePoint
has to verify on construction that it is valid, i.e., the following conditions are fulfilled:
IN_PARTICLES
must matchincoming_particles(::PROC)
in length, order, and type or be an emptyTuple
.OUT_PARTICLES
must match theoutgoing_particles(::PROC)
in length, order, and type, or be an emptyTuple
.IN_PARTICLES
andOUT_PARTICLES
may not both be empty.
If IN_PARTICLES
is non-empty, AbstractPhaseSpacePoint <: AbstractInPhaseSpacePoint
is true. Likewise, if OUT_PARTICLES
is non-empty, AbstractPhaseSpacePoint <: AbstractOutPhaseSpacePoint
is true. Consequently, if both IN_PARTICLES
and OUT_PARTICLES
are non-empty, both <:
statements are true.
QEDbase.AbstractInPhaseSpacePoint
— TypeAbstractInPhaseSpacePoint
A partial type specialization on AbstractPhaseSpacePoint
which can be used for dispatch in functions requiring only the in channel of the phase space to exist, for example implementations of _incident_flux
. No restrictions are imposed on the out-channel, which may or may not exist.
See also: AbstractOutPhaseSpacePoint
QEDbase.AbstractOutPhaseSpacePoint
— TypeAbstractOutPhaseSpacePoint
A partial type specialization on AbstractPhaseSpacePoint
which can be used for dispatch in functions requiring only the out channel of the phase space to exist. No restrictions are imposed on the in-channel, which may or may not exist.
See also: AbstractInPhaseSpacePoint
Interface
QEDbase.process
— Functionprocess(psp::AbstractPhaseSpacePoint)
Return the phase space point's set process.
QEDbase.model
— Functionmodel(psp::AbstractPhaseSpacePoint)
Return the phase space point's set model.
QEDbase.phase_space_definition
— Functionphase_space_definition(psp::AbstractPhaseSpacePoint)
Return the phase space point's set phase space definition.
Convenience Functions
QEDbase.particle_direction
— Functionparticle_direction(part::AbstractParticleStateful)
Interface function that must return the particle's ParticleDirection
.
QEDbase.particle_species
— Functionparticle_species(part::AbstractParticleStateful)
Interface function that must return the particle's AbstractParticleType
, e.g. QEDcore.Electron()
.
QEDbase.momenta
— Functionmomenta(psp::AbstractPhaseSpacePoint, ::ParticleDirection)
Return a Tuple
of all the particles' momenta for the given ParticleDirection
.