zhaoli-IHEP / FeAmGen.jl

MIT License
1 stars 0 forks source link

FeAmGen.jl: A julia program for Feynman Amplitude Generation

Requirements

FeAmGen.jl needs following external programs:

  1. FORM: main page and GitHub. It can be installed via the Julia Yggdrasil project automatically as a dependency FORM_jll.jl;
  2. Nauty: main page. It can be installed via the Julia Yggdrasil project automatically as a dependency nauty_jll.jl;
  3. 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 variable ENV["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 variable ENV["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.

Installation

  1. 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
  2. Install FeAmGen.jl via

    import Pkg
    Pkg.add("FeAmGen")

    or in the Julia REPL via

    ]add FeAmGen
  3. The possible problems during the installation is PyCall.jl and Conda.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

Usage

This package can be used for the following missions.

  1. Generate Feynman diagrams and relevant amplitudes for specific process, e.g. test/DrellYan_Test.jl, and etc.
  2. Construct the topologies based on the generated amplitudes, e.g. test/script_construct_topology.jl.

Main function

1. digest_seed_proc( <seed process file>; <model directory list> )

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" )

2. generate_amp( <process file>; <model directory list> )

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" )

3. construct_den_topology( <amplitude directory>; mom_shift_opt::Bool = true )

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 )

Results

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.

Notice

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.

Documentation

Full documentation can be generated by using julia make.jl in docs.

License

MIT license.

Citations

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"
}