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.
95 lines
3.4 KiB
95 lines
3.4 KiB
!
|
|
! SPDX-License-Identifier: GPL-3.0-or-later
|
|
! Copyright (C) 2019-2022, respective authors of MCFM.
|
|
!
|
|
subroutine qqb_tbbdk_gs(p,msq)
|
|
implicit none
|
|
include 'types.f'
|
|
c***********************************************************************
|
|
c Author: J.M. Campbell *
|
|
c February, 2012. *
|
|
c calculate the subtraction terms for the process *
|
|
c *
|
|
c u(-p1) +dbar(-p2)=t(nu(p3)+e+(p4)+b(p5))+bbar(p6) *
|
|
c or *
|
|
c d(-p1) +ubar(-p2)=t~(e-(p3)+nu~(p4)+bb(p5))+b(p6) *
|
|
c *
|
|
c Top (antitop) is kept strictly on-shell *
|
|
c although all spin correlations are retained. *
|
|
c *
|
|
c NOTE: this routine is a replacement for qqb_tbb_gs.f that *
|
|
c includes the effect of the b-quark mass. *
|
|
c *
|
|
c***********************************************************************
|
|
include 'constants.f'
|
|
include 'nf.f'
|
|
include 'mxpart.f'
|
|
include 'ptilde.f'
|
|
include 'qqgg.f'
|
|
include 'masses.f'
|
|
include 'breit.f'
|
|
integer:: j,k,nd
|
|
|
|
real(dp):: p(mxpart,4),msq(maxd,-nf:nf,-nf:nf)
|
|
real(dp)::
|
|
& msq15_2(-nf:nf,-nf:nf),msq25_1(-nf:nf,-nf:nf),
|
|
& msq35_4(-nf:nf,-nf:nf),msq45_3(-nf:nf,-nf:nf),
|
|
& sub15_2(4),sub25_1(4),
|
|
& sub35_4(4),sub45_3(4),
|
|
& dummyv(-nf:nf,-nf:nf),dsubv
|
|
real(dp):: oldmass2
|
|
external qqb_tbbdk,donothing_gvec
|
|
|
|
ndmax=4
|
|
|
|
c---- calculate both initial-initial dipoles
|
|
c---- note that we do not require the gg dipoles, so the v-type
|
|
c---- entries are left as dummies
|
|
call dips_mass(1,p,1,5,2,sub15_2,dsubv,msq15_2,dummyv,
|
|
& qqb_tbbdk,donothing_gvec)
|
|
call dips_mass(2,p,2,5,1,sub25_1,dsubv,msq25_1,dummyv,
|
|
& qqb_tbbdk,donothing_gvec)
|
|
|
|
c--- dipoles for the final state
|
|
qqproc=.true.
|
|
oldmass2=mass2
|
|
mass2=mt
|
|
call dips_mass(3,p,3,5,4,sub35_4,dsubv,msq35_4,dummyv,
|
|
& qqb_tbbdk,donothing_gvec)
|
|
mass2=mb
|
|
call dips_mass(4,p,4,5,3,sub45_3,dsubv,msq45_3,dummyv,
|
|
& qqb_tbbdk,donothing_gvec)
|
|
mass2=oldmass2
|
|
|
|
do j=-nf,nf
|
|
do k=-nf,nf
|
|
|
|
do nd=1,ndmax
|
|
msq(nd,j,k)=0._dp
|
|
enddo
|
|
|
|
if ((j > 0) .and. (k < 0)
|
|
& .or. (j < 0) .and. (k > 0)) then
|
|
msq(1,j,k)=2._dp*cf*sub15_2(qq)*msq15_2(j,k)
|
|
msq(2,j,k)=2._dp*cf*sub25_1(qq)*msq25_1(j,k)
|
|
msq(3,j,k)=2._dp*cf*sub35_4(qq)*msq35_4(j,k)
|
|
msq(4,j,k)=2._dp*cf*sub45_3(qq)*msq45_3(j,k)
|
|
elseif ((j /= 0) .and. (k == 0)) then
|
|
msq(2,j,k)=2._dp*tr*sub25_1(qg)*(
|
|
& msq25_1(j,+1)+msq25_1(j,+2)+msq25_1(j,+3)+msq25_1(j,+4)
|
|
& +msq25_1(j,+5)+msq25_1(j,-1)+msq25_1(j,-2)+msq25_1(j,-3)
|
|
& +msq25_1(j,-4)+msq25_1(j,-5))
|
|
elseif ((j == 0) .and. (k /= 0)) then
|
|
msq(1,j,k)=2._dp*tr*sub15_2(qg)*(
|
|
& msq15_2(+1,k)+msq15_2(+2,k)+msq15_2(+3,k)+msq15_2(+4,k)
|
|
& +msq15_2(+5,k)+msq15_2(-1,k)+msq15_2(-2,k)+msq15_2(-3,k)
|
|
& +msq15_2(-4,k)+msq15_2(-5,k))
|
|
endif
|
|
|
|
enddo
|
|
enddo
|
|
|
|
return
|
|
end
|
|
|
|
|