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
modvhiggs Module Reference

Functions/Subroutines

subroutine, public evalamp_vhiggs (id, helicity, MomExt, me2)
 
complex(8) function matrixelement0 (MomExt, mass, helicity, id, useA)
 
complex(8) function getvpffcoupling_vh (pdgid, hel, useWp)
 
subroutine angles (sincos, vector)
 
subroutine antisymmetric2 (p1, p2, epp)
 
real(8) function antisymmetric (i, j, k, l)
 
subroutine contra_field_tensor (POL, T_mu_nu)
 
subroutine contra_outer (p1, p2, pp)
 
subroutine covariant_field_tensor (POL, T_mu_nu)
 
subroutine covariant_outer (p1, p2, pp)
 
complex(8) function covariant_vector (p, mu)
 
complex(8) function ffp (pdg_code1, p1, h1, pdg_code2, p2, h2)
 
subroutine ffa (pdg_code1, p1, h1, pdg_code2, p2, h2, Acurrent)
 
complex(8) function ffs (pdg_code1, p1, h1, pdg_code2, p2, h2)
 
subroutine ffv (pdg_code1, p1, h1, pdg_code2, p2, h2, Vcurrent)
 
subroutine inv_lorentz (vector, boost)
 
real(8) function kronecker_delta (i, j)
 
real(8) function metric (mu, nu)
 
subroutine polarization (p, POL)
 
subroutine polarization_single (p, lambda, POL)
 
subroutine polarizationa (p, POL)
 
subroutine polarizationx (p, POL)
 
complex(8) function propagator (inv_mass, mass, width)
 
subroutine vvp (p1, p2, epp)
 
subroutine vvs1 (g_mu_nu)
 
subroutine vvs2 (p1, p2, pp)
 
subroutine spinoru2 (n, p, za, zb, s)
 
subroutine matrixelement1 (p, FermFlav, UnPolSqAmp)
 
subroutine getsme (p, FermFlav, SME)
 

Function/Subroutine Documentation

◆ angles()

subroutine modvhiggs::angles ( real(8), dimension(4)  sincos,
real(8), dimension(4)  vector 
)
private

Definition at line 681 of file mod_VHiggs.F90.

681  implicit none
682 ! real(8) Pi
683  real(8) Twopi, Fourpi, epsilon
684 ! parameter( Pi = 3.14159265358979323846d0 )
685  parameter( twopi = 2d0 * pi )
686  parameter( fourpi = 4d0 * pi )
687  parameter( epsilon = 1d-13 ) !a small quantity slightly above machine precision
688  real(8) sincos(4), vector(4), abs3p, phi
689 !sincos(1)=cos(theta)
690 !sincos(2)=sin(theta)
691 !sincos(3)=cos(phi)
692 !sincos(4)=sin(phi)
693 
694 !|3-momentum|
695  abs3p = dsqrt(vector(2)**2+vector(3)**2+vector(4)**2)
696 
697 !if |3-momentum|=0
698  if(abs3p.lt.epsilon)then
699  sincos(1)=1d0
700  sincos(2)=0d0
701  else
702  sincos(1)=vector(4)/abs3p
703  sincos(2)=dsqrt((1d0+sincos(1))*(1d0-sincos(1)))
704  endif
705 
706 !if colinear
707  if(dabs(vector(3)).lt.epsilon)then
708  phi=0d0
709  else
710  if(dabs(vector(2)).lt.epsilon)then
711  phi=(twopi/2d0)/2d0 * dsign(1d0,vector(3))
712  else
713  phi=datan(vector(3)/vector(2))
714  endif
715  endif
716 !shift phi so that 0 < phi < 2Pi
717  if(vector(2).lt.0d0)then
718  phi=phi+pi
719  endif
720  if(phi.lt.0d0)then
721  phi=phi+twopi
722  endif
723 ! print *,phi
724  sincos(3)=dcos(phi)
725  sincos(4)=dsin(phi)
726 
727  return

◆ antisymmetric()

real(8) function modvhiggs::antisymmetric ( integer  i,
integer  j,
integer  k,
integer  l 
)
private

Definition at line 775 of file mod_VHiggs.F90.

775 
776  implicit none
777 ! include '../COMMON.INI'
778 
779  integer i,j,k,l
780 
781  antisymmetric=dble((i-j)*(i-k)*(i-l)*(j-k)*(j-l)*(k-l))/12d0
782 
783  return

◆ antisymmetric2()

subroutine modvhiggs::antisymmetric2 ( complex(8), dimension(4)  p1,
complex(8), dimension(4)  p2,
complex(8), dimension(4,4)  epp 
)
private

Definition at line 733 of file mod_VHiggs.F90.

733 
734  implicit none
735 ! real(8) Pi
736  real(8) Twopi, Fourpi, epsilon
737 ! parameter( Pi = 3.14159265358979323846d0 )
738  parameter( twopi = 2d0 * pi )
739  parameter( fourpi = 4d0 * pi )
740  parameter( epsilon = 1d-13 ) !a small quantity slightly above machine precision
741 
742  complex(8) p1(4), p2(4)
743  complex(8) epp(4,4)
744 ! real(8) ANTISYMMETRIC
745  integer i,j,k,l
746 
747 ! external ANTISYMMETRIC
748 
749 ! do i=1,4
750 ! do j=1,4
751  epp(i,j)=0d0
752 ! enddo
753 ! enddo
754 
755  do i=1,4
756  do j=1,4
757  do k=1,4
758  do l=1,4
759  epp(i,j)=epp(i,j)+antisymmetric(i,j,k,l)*p1(k)*p2(l)
760  enddo
761  enddo
762  enddo
763  enddo
764 
765  return

◆ contra_field_tensor()

subroutine modvhiggs::contra_field_tensor ( complex(8), dimension(3,4)  POL,
complex(8), dimension(5,4,4)  T_mu_nu 
)
private

Definition at line 792 of file mod_VHiggs.F90.

792 
793  implicit none
794 ! real(8) Pi
795  real(8) Twopi, Fourpi, epsilon
796 ! parameter( Pi = 3.14159265358979323846d0 )
797  parameter( twopi = 2d0 * pi )
798  parameter( fourpi = 4d0 * pi )
799  parameter( epsilon = 1d-13 ) !a small quantity slightly above machine precision
800  complex(8) epep(4,4),emem(4,4),epe0(4,4),eme0(4,4),e0e0(4,4)
801  complex(8) epem(4,4),e0ep(4,4),e0em(4,4),emep(4,4)
802  complex(8) POL(3,4), T_mu_nu(5,4,4)
803 
804  call contra_outer(pol(1,:), pol(1,:), epep)
805  call contra_outer(pol(2,:), pol(2,:), emem)
806  call contra_outer(pol(1,:), pol(3,:), epe0)
807  call contra_outer(pol(3,:), pol(1,:), e0ep)
808  call contra_outer(pol(2,:), pol(3,:), eme0)
809  call contra_outer(pol(3,:), pol(2,:), e0em)
810  call contra_outer(pol(3,:), pol(3,:), e0e0)
811  call contra_outer(pol(1,:), pol(2,:), epem)
812  call contra_outer(pol(2,:), pol(1,:), emep)
813 
814 !lambda = +2
815  t_mu_nu(1,:,:)=epep
816 !lambda = -2
817  t_mu_nu(2,:,:)=emem
818 !lambda = +3
819  t_mu_nu(3,:,:)=(epe0+e0ep)/dsqrt(2d0)
820 !lambda = -3
821  t_mu_nu(4,:,:)=(eme0+e0em)/dsqrt(2d0)
822 !lambda = 0
823  t_mu_nu(5,:,:)=(epem+emep)/dsqrt(6d0) + e0e0/dsqrt(1.5d0)
824 
825 
826  return

◆ contra_outer()

subroutine modvhiggs::contra_outer ( complex(8), dimension(4)  p1,
complex(8), dimension(4)  p2,
complex(8), dimension(4,4)  pp 
)
private

Definition at line 835 of file mod_VHiggs.F90.

835 
836  implicit none
837 ! include '../COMMON.INI'
838  complex(8) p1(4), p2(4)
839  complex(8) pp(4,4)
840  integer mu, nu
841 
842  do mu=1,4
843  do nu=1,4
844  pp(mu,nu)=p1(mu)*p2(nu)
845  enddo
846  enddo
847 
848  return

◆ covariant_field_tensor()

subroutine modvhiggs::covariant_field_tensor ( complex(8), dimension(3,4)  POL,
complex(8), dimension(5,4,4)  T_mu_nu 
)
private

Definition at line 857 of file mod_VHiggs.F90.

