First, generate the process using the following generation card (see details on run_configuration) that you should save in a file named e.g. epem_a_ddx_NLO.aL
:
import model aL_sm-no_widths
set_alphaLoop_option consider_vertex_id_in_graph_isomorphism False
set_alphaLoop_option consider_edge_orientation_in_graph_isomorphism False
set_alphaLoop_option FORM_processing_output_format c
set_alphaLoop_option apply_graph_isomorphisms True
set_alphaLoop_option qgraf_template_model epem
set_alphaLoop_option FORM_compile_cores 1
set_FORM_option cores 1
set_alphaLoop_option FORM_compile_optimization 1
set_alphaLoop_option FORM_integrand_type both
set_alphaLoop_option qgraf_model SM
set_FORM_option generate_integrated_UV_CTs True
set_FORM_option generate_arb_prec_output True
#set_FORM_option number_of_lmbs None
#set_alphaLoop_option SG_name_list ["SG_QG6",]
#set_FORM_option reference_lmb {"SG_QG6":["pq2","pq4","pq6"],}
#
# LO
#
set_alphaLoop_option perturbative_orders {'QCD':0}
qgraf_generate e+ e- > a > d d~ / t u s c b QCD^2==0 QED^2==2
!rm -rf LU_epem_a_ddx_LO
output qgraf LU_epem_a_ddx_LO
#
# NLO
#
set_alphaLoop_option perturbative_orders {'QCD':2}
qgraf_generate e+ e- > a > d d~ / t u s c b QCD^2==1 QED^2==2 [QCD]
!rm -rf LU_epem_a_ddx_NLO
output qgraf LU_epem_a_ddx_NLO
(TODO: fix the above by removing all unnecessary commands that set options already to their default values, and if they're not default, then make them so).
You can then run the generation with:
cd <MG_root>
python3.7 ./bin/mg5_aMC --mode=alphaloop epem_a_ddx_NLO.aL
The successful completion of this command should generate the following two directories:
LU_epem_a_ddx_LO
and LU_epem_a_ddx_NLO
.
Note that you can visualize the supergraph generated as follows:
cd LU_epem_a_ddx_NLO/Drawings
make
open ./all_QG_supergraphs.pdf
You can then perform the Monte-Carlo integration of the corresponding cross-section with:
cd PLUGIN/alphaloop/rust_backend
./target/release/ltd --cross_section_set ../../../LU_epem_a_ddx_LO/Rust_inputs/all_QG_supergraphs.yaml -f hyperparameters.yaml -c <n_cores>
where the run configuration parameters YAML
file hyperparameters.yaml
is described in hyperparameters and has default values that can be obtained by generating this file with:
cd PLUGIN/alphaloop/alpha_loop
python ./ltd_commons.py
which will generate the file hyperparameters.yaml
which you can move to the PLUGIN/alphaloop/rust_backend
folder.
(TODO test that the defaults generated this way indeed reproduces exactly the benchmark values I report below, or adjust them).
The output of this cross-section computation should yield a dashboard giving a central value similar to:
Iteration 4: 10 000 000 evaluations
re: 0.0631951(35) 0.92 χ²
The corresponding NLO QCD cross-section can then be computed with (same command as before but with LU_epem_a_ddx_NLO
->LU_epem_a_ddx_LO
):
cd PLUGIN/alphaloop/rust_backend
./target/release/ltd --cross_section_set ../../../LU_epem_a_ddx_NLO/Rust_inputs/all_QG_supergraphs.yaml -f hyperparameters.yaml -c <n_cores>
which should yield:
Iteration 1: 1 000 000 evaluations
re: 0.002383(17) 0.00 χ²
Which matches the expected result of:
.