105 real(8),
intent(in) :: MomExt(1:4,1:9)
106 real(8),
intent(in) :: mass(3:5,1:2)
107 real(8),
intent(in) :: helicity(9)
108 integer,
intent(in) :: id(9)
109 logical,
intent(in) :: useA(2)
112 real(8) qq,q3_q3,q4_q4,q5_q5
114 complex(8) Vcurrent1(4), Acurrent1(4), current1(4), currentVp1(4)
115 complex(8) Vcurrent2(4), Acurrent2(4), current2(4), currentVp2(4)
116 complex(8) Vpffcoupl(2,2)
117 complex(8) POL1(3,4), POL2(3,4)
118 complex(8) g_mu_nu(4,4), pp(4,4), epp(4,4)
119 complex(8) PROP1, PROP2, PROP3
120 complex(8) PROP_Vp1, PROP_Vp2
121 complex(8) gFFZ, gFFA, gFFW
122 complex(8) gVVP, gVVS1, gVVS2
123 complex(8) ghz1_dyn,ghz2_dyn,ghz3_dyn,ghz4_dyn
124 complex(8) gVVpP, gVVpS1, gVVpS2
125 complex(8) ghzzp1_dyn,ghzzp2_dyn,ghzzp3_dyn,ghzzp4_dyn
126 complex(8) gVpVP, gVpVS1, gVpVS2
127 complex(8) ghzpz1_dyn,ghzpz2_dyn,ghzpz3_dyn,ghzpz4_dyn
128 complex(8) gVpVpP, gVpVpS1, gVpVpS2
129 complex(8) ghzpzp1_dyn,ghzpzp2_dyn,ghzpzp3_dyn,ghzpzp4_dyn
133 (id(1).ne.convertlhe(pho_) .and. usea(1) .and. .not.includegammastar
134 (id(6).ne.convertlhe(pho_) .and. usea(2) .and. .not.includegammastar
135 ((id(1)+id(2)).ne.0 .and. id(1).ne.convertlhe(pho_) .and. usea(
136 ((id(6)+id(7)).ne.0 .and. id(6).ne.convertlhe(pho_) .and. usea(
172 gffz = ci*2d0*dsqrt(couplzffsq)
173 gffa = -ci*dsqrt(couplaffsq)
174 gffw = ci*dsqrt(couplwffsq)
176 qq = -
scr(momext(:,3),momext(:,4))
177 if (id(1).eq.convertlhe(pho_) .and. usea(1))
then
180 q3_q3 =
scr(momext(:,3),momext(:,3))
182 if (id(6).eq.convertlhe(pho_) .and. usea(2))
then
185 q4_q4 =
scr(momext(:,4),momext(:,4))
187 q5_q5 =
scr(momext(:,5),momext(:,5))
188 prop3 = propagator(dsqrt(q5_q5),mass(5,1),mass(5,2))
190 if (includevprime)
then
191 if(.not.usea(1))
then
192 vpffcoupl(1,1)=getvpffcoupling_vh(id(1), -1, ((id(1)+id(2)).ne.
193 vpffcoupl(1,2)=getvpffcoupling_vh(id(1), +1, ((id(1)+id(2)).ne.
195 if(.not.usea(2))
then
196 vpffcoupl(2,1)=getvpffcoupling_vh(id(6), -1, ((id(6)+id(7)).ne.
197 vpffcoupl(2,2)=getvpffcoupling_vh(id(6), +1, ((id(6)+id(7)).ne.
202 if(.not.usea(1))
then
203 prop1 = propagator(dsqrt(q3_q3),mass(3,1),mass(3,2))
205 call ffv(id(2), momext(:,2), helicity(2), id(1), momext(:,1)
206 call ffa(id(2), momext(:,2), helicity(2), id(1), momext(:,1)
208 call ffv(id(1), momext(:,1), helicity(1), id(2), momext(:,2)
209 call ffa(id(1), momext(:,1), helicity(1), id(2), momext(:,2)
213 if (includevprime)
then
214 if((id(1)*helicity(1)).le.0d0)
then
216 vcurrent1*(vpffcoupl(1,1)+vpffcoupl(1,2))*0.5 - &
217 acurrent1*(vpffcoupl(1,1)-vpffcoupl(1,2))*0.5 &
221 vcurrent1*vpffcoupl(1,2) &
227 if((id(1)+id(2)).ne.0)
then
228 if (includevprime)
then
229 if (getmass(wppr_).ge.0d0)
then
231 prop_vp1 = propagator(dsqrt(q3_q3),getmass(wppr_),getdecaywidth
233 prop_vp1 = propagator(m_w,0d0,0d0)
235 currentvp1 = currentvp1*gffw*ckmbare(id(1),id(2))
237 if((id(1)*helicity(1)).le.0d0)
then
238 current1=(vcurrent1-acurrent1)/2d0*gffw*ckmbare(id(1),id(
244 if (includevprime)
then
245 if (getmass(zpr_).ge.0d0)
then
247 prop_vp1 = propagator(dsqrt(q3_q3),getmass(zpr_),getdecaywidth
249 prop_vp1 = propagator(m_z,0d0,0d0)
251 currentvp1 = currentvp1*gffz
254 if((abs(id(1)).eq.11).or.(abs(id(1)).eq.13).or.(abs(id(1)).eq.
then
255 if((id(1)*helicity(1)).gt.0d0)
then
256 current1=(0.5d0*t3lr - qlr*sitw**2) *vcurrent1 -(0.5d0*t3lr
258 current1=(0.5d0*t3ll - qll*sitw**2) *vcurrent1 -(0.5d0*t3ll
260 current1=current1*gffz
262 else if((abs(id(1)).eq.2).or.(abs(id(1)).eq.4))
then
263 if((id(1)*helicity(1)).gt.0d0)
then
264 current1=(0.5d0*t3ur - qur*sitw**2) *vcurrent1 -(0.5d0*t3ur
266 current1=(0.5d0*t3ul - qul*sitw**2) *vcurrent1 -(0.5d0*t3ul
268 current1=current1*gffz
270 else if((abs(id(1)).eq.1).or.(abs(id(1)).eq.3).or.(abs(id(1)
then
271 if((id(1)*helicity(1)).gt.0d0)
then
272 current1=(0.5d0*t3dr - qdr*sitw**2) *vcurrent1 -(0.5d0*t3dr
274 current1=(0.5d0*t3dl - qdl*sitw**2) *vcurrent1 -(0.5d0*t3dl
276 current1=current1*gffz
280 print *,
"invalid incoming state"
284 if(abs(id(1)).eq.convertlhe(pho_))
then
286 if((id(1)*helicity(1)).gt.0d0)
then
287 call polarization_single(momext(:,3),+1,vcurrent1)
289 call polarization_single(momext(:,3),-1,vcurrent1)
292 prop1 = propagator(dsqrt(q3_q3),0d0,0d0)
294 call ffv(id(2), momext(:,2), helicity(2), id(1), momext(:,1
296 call ffv(id(1), momext(:,1), helicity(1), id(2), momext(:,2
301 if(abs(id(1)).eq.convertlhe(pho_))
then
304 else if((abs(id(1)).eq.11).or.(abs(id(1)).eq.13).or.(abs(id(1)).eq.
then
305 if((id(1)*helicity(1)).gt.0d0)
then
306 current1 = qlr*vcurrent1
308 current1 = qll*vcurrent1
310 current1=current1*gffa
312 else if((abs(id(1)).eq.2).or.(abs(id(1)).eq.4))
then
313 if((id(1)*helicity(1)).gt.0d0)
then
314 current1 = qur*vcurrent1
316 current1 = qul*vcurrent1
318 current1=current1*gffa
320 else if((abs(id(1)).eq.1).or.(abs(id(1)).eq.3).or.(abs(id(1)).eq.
then
321 if((id(1)*helicity(1)).gt.0d0)
then
322 current1 = qdr*vcurrent1
324 current1 = qdl*vcurrent1
326 current1=current1*gffa
329 print *,
"invalid incoming state"
333 if(.not.usea(2))
then
334 prop2 = propagator(dsqrt(q4_q4),mass(4,1),mass(4,2))
337 call ffv(id(6), momext(:,6), helicity(6), id(7), momext(:,7),
338 call ffa(id(6), momext(:,6), helicity(6), id(7), momext(:,7),
340 call ffv(id(7), momext(:,7), helicity(7), id(6), momext(:,6),
341 call ffa(id(7), momext(:,7), helicity(7), id(6), momext(:,6),
345 if (includevprime)
then
346 if((id(6)*helicity(6)).le.0d0)
then
348 vcurrent2*(vpffcoupl(2,1)+vpffcoupl(2,2))*0.5 - &
349 acurrent2*(vpffcoupl(2,1)-vpffcoupl(2,2))*0.5 &
353 vcurrent2*vpffcoupl(2,2) &
359 if((id(6)+id(7)).ne.0)
then
360 if (includevprime)
then
361 if (getmass(wppr_).ge.0d0)
then
362 prop_vp2 = propagator(dsqrt(q4_q4),getmass(wppr_),getdecaywidth
364 prop_vp2 = propagator(m_w,0d0,0d0)
366 currentvp2 = currentvp2*gffw*ckmbare(id(6),id(7))
368 if((id(6)*helicity(6)).le.0d0)
then
369 current2=(vcurrent2-acurrent2)/2d0*gffw*ckm(id(6),id(7))
375 if (includevprime)
then
376 if (getmass(zpr_).ge.0d0)
then
377 prop_vp2 = propagator(dsqrt(q4_q4),getmass(zpr_),getdecaywidth
379 prop_vp2 = propagator(m_z,0d0,0d0)
381 currentvp2 = currentvp2*gffz
384 if((abs(id(6)).eq.11).or.(abs(id(6)).eq.13))
then
385 if((id(6)*helicity(6)).gt.0d0)
then
386 current2=(0.5d0*t3lr - qlr*sitw**2) *vcurrent2 -(0.5d0*t3lr
388 current2=(0.5d0*t3ll - qll*sitw**2) *vcurrent2 -(0.5d0*t3ll
390 current2=current2*gffz*dsqrt(scale_alpha_z_ll)
392 else if((abs(id(6)).eq.15))
then
393 if((id(6)*helicity(6)).gt.0d0)
then
394 current2=(0.5d0*t3lr - qlr*sitw**2) *vcurrent2 -(0.5d0*t3lr
396 current2=(0.5d0*t3ll - qll*sitw**2) *vcurrent2 -(0.5d0*t3ll
398 current2=current2*gffz*dsqrt(scale_alpha_z_tt)
400 else if((abs(id(6)).eq.2).or.(abs(id(6)).eq.4))
then
401 if((id(6)*helicity(6)).gt.0d0)
then
402 current2=(0.5d0*t3ur - qur*sitw**2) *vcurrent2 -(0.5d0*t3ur
404 current2=(0.5d0*t3ul - qul*sitw**2) *vcurrent2 -(0.5d0*t3ul
406 current2=current2*gffz*dsqrt(scale_alpha_z_uu)
408 else if((abs(id(6)).eq.1).or.(abs(id(6)).eq.3).or.(abs(id(6)).eq.
then
409 if((id(6)*helicity(6)).gt.0d0)
then
410 current2=(0.5d0*t3dr - qdr*sitw**2) *vcurrent2 -(0.5d0*t3dr
412 current2=(0.5d0*t3dl - qdl*sitw**2) *vcurrent2 -(0.5d0*t3dl
414 current2=current2*gffz*dsqrt(scale_alpha_z_dd)
416 else if((abs(id(6)).eq.12).or.(abs(id(6)).eq.14).or.(abs(id(6
then
417 current2=(0.5d0*t3nl - qnl*sitw**2) *vcurrent2 -(0.5d0*t3nl
418 current2=current2*gffz*dsqrt(scale_alpha_z_nn)
422 print *,
"invalid final state", id(6:7), helicity(6:7)
427 if(abs(id(6)).eq.convertlhe(pho_))
then
429 if((id(6)*helicity(6)).gt.0d0)
then
430 call polarization_single(momext(:,4),+1,vcurrent2)
432 call polarization_single(momext(:,4),-1,vcurrent2)
434 vcurrent2 = dconjg(vcurrent2)
436 prop2 = propagator(dsqrt(q4_q4),0d0,0d0)
438 call ffv(id(6), momext(:,6), helicity(6), id(7), momext(:,7
440 call ffv(id(7), momext(:,7), helicity(7), id(6), momext(:,6
445 if(abs(id(6)).eq.convertlhe(pho_))
then
448 else if((abs(id(6)).eq.11).or.(abs(id(6)).eq.13))
then
449 if((id(6)*helicity(6)).gt.0d0)
then
450 current2=qlr*vcurrent2
452 current2=qll*vcurrent2
454 current2=current2*gffa*dsqrt(scale_alpha_z_ll)
456 else if((abs(id(6)).eq.15))
then
457 if((id(6)*helicity(6)).gt.0d0)
then
458 current2=qlr*vcurrent2
460 current2=qll*vcurrent2
462 current2=current2*gffa*dsqrt(scale_alpha_z_tt)
464 else if((abs(id(6)).eq.2).or.(abs(id(6)).eq.4))
then
465 if((id(6)*helicity(6)).gt.0d0)
then
466 current2=qur*vcurrent2
468 current2=qul*vcurrent2
470 current2=current2*gffa*dsqrt(scale_alpha_z_uu)
472 else if((abs(id(6)).eq.1).or.(abs(id(6)).eq.3).or.(abs(id(6)).eq.
then
473 if((id(6)*helicity(6)).gt.0d0)
then
474 current2=qdr*vcurrent2
476 current2=qdl*vcurrent2
478 current2=current2*gffa*dsqrt(scale_alpha_z_dd)
480 else if((abs(id(6)).eq.12).or.(abs(id(6)).eq.14).or.(abs(id(6)).eq.
then
481 current2=qnl*vcurrent2
482 current2=current2*gffa*dsqrt(scale_alpha_z_nn)
485 print *,
"invalid final state", id(6:7), helicity(6:7)
490 if(.not.(usea(1) .and. abs(id(1)).eq.convertlhe(pho_)))
then
491 current1 = -current1 +
scrc(momext(:,3),current1)/q3_q3
492 currentvp1 = -currentvp1 +
scrc(momext(:,3),currentvp1)/q3_q3
494 if(.not.(usea(2) .and. abs(id(6)).eq.convertlhe(pho_)))
then
495 current2 = -current2 +
scrc(momext(:,4),current2)/q4_q4
496 currentvp2 = -currentvp2 +
scrc(momext(:,4),currentvp2)/q4_q4
508 current1 = current1*prop1
509 current2 = current2*prop2
510 currentvp1 = currentvp1*prop_vp1
511 currentvp2 = currentvp2*prop_vp2
514 if(id(3).eq.convertlhe(wp_))
then
515 call swap(q3_q3,q4_q4)
516 call swap(current1,current2)
517 call swap(currentvp1,currentvp2)
520 if(.not.usea(1) .and. .not.usea(2))
then
521 ghz1_dyn = hvvspinzerodynamiccoupling(1,q3_q3,q4_q4,q5_q5)
522 ghz2_dyn = hvvspinzerodynamiccoupling(2,q3_q3,q4_q4,q5_q5)
523 ghz3_dyn = hvvspinzerodynamiccoupling(3,q3_q3,q4_q4,q5_q5)
524 ghz4_dyn = hvvspinzerodynamiccoupling(4,q3_q3,q4_q4,q5_q5)
526 if (includevprime)
then
527 ghzzp1_dyn = hvvspinzerodynamiccoupling(12,q3_q3,q4_q4,q5_q5
528 ghzzp2_dyn = hvvspinzerodynamiccoupling(13,q3_q3,q4_q4,q5_q5
529 ghzzp3_dyn = hvvspinzerodynamiccoupling(14,q3_q3,q4_q4,q5_q5
530 ghzzp4_dyn = hvvspinzerodynamiccoupling(15,q3_q3,q4_q4,q5_q5
532 ghzpz1_dyn = hvvspinzerodynamiccoupling(12,q4_q4,q3_q3,q5_q5
533 ghzpz2_dyn = hvvspinzerodynamiccoupling(13,q4_q4,q3_q3,q5_q5
534 ghzpz3_dyn = hvvspinzerodynamiccoupling(14,q4_q4,q3_q3,q5_q5
535 ghzpz4_dyn = hvvspinzerodynamiccoupling(15,q4_q4,q3_q3,q5_q5
537 ghzpzp1_dyn = hvvspinzerodynamiccoupling(16,q3_q3,q4_q4,q5_q5
538 ghzpzp2_dyn = hvvspinzerodynamiccoupling(17,q3_q3,q4_q4,q5_q5
539 ghzpzp3_dyn = hvvspinzerodynamiccoupling(18,q3_q3,q4_q4,q5_q5
540 ghzpzp4_dyn = hvvspinzerodynamiccoupling(19,q3_q3,q4_q4,q5_q5
542 else if(usea(1) .and. usea(2))
then
544 ghz2_dyn = hvvspinzerodynamiccoupling(9,q3_q3,q4_q4,q5_q5)
545 ghz3_dyn = hvvspinzerodynamiccoupling(10,q3_q3,q4_q4,q5_q5)
546 ghz4_dyn = hvvspinzerodynamiccoupling(11,q3_q3,q4_q4,q5_q5)
547 else if(usea(1))
then
548 ghz1_dyn = hvvspinzerodynamiccoupling(5,0d0,q3_q3,q5_q5)
549 ghz2_dyn = hvvspinzerodynamiccoupling(6,0d0,q3_q3,q5_q5)
550 ghz3_dyn = hvvspinzerodynamiccoupling(7,0d0,q3_q3,q5_q5)
551 ghz4_dyn = hvvspinzerodynamiccoupling(8,0d0,q3_q3,q5_q5)
553 if (includevprime)
then
554 ghzzp1_dyn = hvvspinzerodynamiccoupling(20,0d0,q3_q3,q5_q5)
555 ghzzp2_dyn = hvvspinzerodynamiccoupling(21,0d0,q3_q3,q5_q5)
556 ghzzp3_dyn = hvvspinzerodynamiccoupling(22,0d0,q3_q3,q5_q5)
557 ghzzp4_dyn = hvvspinzerodynamiccoupling(23,0d0,q3_q3,q5_q5)
560 ghz1_dyn = hvvspinzerodynamiccoupling(5,0d0,q4_q4,q5_q5)
561 ghz2_dyn = hvvspinzerodynamiccoupling(6,0d0,q4_q4,q5_q5)
562 ghz3_dyn = hvvspinzerodynamiccoupling(7,0d0,q4_q4,q5_q5)
563 ghz4_dyn = hvvspinzerodynamiccoupling(8,0d0,q4_q4,q5_q5)
565 if (includevprime)
then
566 ghzpz1_dyn = hvvspinzerodynamiccoupling(20,0d0,q4_q4,q5_q5)
567 ghzpz2_dyn = hvvspinzerodynamiccoupling(21,0d0,q4_q4,q5_q5)
568 ghzpz3_dyn = hvvspinzerodynamiccoupling(22,0d0,q4_q4,q5_q5)
569 ghzpz4_dyn = hvvspinzerodynamiccoupling(23,0d0,q4_q4,q5_q5)
573 gvvs1 = ghz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghz2_dyn + ghz3_dyn*qq
574 gvvs2 = -( 2d0*ghz2_dyn + ghz3_dyn*qq/lambda**2 )
577 if (includevprime)
then
578 if(.not.usea(1) .and. .not.usea(2))
then
579 gvvps1 = ghzzp1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzzp2_dyn +
580 gvvps2 = -( 2d0*ghzzp2_dyn + ghzzp3_dyn*qq/lambda**2 )
581 gvvpp = -2d0*ghzzp4_dyn
583 gvpvs1 = ghzpz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpz2_dyn +
584 gvpvs2 = -( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
585 gvpvp = -2d0*ghzpz4_dyn
587 gvpvps1 = ghzpzp1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpzp2_dyn
588 gvpvps2 = -( 2d0*ghzpzp2_dyn + ghzpzp3_dyn*qq/lambda**2 )
589 gvpvpp = -2d0*ghzpzp4_dyn
590 else if (usea(1))
then
591 gvvps1 = ghzzp1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzzp2_dyn +
592 gvvps2 = -( 2d0*ghzzp2_dyn + ghzzp3_dyn*qq/lambda**2 )
593 gvvpp = -2d0*ghzzp4_dyn
595 gvpvs1 = ghzpz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpz2_dyn +
596 gvpvs2 = -( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
597 gvpvp = -2d0*ghzpz4_dyn
603 call vvs2(momext(:,5),momext(:,5),pp)
604 if(id(3).eq.convertlhe(wp_))
then
605 call vvp(momext(:,4),-momext(:,3),epp)
607 call vvp(-momext(:,3),momext(:,4),epp)
611 matrixelement0=(0d0,0d0)
614 matrixelement0 = matrixelement0 + &
615 current1(mu3)*current2(mu4)*( &
616 gvvs1*g_mu_nu(mu3,mu4) + &
617 gvvs2*pp(mu3,mu4) + &
621 current1(mu3)*currentvp2(mu4)*( &
622 gvvps1*g_mu_nu(mu3,mu4) + &
623 gvvps2*pp(mu3,mu4) + &
624 gvvpp *epp(mu3,mu4) &
627 currentvp1(mu3)*current2(mu4)*( &
628 gvpvs1*g_mu_nu(mu3,mu4) + &
629 gvpvs2*pp(mu3,mu4) + &
630 gvpvp *epp(mu3,mu4) &
633 currentvp1(mu3)*currentvp2(mu4)*( &
634 gvpvps1*g_mu_nu(mu3,mu4) + &
635 gvpvps2*pp(mu3,mu4) + &
636 gvpvpp *epp(mu3,mu4) &
640 matrixelement0 = matrixelement0*ci/vev
642 if(h_dk.eqv..false.)
then
643 matrixelement0=matrixelement0 *prop3
644 else if(id(8).ne.not_a_particle_)
then
645 matrixelement0=matrixelement0 *prop3 &
646 *(kappa*ffs(id(8), momext(:,8), helicity(8), id(9), momext(:,9),
647 +kappa_tilde*ffp(id(8), momext(:,8), helicity(8), id(9), momext
648 *(-ci/vev*getmass(convertlhereverse(id(8))))