857 
858  implicit none
859 ! real(8) Pi
860  real(8) Twopi, Fourpi, epsilon
861 ! parameter( Pi = 3.14159265358979323846d0 )
862  parameter( twopi = 2d0 * pi )
863  parameter( fourpi = 4d0 * pi )
864  parameter( epsilon = 1d-13 ) !a small quantity slightly above machine precision
865  complex(8) epep(4,4),emem(4,4),epe0(4,4),eme0(4,4),e0e0(4,4)
866  complex(8) epem(4,4),e0ep(4,4),e0em(4,4),emep(4,4)
867  complex(8) POL(3,4), T_mu_nu(5,4,4)
868 
869  call covariant_outer(pol(1,:), pol(1,:), epep)
870  call covariant_outer(pol(2,:), pol(2,:), emem)
871  call covariant_outer(pol(1,:), pol(3,:), epe0)
872  call covariant_outer(pol(3,:), pol(1,:), e0ep)
873  call covariant_outer(pol(2,:), pol(3,:), eme0)
874  call covariant_outer(pol(3,:), pol(2,:), e0em)
875  call covariant_outer(pol(3,:), pol(3,:), e0e0)
876  call covariant_outer(pol(1,:), pol(2,:), epem)
877  call covariant_outer(pol(2,:), pol(1,:), emep)
878 
879 !lambda = +2
880  t_mu_nu(1,:,:)=epep
881 !lambda = -2
882  t_mu_nu(2,:,:)=emem
883 !lambda = +3
884  t_mu_nu(3,:,:)=(epe0+e0ep)/dsqrt(2d0)
885 !lambda = -3
886  t_mu_nu(4,:,:)=(eme0+e0em)/dsqrt(2d0)
887 !lambda = 0
888  t_mu_nu(5,:,:)=(epem+emep)/dsqrt(6d0) + e0e0/dsqrt(1.5d0)
889 
890  return

◆ covariant_outer()

subroutine modvhiggs::covariant_outer ( complex(8), dimension(4)  p1,
complex(8), dimension(4)  p2,
complex(8), dimension(4,4)  pp 
)
private

Definition at line 899 of file mod_VHiggs.F90.

899 
900  implicit none
901 ! include '../COMMON.INI'
902  complex(8) p1(4), p2(4)
903  complex(8) pp(4,4)
904  integer mu, nu
905 
906  do mu=1,4
907  do nu=1,4
908  pp(mu,nu)=p1(mu)*p2(nu)
909  if( ( (mu.ne.1).and.(nu.eq.1) ).or. &
910  ( (mu.eq.1).and.(nu.ne.1) ) )then
911  pp(mu,nu)=-pp(mu,nu)
912  endif
913  enddo
914  enddo
915 
916  return

◆ covariant_vector()

complex(8) function modvhiggs::covariant_vector ( complex(8), dimension(4)  p,
integer  mu 
)
private

Definition at line 925 of file mod_VHiggs.F90.

925 
926  implicit none
927 
928  complex(8) p(4)
929  integer mu
930 
931  if(mu.ne.1)then
932  covariant_vector = -p(mu)
933  else
934  covariant_vector = p(mu)
935  endif
936 
937  return

◆ evalamp_vhiggs()

subroutine, public modvhiggs::evalamp_vhiggs ( integer, dimension(9), intent(in)  id,
real(8), dimension(9), intent(in)  helicity,
real(8), dimension(1:4,1:9), intent(in)  MomExt,
real(8), intent(out)  me2 
)

Definition at line 15 of file mod_VHiggs.F90.

15  integer, intent(in) :: id(9)
16  real(8), intent(in) :: helicity(9)
17  real(8), intent(in) :: MomExt(1:4,1:9)
18  real(8), intent(out) :: me2
19  real(8) :: mass(3:5,1:2)
20  integer :: i
21  complex(8) amplitude, A_VV(1:4), amptest
22  integer :: idin(9)
23  real(8) :: helin(9)
24  real(8) :: pin(1:4,1:9)
25 
26  idin(:)=id(:)
27  helin(:)=helicity(:)
28  pin(:,:)=momext(:,:)
29  if(id(2).eq.convertlhe(pho_)) then
30  call swap(idin(1),idin(2))
31  call swap(helin(1),helin(2))
32  call swap(pin(:,1),pin(:,2))
33  endif
34  if(id(7).eq.convertlhe(pho_)) then
35  call swap(idin(6),idin(7))
36  call swap(helin(6),helin(7))
37  call swap(pin(:,6),pin(:,7))
38  endif
39 
40  do i=3,5
41  mass(i,1) = getmass(convertlhereverse(idin(i)))
42  mass(i,2) = getdecaywidth(convertlhereverse(idin(i)))
43  enddo
44 
45  a_vv(:)=czero
46  if(idin(1).ne.convertlhe(pho_) .and. idin(6).ne.convertlhe(pho_)) then
47  !print *,"Case1:"
48  a_vv(1)=matrixelement0(pin,mass,helin,idin,(/.false., .false./))
49  if(includegammastar) then
50  !print *,"Case2:"
51  a_vv(2) = matrixelement0(pin,mass,helin,idin,(/.false., .true./))
52  !print *,"Case3:"
53  a_vv(3) = matrixelement0(pin,mass,helin,idin,(/.true., .false./))
54  !print *,"Case4:"
55  a_vv(4) = matrixelement0(pin,mass,helin,idin,(/.true., .true./))
56  endif
57  else if(idin(1).eq.convertlhe(pho_) .and. idin(6).eq.convertlhe(pho_)) then
58  !print *,"Case5:"
59  a_vv(1)=matrixelement0(pin,mass,helin,idin,(/.true., .true./))
60  else if(idin(1).eq.convertlhe(pho_)) then
61  !print *,"Case6:"
62  a_vv(1)=matrixelement0(pin,mass,helin,idin,(/.true., .false./))
63  if(includegammastar) then
64  !print *,"Case7:"
65  a_vv(2) = matrixelement0(pin,mass,helin,idin,(/.true., .true./))
66  endif
67  else !if(idin(6).eq.convertLHE(Pho_)) then
68  !print *,"Case8:"
69  a_vv(1)=matrixelement0(pin,mass,helin,idin,(/.false., .true./))
70  if(includegammastar) then
71  !print *,"Case9:"
72  a_vv(2) = matrixelement0(pin,mass,helin,idin,(/.true., .true./))
73  endif
74  endif
75  amplitude = a_vv(1)+a_vv(2)+a_vv(3)+a_vv(4)
76 
77  ! XCHECK FROM DECAY ME
78  !print *,pin(:,1)
79  !print *,pin(:,2)
80  !print *,pin(:,6)
81  !print *,pin(:,7)
82  !print *,idin(1)
83  !print *,idin(2)
84  !print *,idin(3)
85  !print *,idin(4)
86  !print *,idin(6)
87  !print *,idin(7)
88  !print *,helin(1)
89  !print *,helin(2)
90  !print *,helin(6)
91  !print *,helin(7)
92  !print *,amplitude
93  !amptest = MATRIXELEMENT02(pin,mass,helin,idin)
94  !print *,amptest
95  !pause
96 
97  me2=dble(amplitude*dconjg(amplitude))
98  return

◆ ffa()

subroutine modvhiggs::ffa ( integer  pdg_code1,
real(8), dimension(4)  p1,
real(8)  h1,
integer  pdg_code2,
real(8), dimension(4)  p2,
real(8)  h2,
complex(8), dimension(4)  Acurrent 
)
private

Definition at line 983 of file mod_VHiggs.F90.

