24 std::vector<double*> pp(1,
new double[4]);
25 pp[0][0] = 7.500000e+02;
28 pp[0][3] = 7.500000e+02;
29 pp.push_back(
new double[4]);
30 pp[1][0] = 7.500000e+02;
33 pp[1][3] = -7.500000e+02;
34 pp.push_back(
new double[4]);
35 pp[2][0] = 1.328270e+02;
36 pp[2][1] = -3.315104e+01;
37 pp[2][2] = 6.012053e+01;
38 pp[2][3] = -1.137081e+02;
39 pp.push_back(
new double[4]);
40 pp[3][0] = 4.924941e+02;
41 pp[3][1] = -1.557744e+02;
42 pp[3][2] = -4.529006e+02;
43 pp[3][3] = 1.147424e+02;
44 pp.push_back(
new double[4]);
45 pp[4][0] = 2.285372e+02;
46 pp[4][1] = -1.588214e+02;
47 pp[4][2] = -1.465645e+02;
48 pp[4][3] = 7.432258e+01;
49 pp.push_back(
new double[4]);
50 pp[5][0] = 6.461417e+02;
51 pp[5][1] = 3.477469e+02;
52 pp[5][2] = 5.393446e+02;
53 pp[5][3] = -7.535681e+01;
56 for (
int i = 0; i < 1000000; i++) {
93 complexi = std::complex<double> (0., 1.);
134 jamp2[0] =
new double[1];
138void eeWW::ixxxxx(
double p[4],
double fmass,
int nhel,
int nsf, std::complex<double> fi[6])
140 std::complex<double> chi[2];
141 double sf[2], sfomega[2], omega[2], pp, pp3, sqp0p3, sqm[2];
143 fi[0] = std::complex<double> (-
p[0] * nsf, -
p[3] * nsf);
144 fi[1] = std::complex<double> (-
p[1] * nsf, -
p[2] * nsf);
147 pp = std::min(
p[0], sqrt(
p[1] *
p[1] +
p[2] *
p[2] +
p[3] *
p[3]));
149 sqm[0] = sqrt(std::abs(fmass));
150 sqm[1] =
Sgn(sqm[0], fmass);
153 fi[2] = ip * sqm[ip];
154 fi[3] = im * nsf * sqm[ip];
155 fi[4] = ip * nsf * sqm[im];
156 fi[5] = im * sqm[im];
158 sf[0] = (1 + nsf + (1 - nsf) * nh) * 0.5;
159 sf[1] = (1 + nsf - (1 - nsf) * nh) * 0.5;
160 omega[0] = sqrt(
p[0] + pp);
161 omega[1] = fmass / omega[0];
164 sfomega[0] = sf[0] * omega[ip];
165 sfomega[1] = sf[1] * omega[im];
166 pp3 = std::max(pp +
p[3], 0.0);
167 chi[0] = std::complex<double> (sqrt(pp3 * 0.5 / pp), 0);
169 chi[1] = std::complex<double> (-nh, 0);
171 chi[1] = std::complex<double> (nh *
p[1],
p[2]) / sqrt(2.0 * pp * pp3);
173 fi[2] = sfomega[0] * chi[im];
174 fi[3] = sfomega[0] * chi[ip];
175 fi[4] = sfomega[1] * chi[im];
176 fi[5] = sfomega[1] * chi[ip];
179 if (
p[1] == 0.0 and
p[2] == 0.0 and
p[3] < 0.0) {
182 sqp0p3 = sqrt(std::max(
p[0] +
p[3], 0.0)) * nsf;
184 chi[0] = std::complex<double> (sqp0p3, 0.0);
186 chi[1] = std::complex<double> (-nhel * sqrt(2.0 *
p[0]), 0.0);
188 chi[1] = std::complex<double> (nh *
p[1],
p[2]) / sqp0p3;
191 fi[2] = std::complex<double> (0.0, 0.0);
192 fi[3] = std::complex<double> (0.0, 0.0);
198 fi[4] = std::complex<double> (0.0, 0.0);
199 fi[5] = std::complex<double> (0.0, 0.0);
207 return (b < 0) ? - abs(a) : abs(a);
210void eeWW::txxxxx(
double p[4],
double tmass,
int nhel,
int nst, std::complex<double>
213 std::complex<double> ft[6][4], ep[4], em[4], e0[4];
214 double pt, pt2, pp, pzpt, emp, sqh, sqs;
220 pt2 =
p[1] *
p[1] +
p[2] *
p[2];
221 pp = std::min(
p[0], sqrt(pt2 +
p[3] *
p[3]));
222 pt = std::min(pp, sqrt(pt2));
224 ft[4][0] = std::complex<double> (
p[0] * nst,
p[3] * nst);
225 ft[5][0] = std::complex<double> (
p[1] * nst,
p[2] * nst);
230 ep[0] = std::complex<double> (0, 0);
231 ep[1] = std::complex<double> (-sqh, 0);
232 ep[2] = std::complex<double> (0, nst * sqh);
233 ep[3] = std::complex<double> (0, 0);
235 ep[0] = std::complex<double> (0, 0);
236 ep[3] = std::complex<double> (pt / pp * sqh, 0);
239 pzpt =
p[3] / (pp * pt) * sqh;
240 ep[1] = std::complex<double> (-
p[1] * pzpt, -nst *
p[2] / pt * sqh);
241 ep[2] = std::complex<double> (-
p[2] * pzpt, nst *
p[1] / pt * sqh);
243 ep[1] = std::complex<double> (-sqh, 0);
244 ep[2] = std::complex<double> (0, nst *
Sgn(sqh,
p[3]));
253 em[0] = std::complex<double> (0, 0);
254 em[1] = std::complex<double> (sqh, 0);
255 em[2] = std::complex<double> (0, nst * sqh);
256 em[3] = std::complex<double> (0, 0);
258 em[0] = std::complex<double> (0, 0);
259 em[3] = std::complex<double> (-pt / pp * sqh, 0);
262 pzpt = -
p[3] / (pp * pt) * sqh;
263 em[1] = std::complex<double> (-
p[1] * pzpt, -nst *
p[2] / pt * sqh);
264 em[2] = std::complex<double> (-
p[2] * pzpt, nst *
p[1] / pt * sqh);
266 em[1] = std::complex<double> (sqh, 0);
267 em[2] = std::complex<double> (0, nst *
Sgn(sqh,
p[3]));
273 if (std::labs(nhel) <= 1) {
275 e0[0] = std::complex<double> (0, 0);
276 e0[1] = std::complex<double> (0, 0);
277 e0[2] = std::complex<double> (0, 0);
278 e0[3] = std::complex<double> (1, 0);
280 emp =
p[0] / (tmass * pp);
281 e0[0] = std::complex<double> (pp / tmass, 0);
282 e0[3] = std::complex<double> (
p[3] * emp, 0);
285 e0[1] = std::complex<double> (
p[1] * emp, 0);
286 e0[2] = std::complex<double> (
p[2] * emp, 0);
288 e0[1] = std::complex<double> (0, 0);
289 e0[2] = std::complex<double> (0, 0);
295 for (j = 0; j < 4; j++) {
296 for (i = 0; i < 4; i++)
297 ft[i][j] = ep[i] * ep[j];
299 }
else if (nhel == -2) {
300 for (j = 0; j < 4; j++) {
301 for (i = 0; i < 4; i++)
302 ft[i][j] = em[i] * em[j];
304 }
else if (tmass == 0) {
305 for (j = 0; j < 4; j++) {
306 for (i = 0; i < 4; i++)
309 }
else if (tmass != 0) {
311 for (j = 0; j < 4; j++) {
312 for (i = 0; i < 4; i++)
313 ft[i][j] = sqh * (ep[i] * e0[j] + e0[i] * ep[j]);
315 }
else if (nhel == 0) {
316 for (j = 0; j < 4; j++) {
317 for (i = 0; i < 4; i++)
318 ft[i][j] = sqs * (ep[i] * em[j] + em[i] * ep[j]
319 + 2.0 * e0[i] * e0[j]);
321 }
else if (nhel == -1) {
322 for (j = 0; j < 4; j++) {
323 for (i = 0; i < 4; i++)
324 ft[i][j] = sqh * (em[i] * e0[j] + e0[i] * em[j]);
327 std::cerr <<
"Invalid helicity in txxxxx.\n";
335 for (j = 0; j < 4; j++) {
336 for (i = 0; i < 4; i++)
337 tc[j * 4 + i + 2] = ft[j][i];
341void eeWW::vxxxxx(
double p[4],
double vmass,
int nhel,
int nsv, std::complex<double> vc[6])
343 double hel, hel0, pt, pt2, pp, pzpt, emp, sqh;
347 nsvahl = nsv * std::abs(hel);
348 pt2 = (
p[1] *
p[1]) + (
p[2] *
p[2]);
349 pp = std::min(
p[0], sqrt(pt2 + (
p[3] *
p[3])));
350 pt = std::min(pp, sqrt(pt2));
351 vc[0] = std::complex<double> (
p[0] * nsv,
p[3] * nsv);
352 vc[1] = std::complex<double> (
p[1] * nsv,
p[2] * nsv);
354 hel0 = 1.0 - std::abs(hel);
356 vc[2] = std::complex<double> (0.0, 0.0);
357 vc[3] = std::complex<double> (-hel * sqh, 0.0);
358 vc[4] = std::complex<double> (0.0, nsvahl * sqh);
359 vc[5] = std::complex<double> (hel0, 0.0);
361 emp =
p[0] / (vmass * pp);
362 vc[2] = std::complex<double> (hel0 * pp / vmass, 0.0);
363 vc[5] = std::complex<double> (hel0 *
p[3] * emp + hel * pt / pp * sqh, 0.0);
365 pzpt =
p[3] / (pp * pt) * sqh * hel;
366 vc[3] = std::complex<double> (hel0 *
p[1] * emp -
p[1] * pzpt, -nsvahl *
368 vc[4] = std::complex<double> (hel0 *
p[2] * emp -
p[2] * pzpt, nsvahl *
371 vc[3] = std::complex<double> (-hel * sqh, 0.0);
372 vc[4] = std::complex<double> (0.0, nsvahl *
Sgn(sqh,
p[3]));
377 pt = sqrt((
p[1] *
p[1]) + (
p[2] *
p[2]));
378 vc[2] = std::complex<double> (0.0, 0.0);
379 vc[5] = std::complex<double> (hel * pt / pp * sqh, 0.0);
381 pzpt =
p[3] / (pp * pt) * sqh * hel;
382 vc[3] = std::complex<double> (-
p[1] * pzpt, -nsv *
p[2] / pt * sqh);
383 vc[4] = std::complex<double> (-
p[2] * pzpt, nsv *
p[1] / pt * sqh);
385 vc[3] = std::complex<double> (-hel * sqh, 0.0);
386 vc[4] = std::complex<double> (0.0, nsv *
Sgn(sqh,
p[3]));
394 sc[2] = std::complex<double> (1.00, 0.00);
395 sc[0] = std::complex<double> (
p[0] * nss,
p[3] * nss);
396 sc[1] = std::complex<double> (
p[1] * nss,
p[2] * nss);
400void eeWW::oxxxxx(
double p[4],
double fmass,
int nhel,
int nsf, std::complex<double> fo[6])
402 std::complex<double> chi[2];
403 double sf[2], sfomeg[2], omega[2], pp, pp3, sqp0p3, sqm[2];
405 fo[0] = std::complex<double> (
p[0] * nsf,
p[3] * nsf);
406 fo[1] = std::complex<double> (
p[1] * nsf,
p[2] * nsf);
408 if (fmass != 0.000) {
409 pp = std::min(
p[0], sqrt((
p[1] *
p[1]) + (
p[2] *
p[2]) + (
p[3] *
p[3])));
411 sqm[0] = sqrt(std::abs(fmass));
412 sqm[1] =
Sgn(sqm[0], fmass);
413 ip = -((1 - nh) / 2) * nhel;
414 im = (1 + nh) / 2 * nhel;
415 fo[2] = im * sqm[std::abs(ip)];
416 fo[3] = ip * nsf * sqm[std::abs(ip)];
417 fo[4] = im * nsf * sqm[std::abs(im)];
418 fo[5] = ip * sqm[std::abs(im)];
420 pp = std::min(
p[0], sqrt((
p[1] *
p[1]) + (
p[2] *
p[2]) + (
p[3] *
p[3])));
421 sf[0] = double(1 + nsf + (1 - nsf) * nh) * 0.5;
422 sf[1] = double(1 + nsf - (1 - nsf) * nh) * 0.5;
423 omega[0] = sqrt(
p[0] + pp);
424 omega[1] = fmass / omega[0];
427 sfomeg[0] = sf[0] * omega[ip];
428 sfomeg[1] = sf[1] * omega[im];
429 pp3 = std::max(pp +
p[3], 0.00);
430 chi[0] = std::complex<double> (sqrt(pp3 * 0.5 / pp), 0.00);
432 chi[1] = std::complex<double> (-nh, 0.00);
434 chi[1] = std::complex<double> (nh *
p[1], -
p[2]) / sqrt(2.0 * pp * pp3);
436 fo[2] = sfomeg[1] * chi[im];
437 fo[3] = sfomeg[1] * chi[ip];
438 fo[4] = sfomeg[0] * chi[im];
439 fo[5] = sfomeg[0] * chi[ip];
442 if ((
p[1] == 0.00) and (
p[2] == 0.00) and (
p[3] < 0.00)) {
445 sqp0p3 = sqrt(std::max(
p[0] +
p[3], 0.00)) * nsf;
447 chi[0] = std::complex<double> (sqp0p3, 0.00);
448 if (sqp0p3 == 0.000) {
449 chi[1] = std::complex<double> (-nhel, 0.00) * sqrt(2.0 *
p[0]);
451 chi[1] = std::complex<double> (nh *
p[1], -
p[2]) / sqp0p3;
456 fo[4] = std::complex<double> (0.00, 0.00);
457 fo[5] = std::complex<double> (0.00, 0.00);
459 fo[2] = std::complex<double> (0.00, 0.00);
460 fo[3] = std::complex<double> (0.00, 0.00);
469 std::complex<double> V3[], std::complex<double> COUP, std::complex<double>
472 static std::complex<double> cI = std::complex<double> (0., 1.);
473 std::complex<double> TMP2;
475 std::complex<double> TMP10;
477 std::complex<double> TMP7;
479 std::complex<double> TMP6;
480 std::complex<double> TMP5;
481 std::complex<double> TMP4;
482 std::complex<double> TMP9;
483 std::complex<double> TMP3;
484 std::complex<double> TMP8;
485 P1[0] = V1[0].real();
486 P1[1] = V1[1].real();
487 P1[2] = V1[1].imag();
488 P1[3] = V1[0].imag();
489 P2[0] = V2[0].real();
490 P2[1] = V2[1].real();
491 P2[2] = V2[1].imag();
492 P2[3] = V2[0].imag();
493 P3[0] = V3[0].real();
494 P3[1] = V3[1].real();
495 P3[2] = V3[1].imag();
496 P3[3] = V3[0].imag();
497 TMP9 = (V1[2] * P2[0] - V1[3] * P2[1] - V1[4] * P2[2] - V1[5] * P2[3]);
498 TMP8 = (V3[2] * V2[2] - V3[3] * V2[3] - V3[4] * V2[4] - V3[5] * V2[5]);
499 TMP5 = (P1[0] * V2[2] - P1[1] * V2[3] - P1[2] * V2[4] - P1[3] * V2[5]);
500 TMP4 = (V3[2] * P2[0] - V3[3] * P2[1] - V3[4] * P2[2] - V3[5] * P2[3]);
501 TMP7 = (P3[0] * V2[2] - P3[1] * V2[3] - P3[2] * V2[4] - P3[3] * V2[5]);
502 TMP6 = (V3[2] * V1[2] - V3[3] * V1[3] - V3[4] * V1[4] - V3[5] * V1[5]);
503 TMP10 = (P3[0] * V1[2] - P3[1] * V1[3] - P3[2] * V1[4] - P3[3] * V1[5]);
504 TMP3 = (V3[2] * P1[0] - V3[3] * P1[1] - V3[4] * P1[2] - V3[5] * P1[3]);
505 TMP2 = (V2[2] * V1[2] - V2[3] * V1[3] - V2[4] * V1[4] - V2[5] * V1[5]);
506 vertex = COUP * (TMP2 * (-cI * (TMP3) + cI * (TMP4)) + (TMP6 * (-cI * (TMP7)
507 + cI * (TMP5)) + TMP8 * (-cI * (TMP9) + cI * (TMP10))));
511 std::complex<double> COUP,
double M3,
double W3, std::complex<double> V3[])
513 static std::complex<double> cI = std::complex<double> (0., 1.);
514 std::complex<double> denom;
515 std::complex<double> TMP11;
518 std::complex<double> TMP1;
521 OM3 = 1. / (M3 * M3);
522 V3[0] = +F1[0] + F2[0];
523 V3[1] = +F1[1] + F2[1];
524 P3[0] = -V3[0].real();
525 P3[1] = -V3[1].real();
526 P3[2] = -V3[1].imag();
527 P3[3] = -V3[0].imag();
528 TMP1 = (F1[2] * (F2[4] * (P3[0] + P3[3]) + F2[5] * (P3[1] + cI * (P3[2]))) +
529 F1[3] * (F2[4] * (P3[1] - cI * (P3[2])) + F2[5] * (P3[0] - P3[3])));
530 TMP11 = (F1[4] * (F2[2] * (P3[0] - P3[3]) - F2[3] * (P3[1] + cI * (P3[2]))) +
531 F1[5] * (F2[2] * (+cI * (P3[2]) - P3[1]) + F2[3] * (P3[0] + P3[3])));
532 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
533 P3[3]) - M3 * (M3 - cI * W3));
534 V3[2] = denom * (-2. * cI) * (OM3 * -1. / 2. * P3[0] * (TMP1 + 2. * (TMP11)) +
535 (+1. / 2. * (F1[2] * F2[4] + F1[3] * F2[5]) + F1[4] * F2[2] + F1[5] *
537 V3[3] = denom * (-2. * cI) * (OM3 * -1. / 2. * P3[1] * (TMP1 + 2. * (TMP11)) +
538 (-1. / 2. * (F1[2] * F2[5] + F1[3] * F2[4]) + F1[4] * F2[3] + F1[5] *
540 V3[4] = denom * 2. * cI * (OM3 * 1. / 2. * P3[2] * (TMP1 + 2. * (TMP11)) +
541 (+1. / 2. * cI * (F1[2] * F2[5]) - 1. / 2. * cI * (F1[3] * F2[4]) - cI *
542 (F1[4] * F2[3]) + cI * (F1[5] * F2[2])));
543 V3[5] = denom * 2. * cI * (OM3 * 1. / 2. * P3[3] * (TMP1 + 2. * (TMP11)) +
544 (+1. / 2. * (F1[2] * F2[4]) - 1. / 2. * (F1[3] * F2[5]) - F1[4] * F2[2] +
549 std::complex<double> COUP,
double M3,
double W3, std::complex<double> V3[])
551 static std::complex<double> cI = std::complex<double> (0., 1.);
552 std::complex<double> denom;
553 std::complex<double> TMP1;
558 OM3 = 1. / (M3 * M3);
559 V3[0] = +F1[0] + F2[0];
560 V3[1] = +F1[1] + F2[1];
561 P3[0] = -V3[0].real();
562 P3[1] = -V3[1].real();
563 P3[2] = -V3[1].imag();
564 P3[3] = -V3[0].imag();
565 TMP1 = (F1[2] * (F2[4] * (P3[0] + P3[3]) + F2[5] * (P3[1] + cI * (P3[2]))) +
566 F1[3] * (F2[4] * (P3[1] - cI * (P3[2])) + F2[5] * (P3[0] - P3[3])));
567 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
568 P3[3]) - M3 * (M3 - cI * W3));
569 V3[2] = denom * (-cI) * (F1[2] * F2[4] + F1[3] * F2[5] - P3[0] * OM3 * TMP1);
570 V3[3] = denom * (-cI) * (-F1[2] * F2[5] - F1[3] * F2[4] - P3[1] * OM3 *
572 V3[4] = denom * (-cI) * (-cI * (F1[2] * F2[5]) + cI * (F1[3] * F2[4]) - P3[2]
574 V3[5] = denom * (-cI) * (F1[3] * F2[5] - F1[2] * F2[4] - P3[3] * OM3 * TMP1);
578 std::complex<double> COUP1, std::complex<double> COUP2,
double M3,
double
579 W3, std::complex<double> V3[])
582 std::complex<double> Vtmp[6];
583 FFV2_3(F1, F2, COUP1, M3, W3, V3);
584 FFV4_3(F1, F2, COUP2, M3, W3, Vtmp);
587 V3[i] = V3[i] + Vtmp[i];
593 std::complex<double> COUP,
double M3,
double W3, std::complex<double> V3[])
595 static std::complex<double> cI = std::complex<double> (0., 1.);
597 std::complex<double> denom;
598 V3[0] = +F1[0] + F2[0];
599 V3[1] = +F1[1] + F2[1];
600 P3[0] = -V3[0].real();
601 P3[1] = -V3[1].real();
602 P3[2] = -V3[1].imag();
603 P3[3] = -V3[0].imag();
604 denom = COUP / ((P3[0] * P3[0]) - (P3[1] * P3[1]) - (P3[2] * P3[2]) - (P3[3] *
605 P3[3]) - M3 * (M3 - cI * W3));
606 V3[2] = denom * (-cI) * (F1[2] * F2[4] + F1[3] * F2[5] + F1[4] * F2[2] +
608 V3[3] = denom * (-cI) * (F1[4] * F2[3] + F1[5] * F2[2] - F1[2] * F2[5] -
610 V3[4] = denom * (-cI) * (-cI * (F1[2] * F2[5] + F1[5] * F2[2]) + cI * (F1[3]
611 * F2[4] + F1[4] * F2[3]));
612 V3[5] = denom * (-cI) * (F1[3] * F2[5] + F1[4] * F2[2] - F1[2] * F2[4] -
617 std::complex<double> COUP,
double M1,
double W1, std::complex<double> F1[])
619 static std::complex<double> cI = std::complex<double> (0., 1.);
621 std::complex<double> denom;
622 F1[0] = +F2[0] + V3[0];
623 F1[1] = +F2[1] + V3[1];
624 P1[0] = -F1[0].real();
625 P1[1] = -F1[1].real();
626 P1[2] = -F1[1].imag();
627 P1[3] = -F1[0].imag();
628 denom = COUP / ((P1[0] * P1[0]) - (P1[1] * P1[1]) - (P1[2] * P1[2]) - (P1[3] *
629 P1[3]) - M1 * (M1 - cI * W1));
630 F1[2] = denom * cI * M1 * (F2[4] * (V3[2] + V3[5]) + F2[5] * (V3[3] + cI *
632 F1[3] = denom * - cI * M1 * (F2[4] * (+cI * (V3[4]) - V3[3]) + F2[5] * (V3[5]
634 F1[4] = denom * (-cI) * (F2[4] * (P1[0] * (V3[2] + V3[5]) + (P1[1] * (+cI *
635 (V3[4]) - V3[3]) + (P1[2] * (-1.) * (V3[4] + cI * (V3[3])) - P1[3] *
636 (V3[2] + V3[5])))) + F2[5] * (P1[0] * (V3[3] + cI * (V3[4])) + (P1[1] *
637 (V3[5] - V3[2]) + (P1[2] * (-cI * (V3[2]) + cI * (V3[5])) - P1[3] *
638 (V3[3] + cI * (V3[4]))))));
639 F1[5] = denom * (-cI) * (F2[4] * (P1[0] * (V3[3] - cI * (V3[4])) + (P1[1] *
640 (-1.) * (V3[2] + V3[5]) + (P1[2] * (+cI * (V3[2] + V3[5])) + P1[3] *
641 (V3[3] - cI * (V3[4]))))) + F2[5] * (P1[0] * (V3[2] - V3[5]) + (P1[1] *
642 (-1.) * (V3[3] + cI * (V3[4])) + (P1[2] * (+cI * (V3[3]) - V3[4]) + P1[3]
643 * (V3[2] - V3[5])))));
647 std::complex<double> V3[], std::complex<double> COUP, std::complex<double>
650 static std::complex<double> cI = std::complex<double> (0., 1.);
651 std::complex<double> TMP0;
652 TMP0 = (F1[2] * (F2[4] * (V3[2] + V3[5]) + F2[5] * (V3[3] + cI * (V3[4]))) +
653 F1[3] * (F2[4] * (V3[3] - cI * (V3[4])) + F2[5] * (V3[2] - V3[5])));
654 vertex = COUP * - cI * TMP0;
673 for (
int i = 0; i < 1; i++)
677 const int ncomb = 64;
678 static bool goodhel[ncomb] = {ncomb *
false};
679 static int ntry = 0, sum_hel = 0, ngood = 0;
680 static int igood[ncomb];
686 static const int helicities[ncomb][
nexternal] = {
687 {-1, -1, -1, -1, -1, -1},
688 {-1, -1, -1, -1, -1, 1},
689 {-1, -1, -1, -1, 1, -1},
690 {-1, -1, -1, -1, 1, 1},
691 {-1, -1, -1, 1, -1, -1},
692 {-1, -1, -1, 1, -1, 1},
693 {-1, -1, -1, 1, 1, -1},
694 {-1, -1, -1, 1, 1, 1},
695 {-1, -1, 1, -1, -1, -1},
696 {-1, -1, 1, -1, -1, 1},
697 {-1, -1, 1, -1, 1, -1},
698 {-1, -1, 1, -1, 1, 1},
699 {-1, -1, 1, 1, -1, -1},
700 {-1, -1, 1, 1, -1, 1},
701 {-1, -1, 1, 1, 1, -1},
702 {-1, -1, 1, 1, 1, 1},
703 {-1,1, -1, -1, -1, -1},
704 {-1, 1, -1, -1, -1, 1},
705 {-1, 1, -1, -1, 1, -1},
706 {-1, 1, -1, -1, 1, 1},
707 {-1, 1, -1, 1, -1, -1},
708 {-1, 1, -1, 1, -1, 1},
709 {-1, 1, -1, 1, 1, -1},
710 {-1, 1, -1, 1, 1, 1},
711 {-1, 1, 1, -1, -1, -1},
712 {-1, 1, 1, -1, -1, 1},
713 {-1, 1, 1, -1, 1, -1},
714 {-1, 1, 1, -1, 1, 1},
715 {-1, 1, 1, 1, -1, -1},
716 {-1, 1, 1, 1, -1, 1},
717 {-1, 1, 1, 1, 1, -1},
719 {1, -1, -1, -1, -1, -1},
720 {1, -1, -1, -1, -1, 1},
721 {1, -1, -1, -1, 1, -1},
722 {1, -1, -1, -1, 1, 1},
723 {1, -1, -1, 1, -1, -1},
724 {1, -1, -1, 1, -1, 1},
725 {1, -1, -1, 1, 1, -1},
726 {1, -1, -1, 1, 1, 1},
727 {1, -1, 1, -1, -1, -1},
728 {1, -1, 1, -1, -1, 1},
729 {1, -1, 1, -1, 1, -1},
730 {1, -1, 1, -1, 1, 1},
731 {1, -1, 1, 1, -1, -1},
732 {1, -1, 1, 1, -1, 1},
733 {1, -1, 1, 1, 1, -1},
735 {1, 1, -1, -1, -1, -1},
736 {1, 1, -1, -1, -1, 1},
737 {1, 1, -1, -1, 1, -1},
738 {1, 1, -1, -1, 1, 1},
739 {1, 1, -1, 1, -1, -1},
740 {1, 1, -1, 1, -1, 1},
741 {1, 1, -1, 1, 1, -1},
743 {1, 1, 1, -1, -1, -1},
744 {1, 1, 1, -1, -1, 1},
745 {1, 1, 1, -1, 1, -1},
747 {1, 1, 1, 1, -1, -1},
766 if (sum_hel == 0 || ntry < 10) {
768 for (
int ihel = 0; ihel < ncomb; ihel++) {
769 if (goodhel[ihel] || ntry < 2) {
773 for (
int iproc = 0; iproc <
nprocesses; iproc++) {
778 if (tsum != 0. && !goodhel[ihel]) {
779 goodhel[ihel] =
true;
786 sum_hel = std::min(sum_hel, ngood);
789 for (
int j = 0; j < sum_hel; j++) {
791 if (jhel >= ngood) jhel = 0;
792 double hwgt = double(ngood) / double(sum_hel);
793 int ihel = igood[jhel];
797 for (
int iproc = 0; iproc <
nprocesses; iproc++) {
813 if (
id1 == -11 &&
id2 == 11) {
859 const int ncolor = 1;
860 std::complex<double> ztemp;
861 std::complex<double> jamp[ncolor];
863 static const double denom[ncolor] = {1};
864 static const double cf[ncolor][ncolor] = {
873 for (i = 0; i < ncolor; i++) {
875 for (j = 0; j < ncolor; j++)
876 ztemp = ztemp + cf[i][j] * jamp[j];
877 matrix = matrix + real(ztemp * conj(jamp[i])) / denom[i];
881 for (i = 0; i < ncolor; i++)
882 jamp2[0][i] += real(jamp[i] * conj(jamp[i]));
A model class for the Standard Model.
A class for a model prediction of an observable.
std::complex< double > GC_100
void FFV2_4_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP1, std::complex< double > COUP2, double M3, double W3, std::complex< double > V3[])
std::complex< double > GC_3
std::vector< double > mME
static const int nexternal
void calculate_wavefunctions(const int perm[], const int hel[])
double computeThValue()
hep-ph/9512380v2
std::complex< double > w[nwavefuncs][18]
std::complex< double > GC_59
std::complex< double > GC_53
void FFV4_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
double Sgn(double e, double f)
std::complex< double > I1x33
void sxxxxx(double p[4], int nss, std::complex< double > sc[3])
std::vector< double * > p
std::complex< double > GC_51
std::complex< double > I2x33
double matrix_1_epem_wpwm_wp_mupvm_wm_uxd()
std::complex< double > I3x33
std::complex< double > amp[namplitudes]
void VVV1_0(std::complex< double > V1[], std::complex< double > V2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
void FFV2_0(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, std::complex< double > &vertex)
static const int nprocesses
eeWW(const StandardModel &SM_i)
void ixxxxx(double p[4], double fmass, int nhel, int nsf, std::complex< double > fi[6])
void txxxxx(double p[4], double tmass, int nhel, int nst, std::complex< double > fi[18])
void vxxxxx(double p[4], double vmass, int nhel, int nsv, std::complex< double > v[6])
double * jamp2[nprocesses]
void FFV2_1(std::complex< double > F2[], std::complex< double > V3[], std::complex< double > COUP, double M1, double W1, std::complex< double > F1[])
void setMomenta(std::vector< double * > &momenta)
std::complex< double > complexi
const double * getMatrixElements() const
void FFV1P0_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
double matrix_element[nprocesses]
void FFV2_3(std::complex< double > F1[], std::complex< double > F2[], std::complex< double > COUP, double M3, double W3, std::complex< double > V3[])
void oxxxxx(double p[4], double fmass, int nhel, int nsf, std::complex< double > fo[6])
virtual double sigmaHat()
std::complex< double > I4x33