JHUGen MELA  v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
Functions/Subroutines
modzprime Module Reference

Functions/Subroutines

subroutine, public calchelamp (ordering, VVmode, p, MY_IDUP, i1, i3, i4, A)
 
subroutine qqzprimezzampl (p, sp, res)
 
subroutine, public calchelamp2 (ordering, VVMode, p, MY_IDUP, i1, i3, i4, A)
 
subroutine zprimezzampl (p, sp, res)
 
subroutine getdecay_couplings_spinors_props (VVMode, idordered, pordered, h3
 
subroutine getdecay_vvmode_ordering (MY_IDUP, VVMode, ordering, ordering_sw
 

Function/Subroutine Documentation

◆ calchelamp()

subroutine, public modzprime::calchelamp ( integer, dimension(1:4)  ordering,
integer  VVmode,
real(dp), dimension(1:4,1:6)  p,
integer, dimension(6:9)  MY_IDUP,
integer  i1,
integer  i3,
integer  i4,
complex(dp), dimension(1:1)  A 
)

Definition at line 80 of file mod_Zprime.F90.

80  implicit none
81  integer :: ordering(1:4),i1,i3,i4,l1,l2,l3,l4,VVmode,MY_IDUP(6:9)
82  real(dp) :: p(1:4,1:6)
83  complex(dp) :: propG
84  real(dp) :: s, pin(4,4)
85  complex(dp) :: A(1:1), sp(4,4)
86 
87 
88  l1=ordering(1)
89  l2=ordering(2)
90  l3=ordering(3)
91  l4=ordering(4)
92 
93  !print *,"p(6)=",(p(:,l1))
94  !print *,"p(7)=",(p(:,l2))
95  !print *,"p(8)=",(p(:,l3))
96  !print *,"p(9)=",(p(:,l4))
97  !pause
98 
99  s = two*scr(p(:,1),p(:,2))
100  propg = s/dcmplx(s - m_reso**2,m_reso*ga_reso)
101 !-------- For fermions, -1 == left, 1 == right
102  pin(1,:) = p(:,1)
103  pin(2,:) = p(:,2)
104  sp(1,:) = pol_dk2mom(dcmplx(p(:,2)),dcmplx(p(:,1)),-3+2*i1) !qbq
105  sp(2,:) = sp(1,:) !-- the same, isn't really needed but for uniform bookeeping
106 !-- on-shell check
107 ! sp(3,1:4) = pol_mass(dcmplx(p(1:4,3)+p(1:4,4)),dsqrt(2d0*scr(p(:,3),p(:,4))),i3)
108 ! sp(4,1:4) = pol_mass(dcmplx(p(1:4,5)+p(1:4,6)),dsqrt(2d0*scr(p(:,5),p(:,6))),i4)
109 
110 ! if( i3.eq.0 .and. i4.eq.0 ) then
111 ! a(:) = 0d0
112 ! return
113 ! endif
114 !-- end: on-shell check
115  call getdecay_couplings_spinors_props( &
116  vvmode, &
117  (/my_idup(l1+3),my_idup(l2+3),my_idup(l3+3),my_idup(l4+3)/), &
118  (/p(:,l1),p(:,l2),p(:,l3),p(:,l4)/), &
119  -3+2*i3,-3+2*i4, &
120  sp(3:4,:),pin(3:4,:) &
121  )
122  call qqzprimezzampl(pin,sp,a(1))
123 !---- chiral couplings of quarks to Zprimes
124  if (i1.eq.1) then
125  a(1) = zprime_qq_left*a(1)
126  else if(i1.eq.2) then
127  a(1) = zprime_qq_right*a(1)
128  endif
129  a(1) = a(1)*propg
130 ! A(1) ~ GeV^-2
131 ! propG*propZ1*propZ2 ~ GeV^-2

◆ calchelamp2()

subroutine, public modzprime::calchelamp2 ( integer, dimension(1:4)  ordering,
integer  VVMode,
real(dp), dimension(1:4,1:6)  p,
integer, dimension(6:9)  MY_IDUP,
integer  i1,
integer  i3,
integer  i4,
complex(dp), dimension(1:1)  A 
)

Definition at line 312 of file mod_Zprime.F90.

312  implicit none
313  integer :: ordering(1:4),i1,i3,i4,l1,l2,l3,l4,VVMode,MY_IDUP(6:9)
314  real(dp) :: p(1:4,1:6)
315  real(dp) :: pin(4,4)
316  complex(dp) :: A(1:1), sp(4,4)
317 
318  l1=ordering(1)
319  l2=ordering(2)
320  l3=ordering(3)
321  l4=ordering(4)
322 
323  pin(1,:) = p(:,1)
324  sp(1,:) = pol_mass2(dcmplx(p(1:4,1)),i1,'in')
325  pin(2,:) = 0d0 ! dummy
326  sp(2,:) = czero
327  call getdecay_couplings_spinors_props( &
328  vvmode, &
329  (/my_idup(l1+3),my_idup(l2+3),my_idup(l3+3),my_idup(l4+3)/), &
330  (/p(:,l1),p(:,l2),p(:,l3),p(:,l4)/), &
331  -3+2*i3,-3+2*i4, &
332  sp(3:4,:),pin(3:4,:) &
333  )
334  call zprimezzampl(pin,sp,a(1))

◆ getdecay_couplings_spinors_props()

subroutine modzprime::getdecay_couplings_spinors_props ( integer, intent(in)  VVMode,
integer, dimension(6:9), intent(in)  idordered,
real(dp), dimension(1:4,6:9), intent(in)  pordered,
integer, intent(in)  h3 
)
private

Definition at line 425 of file mod_Zprime.F90.

425  implicit none
426  integer, intent(in) :: VVMode,idordered(6:9),h3,h4
427  real(dp), intent(in) :: pordered(1:4,6:9)
428  complex(dp), intent(out) :: sp(3:4,1:4)
429  real(dp), intent(out) :: pV(3:4,1:4)
430  real(dp) :: s, aL1,aR1,aL2,aR2
431  complex(dp) :: propV(1:2)
432 
433  ! h3/h4 helicities: -1 == left, 1 == right
434  if( vvmode.eq.zzmode ) then
435  ! ZZ DECAYS
436  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
437  al1=al_lep * dsqrt(scale_alpha_z_ll)
438  ar1=ar_lep * dsqrt(scale_alpha_z_ll)
439  elseif( abs(idordered(6)).eq.abs(tam_) ) then
440  al1=al_lep * dsqrt(scale_alpha_z_tt)
441  ar1=ar_lep * dsqrt(scale_alpha_z_tt)
442  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
443  al1=al_neu * dsqrt(scale_alpha_z_nn)
444  ar1=ar_neu * dsqrt(scale_alpha_z_nn)
445  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
446  al1=al_qup * dsqrt(scale_alpha_z_uu)
447  ar1=ar_qup * dsqrt(scale_alpha_z_uu)
448  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
449  al1=al_qdn * dsqrt(scale_alpha_z_dd)
450  ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
451  else
452  al1=0d0
453  ar1=0d0
454  endif
455  if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) ) then
456  al2=al_lep * dsqrt(scale_alpha_z_ll)
457  ar2=ar_lep * dsqrt(scale_alpha_z_ll)
458  elseif( abs(idordered(8)).eq.abs(tam_) ) then
459  al2=al_lep * dsqrt(scale_alpha_z_tt)
460  ar2=ar_lep * dsqrt(scale_alpha_z_tt)
461  elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) ) then
462  al2=al_neu * dsqrt(scale_alpha_z_nn)
463  ar2=ar_neu * dsqrt(scale_alpha_z_nn)
464  elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) ) then
465  al2=al_qup * dsqrt(scale_alpha_z_uu)
466  ar2=ar_qup * dsqrt(scale_alpha_z_uu)
467  elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) ) then
468  al2=al_qdn * dsqrt(scale_alpha_z_dd)
469  ar2=ar_qdn * dsqrt(scale_alpha_z_dd)
470  else
471  al2=0d0
472  ar2=0d0
473  endif
474  pv(3,:) = pordered(:,6)+pordered(:,7)
475  pv(4,:) = pordered(:,8)+pordered(:,9)
476  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
477  sp(3,:) = -sp(3,:) + pv(3,:)*( sc(sp(3,:),dcmplx(pv(3,:))) )/scr(pv(3,:),pv(3,:))! full propagator numerator
478  sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4) ! ubar(l3), v(l4)
479  sp(4,:) = -sp(4,:) + pv(4,:)*( sc(sp(4,:),dcmplx(pv(4,:))) )/scr(pv(4,:),pv(4,:))! full propagator numerator
480  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
481  propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
482  s = scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
483  propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
484 
485  elseif( vvmode.eq.wwmode ) then
486  ! WW DECAYS
487  if( isaquark(idordered(6)) ) then
488  al1 = bl * dsqrt(scale_alpha_w_ud)
489  ar1 = br * dsqrt(scale_alpha_w_ud)! = 0
490  elseif( &
491  (abs(idordered(6)).eq.abs(elp_) .and. abs(idordered(7)).eq.abs(nue_)) .or. (abs(idordered(7)).eq.abs(elp_) .and. abs(idordered(6)).eq.abs(nue_)) .or. &
492  (abs(idordered(6)).eq.abs(mup_) .and. abs(idordered(7)).eq.abs(num_)) .or. (abs(idordered(7)).eq.abs(mup_) .and. abs(idordered(6)).eq.abs(num_)) &
493  ) then
494  al1 = bl * dsqrt(scale_alpha_w_ln)
495  ar1 = br * dsqrt(scale_alpha_w_ln)! = 0
496  elseif( &
497  (abs(idordered(6)).eq.abs(tap_) .and. abs(idordered(7)).eq.abs(nut_)) .or. (abs(idordered(7)).eq.abs(tap_) .and. abs(idordered(6)).eq.abs(nut_)) &
498  ) then
499  al1 = bl * dsqrt(scale_alpha_w_tn)
500  ar1 = br * dsqrt(scale_alpha_w_tn)! = 0
501  else
502  al1=0d0
503  ar1=0d0
504  endif
505  if( isaquark(idordered(8)) ) then
506  al2 = bl * dsqrt(scale_alpha_w_ud)
507  ar2 = br * dsqrt(scale_alpha_w_ud)! = 0
508  elseif( &
509  (abs(idordered(8)).eq.abs(elm_) .and. abs(idordered(9)).eq.abs(anue_)) .or. (abs(idordered(9)).eq.abs(elm_) .and. abs(idordered(8)).eq.abs(anue_)) .or. &
510  (abs(idordered(8)).eq.abs(mum_) .and. abs(idordered(9)).eq.abs(anum_)) .or. (abs(idordered(9)).eq.abs(mum_) .and. abs(idordered(8)).eq.abs(anum_)) &
511  ) then
512  al2 = bl * dsqrt(scale_alpha_w_ln)
513  ar2 = br * dsqrt(scale_alpha_w_ln)! = 0
514  elseif( &
515  (abs(idordered(8)).eq.abs(tam_) .and. abs(idordered(9)).eq.abs(anut_)) .or. (abs(idordered(9)).eq.abs(tam_) .and. abs(idordered(8)).eq.abs(anut_)) &
516  ) then
517  al2 = bl * dsqrt(scale_alpha_w_tn)
518  ar2 = br * dsqrt(scale_alpha_w_tn)! = 0
519  else
520  al2=0d0
521  ar2=0d0
522  endif
523  pv(3,:) = pordered(:,6)+pordered(:,7)
524  pv(4,:) = pordered(:,8)+pordered(:,9)
525  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
526  sp(3,:) = -sp(3,:) + pv(3,:)*( sc(sp(3,:),dcmplx(pv(3,:))) )/scr(pv(3,:),pv(3,:))! full propagator numerator
527  sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4) ! ubar(l3), v(l4)
528  sp(4,:) = -sp(4,:) + pv(4,:)*( sc(sp(4,:),dcmplx(pv(4,:))) )/scr(pv(4,:),pv(4,:))! full propagator numerator
529  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
530  propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
531  s = scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
532  propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
533 
534  elseif( vvmode.eq.zgmode ) then
535  ! Zgamma DECAYS
536  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
537  al1=al_lep * dsqrt(scale_alpha_z_ll)
538  ar1=ar_lep * dsqrt(scale_alpha_z_ll)
539  elseif( abs(idordered(6)).eq.abs(tam_) ) then
540  al1=al_lep * dsqrt(scale_alpha_z_tt)
541  ar1=ar_lep * dsqrt(scale_alpha_z_tt)
542  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
543  al1=al_neu * dsqrt(scale_alpha_z_nn)
544  ar1=ar_neu * dsqrt(scale_alpha_z_nn)
545  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
546  al1=al_qup * dsqrt(scale_alpha_z_uu)
547  ar1=ar_qup * dsqrt(scale_alpha_z_uu)
548  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
549  al1=al_qdn * dsqrt(scale_alpha_z_dd)
550  ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
551  else
552  al1=0d0
553  ar1=0d0
554  endif
555  al2=1d0
556  ar2=1d0
557  pv(3,:) = pordered(:,6)+pordered(:,7)
558  pv(4,:) = pordered(:,8)
559  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
560  sp(3,:) = -sp(3,:) + pv(3,:)*( sc(sp(3,:),dcmplx(pv(3,:))) )/scr(pv(3,:),pv(3,:))! full propagator numerator
561  sp(4,:) = pol_mless2(dcmplx(pordered(:,8)),h4,'out') ! photon
562  !sp(4,1:4)=pV(4,1:4); print *, "this checks gauge invariance"
563  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
564  propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
565  propv(2)=1d0
566 
567  elseif( vvmode.eq.ggmode ) then
568  ! gamma gamma DECAYS
569  al1=1d0
570  ar1=1d0
571  al2=1d0
572  ar2=1d0
573  pv(3,:) = pordered(:,6)
574  pv(4,:) = pordered(:,8)
575  sp(3,:) = pol_mless2(dcmplx(pordered(:,6)),h3,'out') ! photon
576  sp(4,:) = pol_mless2(dcmplx(pordered(:,8)),h4,'out') ! photon
577  !sp(3,1:4)=pV(3,1:4); print *, "this checks gauge invariance"
578  !sp(4,1:4)=pV(4,1:4)
579  propv(1)=1d0
580  propv(2)=1d0
581 
582  elseif( vvmode.eq.gsgmode ) then
583  ! gamma* gamma DECAYS
584  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
585  al1=cl_lep * dsqrt(scale_alpha_z_ll)
586  ar1=cr_lep * dsqrt(scale_alpha_z_ll)
587  elseif( abs(idordered(6)).eq.abs(tam_) ) then
588  al1=cl_lep * dsqrt(scale_alpha_z_tt)
589  ar1=cr_lep * dsqrt(scale_alpha_z_tt)
590  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
591  al1=cl_neu * dsqrt(scale_alpha_z_nn)! = 0
592  ar1=cr_neu * dsqrt(scale_alpha_z_nn)! = 0
593  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
594  al1=cl_qup * dsqrt(scale_alpha_z_uu)
595  ar1=cr_qup * dsqrt(scale_alpha_z_uu)
596  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
597  al1=cl_qdn * dsqrt(scale_alpha_z_dd)
598  ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
599  else
600  al1=0d0
601  ar1=0d0
602  endif
603  al2=1d0
604  ar2=1d0
605  pv(3,:) = pordered(:,6)+pordered(:,7)
606  pv(4,:) = pordered(:,8)
607  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
608  sp(3,:) = -sp(3,:) ! photon propagator
609  sp(4,:) = pol_mless2(dcmplx(pordered(:,8)),h4,'out') ! photon
610  !sp(4,1:4)=pV(4,1:4); print *, "this checks gauge invariance"
611  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
612  propv(1) = 1d0
613  propv(2) = 1d0
614  if( s.lt.mphotoncutoff**2 ) propv(1)=czero
615 
616  elseif( vvmode.eq.gszmode ) then
617  ! gamma* Z DECAYS
618  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
619  al1=cl_lep * dsqrt(scale_alpha_z_ll)
620  ar1=cr_lep * dsqrt(scale_alpha_z_ll)
621  elseif( abs(idordered(6)).eq.abs(tam_) ) then
622  al1=cl_lep * dsqrt(scale_alpha_z_tt)
623  ar1=cr_lep * dsqrt(scale_alpha_z_tt)
624  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
625  al1=cl_neu * dsqrt(scale_alpha_z_nn)
626  ar1=cr_neu * dsqrt(scale_alpha_z_nn)
627  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
628  al1=cl_qup * dsqrt(scale_alpha_z_uu)
629  ar1=cr_qup * dsqrt(scale_alpha_z_uu)
630  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
631  al1=cl_qdn * dsqrt(scale_alpha_z_dd)
632  ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
633  else
634  al1=0d0
635  ar1=0d0
636  endif
637  if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) ) then
638  al2=al_lep * dsqrt(scale_alpha_z_ll)
639  ar2=ar_lep * dsqrt(scale_alpha_z_ll)
640  elseif( abs(idordered(8)).eq.abs(tam_) ) then
641  al2=al_lep * dsqrt(scale_alpha_z_tt)
642  ar2=ar_lep * dsqrt(scale_alpha_z_tt)
643  elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) ) then
644  al2=al_neu * dsqrt(scale_alpha_z_nn)
645  ar2=ar_neu * dsqrt(scale_alpha_z_nn)
646  elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) ) then
647  al2=al_qup * dsqrt(scale_alpha_z_uu)
648  ar2=ar_qup * dsqrt(scale_alpha_z_uu)
649  elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) ) then
650  al2=al_qdn * dsqrt(scale_alpha_z_dd)
651  ar2=ar_qdn * dsqrt(scale_alpha_z_dd)
652  else
653  al2=0d0
654  ar2=0d0
655  endif
656  pv(3,:) = pordered(:,6)+pordered(:,7)
657  pv(4,:) = pordered(:,8)+pordered(:,9)
658  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
659  sp(3,:) = -sp(3,:)
660  sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4) ! ubar(l3), v(l4)
661  sp(4,:) = -sp(4,:) + pv(4,:)*( sc(sp(4,:),dcmplx(pv(4,:))) )/scr(pv(4,:),pv(4,:))! full propagator numerator
662  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
663  propv(1) = 1d0! = s/dcmplx(s)
664  if( s.lt.mphotoncutoff**2 ) propv(1)=czero
665  s = scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
666  propv(2) = s/dcmplx(s - m_v**2,m_v*ga_v)
667 
668  elseif( vvmode.eq.zgsmode ) then
669  ! Z gamma* DECAYS
670  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
671  al1=al_lep * dsqrt(scale_alpha_z_ll)
672  ar1=ar_lep * dsqrt(scale_alpha_z_ll)
673  elseif( abs(idordered(6)).eq.abs(tam_) ) then
674  al1=al_lep * dsqrt(scale_alpha_z_tt)
675  ar1=ar_lep * dsqrt(scale_alpha_z_tt)
676  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
677  al1=al_neu * dsqrt(scale_alpha_z_nn)
678  ar1=ar_neu * dsqrt(scale_alpha_z_nn)
679  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
680  al1=al_qup * dsqrt(scale_alpha_z_uu)
681  ar1=ar_qup * dsqrt(scale_alpha_z_uu)
682  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
683  al1=al_qdn * dsqrt(scale_alpha_z_dd)
684  ar1=ar_qdn * dsqrt(scale_alpha_z_dd)
685  else
686  al1=0d0
687  ar1=0d0
688  endif
689  if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) ) then
690  al2=cl_lep * dsqrt(scale_alpha_z_ll)
691  ar2=cr_lep * dsqrt(scale_alpha_z_ll)
692  elseif( abs(idordered(8)).eq.abs(tam_) ) then
693  al2=cl_lep * dsqrt(scale_alpha_z_tt)
694  ar2=cr_lep * dsqrt(scale_alpha_z_tt)
695  elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) ) then
696  al2=cl_neu * dsqrt(scale_alpha_z_nn)! = 0
697  ar2=cr_neu * dsqrt(scale_alpha_z_nn)! = 0
698  elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) ) then
699  al2=cl_qup * dsqrt(scale_alpha_z_uu)
700  ar2=cr_qup * dsqrt(scale_alpha_z_uu)
701  elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) ) then
702  al2=cl_qdn * dsqrt(scale_alpha_z_dd)
703  ar2=cr_qdn * dsqrt(scale_alpha_z_dd)
704  else
705  al2=0d0
706  ar2=0d0
707  endif
708  pv(3,:) = pordered(:,6)+pordered(:,7)
709  pv(4,:) = pordered(:,8)+pordered(:,9)
710  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
711  sp(3,:) = -sp(3,:) + pv(3,:)*( sc(sp(3,:),dcmplx(pv(3,:))) )/scr(pv(3,:),pv(3,:))! full propagator numerator
712  sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4) ! ubar(l3), v(l4)
713  sp(4,:) = -sp(4,:)
714  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
715  propv(1) = s/dcmplx(s - m_v**2,m_v*ga_v)
716  s = scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
717  propv(2) = 1d0 ! = s/dcmplx(s)
718  if( s.lt.mphotoncutoff**2 ) propv(2)=czero
719 
720  elseif( vvmode.eq.gsgsmode ) then
721  ! gamma* gamma* DECAYS
722  if( abs(idordered(6)).eq.abs(elm_) .or. abs(idordered(6)).eq.abs(mum_) ) then
723  al1=cl_lep * dsqrt(scale_alpha_z_ll)
724  ar1=cr_lep * dsqrt(scale_alpha_z_ll)
725  elseif( abs(idordered(6)).eq.abs(tam_) ) then
726  al1=cl_lep * dsqrt(scale_alpha_z_tt)
727  ar1=cr_lep * dsqrt(scale_alpha_z_tt)
728  elseif( abs(idordered(6)).eq.abs(nue_) .or. abs(idordered(6)).eq.abs(num_) .or. abs(idordered(6)).eq.abs(nut_) ) then
729  al1=cl_neu * dsqrt(scale_alpha_z_nn)! = 0
730  ar1=cr_neu * dsqrt(scale_alpha_z_nn)! = 0
731  elseif( abs(idordered(6)).eq.abs(up_) .or. abs(idordered(6)).eq.abs(chm_) ) then
732  al1=cl_qup * dsqrt(scale_alpha_z_uu)
733  ar1=cr_qup * dsqrt(scale_alpha_z_uu)
734  elseif( abs(idordered(6)).eq.abs(dn_) .or. abs(idordered(6)).eq.abs(str_) .or. abs(idordered(6)).eq.abs(bot_) ) then
735  al1=cl_qdn * dsqrt(scale_alpha_z_dd)
736  ar1=cr_qdn * dsqrt(scale_alpha_z_dd)
737  else
738  al1=0d0
739  ar1=0d0
740  endif
741  if( abs(idordered(8)).eq.abs(elm_) .or. abs(idordered(8)).eq.abs(mum_) ) then
742  al2=cl_lep * dsqrt(scale_alpha_z_ll)
743  ar2=cr_lep * dsqrt(scale_alpha_z_ll)
744  elseif( abs(idordered(8)).eq.abs(tam_) ) then
745  al2=cl_lep * dsqrt(scale_alpha_z_tt)
746  ar2=cr_lep * dsqrt(scale_alpha_z_tt)
747  elseif( abs(idordered(8)).eq.abs(nue_) .or. abs(idordered(8)).eq.abs(num_) .or. abs(idordered(8)).eq.abs(nut_) ) then
748  al2=cl_neu * dsqrt(scale_alpha_z_nn)! = 0
749  ar2=cr_neu * dsqrt(scale_alpha_z_nn)! = 0
750  elseif( abs(idordered(8)).eq.abs(up_) .or. abs(idordered(8)).eq.abs(chm_) ) then
751  al2=cl_qup * dsqrt(scale_alpha_z_uu)
752  ar2=cr_qup * dsqrt(scale_alpha_z_uu)
753  elseif( abs(idordered(8)).eq.abs(dn_) .or. abs(idordered(8)).eq.abs(str_) .or. abs(idordered(8)).eq.abs(bot_) ) then
754  al2=cl_qdn * dsqrt(scale_alpha_z_dd)
755  ar2=cr_qdn * dsqrt(scale_alpha_z_dd)
756  else
757  al2=0d0
758  ar2=0d0
759  endif
760  pv(3,:) = pordered(:,6)+pordered(:,7)
761  pv(4,:) = pordered(:,8)+pordered(:,9)
762  sp(3,:) = pol_dk2mom(dcmplx(pordered(:,6)),dcmplx(pordered(:,7)),h3) ! ubar(l1), v(l2)
763  sp(3,:) = -sp(3,:)
764  sp(4,:) = pol_dk2mom(dcmplx(pordered(:,8)),dcmplx(pordered(:,9)),h4) ! ubar(l3), v(l4)
765  sp(4,:) = -sp(4,:)
766  s = scr(pordered(:,6)+pordered(:,7),pordered(:,6)+pordered(:,7))
767  propv(1) = 1d0 ! = s/dcmplx(s)
768  if( s.lt.mphotoncutoff**2 ) propv(1)=czero
769  s = scr(pordered(:,8)+pordered(:,9),pordered(:,8)+pordered(:,9))
770  propv(2) = 1d0 ! = s/dcmplx(s)
771  if( s.lt.mphotoncutoff**2 ) propv(2)=czero
772 
773  else
774  call error("Unsupported decay modes")
775  endif
776 
777  sp(3,:) = sp(3,:)*propv(1)
778  sp(4,:) = sp(4,:)*propv(2)
779  if (h3.eq.-1) then
780  sp(3,:) = al1 * sp(3,:)
781  elseif(h3.eq.1) then
782  sp(3,:) = ar1 * sp(3,:)
783  endif
784  if (h4.eq.-1) then
785  sp(4,:) = al2 * sp(4,:)
786  elseif(h4.eq.1) then
787  sp(4,:) = ar2 * sp(4,:)
788  endif
789 
790  return

