12 double PhotosMEforW::spV[4], PhotosMEforW::bet[4];
15 double PhotosMEforW::pi, PhotosMEforW::sw, PhotosMEforW::cw, PhotosMEforW::alphaI, PhotosMEforW::qb, PhotosMEforW::mb,
16 PhotosMEforW::mf1, PhotosMEforW::mf2, PhotosMEforW::qf1, PhotosMEforW::qf2, PhotosMEforW::vf, PhotosMEforW::af, PhotosMEforW::mcLUN;
28 complex<double> PhotosMEforW::InProd_zero(
double p1[4],
int l1,
double p2[4],
int l2)
32 double forSqrt1, forSqrt2, sqrt1, sqrt2;
33 complex<double> Dcmplx;
34 static complex<double> i_ = complex<double>(0.0, 1.0);
40 for (
int i = 0; i < 4; i++) {
46 if ((l1 == l2) || equal)
return complex<double>(0.0, 0.0);
49 else if ((l1 == +1) && (l2 == -1)) {
51 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
52 forSqrt2 = 1.0 / forSqrt1;
53 sqrt1 = sqrt(forSqrt2);
54 sqrt2 = sqrt(forSqrt1);
56 return (p1[2] + i_ * p1[3]) * sqrt1 -
57 (p2[2] + i_ * p2[3]) * sqrt2 ;
58 }
else if ((l1 == -1) && (l2 == +1)) {
60 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
61 forSqrt2 = 1.0 / forSqrt1;
62 sqrt1 = sqrt(forSqrt2);
63 sqrt2 = sqrt(forSqrt1);
65 return (p2[2] - i_ * p2[3]) * sqrt2 -
66 (p1[2] - i_ * p1[3]) * sqrt1 ;
71 cout <<
" ERROR IN InProd_zero:" << endl;
72 cout <<
" WRONG VALUES FOR l1,l2: l1,l2 = -1,+1 " << endl;
78 double PhotosMEforW::InSqrt(
double p[4],
double q[4])
81 return sqrt((p[0] - p[1]) / (q[0] - q[1]));
90 complex<double> PhotosMEforW::InProd_mass(
double p1[4],
double m1,
int l1,
double p2[4],
double m2,
int l2)
92 double sqrt1, sqrt2, forSqrt1;
95 if ((l1 == +1) && (l2 == +1)) {
96 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
97 sqrt1 = sqrt(forSqrt1);
99 return complex<double>(m1 * sqrt2 + m2 * sqrt1, 0.0);
100 }
else if ((l1 == +1) && (l2 == -1))
101 return InProd_zero(p1, +1, p2, -1);
103 else if ((l1 == -1) && (l2 == +1))
104 return InProd_zero(p1, -1, p2, +1);
106 else if ((l1 == -1) && (l2 == -1)) {
107 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
108 sqrt1 = sqrt(forSqrt1);
110 return complex<double>(m1 * sqrt2 + m2 * sqrt1, 0.0);
113 cout <<
" ERROR IN InProd_mass.." << endl;
114 cout <<
" WRONG VALUES FOR l1,l2" << endl;
125 complex<double> PhotosMEforW::BsFactor(
int s,
double k[4],
double p[4],
double m)
127 double forSqrt1, sqrt1;
128 complex<double> inPr1;
132 inPr1 = InProd_zero(k, +1, p, -1);
133 forSqrt1 = (p[0] - p[1]) / (k[0] - k[1]);
134 sqrt1 = sqrt(2.0 * forSqrt1);
136 return inPr1 * sqrt1;
141 inPr1 = InProd_zero(k, -1, p, +1);
142 forSqrt1 = (p[0] - p[1]) / (k[0] - k[1]);
143 sqrt1 = sqrt(2.0 * forSqrt1);
145 return inPr1 * sqrt1;
149 cout <<
" ERROR IN BsFactor: " << endl;
150 cout <<
" WRONG VALUES FOR s : s = -1,+1" << endl;
171 complex<double> PhotosMEforW::WDecayEikonalKS_1ph(
double p3[4],
double p1[4],
double p2[4],
double k[4],
int s)
174 double scalProd1, scalProd2, scalProd3;
175 complex<double> wdecayeikonalks_1ph, BSoft1, BSoft2;
177 scalProd1 = p1[0] * k[0] - p1[1] * k[1] - p1[2] * k[2] - p1[3] * k[3];
178 scalProd2 = p2[0] * k[0] - p2[1] * k[1] - p2[2] * k[2] - p2[3] * k[3];
179 scalProd3 = p3[0] * k[0] - p3[1] * k[1] - p3[2] * k[2] - p3[3] * k[3];
182 BSoft1 = BsFactor(s, k, p1, mf1);
183 BSoft2 = BsFactor(s, k, p2, mf2);
186 return sqrt(pi / alphaI) * (-(qf1 / scalProd1 + qb / scalProd3) * BSoft1
187 + (qf2 / scalProd2 - qb / scalProd3) * BSoft2);
197 complex<double> PhotosMEforW::SoftFactor(
int s,
double k[4],
double p1[4],
double m1,
double p2[4],
double m2,
double Gmass2)
200 double ScalProd1, ScalProd2;
201 complex<double> BsFactor2, BsFactor1;
204 ScalProd1 = k[0] * p1[0] - k[1] * p1[1] - k[2] * p1[2] - k[3] * p1[3];
205 ScalProd2 = k[0] * p2[0] - k[1] * p2[1] - k[2] * p2[2] - k[3] * p2[3];
207 BsFactor1 = BsFactor(s, k, p1, m1);
208 BsFactor2 = BsFactor(s, k, p2, m2);
210 return + BsFactor2 / 2.0 / (ScalProd2 - Gmass2)
211 - BsFactor1 / 2.0 / (ScalProd1 - Gmass2);
234 complex<double> PhotosMEforW::TrMatrix_zero(
double p1[4],
double m1,
int l1,
double k[4],
int s,
double p2[4],
double m2,
int l2)
237 double forSqrt1, forSqrt2;
240 complex<double> inPr1, inPr2, inPr3;
244 for (
int i = 0; i < 4; i++)
249 if ((m1 == m2) && (equal)) {
253 if ((l1 == +1) && (l2 == +1)) {
255 inPr1 = InProd_zero(k, +s, p1, -s);
256 forSqrt1 = (p1[0] - p1[1]) / (k[0] - k[1]);
257 sqrt1 = sqrt(2.0 * forSqrt1);
259 return sqrt1 * inPr1;
262 else if ((l1 == +1) && (l2 == -1)) {
264 return complex<double>(0.0, 0.0);
268 else if ((l1 == -1) && (l2 == +1)) {
270 return complex<double>(0.0, 0.0);
273 else if ((l1 == -1) && (l2 == -1)) {
275 inPr1 = InProd_zero(k, +s, p1, -s);
276 forSqrt1 = (p1[0] - p1[1]) / (k[0] - k[1]);
277 sqrt1 = sqrt(2.0 * forSqrt1);
279 return sqrt1 * inPr1;
285 cout <<
" ERROR IN TrMatrix_zero: " << endl;
286 cout <<
" WRONG VALUES FOR l1,l2,s" << endl;
294 if ((l1 == +1) && (l2 == +1) && (s == +1)) {
296 inPr1 = InProd_zero(k, +1, p1, -1);
297 forSqrt1 = (p2[0] - p2[1]) / (k[0] - k[1]);
298 sqrt1 = sqrt(2.0 * forSqrt1);
300 return sqrt1 * inPr1;
301 }
else if ((l1 == +1) && (l2 == -1) && (s == +1)) {
303 return complex<double>(0.0, 0.0);
306 else if ((l1 == -1) && (l2 == +1) && (s == +1)) {
308 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
309 forSqrt2 = 1.0 / forSqrt1;
310 sqrt1 = sqrt(2.0 * forSqrt1);
311 sqrt2 = sqrt(2.0 * forSqrt2);
313 return complex<double>(m2 * sqrt1 - m1 * sqrt2, 0.0);
314 }
else if ((l1 == -1) && (l2 == -1) && (s == +1)) {
316 inPr1 = InProd_zero(k, +1, p2, -1);
317 forSqrt1 = (p1[0] - p1[1]) / (k[0] - k[1]);
318 sqrt1 = sqrt(2.0 * forSqrt1);
320 return inPr1 * sqrt1;
323 else if ((l1 == +1) && (l2 == +1) && (s == -1)) {
325 inPr1 = -InProd_zero(k, -1, p2, +1);
326 forSqrt1 = (p1[0] - p1[1]) / (k[0] - k[1]);
327 sqrt1 = sqrt(2.0 * forSqrt1);
329 return -sqrt1 * inPr1;
332 else if ((l1 == +1) && (l2 == -1) && (s == -1)) {
334 forSqrt1 = (p1[0] - p1[1]) / (p2[0] - p2[1]);
335 forSqrt2 = 1.0 / forSqrt1;
336 sqrt1 = sqrt(2.0 * forSqrt1);
337 sqrt2 = sqrt(2.0 * forSqrt2);
339 return complex<double>(m2 * sqrt1 - m1 * sqrt2, 0.0);
342 else if ((l1 == -1) && (l2 == +1) && (s == -1)) {
344 return complex<double>(0.0, 0.0);
347 else if ((l1 == -1) && (l2 == -1) && (s == -1)) {
349 inPr1 = -InProd_zero(k, -1, p1, +1);
350 forSqrt1 = (p2[0] - p2[1]) / (k[0] - k[1]);
351 sqrt1 = sqrt(2.0 * forSqrt1);
353 return -inPr1 * sqrt1;
357 cout <<
" ERROR IN TrMatrix_zero: " << endl;
358 cout <<
" WRONG VALUES FOR l1,l2,s" << endl;
381 complex<double> PhotosMEforW::TrMatrix_mass(
double p1[4],
double m1,
int l1,
double k[4],
double m,
int s,
double p2[4],
double m2,
386 double forSqrt1, forSqrt2;
387 double k_1[4], k_2[4];
388 double forSqrt3, forSqrt4, sqrt3, sqrt1, sqrt2, sqrt4;
389 complex<double> inPr1, inPr2, inPr3, inPr4;
391 for (
int i = 0; i < 4; i++) {
392 k_1[i] = 1.0 / 2.0 * (k[i] - m * spV[i]);
393 k_2[i] = 1.0 / 2.0 * (k[i] + m * spV[i]);
396 if ((l1 == +1) && (l2 == +1) && (s == 0)) {
398 inPr1 = InProd_zero(p1, +1, k_2, -1);
399 inPr2 = InProd_zero(p2, -1, k_2, +1);
400 inPr3 = InProd_zero(p1, +1, k_1, -1);
401 inPr4 = InProd_zero(p2, -1, k_1, +1);
402 sqrt1 = sqrt(p1[0] - p1[1]);
403 sqrt2 = sqrt(p2[0] - p2[1]);
404 sqrt3 = m1 * m2 / sqrt1 / sqrt2;
407 (inPr1 * inPr2 - inPr3 * inPr4) * (vf + af) / m
408 + (k_1[0] - k_2[0] - k_1[1] + k_2[1]) * sqrt3 * (vf - af) / m;
411 else if ((l1 == +1) && (l2 == -1) && (s == 0)) {
413 inPr1 = InProd_zero(p1, +1, k_1, -1);
414 inPr2 = InProd_zero(p1, +1, k_2, -1);
415 inPr3 = InProd_zero(p2, +1, k_2, -1);
416 inPr4 = InProd_zero(p2, +1, k_1, -1);
418 forSqrt1 = (k_1[0] - k_1[1]) / (p2[0] - p2[1]);
419 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
420 forSqrt3 = (k_2[0] - k_2[1]) / (p1[0] - p1[1]);
421 forSqrt4 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
422 sqrt1 = sqrt(forSqrt1);
423 sqrt2 = sqrt(forSqrt2);
424 sqrt3 = sqrt(forSqrt3);
425 sqrt4 = sqrt(forSqrt4);
428 (inPr1 * sqrt1 - inPr2 * sqrt2) * (vf + af) * m2 / m
429 + (inPr3 * sqrt3 - inPr4 * sqrt4) * (vf - af) * m1 / m;
430 }
else if ((l1 == -1) && (l2 == +1) && (s == 0)) {
432 inPr1 = InProd_zero(p1, -1, k_1, +1);
433 inPr2 = InProd_zero(p1, -1, k_2, +1);
434 inPr3 = InProd_zero(p2, -1, k_2, +1);
435 inPr4 = InProd_zero(p2, -1, k_1, +1);
437 forSqrt1 = (k_1[0] - k_1[1]) / (p2[0] - p2[1]);
438 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
439 forSqrt3 = (k_2[0] - k_2[1]) / (p1[0] - p1[1]);
440 forSqrt4 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
441 sqrt1 = sqrt(forSqrt1);
442 sqrt2 = sqrt(forSqrt2);
443 sqrt3 = sqrt(forSqrt3);
444 sqrt4 = sqrt(forSqrt4);
447 (inPr1 * sqrt1 - inPr2 * sqrt2) * (vf - af) * m2 / m
448 + (inPr3 * sqrt3 - inPr4 * sqrt4) * (vf + af) * m1 / m;
449 }
else if ((l1 == -1) && (l2 == -1) && (s == 0)) {
451 inPr1 = InProd_zero(p2, +1, k_2, -1);
452 inPr2 = InProd_zero(p1, -1, k_2, +1);
453 inPr3 = InProd_zero(p2, +1, k_1, -1);
454 inPr4 = InProd_zero(p1, -1, k_1, +1);
455 sqrt1 = sqrt(p1[0] - p1[1]);
456 sqrt2 = sqrt(p2[0] - p2[1]);
457 sqrt3 = m1 * m2 / sqrt1 / sqrt2;
460 (inPr1 * inPr2 - inPr3 * inPr4) * (vf - af) / m
461 + (k_1[0] - k_2[0] - k_1[1] + k_2[1]) * sqrt3 * (vf + af) / m;
462 }
else if ((l1 == +1) && (l2 == +1) && (s == +1)) {
464 inPr1 = InProd_zero(p1, +1, k_1, -1);
465 inPr2 = InProd_zero(k_2, -1, p2, +1);
466 inPr3 = inPr1 * inPr2;
468 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
469 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
470 sqrt1 = sqrt(forSqrt1);
471 sqrt2 = sqrt(forSqrt2);
472 sqrt3 = m1 * m2 * sqrt1 * sqrt2;
475 sqrt(2.0) / m * (inPr3 * (vf + af) + sqrt3 * (vf - af));
478 else if ((l1 == +1) && (l2 == -1) && (s == +1)) {
480 inPr1 = InProd_zero(p1, +1, k_1, -1);
481 inPr2 = InProd_zero(p2, +1, k_1, -1);
483 forSqrt1 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
484 forSqrt2 = (k_2[0] - k_2[1]) / (p1[0] - p1[1]);
485 sqrt1 = m2 * sqrt(forSqrt1);
486 sqrt2 = m1 * sqrt(forSqrt2);
489 sqrt(2.0) / m * (+ inPr1 * sqrt1 * (vf + af)
490 - inPr2 * sqrt2 * (vf - af)
492 }
else if ((l1 == -1) && (l2 == +1) && (s == +1)) {
494 inPr1 = InProd_zero(k_2, -1, p2, +1);
495 inPr2 = InProd_zero(k_2, -1, p1, +1);
497 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
498 forSqrt2 = (k_1[0] - k_1[1]) / (p2[0] - p2[1]);
499 sqrt1 = m1 * sqrt(forSqrt1);
500 sqrt2 = m2 * sqrt(forSqrt2);
503 sqrt(2.0) / m * (+ inPr1 * sqrt1 * (vf + af)
504 - inPr2 * sqrt2 * (vf - af)
506 }
else if ((l1 == -1) && (l2 == -1) && (s == +1)) {
508 inPr1 = InProd_zero(p2, +1, k_1, -1);
509 inPr2 = InProd_zero(k_2, -1, p1, +1);
510 inPr3 = inPr1 * inPr2;
512 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
513 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
514 sqrt1 = sqrt(forSqrt1);
515 sqrt2 = sqrt(forSqrt2);
516 sqrt3 = m1 * m2 * sqrt1 * sqrt2;
519 sqrt(2.0) / m * (inPr3 * (vf - af) + sqrt3 * (vf + af));
522 else if ((l1 == +1) && (l2 == +1) && (s == -1)) {
524 inPr1 = InProd_zero(p2, -1, k_1, +1);
525 inPr2 = InProd_zero(k_2, +1, p1, -1);
526 inPr3 = inPr1 * inPr2;
528 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
529 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
530 sqrt1 = sqrt(forSqrt1);
531 sqrt2 = sqrt(forSqrt2);
532 sqrt3 = m1 * m2 * sqrt1 * sqrt2;
535 sqrt(2.0) / m * (inPr3 * (vf + af) + sqrt3 * (vf - af));
536 }
else if ((l1 == +1) && (l2 == -1) && (s == -1)) {
538 inPr1 = InProd_zero(k_2, +1, p2, -1);
539 inPr2 = InProd_zero(k_2, +1, p1, -1);
541 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
542 forSqrt2 = (k_1[0] - k_1[1]) / (p2[0] - p2[1]);
543 sqrt1 = m1 * sqrt(forSqrt1);
544 sqrt2 = m2 * sqrt(forSqrt2);
547 sqrt(2.0) / m * (+ inPr1 * sqrt1 * (vf - af)
548 - inPr2 * sqrt2 * (vf + af)
550 }
else if ((l1 == -1) && (l2 == +1) && (s == -1)) {
552 inPr1 = InProd_zero(p1, -1, k_1, +1);
553 inPr2 = InProd_zero(p2, -1, k_1, +1);
555 forSqrt1 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
556 forSqrt2 = (k_2[0] - k_2[1]) / (p1[0] - p1[1]);
557 sqrt1 = m2 * sqrt(forSqrt1);
558 sqrt2 = m1 * sqrt(forSqrt2);
561 sqrt(2.0) / m * (+ inPr1 * sqrt1 * (vf - af)
562 - inPr2 * sqrt2 * (vf + af)
564 }
else if ((l1 == -1) && (l2 == -1) && (s == -1)) {
566 inPr1 = InProd_zero(p1, -1, k_1, +1);
567 inPr2 = InProd_zero(k_2, +1, p2, -1);
568 inPr3 = inPr1 * inPr2;
570 forSqrt1 = (k_1[0] - k_1[1]) / (p1[0] - p1[1]);
571 forSqrt2 = (k_2[0] - k_2[1]) / (p2[0] - p2[1]);
572 sqrt1 = sqrt(forSqrt1);
573 sqrt2 = sqrt(forSqrt2);
574 sqrt3 = m1 * m2 * sqrt1 * sqrt2;
577 sqrt(2.0) / m * (inPr3 * (vf - af) + sqrt3 * (vf + af));
583 cout <<
" TrMatrix_mass: Wrong values for l1,l2,s:" << endl;
584 cout <<
" l1,l2 = -1,+1; s = -1,0,1 " << endl;
611 complex<double> PhotosMEforW::WDecayBornAmpKS_1ph(
double p3[4],
int l3,
double p1[4],
int l1,
double p2[4],
int l2)
617 coeff = sqrt(pi / alphaI / 2.0) / sw;
619 return coeff * TrMatrix_mass(p2, mf2, l2, p3, mb, l3, p1, -mf1, -l1);
670 complex<double> PhotosMEforW::WDecayAmplitudeKS_1ph(
double p3[4],
int l3,
double p1[4],
int l1,
double p2[4],
int l2,
double k[4],
674 double scalProd1, scalProd2, scalProd3, coeff;
675 complex<double> bornAmp, TrMx1, TrMx2;
676 complex<double> BSoft1, BSoft2;
678 coeff = sqrt(2.0) * pi / sw / alphaI;
680 scalProd1 = p1[0] * k[0] - p1[1] * k[1] - p1[2] * k[2] - p1[3] * k[3];
681 scalProd2 = p2[0] * k[0] - p2[1] * k[1] - p2[2] * k[2] - p2[3] * k[3];
682 scalProd3 = p3[0] * k[0] - p3[1] * k[1] - p3[2] * k[2] - p3[3] * k[3];
684 BSoft1 = BsFactor(s, k, p1, mf1);
685 BSoft2 = BsFactor(s, k, p2, mf2);
686 bornAmp = TrMatrix_mass(p2, mf2, l2, p3, mb, l3, p1, -mf1, -l1);
687 TrMx1 = complex<double>(0.0, 0.0);
688 TrMx2 = complex<double>(0.0, 0.0);
690 for (
int la1 = -1; la1 < 3 ; la1 += 2) {
692 TrMx1 = TrMx1 + TrMatrix_zero(k, 0.0, -la1, k, s, p1, -mf1, -l1) *
693 TrMatrix_mass(p2, mf2, l2, p3, mb, l3, k, 0.0, -la1);
694 TrMx2 = TrMx2 + TrMatrix_zero(p2, mf2, l2, k, s, k, 0.0, la1) *
695 TrMatrix_mass(k, 0.0, la1, p3, mb, l3, p1, -mf1, -l1);
699 + (-(qf1 / scalProd1 + qb / scalProd3) * BSoft1
700 + (qf2 / scalProd2 - qb / scalProd3) * BSoft2) / 2.0 * bornAmp
702 - (qf1 / scalProd1 + qb / scalProd3) * TrMx1 / 2.0
703 + (qf2 / scalProd2 - qb / scalProd3) * TrMx2 / 2.0
717 double PhotosMEforW::WDecayEikonalSqrKS_1ph(
double p3[4],
double p1[4],
double p2[4],
double k[4])
720 complex<double> wDecAmp;
723 for (
int s = -1; s < 3 ; s += 2) {
724 wDecAmp = WDecayEikonalKS_1ph(p3, p1, p2, k, s);
725 spinSumAvrg = spinSumAvrg + real(wDecAmp * conj(wDecAmp));
738 double PhotosMEforW::WDecayBornAmpSqrKS_1ph(
double p3[4],
double p1[4],
double p2[4])
741 complex<double> wDecAmp;
744 for (
int l3 = -1; l3 < 2 ; l3++) {
745 for (
int l1 = -1; l1 < 3 ; l1 += 2) {
746 for (
int l2 = -1; l2 < 3 ; l2 += 2) {
747 wDecAmp = WDecayBornAmpKS_1ph(p3, l3, p1, l1, p2, l2);
748 spinSumAvrg = spinSumAvrg + real(wDecAmp * conj(wDecAmp));
765 double PhotosMEforW::WDecayAmplitudeSqrKS_1ph(
double p3[4],
double p1[4],
double p2[4],
double k[4])
769 complex<double> wDecAmp;
772 for (
int l3 = -1; l3 < 2 ; l3++) {
773 for (
int l1 = -1; l1 < 3 ; l1 += 2) {
774 for (
int l2 = -1; l2 < 3 ; l2 += 2) {
775 for (
int s = -1; s < 3 ; s += 2) {
776 wDecAmp = WDecayAmplitudeKS_1ph(p3, l3, p1, l1, p2, l2, k, s);
777 spinSumAvrg = spinSumAvrg + real(wDecAmp * conj(wDecAmp));
816 double PhotosMEforW::SANC_WT(
double PW[4],
double PNE[4],
double PMU[4],
double PPHOT[4],
double B_PW[4],
double B_PNE[4],
822 double AMPSQR = WDecayAmplitudeSqrKS_1ph(PW, PNE, PMU, PPHOT);
824 double EIKONALFACTOR = WDecayBornAmpSqrKS_1ph(B_PW, B_PNE, B_PMU)
825 * WDecayEikonalSqrKS_1ph(PW, PNE, PMU, PPHOT);
844 return AMPSQR / EIKONALFACTOR;
852 void PhotosMEforW::SANC_INIT1(
double QB0,
double QF20,
double MF10,
double MF20,
double MB0)
861 void PhotosMEforW::SANC_INIT(
double ALPHA,
int PHLUN)
865 static int SANC_MC_INIT = -123456789;
869 if (SANC_MC_INIT == -123456789) {
877 alphaI = 1.0 / ALPHA;
884 bet[1] = 0.0722794881816159;
885 bet[2] = -0.994200045099866;
886 bet[3] = 0.0796363353729248;
889 spV[1] = 7.22794881816159e-2;
890 spV[2] = -0.994200045099866;
891 spV[3] = 7.96363353729248e-2;
923 double EMU, MCHREN, BETA, COSTHG, MPASQR, XPH;
924 double PW[4], PMU[4], PPHOT[4], PNE[4];
925 double B_PW[4], B_PNE[4], B_PMU[4];
927 int I, IJ, I3, I4, JJ;
928 double MB, MF1, MF2, QB, QF2;
937 if (abs(pho.idhep[1 - i]) == 24 &&
938 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i ]) >= 11 &&
939 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i ]) <= 16 &&
940 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i + 1]) >= 11 &&
941 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i + 1]) <= 16) {
944 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i ]) == 11 ||
945 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i ]) == 13 ||
946 abs(pho.idhep[pho.jdahep[1 - i][1 - i] - i ]) == 15) {
947 I = pho.jdahep[1 - i][1 - i];
949 I = pho.jdahep[1 - i][1 - i] + 1;
952 EMU = pho.phep[I - i][4 - i];
954 MCHREN = fabs(pho.phep[I - i][4 - i] * pho.phep[I - i][4 - i] - pho.phep[I - i][3 - i] * pho.phep[I - i][3 - i]
955 - pho.phep[I - i][2 - i] * pho.phep[I - i][2 - i] - pho.phep[I - i][1 - i] * pho.phep[I - i][1 - i]);
956 BETA = sqrt(1 - MCHREN / pho.phep[I - i][4 - i] * pho.phep[I - i][4 - i]);
957 COSTHG = ((pho.phep[I - i][3 - i] * pho.phep[pho.nhep - i][3 - i] + pho.phep[I - i][2 - i] * pho.phep[pho.nhep - i][2 - i]
958 + pho.phep[I - i][1 - i] * pho.phep[pho.nhep - i][1 - i]) /
959 sqrt(pho.phep[I - i][3 - i] * pho.phep[I - i][3 - i] + pho.phep[I - i][2 - i] * pho.phep[I - i][2 - i] + pho.phep[I - i][1 - i] *
960 pho.phep[I - i][1 - i]) /
961 sqrt(pho.phep[pho.nhep - i][3 - i] * pho.phep[pho.nhep - i][3 - i] + pho.phep[pho.nhep - i][2 - i] * pho.phep[pho.nhep - i][2 - i] +
962 pho.phep[pho.nhep - i][1 - i] * pho.phep[pho.nhep - i][1 - i]));
963 MPASQR = pho.phep[1 - i][4 - i] * pho.phep[1 - i][4 - i];
964 XPH = pho.phep[pho.nhep - i][4 - i];
968 SANC_INIT(phocop.alpha, phlun);
971 MB = pho.phep[1 - i][4 - i];
974 for (IJ = 1; IJ <= hep.nhep; IJ++) {
975 if (abs(hep.idhep[IJ - i]) == 24) { I3 = IJ;}
977 if (I3 == -1) {cout <<
" ERROR IN PHOBWnlo of PHOTS W-ME: I3= &2i" << I3 << endl;}
979 abs(hep.idhep[hep.jdahep[I3 - i][1 - i] - i ]) == 11 ||
980 abs(hep.idhep[hep.jdahep[I3 - i][1 - i] - i ]) == 13 ||
981 abs(hep.idhep[hep.jdahep[I3 - i][1 - i] - i ]) == 15) {
982 I4 = hep.jdahep[I3 - i][1 - i];
985 I4 = hep.jdahep[I3 - i][1 - i] + 1 ;
988 if (hep.idhep[I3 - i] == -24) QB = -1.0;
989 if (hep.idhep[I3 - i] == +24) QB = +1.0;
990 if (hep.idhep[I4 - i] > 0.0) QF2 = -1.0;
991 if (hep.idhep[I4 - i] < 0.0) QF2 = +1.0;
995 for (JJ = 1; JJ <= 4; JJ++) {
996 B_PW [(JJ % 4)] = hep.phep[I3 - i][JJ - i];
997 B_PNE[(JJ % 4)] = hep.phep[I3 - i][JJ - i] - hep.phep[I4 - i][JJ - i];
998 B_PMU[(JJ % 4)] = hep.phep[I4 - i][JJ - i];
1002 for (JJ = 1; JJ <= 4; JJ++) {
1003 PW [(JJ % 4)] = pho.phep[1 - i][JJ - i];
1004 PMU [(JJ % 4)] = pho.phep[I - i][JJ - i];
1005 PPHOT[(JJ % 4)] = pho.phep[pho.nhep - i][JJ - i];
1006 PNE [(JJ % 4)] = pho.phep[1 - i][JJ - i] - pho.phep[I - i][JJ - i] - pho.phep[pho.nhep - i][JJ - i];
1010 MF1 = sqrt(fabs(B_PNE[0] * B_PNE[0] * -B_PNE[1] * B_PNE[1] - B_PNE[2] * B_PNE[2] - B_PNE[3] * B_PNE[3]));
1011 MF1 = sqrt(fabs(PNE[0] * PNE[0] - PNE[1] * PNE[1] - PNE[2] * PNE[2] - PNE[3] * PNE[3]));
1013 SANC_INIT1(QB, QF2, MF1, MF2, MB);
1014 *WT = (*WT) * SANC_WT(PW, PNE, PMU, PPHOT, B_PW, B_PNE, B_PMU);
static void PHOBWnlo(double *WT)