983 
984  implicit none
985  real(8), parameter :: epsilon = 1d-13 !a small quantity slightly above machine precision
986 
987  real(8) p1(4), p2(4), h1, h2
988  integer pdg_code1, pdg_code2
989  real(8) sqrt_pp1Dpp2, sqrt_pp1Xpp2
990  complex(8) Acurrent(4)
991  integer mu
992 
993  acurrent = (0d0,0d0)
994 
995  if( ( dble(pdg_code1) *h1* dble(pdg_code2) *h2 ).lt.0d0)then
996  do mu=1,4
997  acurrent(mu)=0d0
998  enddo
999 
1000  else if( ( dabs( p1(1)+p1(4) ).lt.epsilon ).and. &
1001  ( dabs( p2(1)+p2(4) ).lt.epsilon ) )then
1002 
1003  acurrent(1)= 2d0*dsqrt(p1(1)*p2(1))
1004  acurrent(2)= 0d0
1005  acurrent(3)= 0d0
1006  acurrent(4)=-acurrent(1)
1007 
1008  else if( dabs( p1(1)+p1(4) ).lt.epsilon )then
1009 
1010  acurrent(1)= dsqrt( 2d0*p1(1) / ( p2(1)+p2(4) ) ) &
1011  *( p2(2) + (0d0,1d0)*p2(3) )
1012  acurrent(2)= dsqrt( 2d0*p1(1) * ( p2(1)+p2(4) ) )
1013  acurrent(3)= (0d0,1d0)*acurrent(2)
1014  acurrent(4)=-acurrent(1)
1015 
1016  else if( dabs( p2(1)+p2(4) ).lt.epsilon )then
1017 
1018  acurrent(1)= dsqrt( 2d0*p2(1) / ( p1(1)+p1(4) ) ) &
1019  *( p1(2) - (0d0,1d0)*p1(3) )
1020  acurrent(2)= dsqrt( 2d0*p2(1) * ( p1(1)+p1(4) ) )
1021  acurrent(3)=-(0d0,1d0)*acurrent(2)
1022  acurrent(4)=-acurrent(1)
1023 
1024  else
1025 
1026  sqrt_pp1dpp2= dsqrt( (p1(1)+p1(4)) / (p2(1)+p2(4)) )
1027  sqrt_pp1xpp2= dsqrt( (p1(1)+p1(4)) * (p2(1)+p2(4)) )
1028  acurrent(1)= sqrt_pp1xpp2 &
1029  +( p1(2) - (0d0,1d0)*p1(3) ) &
1030  *( p2(2) + (0d0,1d0)*p2(3) )/sqrt_pp1xpp2
1031  acurrent(2)= ( p1(2) - (0d0,1d0)*p1(3) )/sqrt_pp1dpp2 &
1032  +( p2(2) + (0d0,1d0)*p2(3) )*sqrt_pp1dpp2
1033  acurrent(3)= ( (0d0,1d0)*p1(2) + p1(3) )/sqrt_pp1dpp2 &
1034  -( (0d0,1d0)*p2(2) - p2(3) )*sqrt_pp1dpp2
1035  acurrent(4)=sqrt_pp1xpp2 &
1036  -( p1(2) - (0d0,1d0)*p1(3) ) &
1037  *( p2(2) + (0d0,1d0)*p2(3) )/sqrt_pp1xpp2
1038  endif
1039 
1040 ! print *, pdg_code1,h1,dble(pdg_code1)*h1,'!'
1041  if( (dble(pdg_code1)*h1) .lt. 0d0)then
1042 ! print *, Acurrent
1043  do mu=1,4
1044  acurrent(mu)=-dconjg(acurrent(mu))
1045  enddo
1046  endif
1047 
1048  return

◆ ffp()

complex(8) function modvhiggs::ffp ( integer  pdg_code1,
real(8), dimension(4)  p1,
real(8)  h1,
integer  pdg_code2,
real(8), dimension(4)  p2,
real(8)  h2 
)
private

Definition at line 945 of file mod_VHiggs.F90.

945 
946  implicit none
947  real(8), parameter :: epsilon = 1d-13 !a small quantity slightly above machine precision
948 
949  real(8) p1(4), p2(4), h1, h2
950  integer pdg_code1, pdg_code2
951  real(8) sqrt_pp1Dpp2
952 
953  if( ( dble(pdg_code1) *h1* dble(pdg_code2) *h2 ).gt.0d0)then
954  ffp=0d0
955 
956  else if( ( dabs( p1(1)+p1(4) ).lt.epsilon ).and. ( dabs( p2(1)+p2(4) ).lt.epsilon ) )then
957  ffp=0d0
958  else if( dabs( p1(1)+p1(4) ).lt.epsilon )then
959  ffp=-dsqrt(2d0*p1(1)*(p2(1)+p2(4)))
960  else if( dabs( p2(1)+p2(4) ).lt.epsilon )then
961  ffp= dsqrt(2d0*p2(1)*(p1(1)+p1(4)))
962  else
963  sqrt_pp1dpp2 = dsqrt((p1(1)+p1(4))/(p2(1)+p2(4)))
964  ffp=(p2(2)-(0d0,1d0)*p2(3))*sqrt_pp1dpp2- (p1(2)-(0d0,1d0)*p1(3))/sqrt_pp1dpp2
965  endif
966 
967  ffp=ffp*(0d0,-1d0)
968 
969  if( (dble(pdg_code1)*h1) .lt. 0d0)then
970  ffp=-dconjg(ffp)
971 
972  endif
973 
974  return

◆ ffs()

complex(8) function modvhiggs::ffs ( integer  pdg_code1,
real(8), dimension(4)  p1,
real(8)  h1,
integer  pdg_code2,
real(8), dimension(4)  p2,
real(8)  h2 
)
private

Definition at line 1056 of file mod_VHiggs.F90.

1056 
1057  implicit none
1058  real(8), parameter :: epsilon = 1d-13 !a small quantity slightly above machine precision
1059 
1060  real(8) p1(4), p2(4), h1, h2
1061  integer pdg_code1, pdg_code2
1062  real(8) sqrt_pp1Dpp2
1063 
1064  ffs = (0d0,0d0)
1065 
1066  if( ( dble(pdg_code1) *h1* dble(pdg_code2) *h2 ).gt.0d0)then
1067  ffs=0d0
1068 
1069  else if( ( dabs( p1(1)+p1(4) ).lt.epsilon ).and. ( dabs( p2(1)+p2(4) ).lt.epsilon ) )then
1070  ffs=0d0
1071  else if( dabs( p1(1)+p1(4) ).lt.epsilon )then
1072  ffs=-dsqrt(2d0*p1(1)*(p2(1)+p2(4)))
1073  else if( dabs( p2(1)+p2(4) ).lt.epsilon )then
1074  ffs= dsqrt(2d0*p2(1)*(p1(1)+p1(4)))
1075  else
1076  sqrt_pp1dpp2 = dsqrt((p1(1)+p1(4))/(p2(1)+p2(4)))
1077  ffs=(p2(2)-(0d0,1d0)*p2(3))*sqrt_pp1dpp2- (p1(2)-(0d0,1d0)*p1(3))/sqrt_pp1dpp2
1078  endif
1079 
1080  if( (dble(pdg_code1)*h1) .lt. 0d0)then
1081  ffs=-dconjg(ffs)
1082 
1083  endif
1084 
1085  return

◆ ffv()

subroutine modvhiggs::ffv ( integer  pdg_code1,
real(8), dimension(4)  p1,
real(8)  h1,
integer  pdg_code2,
real(8), dimension(4)  p2,
real(8)  h2,
complex(8), dimension(4)  Vcurrent 
)
private

Definition at line 1094 of file mod_VHiggs.F90.

1094 
1095  implicit none
1096  real(8), parameter :: epsilon = 1d-13 !a small quantity slightly above machine precision
1097 
1098  real(8) p1(4), p2(4), h1, h2
1099  integer pdg_code1, pdg_code2
1100  real(8) sqrt_pp1Dpp2, sqrt_pp1Xpp2
1101  complex(8) Vcurrent(4)
1102  integer mu
1103 
1104  vcurrent = (0d0,0d0)
1105 
1106  if( ( dble(pdg_code1) *h1* dble(pdg_code2) *h2 ).lt.0d0)then
1107  do mu=1,4
1108  vcurrent(mu)=0d0
1109  enddo
1110 
1111  else if( ( dabs( p1(1)+p1(4) ).lt.epsilon ).and. ( dabs( p2(1)+p2(4) ).lt.epsilon ) )then
1112 
1113  vcurrent(1)= 2d0*dsqrt(p1(1)*p2(1))
1114  vcurrent(2)= 0d0
1115  vcurrent(3)= 0d0
1116  vcurrent(4)=-vcurrent(1)
1117 
1118  else if( dabs( p1(1)+p1(4) ).lt.epsilon )then
1119 
1120  vcurrent(1)= dsqrt( 2d0*p1(1) / ( p2(1)+p2(4) ) ) *( p2(2) + (0d0,1d0)*p2(3) )
1121  vcurrent(2)= dsqrt( 2d0*p1(1) * ( p2(1)+p2(4) ) )
1122  vcurrent(3)= (0d0,1d0)*vcurrent(2)
1123  vcurrent(4)=-vcurrent(1)
1124 
1125  else if( dabs( p2(1)+p2(4) ).lt.epsilon )then
1126 
1127  vcurrent(1)= dsqrt( 2d0*p2(1) / ( p1(1)+p1(4) ) ) *( p1(2) - (0d0,1d0)*p1(3) )
1128  vcurrent(2)= dsqrt( 2d0*p2(1) * ( p1(1)+p1(4) ) )
1129  vcurrent(3)=-(0d0,1d0)*vcurrent(2)
1130  vcurrent(4)=-vcurrent(1)
1131 
1132  else
1133 
1134  sqrt_pp1dpp2= dsqrt( (p1(1)+p1(4)) / (p2(1)+p2(4)) )
1135  sqrt_pp1xpp2= dsqrt( (p1(1)+p1(4)) * (p2(1)+p2(4)) )
1136  vcurrent(1)= sqrt_pp1xpp2 &
1137  +( p1(2) - (0d0,1d0)*p1(3) ) &
1138  *( p2(2) + (0d0,1d0)*p2(3) )/sqrt_pp1xpp2
1139  vcurrent(2)= ( p1(2) - (0d0,1d0)*p1(3) )/sqrt_pp1dpp2 &
1140  +( p2(2) + (0d0,1d0)*p2(3) )*sqrt_pp1dpp2
1141  vcurrent(3)= ( (0d0,1d0)*p1(2) + p1(3) )/sqrt_pp1dpp2 &
1142  -( (0d0,1d0)*p2(2) - p2(3) )*sqrt_pp1dpp2
1143  vcurrent(4)=sqrt_pp1xpp2 &
1144  -( p1(2) - (0d0,1d0)*p1(3) ) &
1145  *( p2(2) + (0d0,1d0)*p2(3) )/sqrt_pp1xpp2
1146  endif
1147 
1148  if( (dble(pdg_code1)*h1) .lt. 0d0)then
1149  do mu=1,4
1150  vcurrent(mu)=dconjg(vcurrent(mu))
1151  enddo
1152  endif
1153 
1154  return

