|
OpenLoops 1 Stability System and Parameters
OpenLoops 1 offers a powerful and flexible system to asses the numerical stability
of one-loop amplitudes and to avoid potential instabilities at
exceptional phase-space points:
-
Double precision scaling test (DP-scaling): OpenLoops can estimates the numerical stability
using a so-called scaling test: at a given phase space point one-loop matrix
elements are computed a second time by rescaling all dimensionful input
parameters by a factor ξ. The degree of stability is quantified by checking that the amplitude
fullfils the scaling behaviour M(ξ)=ξdM(1) expected from its mass dimension d.
For the scaling test several options are available:
-
Either the full matrix-element is calculated a second time (scaling_mode=2) or only the reduction to scalar integrals (scaling_mode=1).
-
One-loop matrix elements are classified as unstable if their estimated error exceeds a certain threshold
(stability_unstable). For deviation_mode=1 this threshold is set by normalising the estimated error of the the one-loop amplitude to the corresponding Born amplitude, and for deviation_mode=1 by normalising to the one-loop amplitude itself.
-
Quadruple precision rescue system (QP-rescue): matrix elements which turn out to be unstable under the
first scaling test can either be discarded (the value zero is returned for the matrix element) if their estimated error exceeds a certain threshold (stability_kill for loop amplitudes and stability_kill2 for loop-squared amplitudes) or recalculated using higher (quadruple) numerical precision as a rescue system, possibly obtained with a different library (redlib_qp). Also the stability_kill threshold is interpreted as described in (iii) depending on the deviation_mode switcher, while stability_kill2 is always referred to the relative error of the loop-squared amplitude.
-
Quadruple precision scaling test (QP-scaling): at the level of the higher precision rescue system a
new scaling test can be performed. Phase-space points which again turn out to be unstable, i.e., if their estimated error exceeds a certain threshold (stability_kill for loop amplitudes and stability_kill2 for loop-squared amplitudes), are then discarded (by setting the matrix element to zero).
Alternatively, if different independent reduction libraries are linked with
OpenLoops instead of a scaling test the result of the two alternative
libraries can be compared. For differing results again a reevaluation with
higher numerical precision and possibly a scaling at this higher precision
can be performed.
OpenLoops automatically logs the stability of all evaluated phase-space points.
Resuts are written to disk either at the end of a run (by calling the finish() routine),
adaptive with a logarithmically increasing number of evaluated phase-space
points, or for every phase-space point.
The relative deviation between the scaled and the unscaled result can be returned and
used as an estimate of the numerical accuracy for each phase-space point.
Parameters
Parameter |
Decription |
Options |
redlib1 |
primary reduction library |
1: Collier-COLI
5: CutTools (default)
7: Collier-DD
|
redlib2 |
secondary reduction library |
1: Collier-COLI
5: CutTools (default, not used)
7: Collier-DD
|
redlib_qp |
quad-precision reduction library |
5: CutTools (default)
|
|
|
|
|
stability_mode |
select stability mode |
11: only DP: no scaling, no rescue
12: DP-scaling, no rescue
13: DP-scaling and QP-rescue, no QP scaling
14: DP-scaling, QP-rescue and QP-scaling (default)
21: DP with primary library and possible DP reevaluation with secondary library (redlib2)
22: same as 21 and QP-rescue with quad-precision library (redlib_qp)
23: same as 22 and QP-scaling
31: only QP: no scaling
32: QP and QP-scaling
|
|
|
|
|
scaling_mode |
select what should be reevaluated for the scaling test |
1: only reduction (default)
2: everything
|
deviation_mode |
select deviation mode for scaling test |
1: based on K-factor (default)
2: based on relative deviation
|
stability_triggerratio |
target efficiency of K-factor based stability trigger (should not be << 0.1) |
double (default=0.2)
|
stability_unstable |
threshold above which a point is considered "unstable" |
double (default=0.01)
|
stability_kill |
threshold above which an unstable point is discarded |
double (default=1.)
|
stability_kill2 |
threshold obove which an unstable point is discarded in loop induced amplitudes |
double (default=10.)
|
stability_log |
select when stability logs should be written |
0: never (default)
1: on finish() call
2: adaptive
3: always
|
stability_logdir |
set the (relative) path for the stability log files |
string (default="stability_log")
|
|