Internal functions and functionality
QEDFeynmanDiagrams.VirtualParticle
QEDFeynmanDiagrams._is_index_valid_combination
QEDFeynmanDiagrams._pseudo_virtual_particles
QEDFeynmanDiagrams.are_total
QEDFeynmanDiagrams.contains
QEDFeynmanDiagrams.disjunct
QEDFeynmanDiagrams.make_up
QEDFeynmanDiagrams.particle_pairs
QEDFeynmanDiagrams.total_particle_triples
QEDFeynmanDiagrams.virtual_particles
Types
QEDFeynmanDiagrams.VirtualParticle
— TypeVirtualParticle{
PROC<:AbstractProcessDefinition,
IT<:NTuple,
OT<:NTuple,
}
Representation of a virtual particle and the return type of the virtual_particles
function. The type parameters are:
- PROC: The process this particle is a part of.
- IT:
NTuple
ofBool
s with the incoming momentum contributions. - OT:
NTuple
ofBool
s with the outgoing momentum contributions.
A virtual particle contains the information about the process it's a part of, its particle species, the in- and outgoing particles of the process that contribute to its momentum, and its open fermion cycles. The open cycles are in the context of fermion permutations. For n
fermion lines in a process, there can be between 1 (like 1-2, 2-3, 3-1) and n (like 1-1, 2-2, 3-3) cycles, where the left number represents the canonical fermion index and the right number the canonical antifermion index.
Functions
QEDFeynmanDiagrams.virtual_particles
— Functionvirtual_particles(proc::AbstractProcessDefinition)
For a given QEDbase.AbstractProcessDefinition
, generate all virtual particles (VirtualParticle
) that occur in some valid diagram. For more information see the virtual particle docs.
QEDFeynmanDiagrams.particle_pairs
— Functionparticle_pairs(particles::Vector{VirtualParticle})
From a vector of particles (e.g., generated from virtual_particles
), generate a Dict
which maps from a VirtualParticle
to a vector of Tuple
s (pairs) of VirtualParticle
s. The two virtual particles of each tuple make_up
the key VirtualParticle
.
The result is used in the graph
generation.
See also: total_particle_triples
QEDFeynmanDiagrams.total_particle_triples
— Functiontotal_particle_triples(particles::Vector{VirtualParticle})
Similar to particle_pairs
, this generates a Vector
of Tuples
(triples). Each tuple contains three particles, a QEDcore.Photon
, a QEDcore.Fermion
, and a QEDcore.AntiFermion
. These three particles are_total
.
QEDFeynmanDiagrams.are_total
— Functionare_total(a::VirtualParticle, b::VirtualParticle, c::VirtualParticle)
Return true if a
, b
and c
combined contain all external particles exactly once and no open cycles remain.
QEDFeynmanDiagrams.contains
— Functioncontains(a::VirtualParticle, b::VirtualParticle)
Returns true if the set of particles contributing to a
contains the set of particles contributing to b
.
QEDFeynmanDiagrams.disjunct
— Functiondisjunct(a::VirtualParticle, b::VirtualParticle)
Return true if the momenta contributions of a
and b
are disjunct.
QEDFeynmanDiagrams.make_up
— Functionmake_up(a::VirtualParticle, b::VirtualParticle, c::VirtualParticle)
For virtual particles a
, b
, and c
, return true if a
and b
's joint momentum contributions add up to c
's momentum contributions.
QEDFeynmanDiagrams._is_index_valid_combination
— Function_is_index_valid_combination(proc::AbstractProcessDefinition, index::Tuple)
Internal function for DAG generation. Checks for a given process and a spin/pol combination whether the spin/pol combination is part of the process, including checking for QEDbase.SyncedPolarization
and QEDbase.SyncedSpin
.
QEDFeynmanDiagrams._pseudo_virtual_particles
— Function_pseudo_virtual_particles
Return a vector of VirtualParticle
for each external particle. These are not actually virtual particles, but can be helpful as entry points.