◆ getsme()

subroutine modvhiggs::getsme ( real(8), dimension(1:4,1:9)  p,
integer, dimension(1:6)  FermFlav,
complex(8), dimension(1:3,-1:+1,-1:+1)  SME 
)

Definition at line 1682 of file mod_VHiggs.F90.

1682 use modparameters
1683 use modmisc
1684 implicit none
1685 complex(8) :: SME(1:3,-1:+1,-1:+1)
1686 real(8) :: sprod(9,9),p(1:4,1:9),IZfs(-1:+1)
1687 complex(8) :: za(9,9), zb(9,9),Prop
1688 integer :: FermFlav(1:6)
1689 
1690  call spinoru2(9,(/-p(1:4,1),-p(1:4,2),-p(1:4,1)-p(1:4,2),p(1:4,6)+p(1:4,7),p(1:4,8)+p(1:4,9),p(1:4,6),p(1:4,7),p(1:4,8),p(1:4,9)/),za,zb,sprod)
1691 
1692 
1693  ! Z-final state couplings
1694  if( isawdecay(decaymode1) ) then
1695  izfs(+1) = br *ckm(fermflav(3),fermflav(4))
1696  izfs(-1) = bl *ckm(fermflav(3),fermflav(4))
1697  elseif( abs(fermflav(3)).eq.11 .or. abs(fermflav(3)).eq.13 .or. abs(fermflav(3)).eq.15) then
1698  izfs(-1)=al_lep * dsqrt(scale_alpha_z_ll)
1699  izfs(+1)=ar_lep * dsqrt(scale_alpha_z_ll)
1700  elseif( abs(fermflav(3)).eq.12 .or. abs(fermflav(3)).eq.14 .or. abs(fermflav(3)).eq.16 ) then
1701  izfs(-1)=al_neu * dsqrt(scale_alpha_z_nn)
1702  izfs(+1)=ar_neu * dsqrt(scale_alpha_z_nn)
1703  elseif( abs(fermflav(3)).eq.2 .or. abs(fermflav(3)).eq.4 ) then
1704  izfs(-1)=al_qup * dsqrt(scale_alpha_z_uu)
1705  izfs(+1)=ar_qup * dsqrt(scale_alpha_z_uu)
1706  elseif( abs(fermflav(3)).eq.1 .or. abs(fermflav(3)).eq.3 .or. abs(fermflav(3)).eq.5 ) then
1707  izfs(-1)=al_qdn * dsqrt(scale_alpha_z_dd)
1708  izfs(+1)=ar_qdn * dsqrt(scale_alpha_z_dd)
1709  else
1710  call error("Wrong flavor in getSME",fermflav(3))
1711  endif
1712 
1713  sme(1,+1,+1) = -2*izfs(1)*za(1,7)*zb(2,6)
1714  sme(2,+1,+1) = izfs(1)*(za(1,6)*zb(2,6) + za(1,7)*zb(2,7))*(za(7,8)*zb(6,8) + za(7,9)*zb(6,9))
1715  sme(3,+1,+1) = ci*izfs(1)*(za(1,7)*(za(7,8)*zb(2,8) + za(7,9)*zb(2,9))*zb(6,7) + za(6,7)*zb(2,6)*(za(1,8)*zb(6,8) + za(1,9)*zb(6,9)))
1716  sme(1,+1,-1) = -2*izfs(-1)*za(1,6)*zb(2,7)
1717  sme(2,+1,-1) = izfs(-1)*(za(1,6)*zb(2,6) + za(1,7)*zb(2,7))*(za(6,8)*zb(7,8) + za(6,9)*zb(7,9))
1718  sme(3,+1,-1) = ci*izfs(-1)*(-(za(1,7)*zb(2,7)*(za(6,8)*zb(7,8) + za(6,9)*zb(7,9))) + za(1,6)*(za(6,8)*(-(zb(2,7)*zb(6,8)) + zb(2,6)*zb(7,8)) + zb(2,7)*(za(7,8)*zb(7,8) + za(7,9)*zb(7,9)) + za(6,9)*(-(zb(2,7)*zb(6,9)) + zb(2,6)*zb(7,9))))
1719  sme(1,-1,+1) = -2*izfs(1)*za(2,7)*zb(1,6)
1720  sme(2,-1,+1) = izfs(1)*(za(2,6)*zb(1,6) + za(2,7)*zb(1,7))*(za(7,8)*zb(6,8) + za(7,9)*zb(6,9))
1721  sme(3,-1,+1) = ci*izfs(1)*(za(2,7)*(za(7,8)*zb(1,8) + za(7,9)*zb(1,9))*zb(6,7) + za(6,7)*zb(1,6)*(za(2,8)*zb(6,8) + za(2,9)*zb(6,9)))
1722  sme(1,-1,-1) = -2*izfs(-1)*za(2,6)*zb(1,7)
1723  sme(2,-1,-1) = izfs(-1)*(za(2,6)*zb(1,6) + za(2,7)*zb(1,7))*(za(6,8)*zb(7,8) + za(6,9)*zb(7,9))
1724  sme(3,-1,-1) = -(ci*izfs(-1)*(za(2,6)*(za(6,8)*zb(1,8) + za(6,9)*zb(1,9))*zb(6,7) + za(6,7)*zb(1,7)*(za(2,8)*zb(7,8) + za(2,9)*zb(7,9))))
1725 
1726  prop = (0d0,1d0)/(2*(p(1:4,6).dot.p(1:4,7)) - m_v**2 + (0d0,1d0)*m_v*ga_v )
1727  sme(:,:,:) = sme(:,:,:) * prop
1728 
1729 RETURN

◆ getvpffcoupling_vh()

complex(8) function modvhiggs::getvpffcoupling_vh ( integer, intent(in)  pdgid,
integer, intent(in)  hel,
logical, intent(in)  useWp 
)
private

Definition at line 661 of file mod_VHiggs.F90.

661 integer, intent(in) :: pdgid
662 integer, intent(in) :: hel
663 logical, intent(in) :: useWp
664 complex(8) :: GetVpffCoupling_VH
665  getvpffcoupling_vh=vpffcoupling_pdg(pdgid,hel,usewp)
666  if(usewp) then
667  getvpffcoupling_vh = getvpffcoupling_vh / bl ! Bc of the couplings formalism from decay
668  else
669  getvpffcoupling_vh = getvpffcoupling_vh / 2.0_dp
670  endif

◆ inv_lorentz()

subroutine modvhiggs::inv_lorentz ( real(8), dimension(4)  vector,
real(8), dimension(4)  boost 
)
private

Definition at line 1166 of file mod_VHiggs.F90.

1166 
1167  implicit none
1168 
1169  real(8) vector(4), boost(4)
1170  real(8) lambda(4,4), vector_copy(4)
1171  real(8) beta(2:4), beta_sq, gamma
1172  integer i,j
1173 
1174  do i=2,4
1175  beta(i) = -boost(i)/boost(1)
1176  enddo
1177 
1178  beta_sq = beta(2)**2+beta(3)**2+beta(4)**2
1179 
1180  gamma = 1d0/dsqrt(1d0-beta_sq)
1181 
1182  lambda(1,1) = gamma
1183 
1184  do i=2,4
1185  lambda(1,i) = gamma*beta(i)
1186  lambda(i,1) = lambda(1,i)
1187  enddo
1188 
1189  do i=2,4
1190  do j=2,4
1191  lambda(i,j) = (gamma-1d0)*beta(i)*beta(j)/beta_sq + kronecker_delta(i,j)
1192  enddo
1193  enddo
1194 
1195 !apply boost to vector1
1196  vector_copy = vector
1197  vector = 0d0
1198  do i=1,4
1199  do j=1,4
1200  vector(i) = vector(i) + lambda(i,j)*vector_copy(j)
1201  enddo
1202  enddo
1203 
1204  return

◆ kronecker_delta()

real(8) function modvhiggs::kronecker_delta ( integer  i,
integer  j 
)
private

Definition at line 1212 of file mod_VHiggs.F90.

1212  integer i,j
1213  if(i.eq.j)then
1214  kronecker_delta = 1d0
1215  else
1216  kronecker_delta = 0d0
1217  endif
1218 
1219  return

