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.
⚠⚠: Support for empty initial and/or final states is experimental and currently bugged.
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:
--clear_existing_processes, -clear
: Determines whether to first clear the collection of processes already generated prior, or to add the one specified by this generation command to the existing list.
--num_threads, -nt
: Determines the size of the multiprocessing pool for parallelizing the generation. Setting this option to 1
implies a monocore run.
--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, -mnb
: Generation-level filters removing all graph containing more than n-bridges (edges such that their removal separates the graph into two disconnected components). Set value to -1
to disable.
Disabled by default for all processes, except vacuum graph generation where it is set to 0.
--number_of_factorized_loop_subtopologies, -nfactl
: Selects only graphs with a number of "factorizable" loops set to that target. The precise sense of "factorizable" loops is given in terms of the number of graph-theoretical "cut vertices". Set value to -1
to disable.
Disabled for all processes, except vacuum graph generation where it is set to 1.
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.
--number_of_fermion_loops
: Specifies the number of closed fermion loops to appear in the graphs generated.
⚠: For diagrams involving four-fermion vertices, this filter will only aggregated self-loops and fermion-loops not involving four-femion vertices.
The next set of options below controls are topologically similar diagrams are grouped together, keeping track of the resulting multiplicity. By default, external symmetrization is disabled.
--allow_symmetrization_of_external_fermions_in_amplitudes, -symferm
: In AMP
mode, the symmetrization of external fermions is disabled by default because the user would have to be careful to track the fermion sign flip due to identical external spinor anti-symmetrization when evaluating the diagram with permutations of the momenta. Moreover, accounting for this sign properly requires tracking the fermion chain routing and the helicity choice. Because of these subtelties, it is disabled by default but can be enabled with this option.
--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. In AMP
mode, this option implies that independent symmetrization over initial and final states will also be considered.
⚠: In XS
mode, this left-right symmetrization will only take place if the option numerator_aware_isomorphism_grouping
is set to at least group_identical_graphs_up_to_sign
.
When testing graph isomorphism (including potentially external symmetrization as well), it is possible to also specify how the numerator should be compared:
--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. The option group_identical_graphs_up_to_scalar_rescaling
even allows to group diagrams that are identical up to a global rescaling (typically due to color factors or different couplings).
--consider_internal_masses_only_in_numerator_isomorphisms
group diagrams that are isomorphic when only considering the mass of each virtual (non-external) edge as a differentiating property (and not the particle identity).
--compare_canonized_numerator
enable the comparison of diagram based on the canonicalized representation of the uncontracted tensor network numerator. This comparison is fast, but cannot compare all groupings (i.e. such as Furry and any other grouping that only appears manifestly after the algebra is explicitly performed.
⚠⚠: This feature is currently experimental and misses groupings.
--number_of_samples_for_numerator_comparisons <integer_x>
with x>1
enables the numerical comparison (using exact integer arithmetics) of the numerator which is slower but captures all possible groupings of the diagrams. When x
is set to 0
, the numerical comparison of the numerators is disabled.
⚠: Because the random integer samples considered for the momenta and polarization vectors are not physical, you should not expect the groupings to always capture relationships depending on gauge properties or on-shell constraints. Also, any function (including square roots) appearing in the tensorial expressions will be substituted by random primes, so that relationships depending on the details of those will also not be captured.
--numerical_samples_seed
controls the random seed considered for generating the random prime integers used for constructing the numerical sample inputs.
⚠: The RNG is successive u64
primes, and this seed is the starting position in that sequence, it is recommended to pick small seeds, typically less than 1000
.
--[no]-fully_numerical_substitution_when_comparing_numerators
is enabled by default and implies that tensor components substitutions are constructed so that they are all complex numbers.
This allows for performing efficient arithmetics over Complex<Rational<Integer>,Rational<Integer>>
directly, as opposed to having to perform arithmetics over Symbolica
expressions that can contain parametric couplings or masses.
⚠: In this mode the color factors will be evaluated with N_c
set to 3
, and any function (including square roots) appearing in the tensorial expressions will be substituted by random primes, so that relationships depending on the details of those will also not be captured here.
⚠⚠: Disabling this feature is currently experimental and misses groupings.
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.