13 double PhotosMEforW::spV[4],PhotosMEforW::bet[4];
16 double PhotosMEforW::pi,PhotosMEforW::sw,PhotosMEforW::cw,PhotosMEforW::alphaI,PhotosMEforW::qb,PhotosMEforW::mb,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){
31 double forSqrt1,forSqrt2,sqrt1,sqrt2;
32 complex<double> Dcmplx;
33 static complex<double> i_= complex<double>(0.0,1.0);
39 for (
int i = 0; i < 4; i++){
41 if (p1[i]!=p2[i]) equal = equal && false ;
45 if ( (l1==l2) || equal )
return complex<double>(0.0,0.0);
48 else if ( (l1==+1) && (l2==-1) ){
50 forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
51 forSqrt2 = 1.0/forSqrt1;
52 sqrt1 = sqrt(forSqrt2);
53 sqrt2 = sqrt(forSqrt1);
55 return (p1[2]+i_*p1[3])*sqrt1 -
56 (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 ;
72 cout <<
" ERROR IN InProd_zero:"<<endl;
73 cout <<
" WRONG VALUES FOR l1,l2: l1,l2 = -1,+1 "<<endl;
79 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){
91 double sqrt1,sqrt2,forSqrt1;
94 if ((l1==+1)&&(l2==+1)) {
95 forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
96 sqrt1 = sqrt(forSqrt1);
98 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);
114 cout <<
" ERROR IN InProd_mass.."<<endl;
115 cout <<
" WRONG VALUES FOR l1,l2"<<endl;
126 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);
141 inPr1 = InProd_zero(k,-1,p,+1);
142 forSqrt1 = (p[0]-p[1])/(k[0]-k[1]);
143 sqrt1 = sqrt(2.0*forSqrt1);
150 cout <<
" ERROR IN BsFactor: "<<endl;
151 cout <<
" WRONG VALUES FOR s : s = -1,+1"<<endl;
172 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){
199 double ScalProd1,ScalProd2;
200 complex<double> BsFactor2,BsFactor1;
203 ScalProd1 = k[0]*p1[0]-k[1]*p1[1]-k[2]*p1[2]-k[3]*p1[3];
204 ScalProd2 = k[0]*p2[0]-k[1]*p2[1]-k[2]*p2[2]-k[3]*p2[3];
206 BsFactor1 = BsFactor(s,k,p1,m1);
207 BsFactor2 = BsFactor(s,k,p2,m2);
209 return + BsFactor2/2.0/(ScalProd2-Gmass2)
210 - BsFactor1/2.0/(ScalProd1-Gmass2);
233 complex<double> PhotosMEforW::TrMatrix_zero(
double p1[4],
double m1,
int l1,
double k[4],
int s,
double p2[4],
double m2,
int l2){
235 double forSqrt1,forSqrt2;
238 complex<double> inPr1,inPr2,inPr3;
242 for (
int i = 0; i < 4; i++)
243 if (p1[i] != p2[i]) equal = equal&&
false;
247 if ( (m1==m2)&&(equal) ){
251 if ( (l1==+1)&&(l2==+1) ){
253 inPr1 = InProd_zero(k,+s,p1,-s);
254 forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
255 sqrt1 = sqrt(2.0*forSqrt1);
260 else if ( (l1==+1)&&(l2==-1) ){
262 return complex<double>(0.0,0.0);}
265 else if ( (l1==-1)&&(l2==+1) ){
267 return complex<double>(0.0,0.0);
270 else if ( (l1==-1)&&(l2==-1) ){
272 inPr1 = InProd_zero(k,+s,p1,-s);
273 forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
274 sqrt1 = sqrt(2.0*forSqrt1);
282 cout <<
" ERROR IN TrMatrix_zero: " <<endl;
283 cout <<
" WRONG VALUES FOR l1,l2,s" <<endl;
291 if ( (l1==+1)&&(l2==+1)&&(s==+1) ){
293 inPr1 = InProd_zero(k,+1,p1,-1);
294 forSqrt1 = (p2[0]-p2[1])/(k[0]-k[1]);
295 sqrt1 = sqrt(2.0*forSqrt1);
299 else if ( (l1==+1)&&(l2==-1)&&(s==+1) ) {
301 return complex<double>(0.0,0.0);
304 else if( (l1==-1)&&(l2==+1)&&(s==+1) ){
306 forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
307 forSqrt2 = 1.0/forSqrt1;
308 sqrt1 = sqrt(2.0*forSqrt1);
309 sqrt2 = sqrt(2.0*forSqrt2);
311 return complex<double>(m2*sqrt1-m1*sqrt2,0.0);
313 else if ( (l1==-1)&&(l2==-1)&&(s==+1) ){
315 inPr1 = InProd_zero(k,+1,p2,-1);
316 forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
317 sqrt1 = sqrt(2.0*forSqrt1);
322 else if ( (l1==+1)&&(l2==+1)&&(s==-1) ){
324 inPr1 = -InProd_zero(k,-1,p2,+1);
325 forSqrt1 = (p1[0]-p1[1])/(k[0]-k[1]);
326 sqrt1 = sqrt(2.0*forSqrt1);
331 else if ( (l1==+1)&&(l2==-1)&&(s==-1) ){
333 forSqrt1 = (p1[0]-p1[1])/(p2[0]-p2[1]);
334 forSqrt2 = 1.0/forSqrt1;
335 sqrt1 = sqrt(2.0*forSqrt1);
336 sqrt2 = sqrt(2.0*forSqrt2);
338 return complex<double>(m2*sqrt1-m1*sqrt2,0.0);
341 else if ( (l1==-1)&&(l2==+1)&&(s==-1) ){
343 return complex<double>(0.0,0.0);
346 else if( (l1==-1)&&(l2==-1)&&(s==-1) ){
348 inPr1 = -InProd_zero(k,-1,p1,+1);
349 forSqrt1 = (p2[0]-p2[1])/(k[0]-k[1]);
350 sqrt1 = sqrt(2.0*forSqrt1);
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,
int l2){
384 double forSqrt1,forSqrt2;
385 double k_1[4],k_2[4];
386 double forSqrt3,forSqrt4,sqrt3,sqrt1,sqrt2,sqrt4;
387 complex<double> inPr1,inPr2,inPr3,inPr4;
389 for (
int i = 0; i < 4; i++) {
390 k_1[i] = 1.0/2.0*(k[i] - m*spV[i]);
391 k_2[i] = 1.0/2.0*(k[i] + m*spV[i]);
394 if ( (l1==+1)&&(l2==+1)&&(s==0) ){
396 inPr1 = InProd_zero(p1,+1,k_2,-1);
397 inPr2 = InProd_zero(p2,-1,k_2,+1);
398 inPr3 = InProd_zero(p1,+1,k_1,-1);
399 inPr4 = InProd_zero(p2,-1,k_1,+1);
400 sqrt1 = sqrt(p1[0]-p1[1]);
401 sqrt2 = sqrt(p2[0]-p2[1]);
402 sqrt3 = m1*m2/sqrt1/sqrt2;
405 (inPr1*inPr2-inPr3*inPr4)*(vf+af)/m
406 + (k_1[0]-k_2[0]-k_1[1]+k_2[1])*sqrt3*(vf-af)/m;
409 else if ( (l1==+1)&&(l2==-1)&&(s==0) ){
411 inPr1 = InProd_zero(p1,+1,k_1,-1);
412 inPr2 = InProd_zero(p1,+1,k_2,-1);
413 inPr3 = InProd_zero(p2,+1,k_2,-1);
414 inPr4 = InProd_zero(p2,+1,k_1,-1);
416 forSqrt1 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
417 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
418 forSqrt3 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
419 forSqrt4 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
420 sqrt1 = sqrt(forSqrt1);
421 sqrt2 = sqrt(forSqrt2);
422 sqrt3 = sqrt(forSqrt3);
423 sqrt4 = sqrt(forSqrt4);
426 (inPr1*sqrt1 - inPr2*sqrt2)*(vf+af)*m2/m
427 + (inPr3*sqrt3 - inPr4*sqrt4)*(vf-af)*m1/m;
429 else if ( (l1==-1)&&(l2==+1)&&(s==0) ){
431 inPr1 = InProd_zero(p1,-1,k_1,+1);
432 inPr2 = InProd_zero(p1,-1,k_2,+1);
433 inPr3 = InProd_zero(p2,-1,k_2,+1);
434 inPr4 = InProd_zero(p2,-1,k_1,+1);
436 forSqrt1 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
437 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
438 forSqrt3 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
439 forSqrt4 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
440 sqrt1 = sqrt(forSqrt1);
441 sqrt2 = sqrt(forSqrt2);
442 sqrt3 = sqrt(forSqrt3);
443 sqrt4 = sqrt(forSqrt4);
446 (inPr1*sqrt1 - inPr2*sqrt2)*(vf-af)*m2/m
447 + (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;
463 else if ( (l1==+1)&&(l2==+1)&&(s==+1) ){
465 inPr1 = InProd_zero(p1,+1,k_1,-1);
466 inPr2 = InProd_zero(k_2,-1,p2,+1);
469 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
470 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
471 sqrt1 = sqrt(forSqrt1);
472 sqrt2 = sqrt(forSqrt2);
473 sqrt3 = m1*m2*sqrt1*sqrt2;
476 sqrt(2.0)/m*(inPr3*(vf+af)+sqrt3*(vf-af));
479 else if ( (l1==+1)&&(l2==-1)&&(s==+1) ){
481 inPr1 = InProd_zero(p1,+1,k_1,-1);
482 inPr2 = InProd_zero(p2,+1,k_1,-1);
484 forSqrt1 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
485 forSqrt2 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
486 sqrt1 = m2*sqrt(forSqrt1);
487 sqrt2 = m1*sqrt(forSqrt2);
490 sqrt(2.0)/m*( + inPr1*sqrt1*(vf+af)
491 - inPr2*sqrt2*(vf-af)
494 else if ( (l1==-1)&&(l2==+1)&&(s==+1) ){
496 inPr1 = InProd_zero(k_2,-1,p2,+1);
497 inPr2 = InProd_zero(k_2,-1,p1,+1);
499 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
500 forSqrt2 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
501 sqrt1 = m1*sqrt(forSqrt1);
502 sqrt2 = m2*sqrt(forSqrt2);
505 sqrt(2.0)/m*( + inPr1*sqrt1*(vf+af)
506 - inPr2*sqrt2*(vf-af)
509 else if ( (l1==-1)&&(l2==-1)&&(s==+1) ){
511 inPr1 = InProd_zero(p2,+1,k_1,-1);
512 inPr2 = InProd_zero(k_2,-1,p1,+1);
515 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
516 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
517 sqrt1 = sqrt(forSqrt1);
518 sqrt2 = sqrt(forSqrt2);
519 sqrt3 = m1*m2*sqrt1*sqrt2;
522 sqrt(2.0)/m*(inPr3*(vf-af)+sqrt3*(vf+af));
525 else if ( (l1==+1)&&(l2==+1)&&(s==-1) ){
527 inPr1 = InProd_zero(p2,-1,k_1,+1);
528 inPr2 = InProd_zero(k_2,+1,p1,-1);
531 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
532 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
533 sqrt1 = sqrt(forSqrt1);
534 sqrt2 = sqrt(forSqrt2);
535 sqrt3 = m1*m2*sqrt1*sqrt2;
538 sqrt(2.0)/m*(inPr3*(vf+af)+sqrt3*(vf-af));
540 else if ( (l1==+1)&&(l2==-1)&&(s==-1) ){
542 inPr1 = InProd_zero(k_2,+1,p2,-1);
543 inPr2 = InProd_zero(k_2,+1,p1,-1);
545 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
546 forSqrt2 = (k_1[0]-k_1[1])/(p2[0]-p2[1]);
547 sqrt1 = m1*sqrt(forSqrt1);
548 sqrt2 = m2*sqrt(forSqrt2);
551 sqrt(2.0)/m*(+ inPr1*sqrt1*(vf-af)
552 - inPr2*sqrt2*(vf+af)
555 else if ( (l1==-1)&&(l2==+1)&&(s==-1) ){
557 inPr1 = InProd_zero(p1,-1,k_1,+1);
558 inPr2 = InProd_zero(p2,-1,k_1,+1);
560 forSqrt1 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
561 forSqrt2 = (k_2[0]-k_2[1])/(p1[0]-p1[1]);
562 sqrt1 = m2*sqrt(forSqrt1);
563 sqrt2 = m1*sqrt(forSqrt2);
566 sqrt(2.0)/m*(+ inPr1*sqrt1*(vf-af)
567 - inPr2*sqrt2*(vf+af)
570 else if ( (l1==-1)&&(l2==-1)&&(s==-1) ){
572 inPr1 = InProd_zero(p1,-1,k_1,+1);
573 inPr2 = InProd_zero(k_2,+1,p2,-1);
576 forSqrt1 = (k_1[0]-k_1[1])/(p1[0]-p1[1]);
577 forSqrt2 = (k_2[0]-k_2[1])/(p2[0]-p2[1]);
578 sqrt1 = sqrt(forSqrt1);
579 sqrt2 = sqrt(forSqrt2);
580 sqrt3 = m1*m2*sqrt1*sqrt2;
583 sqrt(2.0)/m*(inPr3*(vf-af)+sqrt3*(vf+af));
589 cout <<
" TrMatrix_mass: Wrong values for l1,l2,s:"<< endl;
590 cout <<
" l1,l2 = -1,+1; s = -1,0,1 "<< endl;
617 complex<double> PhotosMEforW::WDecayBornAmpKS_1ph(
double p3[4],
int l3,
double p1[4],
int l1,
double p2[4],
int l2){
622 coeff = sqrt(pi/alphaI/2.0)/sw;
624 return coeff*TrMatrix_mass(p2,mf2,l2,p3,mb,l3,p1,-mf1,-l1);
675 complex<double> PhotosMEforW::WDecayAmplitudeKS_1ph(
double p3[4],
int l3,
double p1[4],
int l1,
double p2[4],
int l2,
double k[4],
int s){
677 double scalProd1,scalProd2,scalProd3,coeff;
678 complex<double> bornAmp,TrMx1,TrMx2;
679 complex<double> BSoft1,BSoft2;
681 coeff = sqrt(2.0)*pi/sw/alphaI;
683 scalProd1 = p1[0]*k[0]-p1[1]*k[1]-p1[2]*k[2]-p1[3]*k[3];
684 scalProd2 = p2[0]*k[0]-p2[1]*k[1]-p2[2]*k[2]-p2[3]*k[3];
685 scalProd3 = p3[0]*k[0]-p3[1]*k[1]-p3[2]*k[2]-p3[3]*k[3];
687 BSoft1 = BsFactor(s,k,p1,mf1);
688 BSoft2 = BsFactor(s,k,p2,mf2);
689 bornAmp = TrMatrix_mass(p2,mf2,l2,p3,mb,l3,p1,-mf1,-l1);
690 TrMx1 = complex<double>(0.0,0.0);
691 TrMx2 = complex<double>(0.0,0.0);
693 for (
int la1 = -1; la1< 3 ; la1+=2) {
695 TrMx1 = TrMx1 + TrMatrix_zero(k,0.0,-la1,k,s,p1,-mf1,-l1)*
696 TrMatrix_mass(p2,mf2,l2,p3,mb,l3,k,0.0,-la1);
697 TrMx2 = TrMx2 + TrMatrix_zero(p2,mf2,l2,k,s,k,0.0,la1)*
698 TrMatrix_mass(k,0.0,la1,p3,mb,l3,p1,-mf1,-l1);
702 + (-(qf1/scalProd1+qb/scalProd3)*BSoft1
703 +(qf2/scalProd2-qb/scalProd3)*BSoft2)/2.0*bornAmp
705 - (qf1/scalProd1+qb/scalProd3)*TrMx1/2.0
706 + (qf2/scalProd2-qb/scalProd3)*TrMx2/2.0
720 double PhotosMEforW::WDecayEikonalSqrKS_1ph(
double p3[4],
double p1[4],
double p2[4],
double k[4]){
722 complex<double> wDecAmp;
725 for (
int s = -1; s< 3 ; s+=2) {
726 wDecAmp = WDecayEikonalKS_1ph(p3,p1,p2,k,s);
727 spinSumAvrg = spinSumAvrg + real(wDecAmp*conj(wDecAmp));
740 double PhotosMEforW::WDecayBornAmpSqrKS_1ph(
double p3[4],
double p1[4],
double p2[4]){
742 complex<double> wDecAmp;
745 for (
int l3 = -1; l3< 2 ; l3++) {
746 for (
int l1 = -1; l1< 3 ; l1+=2) {
747 for (
int l2 = -1; l2< 3 ; l2+=2) {
748 wDecAmp = WDecayBornAmpKS_1ph(p3,l3,p1,l1,p2,l2);
749 spinSumAvrg = spinSumAvrg + real(wDecAmp*conj(wDecAmp));
766 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],
double B_PMU[4]){
820 double AMPSQR=WDecayAmplitudeSqrKS_1ph(PW,PNE,PMU,PPHOT);
822 double EIKONALFACTOR=WDecayBornAmpSqrKS_1ph(B_PW,B_PNE,B_PMU)
823 *WDecayEikonalSqrKS_1ph(PW,PNE,PMU,PPHOT);
842 return AMPSQR/EIKONALFACTOR;
850 void PhotosMEforW::SANC_INIT1(
double QB0,
double QF20,
double MF10,
double MF20,
double MB0){
858 void PhotosMEforW::SANC_INIT(
double ALPHA,
int PHLUN){
861 static int SANC_MC_INIT=-123456789;
865 if (SANC_MC_INIT==-123456789){
880 bet[1]= 0.0722794881816159;
881 bet[2]=-0.994200045099866;
882 bet[3]= 0.0796363353729248;
885 spV[1]= 7.22794881816159e-2;
886 spV[2]=-0.994200045099866;
887 spV[3]= 7.96363353729248e-2;
918 double EMU,MCHREN,BETA,COSTHG,MPASQR,XPH;
919 double PW[4],PMU[4],PPHOT[4],PNE[4];
920 double B_PW[4],B_PNE[4],B_PMU[4];
923 double MB,MF1,MF2,QB,QF2;
932 if(abs(pho.idhep[1-i])==24&&
933 abs(pho.idhep[pho.jdahep[1-i][1-i]-i ])>=11&&
934 abs(pho.idhep[pho.jdahep[1-i][1-i]-i ])<=16&&
935 abs(pho.idhep[pho.jdahep[1-i][1-i]-i+1])>=11&&
936 abs(pho.idhep[pho.jdahep[1-i][1-i]-i+1])<=16 ){
939 abs(pho.idhep[pho.jdahep[1-i][1-i]-i ])==11||
940 abs(pho.idhep[pho.jdahep[1-i][1-i]-i ])==13||
941 abs(pho.idhep[pho.jdahep[1-i][1-i]-i ])==15 ){
942 I=pho.jdahep[1-i][1-i];
945 I=pho.jdahep[1-i][1-i]+1;
948 EMU=pho.phep[I-i][4-i];
950 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]
951 -pho.phep[I-i][2-i]*pho.phep[I-i][2-i]-pho.phep[I-i][1-i]*pho.phep[I-i][1-i]);
952 BETA=sqrt(1- MCHREN/ pho.phep[I-i][4-i]*pho.phep[I-i][4-i]);
953 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]
954 +pho.phep[I-i][1-i]*pho.phep[pho.nhep-i][1-i])/
955 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]*pho.phep[I-i][1-i]) /
956 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]+pho.phep[pho.nhep-i][1-i]*pho.phep[pho.nhep-i][1-i]));
957 MPASQR=pho.phep[1-i][4-i]*pho.phep[1-i][4-i];
958 XPH=pho.phep[pho.nhep-i][4-i];
962 SANC_INIT(phocop.alpha,phlun);
965 MB=pho.phep[1-i][4-i];
968 for(IJ=1;IJ<=hep.nhep;IJ++){
969 if(abs(hep.idhep[IJ-i])==24){ I3=IJ;}
971 if(I3==-1) {cout <<
" ERROR IN PHOBWnlo of PHOTS W-ME: I3= &2i"<<I3<<endl;}
973 abs(hep.idhep[hep.jdahep[I3-i][1-i]-i ])==11||
974 abs(hep.idhep[hep.jdahep[I3-i][1-i]-i ])==13||
975 abs(hep.idhep[hep.jdahep[I3-i][1-i]-i ])==15 ){
976 I4=hep.jdahep[I3-i][1-i];}
978 I4=hep.jdahep[I3-i][1-i]+1 ;
981 if (hep.idhep[I3-i]==-24) QB=-1.0;
982 if (hep.idhep[I3-i]==+24) QB=+1.0;
983 if (hep.idhep[I4-i]>0.0) QF2=-1.0;
984 if (hep.idhep[I4-i]<0.0) QF2=+1.0;
988 for( JJ=1; JJ<=4;JJ++){
989 B_PW [(JJ % 4)]=hep.phep[I3-i][JJ-i];
990 B_PNE[(JJ % 4)]=hep.phep[I3-i][JJ-i]-hep.phep[I4-i][JJ-i];
991 B_PMU[(JJ % 4)]=hep.phep[I4-i][JJ-i];
995 for( JJ=1; JJ<=4;JJ++){
996 PW [(JJ % 4)]=pho.phep[1-i][JJ-i];
997 PMU [(JJ % 4)]=pho.phep[I-i][JJ-i];
998 PPHOT[(JJ % 4)]=pho.phep[pho.nhep-i][JJ-i];
999 PNE [(JJ % 4)]=pho.phep[1-i][JJ-i]-pho.phep[I-i][JJ-i]-pho.phep[pho.nhep-i][JJ-i];
1003 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]));
1004 MF1=sqrt(fabs( PNE[0]*PNE[0]- PNE[1]*PNE[1]- PNE[2]*PNE[2]- PNE[3]*PNE[3]));
1006 SANC_INIT1(QB,QF2,MF1,MF2,MB);
1007 *WT=(*WT)*SANC_WT(PW,PNE,PMU,PPHOT,B_PW,B_PNE,B_PMU);
static void PHOBWnlo(double *WT)