◆ matrixelement0()

complex(8) function modvhiggs::matrixelement0 ( real(8), dimension(1:4,1:9), intent(in)  MomExt,
real(8), dimension(3:5,1:2), intent(in)  mass,
real(8), dimension(9), intent(in)  helicity,
integer, dimension(9), intent(in)  id,
logical, dimension(2), intent(in)  useA 
)
private

Definition at line 104 of file mod_VHiggs.F90.

104  implicit none
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)
110 
111  integer mu3,mu4
112  real(8) qq,q3_q3,q4_q4,q5_q5
113  complex(8) PVVX0P
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
130 
131  matrixelement0=czero
132  if( &
133  (id(1).ne.convertlhe(pho_) .and. usea(1) .and. .not.includegammastar) .or. &
134  (id(6).ne.convertlhe(pho_) .and. usea(2) .and. .not.includegammastar) .or. &
135  ((id(1)+id(2)).ne.0 .and. id(1).ne.convertlhe(pho_) .and. usea(1)) .or. &
136  ((id(6)+id(7)).ne.0 .and. id(6).ne.convertlhe(pho_) .and. usea(2)) &
137  ) then
138  return
139  endif
140 
141  vcurrent1 = czero
142  acurrent1 = czero
143  vcurrent2 = czero
144  acurrent2 = czero
145  vpffcoupl=czero
146  currentvp1=czero
147  currentvp2=czero
148  prop_vp1=czero
149  prop_vp2=czero
150  ghzzp1_dyn = czero
151  ghzzp2_dyn = czero
152  ghzzp3_dyn = czero
153  ghzzp4_dyn = czero
154  ghzpz1_dyn = czero
155  ghzpz2_dyn = czero
156  ghzpz3_dyn = czero
157  ghzpz4_dyn = czero
158  ghzpzp1_dyn = czero
159  ghzpzp2_dyn = czero
160  ghzpzp3_dyn = czero
161  ghzpzp4_dyn = czero
162  gvvpp = czero
163  gvvps1 = czero
164  gvvps2 = czero
165  gvpvp = czero
166  gvpvs1 = czero
167  gvpvs2 = czero
168  gvpvpp = czero
169  gvpvps1 = czero
170  gvpvps2 = czero
171 
172  gffz = ci*2d0*dsqrt(couplzffsq) ! = sqrt(gwsq/(1.0_dp-xw))
173  gffa = -ci*dsqrt(couplaffsq) ! = sqrt(gwsq*xw)
174  gffw = ci*dsqrt(couplwffsq) ! = sqrt(gwsq/2.0_dp)
175 
176  qq = -scr(momext(:,3),momext(:,4))
177  if (id(1).eq.convertlhe(pho_) .and. usea(1)) then
178  q3_q3 = 0d0
179  else
180  q3_q3 = scr(momext(:,3),momext(:,3))
181  endif
182  if (id(6).eq.convertlhe(pho_) .and. usea(2)) then
183  q4_q4 = 0d0
184  else
185  q4_q4 = scr(momext(:,4),momext(:,4))
186  endif
187  q5_q5 = scr(momext(:,5),momext(:,5))
188  prop3 = propagator(dsqrt(q5_q5),mass(5,1),mass(5,2))
189 
190  if (includevprime) then
191  if(.not.usea(1)) then
192  vpffcoupl(1,1)=getvpffcoupling_vh(id(1), -1, ((id(1)+id(2)).ne.0))
193  vpffcoupl(1,2)=getvpffcoupling_vh(id(1), +1, ((id(1)+id(2)).ne.0))
194  endif
195  if(.not.usea(2)) then
196  vpffcoupl(2,1)=getvpffcoupling_vh(id(6), -1, ((id(6)+id(7)).ne.0))
197  vpffcoupl(2,2)=getvpffcoupling_vh(id(6), +1, ((id(6)+id(7)).ne.0))
198  endif
199  endif
200 
201 
202  if(.not.usea(1)) then
203  prop1 = propagator(dsqrt(q3_q3),mass(3,1),mass(3,2))
204  if(id(1).gt.0)then
205  call ffv(id(2), momext(:,2), helicity(2), id(1), momext(:,1), helicity(1), vcurrent1)
206  call ffa(id(2), momext(:,2), helicity(2), id(1), momext(:,1), helicity(1), acurrent1)
207  else
208  call ffv(id(1), momext(:,1), helicity(1), id(2), momext(:,2), helicity(2), vcurrent1)
209  call ffa(id(1), momext(:,1), helicity(1), id(2), momext(:,2), helicity(2), acurrent1)
210  endif
211 
212  ! Vpff current without the prefactor
213  if (includevprime) then
214  if((id(1)*helicity(1)).le.0d0)then
215  currentvp1=( &
216  vcurrent1*(vpffcoupl(1,1)+vpffcoupl(1,2))*0.5 - &
217  acurrent1*(vpffcoupl(1,1)-vpffcoupl(1,2))*0.5 &
218  )
219  else
220  currentvp1=( &
221  vcurrent1*vpffcoupl(1,2) &
222  )
223  endif
224  endif
225 
226  !WH
227  if((id(1)+id(2)).ne.0)then
228  if (includevprime) then
229  if (getmass(wppr_).ge.0d0) then
230  !print *,"Compute prop for Wppr"
231  prop_vp1 = propagator(dsqrt(q3_q3),getmass(wppr_),getdecaywidth(wppr_))
232  else
233  prop_vp1 = propagator(m_w,0d0,0d0)
234  endif
235  currentvp1 = currentvp1*gffw*ckmbare(id(1),id(2))
236  endif
237  if((id(1)*helicity(1)).le.0d0)then
238  current1=(vcurrent1-acurrent1)/2d0*gffw*ckmbare(id(1),id(2))
239  else
240  current1=0d0
241  endif
242  !ZH
243  else
244  if (includevprime) then
245  if (getmass(zpr_).ge.0d0) then
246  !print *,"Compute prop for Zpr"
247  prop_vp1 = propagator(dsqrt(q3_q3),getmass(zpr_),getdecaywidth(zpr_))
248  else
249  prop_vp1 = propagator(m_z,0d0,0d0)
250  endif
251  currentvp1 = currentvp1*gffz
252  endif
253  !e+ e- Z vertex for incoming states
254  if((abs(id(1)).eq.11).or.(abs(id(1)).eq.13).or.(abs(id(1)).eq.15))then
255  if((id(1)*helicity(1)).gt.0d0)then
256  current1=(0.5d0*t3lr - qlr*sitw**2) *vcurrent1 -(0.5d0*t3lr)*acurrent1
257  else
258  current1=(0.5d0*t3ll - qll*sitw**2) *vcurrent1 -(0.5d0*t3ll)*acurrent1
259  endif
260  current1=current1*gffz
261  !u u~ Z vertex for incoming states
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)*acurrent1
265  else
266  current1=(0.5d0*t3ul - qul*sitw**2) *vcurrent1 -(0.5d0*t3ul)*acurrent1
267  endif
268  current1=current1*gffz
269  !d d~ Z vertex for incoming states
270  else if((abs(id(1)).eq.1).or.(abs(id(1)).eq.3).or.(abs(id(1)).eq.5))then
271  if((id(1)*helicity(1)).gt.0d0)then
272  current1=(0.5d0*t3dr - qdr*sitw**2) *vcurrent1 -(0.5d0*t3dr)*acurrent1
273  else
274  current1=(0.5d0*t3dl - qdl*sitw**2) *vcurrent1 -(0.5d0*t3dl)*acurrent1
275  endif
276  current1=current1*gffz
277  else
278  current1=0d0
279  currentvp1=0d0
280  print *, "invalid incoming state"
281  endif
282  endif
283  else
284  if(abs(id(1)).eq.convertlhe(pho_)) then
285  prop1=cone
286  if((id(1)*helicity(1)).gt.0d0) then
287  call polarization_single(momext(:,3),+1,vcurrent1)
288  else
289  call polarization_single(momext(:,3),-1,vcurrent1)
290  endif
291  else
292  prop1 = propagator(dsqrt(q3_q3),0d0,0d0)
293  if(id(1).gt.0)then
294  call ffv(id(2), momext(:,2), helicity(2), id(1), momext(:,1), helicity(1), vcurrent1)
295  else
296  call ffv(id(1), momext(:,1), helicity(1), id(2), momext(:,2), helicity(2), vcurrent1)
297  endif
298  endif
299 
300  !ZH
301  if(abs(id(1)).eq.convertlhe(pho_))then
302  current1=vcurrent1
303  !e+ e- Z vertex for incoming states
304  else if((abs(id(1)).eq.11).or.(abs(id(1)).eq.13).or.(abs(id(1)).eq.15))then
305  if((id(1)*helicity(1)).gt.0d0)then
306  current1 = qlr*vcurrent1
307  else
308  current1 = qll*vcurrent1
309  endif
310  current1=current1*gffa
311  !u u~ Z vertex for incoming states
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
315  else
316  current1 = qul*vcurrent1
317  endif
318  current1=current1*gffa
319  !d d~ Z vertex for incoming states
320  else if((abs(id(1)).eq.1).or.(abs(id(1)).eq.3).or.(abs(id(1)).eq.5))then
321  if((id(1)*helicity(1)).gt.0d0)then
322  current1 = qdr*vcurrent1
323  else
324  current1 = qdl*vcurrent1
325  endif
326  current1=current1*gffa
327  else
328  current1=0d0
329  print *, "invalid incoming state"
330  endif
331  endif
332 
333  if(.not.usea(2)) then
334  prop2 = propagator(dsqrt(q4_q4),mass(4,1),mass(4,2))
335 
336  if(id(6).gt.0)then
337  call ffv(id(6), momext(:,6), helicity(6), id(7), momext(:,7), helicity(7), vcurrent2)
338  call ffa(id(6), momext(:,6), helicity(6), id(7), momext(:,7), helicity(7), acurrent2)
339  else
340  call ffv(id(7), momext(:,7), helicity(7), id(6), momext(:,6), helicity(6), vcurrent2)
341  call ffa(id(7), momext(:,7), helicity(7), id(6), momext(:,6), helicity(6), acurrent2)
342  endif
343 
344  ! Vpff current without the prefactor
345  if (includevprime) then
346  if((id(6)*helicity(6)).le.0d0)then
347  currentvp2=( &
348  vcurrent2*(vpffcoupl(2,1)+vpffcoupl(2,2))*0.5 - &
349  acurrent2*(vpffcoupl(2,1)-vpffcoupl(2,2))*0.5 &
350  )
351  else
352  currentvp2=( &
353  vcurrent2*vpffcoupl(2,2) &
354  )
355  endif
356  endif
357 
358  !WH
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(wppr_))
363  else
364  prop_vp2 = propagator(m_w,0d0,0d0)
365  endif
366  currentvp2 = currentvp2*gffw*ckmbare(id(6),id(7))
367  endif
368  if((id(6)*helicity(6)).le.0d0)then
369  current2=(vcurrent2-acurrent2)/2d0*gffw*ckm(id(6),id(7))
370  else
371  current2=0d0
372  endif
373  !ZH
374  else
375  if (includevprime) then
376  if (getmass(zpr_).ge.0d0) then
377  prop_vp2 = propagator(dsqrt(q4_q4),getmass(zpr_),getdecaywidth(zpr_))
378  else
379  prop_vp2 = propagator(m_z,0d0,0d0)
380  endif
381  currentvp2 = currentvp2*gffz
382  endif
383  !l+ l- Z vertex for final state
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)*acurrent2
387  else
388  current2=(0.5d0*t3ll - qll*sitw**2) *vcurrent2 -(0.5d0*t3ll)*acurrent2
389  endif
390  current2=current2*gffz*dsqrt(scale_alpha_z_ll)
391  !tau+ tau- Z vertex for final state
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)*acurrent2
395  else
396  current2=(0.5d0*t3ll - qll*sitw**2) *vcurrent2 -(0.5d0*t3ll)*acurrent2
397  endif
398  current2=current2*gffz*dsqrt(scale_alpha_z_tt)
399  !u u~ Z vertex for final state
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)*acurrent2
403  else
404  current2=(0.5d0*t3ul - qul*sitw**2) *vcurrent2 -(0.5d0*t3ul)*acurrent2
405  endif
406  current2=current2*gffz*dsqrt(scale_alpha_z_uu)
407  !d d~ Z vertex for final state
408  else if((abs(id(6)).eq.1).or.(abs(id(6)).eq.3).or.(abs(id(6)).eq.5))then
409  if((id(6)*helicity(6)).gt.0d0)then
410  current2=(0.5d0*t3dr - qdr*sitw**2) *vcurrent2 -(0.5d0*t3dr)*acurrent2
411  else
412  current2=(0.5d0*t3dl - qdl*sitw**2) *vcurrent2 -(0.5d0*t3dl)*acurrent2
413  endif
414  current2=current2*gffz*dsqrt(scale_alpha_z_dd)
415  !nu nu~ Z vertex for final state
416  else if((abs(id(6)).eq.12).or.(abs(id(6)).eq.14).or.(abs(id(6)).eq.16))then
417  current2=(0.5d0*t3nl - qnl*sitw**2) *vcurrent2 -(0.5d0*t3nl)*acurrent2
418  current2=current2*gffz*dsqrt(scale_alpha_z_nn)
419  else
420  current2=0d0
421  currentvp2 = 0d0
422  print *, "invalid final state", id(6:7), helicity(6:7)
423  stop
424  endif
425  endif
426  else
427  if(abs(id(6)).eq.convertlhe(pho_)) then
428  prop2=cone
429  if((id(6)*helicity(6)).gt.0d0) then
430  call polarization_single(momext(:,4),+1,vcurrent2)
431  else
432  call polarization_single(momext(:,4),-1,vcurrent2)
433  endif
434  vcurrent2 = dconjg(vcurrent2)
435  else
436  prop2 = propagator(dsqrt(q4_q4),0d0,0d0)
437  if(id(6).gt.0)then
438  call ffv(id(6), momext(:,6), helicity(6), id(7), momext(:,7), helicity(7), vcurrent2)
439  else
440  call ffv(id(7), momext(:,7), helicity(7), id(6), momext(:,6), helicity(6), vcurrent2)
441  endif
442  endif
443 
444  !ZH
445  if(abs(id(6)).eq.convertlhe(pho_)) then
446  current2=vcurrent2
447  !l+ l- Z vertex for final state
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
451  else
452  current2=qll*vcurrent2
453  endif
454  current2=current2*gffa*dsqrt(scale_alpha_z_ll)
455  !tau+ tau- Z vertex for final state
456  else if((abs(id(6)).eq.15))then
457  if((id(6)*helicity(6)).gt.0d0)then
458  current2=qlr*vcurrent2
459  else
460  current2=qll*vcurrent2
461  endif
462  current2=current2*gffa*dsqrt(scale_alpha_z_tt)
463  !u u~ Z vertex for final state
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
467  else
468  current2=qul*vcurrent2
469  endif
470  current2=current2*gffa*dsqrt(scale_alpha_z_uu)
471  !d d~ Z vertex for final state
472  else if((abs(id(6)).eq.1).or.(abs(id(6)).eq.3).or.(abs(id(6)).eq.5))then
473  if((id(6)*helicity(6)).gt.0d0)then
474  current2=qdr*vcurrent2
475  else
476  current2=qdl*vcurrent2
477  endif
478  current2=current2*gffa*dsqrt(scale_alpha_z_dd)
479  !nu nu~ Z vertex for final state
480  else if((abs(id(6)).eq.12).or.(abs(id(6)).eq.14).or.(abs(id(6)).eq.16))then
481  current2=qnl*vcurrent2
482  current2=current2*gffa*dsqrt(scale_alpha_z_nn)
483  else
484  current2=0d0
485  print *, "invalid final state", id(6:7), helicity(6:7)
486  stop
487  endif
488  endif
489 
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
493  endif
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
497  endif
498 
499  !print *,"current1=",current1
500  !print *,"currentVp1=",currentVp1
501  !print *,"PROP1=",PROP1
502  !print *,"PROP_Vp1=",PROP_Vp1
503  !print *,"current2=",current2
504  !print *,"currentVp2=",currentVp2
505  !print *,"PROP2=",PROP2
506  !print *,"PROP_Vp2=",PROP_Vp2
507 
508  current1 = current1*prop1
509  current2 = current2*prop2
510  currentvp1 = currentvp1*prop_vp1
511  currentvp2 = currentvp2*prop_vp2
512 
513 !XVV vertex
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)
518  endif
519 
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)
525 
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)
531 
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)
536 
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)
541  endif
542  else if(usea(1) .and. usea(2)) then
543  ghz1_dyn = czero
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)
552 
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)
558  endif
559  else !if(useA(2)) then
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)
564 
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)
570  endif
571  endif
572 
573  gvvs1 = ghz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghz2_dyn + ghz3_dyn*qq/lambda**2 )
574  gvvs2 = -( 2d0*ghz2_dyn + ghz3_dyn*qq/lambda**2 )
575  gvvp = -2d0*ghz4_dyn
576 
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 + ghzzp3_dyn*qq/lambda**2 )
580  gvvps2 = -( 2d0*ghzzp2_dyn + ghzzp3_dyn*qq/lambda**2 )
581  gvvpp = -2d0*ghzzp4_dyn
582 
583  gvpvs1 = ghzpz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
584  gvpvs2 = -( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
585  gvpvp = -2d0*ghzpz4_dyn
586 
587  gvpvps1 = ghzpzp1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpzp2_dyn + ghzpzp3_dyn*qq/lambda**2 )
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 + ghzzp3_dyn*qq/lambda**2 )
592  gvvps2 = -( 2d0*ghzzp2_dyn + ghzzp3_dyn*qq/lambda**2 )
593  gvvpp = -2d0*ghzzp4_dyn
594  else! if (useA(2)) then
595  gvpvs1 = ghzpz1_dyn*(mass(3,1)**2) + qq * ( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
596  gvpvs2 = -( 2d0*ghzpz2_dyn + ghzpz3_dyn*qq/lambda**2 )
597  gvpvp = -2d0*ghzpz4_dyn
598  endif
599  endif
600 
601 
602  call vvs1(g_mu_nu)
603  call vvs2(momext(:,5),momext(:,5),pp)
604  if(id(3).eq.convertlhe(wp_))then
605  call vvp(momext(:,4),-momext(:,3),epp)
606  else
607  call vvp(-momext(:,3),momext(:,4),epp)
608  endif
609 
610 ! assemble everything and get iM
611  matrixelement0=(0d0,0d0)
612  do mu3=1,4
613  do mu4=1,4
614  matrixelement0 = matrixelement0 + &
615  current1(mu3)*current2(mu4)*( &
616  gvvs1*g_mu_nu(mu3,mu4) + &
617  gvvs2*pp(mu3,mu4) + &
618  gvvp *epp(mu3,mu4) &
619  ) &
620  + &
621  current1(mu3)*currentvp2(mu4)*( &
622  gvvps1*g_mu_nu(mu3,mu4) + &
623  gvvps2*pp(mu3,mu4) + &
624  gvvpp *epp(mu3,mu4) &
625  ) &
626  + &
627  currentvp1(mu3)*current2(mu4)*( &
628  gvpvs1*g_mu_nu(mu3,mu4) + &
629  gvpvs2*pp(mu3,mu4) + &
630  gvpvp *epp(mu3,mu4) &
631  ) &
632  + &
633  currentvp1(mu3)*currentvp2(mu4)*( &
634  gvpvps1*g_mu_nu(mu3,mu4) + &
635  gvpvps2*pp(mu3,mu4) + &
636  gvpvpp *epp(mu3,mu4) &
637  )
638  enddo !mu4
639  enddo !mu3
640  matrixelement0 = matrixelement0*ci/vev
641 
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), helicity(9)) &
647  +kappa_tilde*ffp(id(8), momext(:,8), helicity(8), id(9), momext(:,9), helicity(9)))&
648  *(-ci/vev*getmass(convertlhereverse(id(8))))
649  else
650  matrixelement0=czero
651  endif
652 
653  !print *,"MATRIXELEMENT0=",MATRIXELEMENT0
654 
655  return

