JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
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