Topology

class Topology

One integration channel derived from a Diagram.

Splits the diagram into its t-channel momentum transfers (an ordered list of propagators) and its s-channel Topology::Decay tree, and records the order in which their invariants are sampled. Topology::topologies() enumerates the sub-channels of a diagram, one per set of propagators that can be simultaneously on shell (Sec. 2.2.7 of [1]). The constructor builds the single canonical channel. All particle indices are 0-based, with the two beams at 0 and 1, or the single decaying particle at 0.

References

Public Functions

Topology(const Diagram &diagram)

Build the single canonical channel of a diagram.

Parameters:

diagram – The diagram to decompose.

inline std::size_t t_propagator_count() const

Number of space-like momentum transfers.

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

Sampling order of the t-channel propagators.

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

Masses of the t-channel propagators.

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

Widths of the t-channel propagators.

inline const std::vector<Decay> &decays() const

The s-channel decay-tree nodes.

inline void raise_decay_e_min(std::size_t index, double e_min)

Raise the lower energy bound of one s-channel decay node.

Hands a cut that bounds the pair this propagator decays into straight to the sampler, so the region the cut forbids is never generated. Lowering the bound is a no-op.

Parameters:
  • index – Index of the node in decays().

  • e_min – The new lower bound.

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

Sampling order of the s-channel invariants.

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

Diagram indices of the outgoing particles, in decay-tree order.

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 bool is_decay() const

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

A decay has no t-channel chain and a root virtuality fixed by the mass of the decaying particle.

std::vector<std::tuple<std::vector<int>, double, double>> propagator_momentum_terms(bool only_decays = false) const

For each propagator, the outgoing momenta summed to form it and the energy window (indices, e_min, e_max).

Parameters:

only_decays – Restrict the result to the s-channel decay nodes.

std::string to_string() const

Human-readable description of the channel.

Public Static Functions

static std::vector<Topology> topologies(const Diagram &diagram)

Enumerate the sub-channels of a diagram, one per on-shell configuration.

Parameters:

diagram – The diagram to decompose.

Public Static Attributes

static constexpr std::size_t no_propagator

Decay::flat_propagator_index value for a node with no entry in Diagram::propagators() (an outgoing leaf or the virtual t-channel root).

struct Decay

One node of the s-channel decay tree built by Topology.

Public Members

std::size_t index

Index of this node in the decay list.

std::size_t parent_index

Index of the parent node.

std::vector<std::size_t> child_indices

Indices of the child nodes.

double mass

Propagator mass of this node.

double width

Propagator width of this node.

double e_min

Lower bound on the node energy.

double e_max

Upper bound on the node energy.

int pdg_id

PDG id of the propagator.

bool on_shell

Whether this node’s invariant is fixed to mass (a resonance).

bool on_shell_boundary

Whether the on-shell condition sits on the integration boundary.

std::size_t flat_propagator_index

Position in the flat Diagram::propagators() list, or no_propagator; lets callers apply a per-diagram PDG override.

double flat_window

Flattened Breit-Wigner window of the propagator, see Propagator::flat_window.