1
//==========================================================================
2
// This file has been automatically generated for C++ Standalone by
3
// MadGraph5_aMC@NLO v. 2.3.3, 2015-10-25
4
// By the MadGraph5_aMC@NLO Development Team
5
// Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
6
//==========================================================================
8
#include "HelAmps_sm.h"
19
double Sgn(double a, double b)
21
return (b < 0)? - abs(a):abs(a);
24
void ixxxxx(double p[4], double fmass, int nhel, int nsf, complex<double> fi[6])
26
complex<double> chi[2];
27
double sf[2], sfomega[2], omega[2], pp, pp3, sqp0p3, sqm[2];
29
fi[0] = complex<double> (-p[0] * nsf, -p[3] * nsf);
30
fi[1] = complex<double> (-p[1] * nsf, -p[2] * nsf);
34
pp = min(p[0], sqrt(p[1] * p[1] + p[2] * p[2] + p[3] * p[3]));
37
sqm[0] = sqrt(abs(fmass));
38
sqm[1] = Sgn(sqm[0], fmass);
42
fi[3] = im * nsf * sqm[ip];
43
fi[4] = ip * nsf * sqm[im];
48
sf[0] = (1 + nsf + (1 - nsf) * nh) * 0.5;
49
sf[1] = (1 + nsf - (1 - nsf) * nh) * 0.5;
50
omega[0] = sqrt(p[0] + pp);
51
omega[1] = fmass/omega[0];
54
sfomega[0] = sf[0] * omega[ip];
55
sfomega[1] = sf[1] * omega[im];
56
pp3 = max(pp + p[3], 0.0);
57
chi[0] = complex<double> (sqrt(pp3 * 0.5/pp), 0);
60
chi[1] = complex<double> (-nh, 0);
64
chi[1] = complex<double> (nh * p[1], p[2])/sqrt(2.0 * pp * pp3);
66
fi[2] = sfomega[0] * chi[im];
67
fi[3] = sfomega[0] * chi[ip];
68
fi[4] = sfomega[1] * chi[im];
69
fi[5] = sfomega[1] * chi[ip];
74
if (p[1] == 0.0 and p[2] == 0.0 and p[3] < 0.0)
80
sqp0p3 = sqrt(max(p[0] + p[3], 0.0)) * nsf;
82
chi[0] = complex<double> (sqp0p3, 0.0);
85
chi[1] = complex<double> (-nhel * sqrt(2.0 * p[0]), 0.0);
89
chi[1] = complex<double> (nh * p[1], p[2])/sqp0p3;
93
fi[2] = complex<double> (0.0, 0.0);
94
fi[3] = complex<double> (0.0, 0.0);
102
fi[4] = complex<double> (0.0, 0.0);
103
fi[5] = complex<double> (0.0, 0.0);
110
void txxxxx(double p[4], double tmass, int nhel, int nst, complex<double>
113
complex<double> ft[6][4], ep[4], em[4], e0[4];
114
double pt, pt2, pp, pzpt, emp, sqh, sqs;
120
pt2 = p[1] * p[1] + p[2] * p[2];
121
pp = min(p[0], sqrt(pt2 + p[3] * p[3]));
122
pt = min(pp, sqrt(pt2));
124
ft[4][0] = complex<double> (p[0] * nst, p[3] * nst);
125
ft[5][0] = complex<double> (p[1] * nst, p[2] * nst);
132
ep[0] = complex<double> (0, 0);
133
ep[1] = complex<double> (-sqh, 0);
134
ep[2] = complex<double> (0, nst * sqh);
135
ep[3] = complex<double> (0, 0);
139
ep[0] = complex<double> (0, 0);
140
ep[3] = complex<double> (pt/pp * sqh, 0);
144
pzpt = p[3]/(pp * pt) * sqh;
145
ep[1] = complex<double> (-p[1] * pzpt, -nst * p[2]/pt * sqh);
146
ep[2] = complex<double> (-p[2] * pzpt, nst * p[1]/pt * sqh);
150
ep[1] = complex<double> (-sqh, 0);
151
ep[2] = complex<double> (0, nst * Sgn(sqh, p[3]));
162
em[0] = complex<double> (0, 0);
163
em[1] = complex<double> (sqh, 0);
164
em[2] = complex<double> (0, nst * sqh);
165
em[3] = complex<double> (0, 0);
169
em[0] = complex<double> (0, 0);
170
em[3] = complex<double> (-pt/pp * sqh, 0);
174
pzpt = -p[3]/(pp * pt) * sqh;
175
em[1] = complex<double> (-p[1] * pzpt, -nst * p[2]/pt * sqh);
176
em[2] = complex<double> (-p[2] * pzpt, nst * p[1]/pt * sqh);
180
em[1] = complex<double> (sqh, 0);
181
em[2] = complex<double> (0, nst * Sgn(sqh, p[3]));
191
e0[0] = complex<double> (0, 0);
192
e0[1] = complex<double> (0, 0);
193
e0[2] = complex<double> (0, 0);
194
e0[3] = complex<double> (1, 0);
198
emp = p[0]/(tmass * pp);
199
e0[0] = complex<double> (pp/tmass, 0);
200
e0[3] = complex<double> (p[3] * emp, 0);
204
e0[1] = complex<double> (p[1] * emp, 0);
205
e0[2] = complex<double> (p[2] * emp, 0);
209
e0[1] = complex<double> (0, 0);
210
e0[2] = complex<double> (0, 0);
217
for(j = 0; j < 4; j++ )
219
for(i = 0; i < 4; i++ )
220
ft[i][j] = ep[i] * ep[j];
225
for(j = 0; j < 4; j++ )
227
for(i = 0; i < 4; i++ )
228
ft[i][j] = em[i] * em[j];
233
for(j = 0; j < 4; j++ )
235
for(i = 0; i < 4; i++ )
243
for(j = 0; j < 4; j++ )
245
for(i = 0; i < 4; i++ )
246
ft[i][j] = sqh * (ep[i] * e0[j] + e0[i] * ep[j]);
251
for(j = 0; j < 4; j++ )
253
for(i = 0; i < 4; i++ )
254
ft[i][j] = sqs * (ep[i] * em[j] + em[i] * ep[j]
255
+ 2.0 * e0[i] * e0[j]);
260
for(j = 0; j < 4; j++ )
262
for(i = 0; i < 4; i++ )
263
ft[i][j] = sqh * (em[i] * e0[j] + e0[i] * em[j]);
268
std::cerr << "Invalid helicity in txxxxx.\n";
276
for(j = 0; j < 4; j++ )
278
for(i = 0; i < 4; i++ )
279
tc[j * 4 + i + 2] = ft[j][i];
283
void vxxxxx(double p[4], double vmass, int nhel, int nsv, complex<double> vc[6])
285
double hel, hel0, pt, pt2, pp, pzpt, emp, sqh;
289
nsvahl = nsv * abs(hel);
290
pt2 = (p[1] * p[1]) + (p[2] * p[2]);
291
pp = min(p[0], sqrt(pt2 + (p[3] * p[3])));
292
pt = min(pp, sqrt(pt2));
293
vc[0] = complex<double> (p[0] * nsv, p[3] * nsv);
294
vc[1] = complex<double> (p[1] * nsv, p[2] * nsv);
297
hel0 = 1.0 - abs(hel);
300
vc[2] = complex<double> (0.0, 0.0);
301
vc[3] = complex<double> (-hel * sqh, 0.0);
302
vc[4] = complex<double> (0.0, nsvahl * sqh);
303
vc[5] = complex<double> (hel0, 0.0);
307
emp = p[0]/(vmass * pp);
308
vc[2] = complex<double> (hel0 * pp/vmass, 0.0);
309
vc[5] = complex<double> (hel0 * p[3] * emp + hel * pt/pp * sqh, 0.0);
312
pzpt = p[3]/(pp * pt) * sqh * hel;
313
vc[3] = complex<double> (hel0 * p[1] * emp - p[1] * pzpt, -nsvahl *
315
vc[4] = complex<double> (hel0 * p[2] * emp - p[2] * pzpt, nsvahl *
320
vc[3] = complex<double> (-hel * sqh, 0.0);
321
vc[4] = complex<double> (0.0, nsvahl * Sgn(sqh, p[3]));
328
pt = sqrt((p[1] * p[1]) + (p[2] * p[2]));
329
vc[2] = complex<double> (0.0, 0.0);
330
vc[5] = complex<double> (hel * pt/pp * sqh, 0.0);
333
pzpt = p[3]/(pp * pt) * sqh * hel;
334
vc[3] = complex<double> (-p[1] * pzpt, -nsv * p[2]/pt * sqh);
335
vc[4] = complex<double> (-p[2] * pzpt, nsv * p[1]/pt * sqh);
339
vc[3] = complex<double> (-hel * sqh, 0.0);
340
vc[4] = complex<double> (0.0, nsv * Sgn(sqh, p[3]));
346
void oxxxxx(double p[4], double fmass, int nhel, int nsf, complex<double> fo[6])
348
complex<double> chi[2];
349
double sf[2], sfomeg[2], omega[2], pp, pp3, sqp0p3, sqm[2];
351
fo[0] = complex<double> (p[0] * nsf, p[3] * nsf);
352
fo[1] = complex<double> (p[1] * nsf, p[2] * nsf);
356
pp = min(p[0], sqrt((p[1] * p[1]) + (p[2] * p[2]) + (p[3] * p[3])));
359
sqm[0] = sqrt(abs(fmass));
360
sqm[1] = Sgn(sqm[0], fmass);
361
ip = -((1 - nh)/2) * nhel;
362
im = (1 + nh)/2 * nhel;
363
fo[2] = im * sqm[abs(ip)];
364
fo[3] = ip * nsf * sqm[abs(ip)];
365
fo[4] = im * nsf * sqm[abs(im)];
366
fo[5] = ip * sqm[abs(im)];
370
pp = min(p[0], sqrt((p[1] * p[1]) + (p[2] * p[2]) + (p[3] * p[3])));
371
sf[0] = double(1 + nsf + (1 - nsf) * nh) * 0.5;
372
sf[1] = double(1 + nsf - (1 - nsf) * nh) * 0.5;
373
omega[0] = sqrt(p[0] + pp);
374
omega[1] = fmass/omega[0];
377
sfomeg[0] = sf[0] * omega[ip];
378
sfomeg[1] = sf[1] * omega[im];
379
pp3 = max(pp + p[3], 0.00);
380
chi[0] = complex<double> (sqrt(pp3 * 0.5/pp), 0.00);
383
chi[1] = complex<double> (-nh, 0.00);
387
chi[1] = complex<double> (nh * p[1], -p[2])/sqrt(2.0 * pp * pp3);
389
fo[2] = sfomeg[1] * chi[im];
390
fo[3] = sfomeg[1] * chi[ip];
391
fo[4] = sfomeg[0] * chi[im];
392
fo[5] = sfomeg[0] * chi[ip];
397
if((p[1] == 0.00) and (p[2] == 0.00) and (p[3] < 0.00))
403
sqp0p3 = sqrt(max(p[0] + p[3], 0.00)) * nsf;
405
chi[0] = complex<double> (sqp0p3, 0.00);
408
chi[1] = complex<double> (-nhel, 0.00) * sqrt(2.0 * p[0]);
412
chi[1] = complex<double> (nh * p[1], -p[2])/sqp0p3;
418
fo[4] = complex<double> (0.00, 0.00);
419
fo[5] = complex<double> (0.00, 0.00);
423
fo[2] = complex<double> (0.00, 0.00);
424
fo[3] = complex<double> (0.00, 0.00);
432
void sxxxxx(double p[4], int nss, complex<double> sc[3])
434
sc[2] = complex<double> (1.00, 0.00);
435
sc[0] = complex<double> (p[0] * nss, p[3] * nss);
436
sc[1] = complex<double> (p[1] * nss, p[2] * nss);
440
void FFV1_0(complex<double> F1[], complex<double> F2[], complex<double> V3[],
441
complex<double> COUP, complex<double> & vertex)
443
static complex<double> cI = complex<double> (0., 1.);
444
complex<double> TMP0;
445
TMP0 = (F1[2] * (F2[4] * (V3[2] + V3[5]) + F2[5] * (V3[3] + cI * (V3[4]))) +
446
(F1[3] * (F2[4] * (V3[3] - cI * (V3[4])) + F2[5] * (V3[2] - V3[5])) +
447
(F1[4] * (F2[2] * (V3[2] - V3[5]) - F2[3] * (V3[3] + cI * (V3[4]))) +
448
F1[5] * (F2[2] * (+cI * (V3[4]) - V3[3]) + F2[3] * (V3[2] + V3[5])))));
449
vertex = COUP * - cI * TMP0;
453
void FFV1P0_3(complex<double> F1[], complex<double> F2[], complex<double> COUP,
454
double M3, double W3, complex<double> V3[])
456
static complex<double> cI = complex<double> (0., 1.);
458
complex<double> denom;
459
V3[0] = +F1[0] + F2[0];
460
V3[1] = +F1[1] + F2[1];
461
P3[0] = -V3[0].real();
462
P3[1] = -V3[1].real();
463
P3[2] = -V3[1].imag();
464
P3[3] = -V3[0].imag();
465
denom = COUP/(P3[0] * P3[0] - P3[1] * P3[1] - P3[2] * P3[2] - P3[3] * P3[3] -
466
M3 * (M3 - cI * W3));
467
V3[2] = denom * - cI * (F1[2] * F2[4] + F1[3] * F2[5] + F1[4] * F2[2] + F1[5]
469
V3[3] = denom * - cI * (F1[4] * F2[3] + F1[5] * F2[2] - F1[2] * F2[5] - F1[3]
471
V3[4] = denom * - cI * (-cI * (F1[2] * F2[5] + F1[5] * F2[2]) + cI * (F1[3] *
472
F2[4] + F1[4] * F2[3]));
473
V3[5] = denom * - cI * (F1[3] * F2[5] + F1[4] * F2[2] - F1[2] * F2[4] - F1[5]
478
} // end namespace $(namespace)s_sm