FeAmGen.jl needs following external programs:
- FORM: main page and GitHub. It can be installed via the Julia Yggdrasil project automatically as a dependency FORM_jll.jl;
- Nauty: main page. It can be installed via the Julia Yggdrasil project automatically as a dependency nauty_jll.jl;
- QGRAF: main page.
It cannot be installed via the Julia Yggdrasil project because of its license, see this PR for more information.
We provide, however, an automated compilition for it in our program, which requires a Fortran compiler (
gfortran
as default). If the user wants to use other Fortran compiler, please add environment variableENV["FC"] = "/path/to/Fortran/compiler
in the Julia startup file (~/.julia/config/startup.jl
as default, see this url for more information). If the user have already installed QGRAF and want to use it, please add environment variableENV["QGRAF"] = "/path/to/QGRAF"
in the Julia startup file. The users should accept the agreement of its license (see the heads of its main source code file) before using this package.
- Please add the IHEP-Multiloop Julia registry via
import Pkg
Pkg.Registry.add(
Pkg.RegistrySpec(url="https://code.ihep.ac.cn/IHEP-Multiloop/JuliaRegistry.git")
)
or in the Julia REPL via
]registry add https://code.ihep.ac.cn/IHEP-Multiloop/JuliaRegistry.git
- Install
FeAmGen.jl
via
import Pkg
Pkg.add("FeAmGen")
or in the Julia REPL via
]add FeAmGen
- The possible problems during the installation is
PyCall.jl
andConda.jl
need to be built. Please run the following commands to build them.
import Pkg
Pkg.build("Conda")
Pkg.build("PyCall")
or in the Julia REPL as
]build Conda
]build PyCall
This package can be used for the following missions.
- Generate Feynman diagrams and relevant amplitudes for specific process, e.g.
test/DrellYan_Test.jl
, and etc. - Construct the topologies based on the generated amplitudes, e.g.
test/script_construct_topology.jl
.
Generate input files for the specific process according to generic seed process file. And the model file will be searched in the given model directory.
For example,
digest_seed_proc( "seed_proc.yaml" )
Generate Feynman diagrams and relevant amplitudes according to the process input file previously generated by digest_seed_proc
.
And the model file will be searched in the given model directory.
For example,
generate_amp( "parton_parton_TO_parton_t_0Loop/b_u_TO_d_t.yaml" )
Construct topologies for specific process, mom_shift_opt
for doing the momentum shift or not.
For example,
construct_den_topology( "b_g_TO_Wminus_t_2Loop/b_g_TO_Wminus_t_2Loop_amplitudes"; mom_shift_opt=true )
The results contain amplitudes in file amp<number>.jld2
and amp<number>.out
and the Feynman diagrams in file visual_diagram<number>.tex
.
Explicitly one could use lualatex visual_diagram<number>.tex
to generate PDF file with tikz-feynman.sty
.
Here we use directly the UFO model files stored in the <model directory>
.
NOTE:
If the UFO model files are based on Python2, one can convert them into Python3 scripts by using the script 2to3
, which may be found in for example Python-3.8.1/Tools/scripts
.
Package PyCall.jl
can be build with relevant version of Python. The method can be found in its GitHub homepage.
Full documentation can be generated by using julia make.jl
in docs
.
MIT license.
The corresponding paper is preprinted as arXiv:2310.07967 [hep-ph].
If you use this package in your research work, please cite this paper via
@article{Wu:2023qbr,
author = "Wu, Quan-feng and Li, Zhao",
title = "{FeAmGen.jl: A Julia Program for Feynman Amplitude Generation}",
eprint = "2310.07634",
archivePrefix = "arXiv",
primaryClass = "hep-ph",
month = "10",
year = "2023"
}