CffSurface

Symbolica documentation for getting started, symbolic expressions, numerical evaluation, pattern matching, and APIs in Python and Rust.

CffSurface

class CffSurface

A denominator surface appearing in a Cross-Free Family representation.

Surfaces identify the combinations of on-shell energies that can occur in loop-energy denominators. They are obtained from a CffResult rather than constructed directly.

Examples

from symbolica import S, E
from symbolica.community import hepkit as hep
model = hep.Model.phi4()
process = model.process(["phi", "phi"], ["phi", "phi"])
result = process.generate_diagrams(loops=1)
diagram = result.diagrams[0]
result = diagram.build_cff()
surface = result.surfaces[0]
energy_combination = result.surface_expression(surface)

Attributes

Name Description
external_shift Return external edge IDs and their integer shift coefficients.
index Return the index of an energy or H surface
kind Return the surface category: energy, h, unit, or infinite.
negative_energies Return edge IDs whose on-shell energies enter with negative sign.
positive_energies Return edge IDs whose on-shell energies enter with positive sign.
symbol_name Return the Symbolica variable name assigned to this surface
vertices Return the original diagram vertex IDs enclosed by this surface

external_shift

CffSurface.external_shift: builtins.list[tuple[builtins.int, builtins.int]]

Return external edge IDs and their integer shift coefficients.

Examples

Using the setup in the CffSurface class example:

external_energy_shift = surface.external_shift

index

CffSurface.index: builtins.int

Return the index of an energy or H surface.

Raises :class:CffError for the special unit or infinite sentinels.

Examples

Using the setup in the CffSurface class example:

surface_by_index = {item.index: item for item in result.surfaces}

kind

CffSurface.kind: builtins.str

Return the surface category: energy, h, unit, or infinite.

Examples

Using the setup in the CffSurface class example:

surface_kinds = {item.kind for item in result.surfaces}

negative_energies

CffSurface.negative_energies: builtins.list[builtins.int]

Return edge IDs whose on-shell energies enter with negative sign.

Examples

Using the setup in the CffSurface class example:

negative_edges = surface.negative_energies

positive_energies

CffSurface.positive_energies: builtins.list[builtins.int]

Return edge IDs whose on-shell energies enter with positive sign.

Examples

Using the setup in the CffSurface class example:

positive_edges = surface.positive_energies

symbol_name

CffSurface.symbol_name: builtins.str

Return the Symbolica variable name assigned to this surface.

Raises :class:CffError for the special unit or infinite sentinels, which are not denominator variables.

Examples

Using the setup in the CffSurface class example:

surface_names = [item.symbol_name for item in result.surfaces]

vertices

CffSurface.vertices: builtins.list[builtins.int]

Return the original diagram vertex IDs enclosed by this surface.

Contracted CFF vertices retain the identities of all interaction vertices they contain, including for selected subgraphs.

Examples

Using the setup in the CffSurface class example:

region_vertices = surface.vertices

Methods

Name Description
__repr__ Return the surface’s symbolic name, or its category for special surfaces.

__repr__

CffSurface.__repr__() -> builtins.str

Return the surface’s symbolic name, or its category for special surfaces.

Examples

Using the setup in the CffSurface class example:

print(surface)  # Symbolica denominator variable, for example feynkit_cff::η(0)