◆ getdecay_vvmode_ordering()

subroutine modzprime::getdecay_vvmode_ordering ( integer, dimension(6:9), intent(in)  MY_IDUP,
integer, intent(out)  VVMode,
integer, dimension(1:4), intent(out)  ordering,
  ordering_sw 
)
private

Definition at line 794 of file mod_Zprime.F90.

794  implicit none
795  integer, intent(in) :: MY_IDUP(6:9)
796  integer, intent(out) :: VVMode,ordering(1:4),ordering_swap(1:4)
797  integer :: idV(1:2)
798 
799  ordering=(/3,4,5,6/)
800  idv(1)=coupledvertex(my_idup(6:7),-1)
801  idv(2)=coupledvertex(my_idup(8:9),-1)
802  if(my_idup(6).eq.pho_ .or. my_idup(7).eq.pho_) idv(1)=pho_
803  if(my_idup(8).eq.pho_ .or. my_idup(9).eq.pho_) idv(2)=pho_
804  if(convertlhe(my_idup(6)).lt.0 .or. my_idup(6).eq.not_a_particle_) then
805  call swap(ordering(1),ordering(2))
806  endif
807  if(convertlhe(my_idup(8)).lt.0 .or. my_idup(8).eq.not_a_particle_) then
808  call swap(ordering(3),ordering(4))
809  endif
810  if( &
811  (idv(1).eq.wm_ .and. idv(2).eq.wp_) .or. &
812  (idv(2).eq.z0_ .and. idv(1).eq.pho_) &
813  ) then
814  call swap(ordering(1),ordering(3))
815  call swap(ordering(2),ordering(4))
816  call swap(idv(1),idv(2))
817  endif
818  ordering_swap(:)=ordering(:)
819  call swap(ordering_swap(1),ordering_swap(3))
820 
821  if(idv(1).eq.z0_ .and. idv(2).eq.z0_) then
822  vvmode=zzmode
823  elseif(idv(1).eq.z0_ .and. idv(2).eq.pho_) then
824  vvmode=zgmode
825  elseif(idv(1).eq.pho_ .and. idv(2).eq.pho_) then
826  vvmode=ggmode
827  elseif(idv(1).eq.wp_ .and. idv(2).eq.wm_) then
828  vvmode=wwmode
829  else
830  print *,"idV=",idv
831  call error("Unsupported decay Modes")
832  endif
833  return

