You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
4.0 KiB

!
! SPDX-License-Identifier: GPL-3.0-or-later
! Copyright (C) 2019-2022, respective authors of MCFM.
!
subroutine qb_wtq(mq,qwidth,p,ix,is,ie,in,jn,je,jb,iy,msq)
implicit none
include 'types.f'
c***********************************************************************
c Author: Francesco Tramontano *
c February, 2005. *
c Real correction to W+t, radiation in production *
c *
c Matrix element squared and averaged over initial colours and spins*
c--- W+t production (nwz=-1) *
c q(-ix) + b(-is) --> W + t(pneb) + q(iy) *
c | | *
c | --> nu(jn) + e^+(jn) + b(jb) *
c | *
c --> e^-(ie) + nubar(in) *
c--- W+tbar production (nwz=+1) *
c q(-p1) + qbar(-p2) --> W + t(p567) + f(p8) *
c | | *
c | --> e^-(p5) + nubar(p6) + b(p7) *
c | *
c --> nu(p3) + e^+(p4) *
c***********************************************************************
c---- helicities: 1=minus 2=plus
include 'constants.f'
include 'mxpart.f'
include 'qcdcouple.f'
include 'ewcouple.f'
include 'masses.f'
integer:: ix,is,ie,in,jn,je,jb,iy
real(dp):: p(mxpart,4),fac,prop,dot,msq,mq,qwidth
complex(dp):: amp(2)
fac=aveqq*gsq**2*gw**8*xn*cf*half
prop=(two*dot(p,ie,in)-wmass**2)**2+(wmass*wwidth)**2
prop=prop*((two*dot(p,jn,je)-wmass**2)**2+(wmass*wwidth)**2)
prop=prop*((two*(dot(p,jn,je)+dot(p,jn,jb)+dot(p,je,jb))-mq**2)**2
& +(mq*qwidth)**2)
call amps_4quark(mq,qwidth,p,ix,is,ie,in,jn,je,jb,iy,amp)
msq=abs(amp(1))**2+abs(amp(2))**2
msq=fac*msq/prop
return
end
subroutine amps_4quark(mq,qwidth,p,ix,is,ie,in,jn,je,jb,iy,amp)
implicit none
include 'types.f'
include 'constants.f'
include 'mxpart.f'
include 'zprods_decl.f'
integer:: j,ix,is,ie,in,jn,je,jb,iy
real(dp):: p(mxpart,4),dot,xDy,txy2,sxy2,t(4),q(mxpart,4),
& mq,qwidth
complex(dp):: amp(2),zab(mxpart,mxpart),zba(mxpart,mxpart)
do j=1,4
t(j)=p(jn,j)+p(je,j)+p(jb,j)
q(1,j)=t(j)
q(2,j)=p(ix,j)
q(3,j)=p(iy,j)
enddo
xDy=dot(p,ix,iy)
sxy2=two*(dot(p,is,ix)+dot(p,is,iy)+dot(p,ix,iy))
txy2=two*(dot(q,1,2)+dot(q,1,3)+dot(q,2,3))
call spinoru(8,p,za,zb)
call spinork(8,p,zab,zba,t)
amp(1)= + zab(iy,je)*xDy**(-1) * ( za(jb,jn)*za(iy,ie
& )*zb(in,is)*zb(ix,iy) )
amp(1) = amp(1) + zab(ie,je)*sxy2**(-1)*xDy**(-1)*txy2 * (
& - za(jb,jn
& )*za(ix,iy)*zb(in,ix)*zb(ix,is) - za(jb,jn)*za(iy,iy)*zb(in,
& iy)*zb(ix,is) - za(jb,jn)*za(is,iy)*zb(in,is)*zb(ix,is) )
amp(1) = amp(1) + zab(ie,je)*zab(iy,ix)*xDy**(-1) * (
& za(jb,jn)*zb(in,is) )
amp(2)= + zab(ix,je)*xDy**(-1) * ( za(jb,jn)*za(ix,ie
& )*zb(in,is)*zb(iy,ix) )
amp(2) = amp(2) + zab(ie,je)*sxy2**(-1)*xDy**(-1)*txy2 * (
& - za(jb,jn
& )*za(ix,ix)*zb(in,ix)*zb(iy,is) - za(jb,jn)*za(iy,ix)*zb(in,
& iy)*zb(iy,is) - za(jb,jn)*za(is,ix)*zb(in,is)*zb(iy,is) )
amp(2) = amp(2) + zab(ie,je)*zab(ix,iy)*xDy**(-1) * (
& za(jb,jn)*zb(in,is) )
c--- Use the "overall scheme" to include the top width when necessary
if (txy2+mq**2 > zero) then
txy2=sqrt(txy2**2+(mq*qwidth)**2)
endif
amp(1)=amp(1)/txy2
amp(2)=amp(2)/txy2
return
end