Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LoopTools #28292

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions recipes/looptools/examples/example01.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <stdio.h>
#include "clooptools.h"

#define MH2 (126.*126.)
#define MZ2 (91.188*91.188)
#define MW2 (80.4*80.4)
#define Alfa (1./137.0359895)
#define pi 3.14159265358979

#define SW2 (1. - MW2/MZ2)

static ComplexType SigmaH(double k2) {
return Alfa/(32*pi*SW2*MW2)*
( 3*MH2*A0(MH2) + 9*MH2*MH2*B0(k2, MH2, MH2)
+ 2*(MH2*MH2 - 4*MW2*(k2 - 3*MW2))*B0(k2, MW2, MW2)
+ 2*(6*MW2 + MH2)*A0(MW2) - 24*MW2*MW2
+ (MH2*MH2 - 4*MZ2*(k2 - 3*MZ2))*B0(k2, MZ2, MZ2)
+ (6*MZ2 + MH2)*A0(MZ2) - 12*MZ2*MZ2 );
}

int main() {
RealType s;
ltini();
for( s = 100; s <= 1000; s += 50 ) {
ComplexType sig = SigmaH(s);
printf("%g\t%g%+gi\n", s, Re(sig), Im(sig));
}
ltexi();
}
86 changes: 86 additions & 0 deletions recipes/looptools/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{% set name = "looptools" %}
{% set version = "2.16" %}

package:
name: {{ name }}
version: {{ version }}

source:
url: https://feynarts.de/looptools/LoopTools-{{ version }}.tar.gz
sha256: 4113467575db3a14405d62d9e516b3b90410b73ea8d20c8eb8d70a30fc5cc9cb

build:
number: 0

outputs:
- name: {{ name }}-static

build:
skip: true # [win]
ignore_run_exports_from:
- {{ compiler('cxx') }}
script:
# FIXME: Avoid error from trying to create directories that exist
- sed -i 's/mkdir /mkdir -p /g' makefile.in
- ./configure --help
# FIXME: Author has disabled builds with dynamic linking
# c.f. https://github.com/hep-packaging-coordination/packaging-hep-simulation-stack/issues/4#issuecomment-2489198926
# - ./configure --prefix=$PREFIX --dynamic
- ./configure --prefix=$PREFIX
- make
- make install
# conda just uses $PREFIX/lib
- mv $PREFIX/lib64/libooptools.a $PREFIX/lib/libooptools.a # [linux]
- rm -rf build

requirements:
build:
- {{ stdlib('c') }}
- {{ compiler('cxx') }}
- {{ compiler('fortran') }}
- make
- sed
- gawk

test:
files:
- examples/
requires:
- {{ compiler('cxx') }}
- gfortran
commands:
- test ! -f $PREFIX/lib64/libooptools.a # [linux]
- test -f $PREFIX/lib/libooptools.a
- test -f $PREFIX/include/looptools.h
- test -f $PREFIX/include/clooptools.h
- test -f $PREFIX/bin/lt
- test -f $PREFIX/bin/fcc
- test -f $PREFIX/bin/f++

- fcc --help
- f++ --help

- cd examples
- $CXX example01.cpp -o example01 $CXXFLAGS $LDFLAGS -looptools -lgfortran
- ./example01

about:
home: https://feynarts.de/looptools/
summary: 'LoopTools: A package for evaluation of scalar and tensor one-loop integrals'
description: |
LoopTools is a package for evaluation of scalar and tensor one-loop integrals
based on the FF package by G.J. van Oldenborgh. It features an easy Fortran,
C++, and Mathematica interface to the scalar one-loop functions of FF and
in addition provides the 2-, 3-, and 4-point tensor coefficient functions.

The [publication](https://inspirehep.net/literature/474106) associated with
LoopTools is: T. Hahn, M. Pérez-Victoria. Automated one-loop calculations
in four and D dimensions, _Comput. Phys. Commun._ 118 (1999) 153.
DOI: [10.1016/S0010-4655(98)00173-8](https://doi.org/10.1016/S0010-4655(98)00173-8)
license: GPL-3.0-only
license_family: GPL
license_file: COPYING

extra:
recipe-maintainers:
- matthewfeickert