JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
mod_HiggsJ.F90
Go to the documentation of this file.
1 module modhiggsj
2  use modparameters
3  use modmisc
4  implicit none
5  private
6 
7  public :: evalamp_hj
8 
9 contains
10 
11 subroutine evalamp_hj(p,res)
12  real(dp), intent(in) :: p(4,4)
13  complex(dp) :: heftcoupl
14  real(dp), intent(out) :: res(-5:5,-5:5)
15  real(dp) :: sprod(4,4)
16  complex(dp) :: za(4,4), zb(4,4)
17  real(dp) :: restmp!, restmpid
18  integer :: i,j
19 
20  heftcoupl = gs*alphas/(6.0_dp * pi * vev)
21  res=zero
22 
23  call spinoru2(3,(/-p(:,1),-p(:,2),p(:,4)/),za,zb,sprod)
24 
25  call me2_ggg_tree(1,2,3,sprod,res(0,0))
26  res(0,0) = res(0,0)*avegg
27 
28  do i=1,5
29  call me2_qbqg_tree(2,3,1,sprod,res(0,i))
30  res(0,i) = -res(0,i)*aveqg
31  !print *,res(0,i)
32  enddo
33 
34  do i=1,5
35  call me2_qbqg_tree(1,3,2,sprod,res(i,0))
36  res(i,0) = -res(i,0)*aveqg
37  !print *,res(i,0)
38  enddo
39 
40  do i=1,5
41  call me2_qbqg_tree(3,2,1,sprod,res(0,-i))
42  res(0,-i) = -res(0,-i)*aveqg
43  !print *,res(0,-i)
44  enddo
45 
46  do i=1,5
47  call me2_qbqg_tree(1,3,2,sprod,res(-i,0))
48  res(-i,0) = -res(-i,0)*aveqg
49  !if(res(-i,0).le.0d0) then
50  !print *,res(-i,0)
51  !endif
52  enddo
53 
54  do i=1,5
55  call me2_qbqg_tree(1,2,3,sprod,res(-i,i))
56  res(-i,i) = res(-i,i) * aveqq
57 ! res(i,-i) = res(i,-i) + restmp * aveqq
58 ! res(0, i) = res(0, i) + restmp * aveqg
59 ! res(0,-i) = res(0,-i) + restmp * aveqg
60 ! res(i, 0) = res(i, 0) + restmp * aveqg
61 ! res(-i,0) = res(-i,0) + restmp * aveqg
62  enddo
63 
64  do i=1,5
65  call me2_qbqg_tree(2,1,3,sprod,res(i,-i))
66  res(i,-i) = res(i,-i)*aveqq
67  enddo
68 
69  res = res * (heftcoupl**2)
70 !if(res(0,0).gt.10000d0)then
71  !do i = -5,5
72  !do j = -5,5
73  !print *, res(i,j),i,j
74  !enddo
75  !enddo
76 ! print *, dsqrt(scr(p(:,1),p(:,1))), dsqrt(scr(p(:,2),p(:,2))), dsqrt(scr(p(:,3),p(:,3))), dsqrt(scr(p(:,4),p(:,4)))
77 ! print*, p
78 !endif
79 
80 end subroutine evalamp_hj
81 
82 
83 
84 
85 
86 subroutine me2_ggg_tree(j1,j2,j3,sprod,me2)
87  integer, intent(in) :: j1,j2,j3
88  real(dp), intent(in) :: sprod(3,3)
89  real(dp), intent(out) :: me2
90  real(dp) :: s12, s13, s23, qsq
91  real(dp), parameter :: col_gg = 4.0d0 * ca**2 * cf
92 
93  me2 = zero
94 
95  s12 = sprod(j1,j2)
96  s13 = sprod(j1,j3)
97  s23 = sprod(j2,j3)
98 
99  qsq = s12 + s13 + s23
100 
101  me2 = (s12**4 + s13**4 + s23**4 + qsq**4)/s12/s13/s23
102 
103  me2 = me2 * two * col_gg
104 
105  return
106 
107 end subroutine me2_ggg_tree
108 
109 
110 !-- 0 -> qb(p1) q(p2) g(p3) H
111 subroutine me2_qbqg_tree(j1,j2,j3,sprod,me2)
112  integer, intent(in) :: j1, j2, j3
113  real(dp), intent(in) :: sprod(3,3)
114  real(dp), intent(out) :: me2
115  real(dp) :: s12, s13,s23
116  real(dp), parameter :: col_qg = two * xn * cf
117 
118  me2 = zero
119 
120  s12 = sprod(j1,j2)
121  s13 = sprod(j1,j3)
122  s23 = sprod(j2,j3)
123 
124  me2 = two * (s13**2 + s23**2)/s12 * col_qg
125 !if(me2.le.0d0)then
126 !print *, s12,s13,s23
127 !endif
128  return
129 
130 end subroutine me2_qbqg_tree
131 
132 
133  !-------------------------------------------------------------------------
134  !-- generic functions below
135  !- MCFM spinors
136  subroutine spinoru2(n,p,za,zb,s)
137  implicit none
138  integer, intent(in) :: n
139  real(dp), intent(in) :: p(4,n)
140  complex(dp), intent(out) :: za(n,n), zb(n,n)
141  real(dp), intent(out) :: s(n,n)
142  integer :: i,j
143  complex(dp) :: c23(n), f(n)
144  real(dp) :: rt(n)
145 
146  !---if one of the vectors happens to be zero this routine fails.
147  do j=1,n
148  za(j,j)=czero
149  zb(j,j)=za(j,j)
150 
151  !-----positive energy case
152  if (p(1,j) .gt. zero) then
153  rt(j)=sqrt(p(2,j)+p(1,j))
154  c23(j)=cmplx(p(4,j),-p(3,j),kind=dp)
155  f(j)=(one,zero)
156  else
157  !-----negative energy case
158  rt(j)=sqrt(-p(1,j)-p(2,j))
159  c23(j)=cmplx(-p(4,j),p(3,j),kind=dp)
160  f(j)=ci
161  endif
162  enddo
163 
164  do i=2,n
165 
166  do j=1,i-1
167  s(i,j)=two*scr(p(:,i),p(:,j))
168  za(i,j)=f(i)*f(j) &
169  *(c23(i)*cmplx(rt(j)/rt(i),kind=dp)-c23(j)*cmplx(rt(i)/rt(j),kind=dp))
170 
171  if (abs(s(i,j)).lt.1d-5) then
172  zb(i,j)=-(f(i)*f(j))**2*conjg(za(i,j))
173  else
174  zb(i,j)=-cmplx(s(i,j),kind=dp)/za(i,j)
175  endif
176 
177  za(j,i)=-za(i,j)
178  zb(j,i)=-zb(i,j)
179  s(j,i)=s(i,j)
180 
181  enddo
182 
183  enddo
184 
185  return
186 
187  end subroutine spinoru2
188 
189 
190 end module modhiggsj
modparameters::vev
real(8), public vev
Definition: mod_Parameters.F90:249
modparameters::gs
real(dp), public gs
Definition: mod_Parameters.F90:271
modparameters::aveqq
real(dp), parameter, public aveqq
Definition: mod_Parameters.F90:1021
modhiggsj::spinoru2
subroutine spinoru2(n, p, za, zb, s)
Definition: mod_HiggsJ.F90:137
modparameters::cf
real(dp), parameter, public cf
Definition: mod_Parameters.F90:1017
modparameters::one
real(8), parameter, public one
Definition: mod_Parameters.F90:83
modparameters::two
real(8), parameter, public two
Definition: mod_Parameters.F90:84
modparameters::ci
complex(8), parameter, public ci
Definition: mod_Parameters.F90:88
modparameters::avegg
real(dp), parameter, public avegg
Definition: mod_Parameters.F90:1019
modparameters::zero
real(8), parameter, public zero
Definition: mod_Parameters.F90:85
modparameters::ca
real(dp), parameter, public ca
Definition: mod_Parameters.F90:1016
modparameters::xn
real(dp), parameter, public xn
Definition: mod_Parameters.F90:1015
modparameters::czero
complex(8), parameter, public czero
Definition: mod_Parameters.F90:86
modparameters::aveqg
real(dp), parameter, public aveqg
Definition: mod_Parameters.F90:1020
modhiggsj::evalamp_hj
subroutine, public evalamp_hj(p, res)
Definition: mod_HiggsJ.F90:12
modhiggsj
Definition: mod_HiggsJ.F90:1
modparameters
Definition: mod_Parameters.F90:1
modmisc
Definition: mod_Misc.F90:1
modhiggsj::me2_qbqg_tree
subroutine me2_qbqg_tree(j1, j2, j3, sprod, me2)
Definition: mod_HiggsJ.F90:112
modparameters::dp
integer, parameter, public dp
Definition: mod_Parameters.F90:11
modmisc::scr
double precision function scr(p1, p2)
Definition: mod_Misc.F90:135
modparameters::alphas
real(dp), public alphas
Definition: mod_Parameters.F90:269
modhiggsj::me2_ggg_tree
subroutine me2_ggg_tree(j1, j2, j3, sprod, me2)
Definition: mod_HiggsJ.F90:87