◆ matrixelement1()

subroutine modvhiggs::matrixelement1 ( real(8), dimension(1:4,1:9)  p,
integer, dimension(1:6)  FermFlav,
real(8)  UnPolSqAmp 
)
private

Definition at line 1621 of file mod_VHiggs.F90.

1621 use modparameters
1622 use modmisc
1623 implicit none
1624 complex(8) :: SME(1:3,-1:+1,-1:+1),HelAmp
1625 real(8) :: p(1:4,1:9),UnpolSqAmp,PreFac,IZis(-1:+1)
1626 real(8) :: qsq_V1,qsq_V2,qsq_V1V2,qsq_H
1627 complex(8) ghz1_dyn,ghz2_dyn,ghz3_dyn,ghz4_dyn
1628 complex(8) :: a1HVV,a2HVV,a3HVV,Prop
1629 integer :: ishel,fshel,FermFlav(1:6)! 12:IS, 34:ZDK, 56:HDK
1630 
1631  ! q1 qbar2 --> 3 --> 45 --> Z4-->f6 fbar7 + H5-->89
1632  call getsme(p,fermflav,sme)
1633  if( h_dk ) call error("Higgs decay not implemented")
1634 
1635  prop = (0d0,1d0)/(((p(1:4,4)+p(1:4,5)).dot.(p(1:4,4)+p(1:4,5))) -m_v**2 + (0d0,1d0)*m_v*ga_v )
1636  prefac = 4d0*pi*alpha_qed/4d0/sitw**2/(1d0-sitw**2) ! gets squared below
1637 
1638  ! initial state couplings
1639  if( isawdecay(decaymode1) ) then
1640  izis(+1) = br *ckm(fermflav(1),fermflav(2))
1641  izis(-1) = bl *ckm(fermflav(1),fermflav(2))
1642  elseif( isazdecay(decaymode1) .and. (abs(fermflav(1)).eq.2 .or. abs(fermflav(1)).eq.4) ) then
1643  izis(+1) = ar_qup
1644  izis(-1) = al_qup
1645  elseif( isazdecay(decaymode1) .and. (abs(fermflav(1)).eq.1 .or. abs(fermflav(1)).eq.3 .or. abs(fermflav(1)).eq.5) ) then
1646  izis(+1) = ar_qdn
1647  izis(-1) = al_qdn
1648  endif
1649 
1650 
1651  ! anomalous HVV couplings
1652  qsq_v1 = p(1:4,3).dot.p(1:4,3)
1653  qsq_v2 = p(1:4,4).dot.p(1:4,4)
1654  qsq_v1v2=-(p(1:4,3).dot.p(1:4,4))
1655  qsq_h = p(1:4,5).dot.p(1:4,5)
1656 
1657  ghz1_dyn = hvvspinzerodynamiccoupling(1,qsq_v1,qsq_v2,qsq_h)
1658  ghz2_dyn = hvvspinzerodynamiccoupling(2,qsq_v1,qsq_v2,qsq_h)
1659  ghz3_dyn = hvvspinzerodynamiccoupling(3,qsq_v1,qsq_v2,qsq_h)
1660  ghz4_dyn = hvvspinzerodynamiccoupling(4,qsq_v1,qsq_v2,qsq_h)
1661 
1662  a1hvv = ghz1_dyn*m_v**2 + qsq_v1v2*( 2d0*ghz2_dyn + ghz3_dyn*qsq_v1v2/lambda**2 )
1663  a2hvv =-2d0*ghz2_dyn - ghz3_dyn*qsq_v1v2/lambda**2
1664  a3hvv =-2d0*ghz4_dyn
1665 
1666  unpolsqamp = 0d0
1667  do ishel=-1,+1,2
1668  do fshel=-1,+1,2
1669  helamp = a3hvv * ( - izis(ishel)*sme(3,ishel,fshel) ) &
1670  + a2hvv * ( - izis(ishel)*sme(2,ishel,fshel) ) &
1671  + a1hvv * ( + izis(ishel)*sme(1,ishel,fshel) )
1672  helamp = helamp * prefac/vev * prop
1673  unpolsqamp = unpolsqamp + dreal( helamp*dconjg(helamp) )
1674  enddo
1675  enddo
1676  unpolsqamp = unpolsqamp * cf
1677 
1678 RETURN

