Belle II Software  release-05-01-25
integral.h
1 
2 /*
3  * integral.h - scalar integrals
4  *
5  * this file is part of PJFry library
6  * Copyright 2011 Valery Yundin
7  */
8 
9 #ifndef QUL_INTEGRAL_H
10 #define QUL_INTEGRAL_H
11 
12 #include "common.h"
13 #include "kinem.h"
14 #include "cache.h"
15 
16 // #define USE_ONELOOP 1
17 // #define USE_QCDLOOP 1
18 
19 class Initialize {
20 public:
21  Initialize();
22  ~Initialize();
23 };
24 
25 ICache::Ival qlI1(const Kinem1& k);
26 ICache::Ival qlI2(const Kinem2& k);
27 ICache::Ival qlI3(const Kinem3& k);
28 ICache::Ival qlI4(const Kinem4& k);
29 
30 #ifdef USE_QCDLOOP
31 #define qlprec F77_FUNC(ffprec,FFPREC)
32 #define qlflag F77_FUNC(ffflag,FFFLAG)
33 # ifdef HAVE_QCDLOOP1_H
34 # include <qcdloop1.h>
35 # else
36 extern "C" {
37  void F77_FUNC(qlinit, QLINIT)();
38  void F77_FUNC(ffexi, FFEXI)();
39 
40 #ifdef USE_F2C
41  void F77_FUNC(qli1, QLI1)(std::complex<double>* rslt, double* m1, double* mu2, int* ep);
42  void F77_FUNC(qli2, QLI2)(std::complex<double>* rslt, double* p1, double* m1, double* m2, double* mu2, int* ep);
43  void F77_FUNC(qli3, QLI3)(std::complex<double>* rslt, double* p1, double* p2, double* p3, double* m1, double* m2, double* m3,
44  double* mu2, int* ep);
45  void F77_FUNC(qli4, QLI4)(std::complex<double>* rslt, double* p1, double* p2, double* p3, double* p4, double* s12, double* s23,
46  double* m1, double* m2, double* m3, double* m4, double* mu2, int* ep);
47 #else
48  std::complex<double> F77_FUNC(qli1, QLI1)(double* m1, double* mu2, int* ep);
49  std::complex<double> F77_FUNC(qli2, QLI2)(double* p1, double* m1, double* m2, double* mu2, int* ep);
50  std::complex<double> F77_FUNC(qli3, QLI3)(double* p1, double* p2, double* p3, double* m1, double* m2, double* m3, double* mu2,
51  int* ep);
52  std::complex<double> F77_FUNC(qli4, QLI4)(double* p1, double* p2, double* p3, double* p4, double* s12, double* s23, double* m1,
53  double* m2, double* m3, double* m4, double* mu2, int* ep);
54 #endif
55 
56  extern struct {
57  double xloss, precx, precc, xalogm, xclogm, xalog2, xclog2, reqprc;
58  } qlprec;
59  extern struct {
60  int lwrite, ltest, l4also, ldc3c4, lmem, lwarn, ldot,
61  nevent, ner, id, idsub, nwidth, nschem, onshel, idot;
62  } qlflag;
63 }
64 #endif /* HAVE_QCDLOOP1_H */
65 #endif /* USE_QCDLOOP */
66 
67 #ifdef USE_ONELOOP
68 extern "C" {
69  void F77_FUNC_(avh_olo_mu_set, AVH_OLO_MU_SET)(double* mu);
70  void F77_FUNC_(avh_olo_onshell, AVH_OLO_ONSHELL)(double* thrs);
71  void F77_FUNC_(avh_olo_a0m, AVH_OLO_A0M)(std::complex<double>* rslt, double* m1);
72  void F77_FUNC_(avh_olo_b0m, AVH_OLO_B0M)(std::complex<double>* rslt, double* p1, double* m1, double* m2);
73  void F77_FUNC_(avh_olo_c0m, AVH_OLO_C0M)(std::complex<double>* rslt, double* p1, double* p2, double* p3, double* m1, double* m2,
74  double* m3);
75  void F77_FUNC_(avh_olo_d0m, AVH_OLO_D0M)(std::complex<double>* rslt, double* p1, double* p2, double* p3, double* p4, double* p12,
76  double* p23, double* m1, double* m2, double* m3, double* m4);
77 }
78 #endif /* USE_ONELOOP */
79 
80 #endif /* QUL_INTEGRAL_H */
81