format

Contents

format#

class ModelDefinition[source]#

Bases: TypedDict

distributions: Required[list][source]#
functions: Required[list[FunctionDefinition]][source]#
domains: Required[list][source]#
misc: dict[source]#
parameter_points: list[source]#
class Distribution[source]#

Bases: TypedDict

name: Required[str][source]#
type: Required[str][source]#
decay_description: Required[DecayDescription][source]#
variables: Required[list][source]#
parameters: list[source]#
class DecayDescription[source]#

Bases: TypedDict

kinematics: Required[KinematicsDefinition][source]#
reference_topology: Required[list[Literal[1, 2, 3] | list[Literal[1, 2, 3] | Topology]]][source]#
chains: Required[list[DecayChain]][source]#
appendix: dict[source]#
Topology#

Topology definition as a list of final state IDs.

alias of list[Literal[1, 2, 3] | Topology]

class DecayChain[source]#

Bases: TypedDict

name: Required[str][source]#
propagators: Required[list[Propagator]][source]#
vertices: Required[list[HelicityVertex | ParityVertex | LSVertex]][source]#
topology: Required[list[Literal[1, 2, 3] | list[Literal[1, 2, 3] | Topology]]][source]#
kinematics: Required[KinematicsDefinition][source]#
weight: Required[str][source]#
class Propagator[source]#

Bases: TypedDict

spin: str[source]#
node: tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node][source]#
parametrization: str[source]#
class HelicityVertex[source]#

Bases: _HelicityVertexBase

type: Required[Literal['helicity']][source]#
node: Required[tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]]][source]#
formfactor: str[source]#
helicities: Required[tuple[str, str]][source]#
class ParityVertex[source]#

Bases: _HelicityVertexBase

type: Required[Literal['parity']][source]#
parity_factor: Literal['+', '-', ''][source]#
node: Required[tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]]][source]#
formfactor: str[source]#
helicities: Required[tuple[str, str]][source]#
class LSVertex[source]#

Bases: _VertexBase

type: Required[Literal['ls']][source]#
l: str[source]#
s: str[source]#
node: Required[tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]]][source]#
formfactor: str[source]#
Vertex = ampform_dpd.io.serialization.format.HelicityVertex | ampform_dpd.io.serialization.format.ParityVertex | ampform_dpd.io.serialization.format.LSVertex#

Tagged union of vertex definitions, discriminated by their "type" key.

Node#

Node definition within a Topology.

alias of tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]

class KinematicsDefinition[source]#

Bases: TypedDict

initial_state: Required[StateDefinition][source]#
final_state: Required[list[StateDefinition]][source]#
class StateDefinition[source]#

Bases: TypedDict

index: StateID[source]#
name: str[source]#
spin: str[source]#
mass: float[source]#
class FunctionDefinition[source]#

Bases: TypedDict

name: Required[str][source]#
type: Required[str][source]#
class BlattWeisskopfDefinition[source]#

Bases: FunctionDefinition

l: int[source]#
radius: float[source]#
name: Required[str][source]#
type: Required[str][source]#
class BreitWignerDefinition[source]#

Bases: FunctionDefinition

mass: float[source]#
width: float[source]#
ma: float[source]#
mb: float[source]#
l: float[source]#
d: float[source]#
name: Required[str][source]#
type: Required[str][source]#
class GenericFunctionDefinition[source]#

Bases: FunctionDefinition

expression: str[source]#
name: Required[str][source]#
type: Required[str][source]#
class PolynomialDefinition[source]#

Bases: FunctionDefinition

coefficients: list[float][source]#
x: str[source]#
name: Required[str][source]#
type: Required[str][source]#
class MomentumPowerDefinition[source]#

Bases: FunctionDefinition

l: int[source]#
name: Required[str][source]#
type: Required[str][source]#
class MultichannelBreitWignerDefinition[source]#

Bases: FunctionDefinition

mass: float[source]#
channels: list[ChannelParameters][source]#
name: Required[str][source]#
type: Required[str][source]#
class ChannelParameters[source]#

Bases: TypedDict

gsq: float[source]#
ma: float[source]#
mb: float[source]#
l: float[source]#
d: float[source]#
get_decay_chains(model: ModelDefinition, /) list[DecayChain][source]#
get_distribution_def(model: ModelDefinition, /) Distribution[source]#
get_function_definition(function_name: str, /, model: ModelDefinition) FunctionDefinition[source]#
get_reference_topology(model: ModelDefinition, /) list[Literal[1, 2, 3] | Topology][source]#
is_decay_node(node: tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], /) bool[source]#

Whether the node is an isobar decaying into two final-state particles.

>>> is_decay_node((2, 3))
True
>>> is_decay_node((1, (2, 3)))
False
is_production_node(node: tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], /) bool[source]#

Whether the node is the initial state decaying into an isobar and a spectator.

>>> is_production_node((1, (2, 3)))
True
>>> is_production_node((2, 3))
False
as_final_state_pair(node_item: Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]], /) tuple[Literal[1, 2, 3], Literal[1, 2, 3]] | None[source]#

Convert a node item to a pair of final-state IDs, or None if it is not one.

Serialized nodes are lists, so this also normalizes them to tuples. It returns None for a final-state ID and for a node that contains sub-nodes.

>>> as_final_state_pair([2, 3])
(2, 3)
>>> as_final_state_pair(1)
>>> as_final_state_pair((1, (2, 3)))
is_isobar(node_item: Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]], /) TypeIs[tuple[Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node], Literal[1, 2, 3] | tuple[Literal[1, 2, 3] | Node, Literal[1, 2, 3] | Node]]][source]#

Whether an item within a node is a sub-node, not a final-state ID.

>>> is_isobar((2, 3))
True
>>> is_isobar(1)
False