StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
clooptools.h
1 /*
2  clooptools.h
3  the C++ header file with all definitions for LoopTools
4  this file is part of LoopTools
5  last modified 22 Jul 04 th
6 */
7 
8 #ifndef __CLOOPTOOLS_H__
9 #define __CLOOPTOOLS_H__
10 
11 #include <complex.h>
12 #include "ltproto.h"
13 
14 #define cc0 1
15 #define cc1 2
16 #define cc2 3
17 #define cc00 4
18 #define cc11 5
19 #define cc12 6
20 #define cc22 7
21 #define cc001 8
22 #define cc002 9
23 #define cc111 10
24 #define cc112 11
25 #define cc122 12
26 #define cc222 13
27 
28 #define dd0 1
29 #define dd1 2
30 #define dd2 3
31 #define dd3 4
32 #define dd00 5
33 #define dd11 6
34 #define dd12 7
35 #define dd13 8
36 #define dd22 9
37 #define dd23 10
38 #define dd33 11
39 #define dd001 12
40 #define dd002 13
41 #define dd003 14
42 #define dd111 15
43 #define dd112 16
44 #define dd113 17
45 #define dd122 18
46 #define dd123 19
47 #define dd133 20
48 #define dd222 21
49 #define dd223 22
50 #define dd233 23
51 #define dd333 24
52 #define dd0000 25
53 #define dd0011 26
54 #define dd0012 27
55 #define dd0013 28
56 #define dd0022 29
57 #define dd0023 30
58 #define dd0033 31
59 #define dd1111 32
60 #define dd1112 33
61 #define dd1113 34
62 #define dd1122 35
63 #define dd1123 36
64 #define dd1133 37
65 #define dd1222 38
66 #define dd1223 39
67 #define dd1233 40
68 #define dd1333 41
69 #define dd2222 42
70 #define dd2223 43
71 #define dd2233 44
72 #define dd2333 45
73 #define dd3333 46
74 
75 
76 #define Cval(id, pos) Ccache(pos + id)
77 #define Dval(id, pos) Dcache(pos + id)
78 
79 #define bcaini ffini
80 #define bcaexi ffexi
81 
82 
83 static inline double_complex A0(const double m)
84 {
85  dcomplex result;
86 
87  A0(&result, &m);
88  return double_complex(result.r, result.i);
89 }
90 
91 
92 static inline double_complex B0(const double p,
93  const double m1, const double m2)
94 {
95  dcomplex result;
96 
97  B0(&result, &p, &m1, &m2);
98  return double_complex(result.r, result.i);
99 }
100 
101 
102 static inline double_complex DB0(const double p,
103  const double m1, const double m2)
104 {
105  dcomplex result;
106 
107  DB0(&result, &p, &m1, &m2);
108  return double_complex(result.r, result.i);
109 }
110 
111 
112 static inline double_complex B1(const double p,
113  const double m1, const double m2)
114 {
115  dcomplex result;
116 
117  B1(&result, &p, &m1, &m2);
118  return double_complex(result.r, result.i);
119 }
120 
121 
122 static inline double_complex DB1(const double p,
123  const double m1, const double m2)
124 {
125  dcomplex result;
126 
127  DB1(&result, &p, &m1, &m2);
128  return double_complex(result.r, result.i);
129 }
130 
131 
132 static inline double_complex B00(const double p,
133  const double m1, const double m2)
134 {
135  dcomplex result;
136 
137  B00(&result, &p, &m1, &m2);
138  return double_complex(result.r, result.i);
139 }
140 
141 
142 static inline double_complex DB00(const double p,
143  const double m1, const double m2)
144 {
145  dcomplex result;
146 
147  DB00(&result, &p, &m1, &m2);
148  return double_complex(result.r, result.i);
149 }
150 
151 
152 static inline double_complex B11(const double p,
153  const double m1, const double m2)
154 {
155  dcomplex result;
156 
157  B11(&result, &p, &m1, &m2);
158  return double_complex(result.r, result.i);
159 }
160 
161 
162 static inline double_complex DB11(const double p,
163  const double m1, const double m2)
164 {
165  dcomplex result;
166 
167  DB11(&result, &p, &m1, &m2);
168  return double_complex(result.r, result.i);
169 }
170 
171 
172 static inline double_complex C0(const double p1,
173  const double p2, const double p1p2,
174  const double m1, const double m2, const double m3)
175 {
176  dcomplex result;
177 
178  C0(&result, &p1, &p2, &p1p2, &m1, &m2, &m3);
179  return double_complex(result.r, result.i);
180 }
181 
182 
183 static inline double_complex C0i(const int id, const double p1,
184  const double p2, const double p1p2,
185  const double m1, const double m2, const double m3)
186 {
187  dcomplex result;
188 
189  C0i(&result, &id, &p1, &p2, &p1p2, &m1, &m2, &m3);
190  return double_complex(result.r, result.i);
191 }
192 
193 
194 static inline int Cget(const double p1,
195  const double p2, const double p1p2,
196  const double m1, const double m2, const double m3)
197 {
198  return Cget(&p1, &p2, &p1p2, &m1, &m2, &m3);
199 }
200 
201 
202 static inline double_complex D0(const double p1,
203  const double p2, const double p3, const double p4,
204  const double p1p2, const double p2p3,
205  const double m1, const double m2, const double m3, const double m4)
206 {
207  dcomplex result;
208 
209  D0(&result, &p1, &p2, &p3, &p4, &p1p2, &p2p3, &m1, &m2, &m3, &m4);
210  return double_complex(result.r, result.i);
211 }
212 
213 
214 static inline double_complex D0i(const int id,
215  const double p1, const double p2, const double p3, const double p4,
216  const double p1p2, const double p2p3,
217  const double m1, const double m2, const double m3, const double m4)
218 {
219  dcomplex result;
220 
221  D0i(&result, &id, &p1, &p2, &p3, &p4, &p1p2, &p2p3, &m1, &m2, &m3, &m4);
222  return double_complex(result.r, result.i);
223 }
224 
225 
226 static inline int Dget(const double p1,
227  const double p2, const double p3, const double p4,
228  const double p1p2, const double p2p3,
229  const double m1, const double m2, const double m3, const double m4)
230 {
231  return Dget(&p1, &p2, &p3, &p4, &p1p2, &p2p3, &m1, &m2, &m3, &m4);
232 }
233 
234 
235 static inline void setmudim(const double newmudim)
236 {
237  setmudim(&newmudim);
238 }
239 
240 static inline void setdelta(const double newdelta)
241 {
242  setdelta(&newdelta);
243 }
244 
245 static inline void setlambda(const double newlambda)
246 {
247  setlambda(&newlambda);
248 }
249 
250 static inline void setcachelast(const dcomplex *buffer, const int offset)
251 {
252  setcachelast(buffer, &offset);
253 }
254 
255 #endif
256