◆ qqzprimezzampl()

subroutine modzprime::qqzprimezzampl ( real(dp), dimension(4,6), intent(in)  p,
complex(dp), dimension(4,4), intent(in)  sp,
complex(dp), intent(out)  res 
)
private

Definition at line 135 of file mod_Zprime.F90.

135  implicit none
136  real(dp), intent(in) :: p(4,4)
137  complex(dp), intent(in) :: sp(4,4)
138  complex(dp), intent(out) :: res
139  complex(dp) :: e1_e2, e1_e3, e1_e4
140  complex(dp) :: e2_e3, e2_e4
141  complex(dp) :: e3_e4
142  complex(dp) :: q_q
143  complex(dp) :: q1_q2,q1_q3,q1_q4
144  complex(dp) :: q2_q3,q2_q4
145  complex(dp) :: q3_q4
146  complex(dp) :: q1_e3,q1_e4,q2_e3,q2_e4
147  complex(dp) :: e1_q3,e1_q4,e2_q3,e2_q4
148  complex(dp) :: e3_q4,e4_q3
149  complex(dp) :: q1(4),q2(4),q3(4),q4(4),q(4)
150  complex(dp) :: e1(4),e2(4),e3(4),e4(4)
151  complex(dp) :: yyy1,yyy2,yyy3,yyy4,xxx1,epsZpr(1:4,-1:+1)
152 
153  q1 = dcmplx(p(1,:),0d0)
154  q2 = dcmplx(p(2,:),0d0)
155  q3 = dcmplx(p(3,:),0d0)
156  q4 = dcmplx(p(4,:),0d0)
157 
158 
159  e1 = sp(1,:)
160  e2 = sp(2,:)
161  e3 = sp(3,:)
162  e4 = sp(4,:)
163 
164  q = -q1-q2
165 
166  q_q =sc(q,q)
167 
168 
169  q1_q2 = sc(q1,q2)
170  q1_q3 = sc(q1,q3)
171  q1_q4 = sc(q1,q4)
172  q2_q3 = sc(q2,q3)
173  q2_q4 = sc(q2,q4)
174  q3_q4 = sc(q3,q4)
175  e1_e2 = sc(e1,e2)
176 
177  e1_e3 = sc(e1,e3)
178  e1_e4 = sc(e1,e4)
179 
180 
181 
182 
183 
184 
185 ! epsZpr(1:4,-1) = pol_mass(q,m_reso,-1)
186 ! epsZpr(1:4, 0) = pol_mass(q,m_reso, 0)
187 ! epsZpr(1:4,+1) = pol_mass(q,m_reso,+1)
188 ! e1_e3 = sc(e1,epsZpr(1:4,-1)) * sc(e3,dconjg(epsZpr(1:4,-1))) &
189 ! + sc(e1,epsZpr(1:4,+1)) * sc(e3,dconjg(epsZpr(1:4,+1))) &
190 ! + sc(e1,epsZpr(1:4, 0)) * sc(e3,dconjg(epsZpr(1:4, 0)))
191 ! e1_e4 = sc(e1,epsZpr(1:4,-1)) * sc(e4,dconjg(epsZpr(1:4,-1))) &
192 ! + sc(e1,epsZpr(1:4,+1)) * sc(e4,dconjg(epsZpr(1:4,+1))) &
193 ! + sc(e1,epsZpr(1:4, 0)) * sc(e4,dconjg(epsZpr(1:4, 0)))
194 
195 
196 
197 
198  e2_e3 = sc(e2,e3)
199  e2_e4 = sc(e2,e4)
200 
201  e3_e4 = sc(e3,e4)
202 
203 
204  q1_e3 = sc(q1,e3)
205  q1_e4 = sc(q1,e4)
206  q2_e3 = sc(q2,e3)
207  q2_e4 = sc(q2,e4)
208  e1_q3 = sc(e1,q3)
209  e1_q4 = sc(e1,q4)
210  e2_q3 = sc(e2,q3)
211  e2_q4 = sc(e2,q4)
212  e3_q4 = sc(e3,q4)
213  e4_q3 = sc(e4,q3)
214 
215 
216  res = czero
217 
218  xxx1 = (1d0,0d0) ! different possibilities for fermion couplings
219  ! to zprime are accounted in the amplitude call
220 
221 
222  yyy1 = zprime_zz_1
223  yyy2 = zprime_zz_2
224 
225 
226  res= - e1_e3*e4_q3*xxx1*yyy1 &
227  - e1_e4*e3_q4*xxx1*yyy1 &
228  - et1(e1,e3,e4,q3)*xxx1*yyy2 + et1(e1,e3,e4,q4)*xxx1*yyy2
229 
230 
231 ! e3 = pol_mass(q3,dreal(cdsqrt(sc(q3,q3))),-1)
232 ! e4 = pol_mass(q4,dreal(cdsqrt(sc(q4,q4))),-1)
233 ! e1_e3 = sc(e1,e3)
234 ! e1_e4 = sc(e1,e4)
235 ! e3_q4 = sc(e3,q4)
236 ! e4_q3 = sc(e4,q3)
237 !print *, dreal(cdsqrt(sc(q3,q3))),dreal(cdsqrt(sc(q4,q4)))
238 !print * , "e3x",q3,dreal(cdsqrt(sc(q3,q3))),-1
239 !print *, - e1_e3*e4_q3 - e1_e4*e3_q4
240 !pause
241 
242 
243 
244  end subroutine qqzprimezzampl
245 
246 
247 
248 !----- a subroutine for Zprime -> ZZ/WW
249 !----- all outgoing convention and the following momentum assignment
250 !----- 0 --> Zprime(p1) e-(p3) + e+(p4) +mu-(p5) +mu+(p6)
251  subroutine evalamp_zprime_vv(p,MY_IDUP,sum)
252  implicit none
253  real(dp), intent(out) :: sum
254  real(dp), intent(in) :: p(4,6)
255  integer, intent(in) :: MY_IDUP(6:9)
256  real(dp) :: pin(4,4)
257  complex(dp) :: A(2)
258  integer :: i1,i2,i3,i4,ordering(1:4),ordering_swap(1:4),idV(1:2),VVmode
259  real(dp) :: aL1,aR1,aL2,aR2
260  real(dp) :: prefactor
261  real(dp) :: intcolfac
262 
263  if(isaquark(my_idup(6)) .and. isaquark(my_idup(8))) then
264  intcolfac=1.0_dp/3.0_dp
265  else
266  intcolfac=1.0_dp
267  endif
268 
269  call getdecay_vvmode_ordering(my_idup(6:9),vvmode,ordering,ordering_swap)
270 
271 !---- full prefactor
272  if( vvmode.eq.zzmode ) then! Z decay
273  prefactor = overallcouplvffsq**2
274  elseif( vvmode.eq.wwmode ) then ! W decay
275  prefactor = overallcouplvffsq**2
276  elseif( vvmode.eq.zgmode ) then ! Z+photon "decay"
277  prefactor = overallcouplvffsq ! Only single powers
278  elseif( vvmode.eq.ggmode ) then ! photon "decay"
279  prefactor = 1d0
280  else
281  prefactor = 0d0
282  endif
283 
284 
285  sum = zero
286 
287 do i1 =-1,1! Z' boson
288 do i3 = 1,2! lepton string1
289 do i4 = 1,2! lepton string2
290 
291  call calchelamp2(ordering,vvmode,p(1:4,1:6),my_idup,i1,i3,i4,a(1))
292  if( includeinterference .and. (my_idup(6).eq.my_idup(8)) .and. (my_idup(7).eq.my_idup(9)) ) then
293  call calchelamp2(ordering_swap,vvmode,p(1:4,1:6),my_idup,i1,i3,i4,a(2))
294  a(2) = -a(2) ! minus comes from fermi statistics
295  endif
296  if( includeinterference .and. (my_idup(6).eq.my_idup(8)) .and. (my_idup(7).eq.my_idup(9)) ) then
297  sum = sum + symmfac * (cdabs( a(1)*dconjg(a(1)) ) + cdabs( a(2)*dconjg(a(2)) ))
298  if( i3.eq.i4 ) sum = sum + symmfac * 2d0*intcolfac*dreal(a(1)*dconjg(a(2)))
299  else
300  sum = sum + cdabs( a(1)*dconjg(a(1)) )
301  endif
302 
303 enddo
304 enddo
305 enddo
306 
307  sum = sum*prefactor
308 

