Internal functions and functionality
QEDFeynmanDiagrams.VirtualParticleQEDFeynmanDiagrams._is_index_valid_combinationQEDFeynmanDiagrams._pseudo_virtual_particlesQEDFeynmanDiagrams.are_totalQEDFeynmanDiagrams.containsQEDFeynmanDiagrams.disjunctQEDFeynmanDiagrams.make_upQEDFeynmanDiagrams.particle_pairsQEDFeynmanDiagrams.total_particle_triplesQEDFeynmanDiagrams.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:
NTupleofBools with the incoming momentum contributions. - OT:
NTupleofBools 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 Tuples (pairs) of VirtualParticles. 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_particlesReturn a vector of VirtualParticle for each external particle. These are not actually virtual particles, but can be helpful as entry points.