Git Product home page Git Product logo

feamgen.jl's Introduction

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
  1. Install FeAmGen.jl via
import Pkg
Pkg.add("FeAmGen")

or in the Julia REPL via

]add FeAmGen
  1. 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"
}

feamgen.jl's People

Contributors

fenyutanchan avatar zhaoli-ihep avatar

Stargazers

Sudeepan Datta avatar

Watchers

 avatar

feamgen.jl's Issues

Cannot build qgraf even though it is installed and in PATH

When I try to build the package I get the following error

ERROR: Unable to automatically download/install artifact 'QGRAF' from sources listed in '/home/username/.julia/packages/FeAmGen/9BVqP/Artifacts.toml'.
Sources attempted:
- https://pkg.julialang.org/artifact/1996517f9357ff795d2c588b54ff0eee1c117fb1
    Error: HTTP/2 404 while requesting https://pkg.julialang.org/artifact/1996517f9357ff795d2c588b54ff0eee1c117fb1
- http://anonymous:[email protected]/v3.6/qgraf-3.6.5.tgz
    Error: HTTP/1.1 404 Not Found while requesting http://anonymous:[email protected]/v3.6/qgraf-3.6.5.tgz

This happens whether I set the ENV["QGRAF"]=path/to/qgraf flag or not.

I am very stuck and have been unable to trouble shoot this.

I have tried this on both Fedora Linux and wsl2 Ubuntu and get the same error. Any help is much appreciated!

Tensor decomposition and partial fractioning?

Hi,

I'm curious if FeAmGen.jl actually supports tensor reduction of loop integrals and whether it can do partial fraction decomposition for cases where the propagator basis is overdetermined?

Cheers,
Vlad

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.