◆ metric()

real(8) function modvhiggs::metric ( integer  mu,
integer  nu 
)
private

Definition at line 1228 of file mod_VHiggs.F90.

1228 
1229  implicit none
1230  integer mu, nu
1231 
1232  if(mu.ne.nu)then
1233  metric=0d0
1234  else if(mu.eq.1)then
1235  metric=1d0
1236  else
1237  metric=-1d0
1238  endif
1239 
1240  return

◆ polarization()

subroutine modvhiggs::polarization ( real(8), dimension(4)  p,
complex(8), dimension(3,4)  POL 
)
private

Definition at line 1249 of file mod_VHiggs.F90.

1249 
1250  implicit none
1251  real(8) p(4)
1252  complex(8) POL(3,4)
1253 
1254  call polarization_single(p,+1,pol(1,:))
1255  call polarization_single(p,-1,pol(2,:))
1256  call polarization_single(p, 0,pol(3,:))
1257 
1258  return

◆ polarization_single()

subroutine modvhiggs::polarization_single ( real(8), dimension(4)  p,
integer  lambda,
complex(8), dimension(4)  POL 
)
private

Definition at line 1262 of file mod_VHiggs.F90.

1262 
1263  implicit none
1264  real(8) p(4), sincos(4), inv_mass, abs3p
1265  complex(8) POL(4)
1266  integer lambda
1267 
1268  pol(:)=czero
1269 
1270  call angles(sincos, p)
1271  !sincos(1)=cos(theta)
1272  !sincos(2)=sin(theta)
1273  !sincos(3)=cos(phi)
1274  !sincos(4)=sin(phi)
1275 
1276 !lambda = +1
1277  if(lambda.eq.1) then
1278  pol(1)= 0d0
1279  pol(2)= (sincos(3)*sincos(1)-(0d0,1d0)*sincos(4))/dsqrt(2d0)
1280  pol(3)= (sincos(4)*sincos(1)+(0d0,1d0)*sincos(3))/dsqrt(2d0)
1281  pol(4)= -sincos(2)/dsqrt(2d0)
1282 !lambda = -1
1283  else if(lambda.eq.-1) then
1284  pol(1)= 0d0
1285  pol(2)= (sincos(3)*sincos(1)+(0d0,1d0)*sincos(4))/dsqrt(2d0)
1286  pol(3)= (sincos(4)*sincos(1)-(0d0,1d0)*sincos(3))/dsqrt(2d0)
1287  pol(4)= -sincos(2)/dsqrt(2d0)
1288 !lambda = 0 (z)
1289  else if(lambda.eq.0) then
1290 !|3-momentum|
1291  abs3p = dsqrt(p(2)**2+p(3)**2+p(4)**2)
1292 !invariant mass
1293  inv_mass= dsqrt(p(1)**2-abs3p**2)
1294  pol(1)= abs3p/inv_mass
1295  pol(2)= sincos(3)*sincos(2)*p(1)/inv_mass
1296  pol(3)= sincos(4)*sincos(2)*p(1)/inv_mass
1297  pol(4)= sincos(1)*p(1)/inv_mass
1298 !lambda = 2 (vec{p-hat})
1299  else if(lambda.eq.2) then
1300  pol(1)= 0d0
1301  pol(2)= sincos(3)*sincos(2)
1302  pol(3)= sincos(4)*sincos(2)
1303  pol(4)= sincos(1)
1304 !lambda = -2 (-vec{p-hat})
1305  else if(lambda.eq.-2) then
1306  pol(1)= 0d0
1307  pol(2)= -sincos(3)*sincos(2)
1308  pol(3)= -sincos(4)*sincos(2)
1309  pol(4)= -sincos(1)
1310  endif
1311 
1312  return