◆ zprimezzampl()

subroutine modzprime::zprimezzampl ( real(dp), dimension(4,4), intent(in)  p,
complex(dp), dimension(4,4), intent(in)  sp,
complex(dp), intent(out)  res 
)
private

Definition at line 338 of file mod_Zprime.F90.

338  implicit none
339  real(dp), intent(in) :: p(4,4)
340  complex(dp), intent(in) :: sp(4,4)
341  complex(dp), intent(out) :: res
342  complex(dp) :: e1_e2, e1_e3, e1_e4
343  complex(dp) :: e2_e3, e2_e4
344  complex(dp) :: e3_e4
345  complex(dp) :: q_q,MZ3,MZ4
346  complex(dp) :: q1_q2,q1_q3,q1_q4
347  complex(dp) :: q2_q3,q2_q4
348  complex(dp) :: q3_q4,q3_q3,q4_q4
349  complex(dp) :: q1_e3,q1_e4,q2_e3,q2_e4
350  complex(dp) :: e1_q3,e1_q4,e2_q3,e2_q4
351  complex(dp) :: e3_q4,e4_q3
352  complex(dp) :: q1(4),q2(4),q3(4),q4(4),q(4)
353  complex(dp) :: e1(4),e2(4),e3(4),e4(4)
354  complex(dp) :: yyy1,yyy2,yyy3,yyy4,epsZpr(1:4,-1:+1)
355 
356 
357  q1 = dcmplx(p(1,:),0d0)
358  q2 = dcmplx(p(2,:),0d0)
359  q3 = dcmplx(p(3,:),0d0)
360  q4 = dcmplx(p(4,:),0d0)
361 
362 
363  e1 = sp(1,:)
364  e2 = sp(2,:)
365  e3 = sp(3,:)
366  e4 = sp(4,:)
367 
368  q = -q1-q2
369 
370  q_q =sc(q,q)
371 
372 
373  q1_q2 = sc(q1,q2)
374  q3_q3 = sc(q3,q3)
375  q4_q4 = sc(q4,q4)
376  q1_q3 = sc(q1,q3)
377  q1_q4 = sc(q1,q4)
378  q2_q3 = sc(q2,q3)
379  q2_q4 = sc(q2,q4)
380  q3_q4 = sc(q3,q4)
381  e1_e2 = sc(e1,e2)
382 
383  e1_e3 = sc(e1,e3)
384  e1_e4 = sc(e1,e4)
385 
386 
387 
388 
389  e2_e3 = sc(e2,e3)
390  e2_e4 = sc(e2,e4)
391 
392  e3_e4 = sc(e3,e4)
393 
394 
395  q1_e3 = sc(q1,e3)
396  q1_e4 = sc(q1,e4)
397  q2_e3 = sc(q2,e3)
398  q2_e4 = sc(q2,e4)
399  e1_q3 = sc(e1,q3)
400  e1_q4 = sc(e1,q4)
401  e2_q3 = sc(e2,q3)
402  e2_q4 = sc(e2,q4)
403  e3_q4 = sc(e3,q4)
404  e4_q3 = sc(e4,q3)
405 
406 
407  mz3=dsqrt(cdabs(q3_q3))
408  mz4=dsqrt(cdabs(q4_q4))
409 
410 
411  res = czero
412 
413 
414  yyy1 = zprime_zz_1
415  yyy2 = zprime_zz_2
416 
417 
418  res= yyy1*( q1_e3*e1_e4 + q1_e4*e1_e3 ) + yyy2*( et1(e1,e3,e4,q3) - et1(e1,e3,e4,q4) )
419 
420 
modparameters::zgmode
integer, parameter, public zgmode
Definition: mod_Parameters.F90:13
modmisc::et1
double complex function et1(e1, e2, e3, e4)
Definition: mod_Misc.F90:109
modparameters::zgsmode
integer, parameter, public zgsmode
Definition: mod_Parameters.F90:13
modmisc::error
subroutine error(Message, ErrNum)
Definition: mod_Misc.F90:366
modmisc::sc
double complex function sc(q1, q2)
Definition: mod_Misc.F90:127
modparameters::zzmode
integer, parameter, public zzmode
Definition: mod_Parameters.F90:13
modparameters::gsgmode
integer, parameter, public gsgmode
Definition: mod_Parameters.F90:13
modparameters::gszmode
integer, parameter, public gszmode
Definition: mod_Parameters.F90:13
modparameters::wwmode
integer, parameter, public wwmode
Definition: mod_Parameters.F90:13
modmisc::scr
double precision function scr(p1, p2)
Definition: mod_Misc.F90:135
modparameters::ggmode
integer, parameter, public ggmode
Definition: mod_Parameters.F90:13
modparameters::gsgsmode
integer, parameter, public gsgsmode
Definition: mod_Parameters.F90:13
hto_units::zero
real *8, parameter zero
Definition: CALLING_cpHTO.f:185
modmisc::swap
Definition: mod_Misc.F90:5