Diagram

class Diagram

A tree-level Feynman diagram: external masses, internal Propagator lines and the vertices connecting them.

Incoming and outgoing lines and propagators are each 0-indexed. A collision has two incoming lines, the beams 0 and 1; a decay has the single decaying particle as incoming line 0. A Diagram is turned into one or more Topology integration channels. PhaseSpaceMapping walks those to build the recursive phase-space decomposition (Sec. 2.2 of [1]).

References

Public Types

enum LineType

Which family of lines a LineRef points into.

Values:

enumerator incoming
enumerator outgoing
enumerator propagator
using Vertex = std::vector<LineRef>

A vertex, given as the lines meeting at it.

Public Functions

Diagram(const std::vector<double> &incoming_masses, const std::vector<double> &outgoing_masses, const std::vector<Propagator> &propagators, const std::vector<Vertex> &vertices)
Parameters:
  • incoming_masses – Masses of the incoming particles: the two beams of a collision, or the single decaying particle.

  • outgoing_masses – Masses of the outgoing particles.

  • propagators – The internal lines.

  • vertices – The vertices, each listing its LineRef lines.

inline const std::vector<double> &incoming_masses() const

Masses of the incoming particles.

inline const std::vector<double> &outgoing_masses() const

Masses of the outgoing particles.

inline const std::vector<Propagator> &propagators() const

The internal propagator lines.

inline const std::vector<Vertex> &vertices() const

The vertices.

inline const std::vector<int> &incoming_vertices() const

Index of the vertex each incoming line attaches to.

One entry per incoming particle: two for a collision, one for a decay.

inline const std::vector<int> &outgoing_vertices() const

Index of the vertex each outgoing line attaches to.

inline bool is_decay() const

Whether this diagram is a decay, with a single incoming particle.

inline const std::vector<std::vector<std::size_t>> &propagator_vertices() const

For each propagator, the indices of its two end vertices.

class LineRef

A reference to one line of a Diagram by LineType and 0-based index.

The string form is a type letter (i, o, p) followed by the index, e.g. "i0", "o2", "p1".

Public Functions

inline LineRef(LineType type, std::size_t index)
Parameters:
  • type – Which line family.

  • index – 0-based index within that family.

LineRef(std::string str)

Parse the "i0" / "o2" / "p1" string form.

inline LineType type() const

The line family.

inline std::size_t index() const

The 0-based index within the family.