The syntax for generating processes within Loop:
generate <initial_states> > <final_states> [process_options] [generation_options]
or use generate_amplitude
instead to generate an amplitude instead of a cross-section.
Alternatively you can supply the generate
command with the option -a/--amplitude
.
We will refer here to the amplitude generation mode as the AMP
mode, and the cross-section mode as the XS
mode.
The <initial_states>
and <final_states>
placeholders are space-separated lists of particles, e.g.:
generate e+ e- > d d~ g
The final states specified will have a different interpretation depending on on wheter you do a AMP
or XS
generation:
Amplitude generation mode: the <final_states>
simply specifies the outgoing legs of the amplitude to generate.
Cross-section generation mode: The <final_states>
filters the forward-scattering diagrams generated so as to select only those containing at least one Cutkosky cut compatible with only that final-state selection.
WARNING: beware that if you expect contributions from forward scattering graphs with <final_states>+X
cuts, but not any <final_states>
cut, then these will be filtered out here.
Note that one can use the syntax {}
for denoting empty sets for <intial_states>
and <final_states>
. For instance {} > {}
would perform the generation of vaccuum diagrams.
In the case of a cross-section generation, the meaning of specifying an empty set for the <final_states>
is special as it disables the filtering of Cutkosky cuts, i.e. they are not filtered according to their particle contents.
The [process_options]
allows to add generation filters of various kind:
Particles veto: e.g. / u d c g ghG e-
All particles following the /
symbol will be vetoed from entering into the graph. This veto is performed before graph generation and therefore speeds up generation.
Particles and antiparticles cannot be independently vetoed and it is therefore only necessary to supply the particle variant.
Particle selection: e.g. | u g ghG
Similar to particle veto, except that in this case all particles not present in the list following the |
symbol will be vetoed.
Amplitude coupling order restrictions: e.g. QED=2 QCD=0
This specifies the coupling order of the amplitudes generated in the AMP
mode. In the XS
mode, it limits the maximal coupling order of the amplitudes appearing on either side of the Cutkosky cuts. The meaning of these couplings is derived from the ones defined in the UFO
model, but typically and .
Cross-section coupling order restrictions: e.g. QED^2=2 QCD^2=0
This filter is only available in XS
mode, and filters coupling orders of the complete forward scattering graph. Typically and .
Perturbative order specification: e.g. [{1} {{2}} QCD=2 QED=1]
, or just e.g. [QCD]
(equivalent to QCD=1
)
Perturbative order specification allows the user to select the particular perturbative terms to consider. This subset of options are all specified within the [...]
marker. They can be:
{n}
forces the amplitude in AMP
mode to have exactly n loops, or the sum of the loop count of the two amplitudes on each side of the Cutkosky cut in XS
mode to be exactly n.{{n}}
forces the forward scattering graphs generated to have exactly n loops.QCD=n
targets the generation of contributions (either amplitude, or forwards scattering graphs) that are suppressed w.r.t. their leading contribution in the particular order considered (QCD
here). The shorthand QCD
stands for QCD=1
. The specifying of the perturbative order considered has two implications.X
contain in e.g. , and its maximal multiplicity ( is considered if there are multiple perturbative orders).<perturbative_order>=n
will automatically increment the corresponding amplitude coupling orders specified by n
and the corresponding cross-sections coupling orders by 2*n
.You can easily access the list of all possible options for the generate
command by running,
./bin/gammaloop -c "generate help"
A short overview of the main options is given below:
--amplitude, -a
: When specified, this targets the generation of amplitudes (i.e. AMP
mode), which is then similar to what one obtained when using the generate_amplitude
command.
--filter_self_loop
: Generation-level filters removing all self-loops (single edges closing onto themselves).
--max_n_bridges
: Generation-level filters removing all graph containing more than n-bridges (edges such that their removal separates the graph into two disconnected components).
Special topology filters. These are applied after graph generation. For all of them, there are options for vetoing only scaleless topology or vetoing based on the mass of the propagator attached to these special topologies.
--filter_selfenergies
: Removes diagrams corresponding to external self-energies. Note that in XS
mode, this will not remove self-energies formed when considering Cutkosky cuts.
Also, for processes, the complete diagram itself will be kept, even though it is a self-energy itself, but iterated self-energies will be ignored.
--filter_snails
: Removes vacuum-like structures directly attached to an edge of the graph that is connected to the external states via a k-ary vertex with .
--filter_tadpoles
: Removes vacuum-like structures attached to the graph that is connected to the external states via a propgator carrying zero momentum.
The next set of options below controls are topologically similar diagrams are grouped together, keeping track of the resulting multiplicity:
--symmetrize_initial_states / --symmetrize_final_states
group diagrams that differ only by an interchange of their initial (resp. final) state momenta labels.
--symmetrize_left_right_states
group diagrams that are identical upon interchanging the external edge property of being in the initial, or final state. This option implies that independent symmetrization over initial and final states will also be considered.
--numerator_aware_isomorphism_grouping
group diagrams that are isomorphic when only considering the mass of each edge as a differentiating property (and not the particle identity).
The numerator will also be compared to make sure it matches, at least in absolute value (so that Furry type of cancellation can take place at the diagrammatic level).
Finally, this last list of options controls various aspects of the processing of the graphs generated:
--graph_prefix GRAPH_PREFIX
: assigns a particular prefix to the name of the graph generated. Useful when considering multiple partonic channels for instance.
--loop_momentum_bases LOOP_MOMENTUM_BASES
: allows to force considering a particular loop momentum basis for particular diagrams. The value specified takes the format {graph_name: list[edge_names]}
.
--select_graphs SELECT_GRAPHS
: Specify to consider only a subset of the list of all graphs generated, identified by their generation name.
--veto_graphs VETO_GRAPHS
: Vetoes a particular subset of the list of all graphs generated, identified by their generation name.
--numerator_aware_isomorphism_grouping
with options no_grouping
, only_detect_zeroes
, group_identical_graphs_up_to_sign
or
group_identical_graphs_up_to_scalar_rescaling
: this controls the strategy for grouping identical graphs differing only by global prefactors. It can for example remove graphs that are zero because of colour factors, or that are subject to Furry cancellations.