◆ polarizationa()

subroutine modvhiggs::polarizationa ( real(8), dimension(4)  p,
complex(8), dimension(2,4)  POL 
)
private

Definition at line 1321 of file mod_VHiggs.F90.

1321 
1322  implicit none
1323  real(8) p(4)
1324  complex(8) POL(2,4)
1325 
1326  call polarization_single(p,+1,pol(1,:))
1327  call polarization_single(p,-1,pol(2,:))
1328 
1329  return

◆ polarizationx()

subroutine modvhiggs::polarizationx ( real(8), dimension(4)  p,
complex(8), dimension(3,4)  POL 
)
private

Definition at line 1339 of file mod_VHiggs.F90.

1339 
1340  implicit none
1341  real(8) p(4)
1342  complex(8) POL(3,4)
1343 
1344  call polarization_single(p,+1,pol(1,:))
1345  call polarization_single(p,-1,pol(2,:))
1346  call polarization_single(p,+2,pol(3,:))
1347 
1348  return

◆ propagator()

complex(8) function modvhiggs::propagator ( real(8)  inv_mass,
real(8)  mass,
real(8)  width 
)
private

Definition at line 1357 of file mod_VHiggs.F90.

1357  implicit none
1358 
1359  real(8) inv_mass, mass, width
1360 
1361 !not assuming auto-conversion
1362 ! PROPAGATOR = (0d0,1d0)/(dcmplx(inv_mass**2,0d0)
1363 ! & -dcmplx(mass**2,0d0)+
1364 ! & (0d0,1d0)*dcmplx(mass,0d0)*dcmplx(width,0d0))
1365 
1366 !assuming auto-conversion. works with gfortran
1367  !print *,"Called propagator with",inv_mass,mass,width
1368  if (mass.ge.0d0) then
1369  propagator = ci / ( inv_mass**2 - mass**2 + ci*mass*width )
1370  else
1371  propagator = ci / ( inv_mass**2 )
1372  endif
1373 ! print *, PROPAGATOR
1374 
1375  return

◆ spinoru2()

subroutine modvhiggs::spinoru2 ( integer, intent(in)  n,
real(8), dimension(4,n), intent(in)  p,
complex(8), dimension(n,n), intent(out)  za,
complex(8), dimension(n,n), intent(out)  zb,
real(8), dimension(n,n), intent(out)  s 
)
private

Definition at line 1457 of file mod_VHiggs.F90.

1457  implicit none
1458  integer, intent(in) :: n
1459  real(8), intent(in) :: p(4,n)
1460  complex(8), intent(out) :: za(n,n), zb(n,n)
1461  real(8), intent(out) :: s(n,n)
1462  integer :: i,j
1463  complex(8) :: c23(n), f(n)
1464  real(8) :: rt(n)
1465 
1466  !---if one of the vectors happens to be zero this routine fails.
1467  do j=1,n
1468  za(j,j)=czero
1469  zb(j,j)=za(j,j)
1470 
1471  !-----positive energy case
1472  if (p(1,j) .gt. zero) then
1473  rt(j)=sqrt(abs(p(2,j)+p(1,j)))
1474  c23(j)=dcmplx(p(4,j),-p(3,j))
1475  f(j)=(one,zero)
1476  else
1477  !-----negative energy case
1478  rt(j)=sqrt(abs(-p(1,j)-p(2,j)))
1479  c23(j)=dcmplx(-p(4,j),p(3,j))
1480  f(j)=ci
1481  endif
1482  enddo
1483 
1484  do i=2,n
1485 
1486  do j=1,i-1
1487  s(i,j)=two*scr(p(:,i),p(:,j))
1488  za(i,j)=f(i)*f(j) * ( c23(i)*dcmplx(rt(j)/(rt(i)+1d-16))-c23(j)*dcmplx(rt(i)/(rt(j)+1d-16)) )
1489 
1490  if (abs(s(i,j)).lt.1d-5) then
1491  zb(i,j)=-(f(i)*f(j))**2*conjg(za(i,j))
1492  else
1493  zb(i,j)=-dcmplx(s(i,j))/(za(i,j)+1d-16)
1494  endif
1495 
1496  za(j,i)=-za(i,j)
1497  zb(j,i)=-zb(i,j)
1498  s(j,i)=s(i,j)
1499 
1500  enddo
1501 
1502  enddo
1503 
1504  return
1505 

◆ vvp()

subroutine modvhiggs::vvp ( real(8), dimension(4)  p1,
real(8), dimension(4)  p2,
complex(8), dimension(4,4)  epp 
)
private

Definition at line 1383 of file mod_VHiggs.F90.

1383 
1384  implicit none
1385  real(8) p1(4), p2(4)
1386  complex(8) epp(4,4)
1387 ! real(8) ANTISYMMETRIC
1388  integer i,j,k,l
1389 
1390 ! external ANTISYMMETRIC
1391 
1392  do i=1,4
1393  do j=1,4
1394  epp(i,j)=0d0
1395  enddo
1396  enddo
1397 
1398  do i=1,4
1399  do j=1,4
1400  do k=1,4
1401  do l=1,4
1402  epp(i,j)=epp(i,j)+antisymmetric(i,j,k,l)*p1(k)*p2(l)
1403  enddo
1404  enddo
1405  enddo
1406  enddo
1407 
1408  return

◆ vvs1()

subroutine modvhiggs::vvs1 ( complex(8), dimension(4,4)  g_mu_nu)
private

Definition at line 1416 of file mod_VHiggs.F90.

1416 
1417  implicit none
1418  complex(8) g_mu_nu(4,4)
1419 
1420  g_mu_nu = 0d0
1421 
1422  g_mu_nu(1,1) = 1d0
1423  g_mu_nu(2,2) = -1d0
1424  g_mu_nu(3,3) = -1d0
1425  g_mu_nu(4,4) = -1d0
1426 
1427  return

◆ vvs2()

subroutine modvhiggs::vvs2 ( real(8), dimension(4)  p1,
real(8), dimension(4)  p2,
complex(8), dimension(4,4)  pp 
)
private

Definition at line 1435 of file mod_VHiggs.F90.

1435 
1436  implicit none
1437  real(8) p1(4), p2(4)
1438  complex(8) pp(4,4)
1439  integer mu, nu
1440 
1441  do mu=1,4
1442  do nu=1,4
1443  pp(mu,nu)=p1(mu)*p2(nu)
1444  if( ( (mu.ne.1).and.(nu.eq.1) ).or. &
1445  ( (mu.eq.1).and.(nu.ne.1) ) )then
1446  pp(mu,nu)=-pp(mu,nu)
1447  endif
1448  enddo
1449  enddo
1450 
1451  return
modmisc::error
subroutine error(Message, ErrNum)
Definition: mod_Misc.F90:366
modkinematics::kronecker_delta
double precision function kronecker_delta(i, j)
Definition: mod_Kinematics.F90:1179
modmisc::scrc
double complex function scrc(p1, p2)
Definition: mod_Misc.F90:142
modparameters
Definition: mod_Parameters.F90:1
modmisc
Definition: mod_Misc.F90:1
modmisc::scr
double precision function scr(p1, p2)
Definition: mod_Misc.F90:135
modmisc::swap
Definition: mod_Misc.F90:5