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.
 
 
 
 
 
 

201 lines
4.2 KiB

!
! SPDX-License-Identifier: GPL-3.0-or-later
! Copyright (C) 2019-2022, respective authors of MCFM.
!
subroutine ckmfill(nwz)
implicit none
include 'types.f'
include 'nf.f'
include 'mxpart.f'
include 'ckm.f'
include 'ckm1.f'
include 'ewcouple.f'
include 'zcouple.f'
include 'Cabibbo.f'
include 'first.f'
include 'blha.f'
integer:: nwz,j,k
real(dp):: rtxw
c--- if using 'CKMrotate', store a copy of VCKM and then set to a diagonal matrix
if (first) then
if (CKMdiag) then
Vud = 1._dp
Vus = 0._dp
Vub = 0._dp
Vcd = 0._dp
Vcs = 1._dp
Vcb = 0._dp
endif
if (CKMrotate ) then
Vud_rotate = Vud
Vus_rotate = Vus
Vub_rotate = Vub
Vcd_rotate = Vcd
Vcs_rotate = Vcs
Vcb_rotate = Vcb
Vud = 1._dp
Vus = 0._dp
Vub = 0._dp
Vcd = 0._dp
Vcs = 1._dp
Vcb = 0._dp
endif
first = .false.
endif
c---- initialize Vsq
do j=-nf,nf
do k=-nf,nf
Vsq(j,k)=0._dp
enddo
enddo
c set all other couplings (for W+2 jets) to zero too
flsq=0._dp
frsq=0._dp
fl=0._dp
fr=0._dp
do j=-nf,nf
do k=-nf,nf
gl(j,k)=0._dp
gr(j,k)=0._dp
glsq(j,k)=0._dp
grsq(j,k)=0._dp
enddo
enddo
c case BLHA
if (useblha==1) then
c Vsq(1,-1)=1._dp
c Vsq(2,-2)=1._dp
c Vsq(3,-3)=1._dp
c Vsq(4,-4)=1._dp
c Vsq(5,-5)=1._dp
Vsq(2,-1)=Vud**2
Vsq(2,-3)=Vus**2
Vsq(2,-5)=Vub**2
Vsq(4,-1)=Vcd**2
Vsq(4,-3)=Vcs**2
Vsq(4,-5)=Vcb**2
Vsq(1,-2)=Vud**2
Vsq(3,-2)=Vus**2
Vsq(5,-2)=Vub**2
Vsq(1,-4)=Vcd**2
Vsq(3,-4)=Vcs**2
Vsq(5,-4)=Vcb**2
endif
c case Z0
if (nwz == 0) then
Vsq(1,-1)=1._dp
Vsq(2,-2)=1._dp
Vsq(3,-3)=1._dp
Vsq(4,-4)=1._dp
Vsq(5,-5)=1._dp
rtxw=sqrt(xw)
do j=1,5
gl(+j,-j)=l(j)*gw*rtxw
gr(+j,-j)=r(j)*gw*rtxw
enddo
fl=le*gw*rtxw
fr=re*gw*rtxw
do j=1,nf
glsq(j,-j)=gl(j,-j)**2
grsq(j,-j)=gr(j,-j)**2
enddo
flsq=fl**2
frsq=fr**2
return
c case W+
elseif (nwz == 1) then
Vsq(2,-1)=Vud**2
Vsq(2,-3)=Vus**2
Vsq(2,-5)=Vub**2
Vsq(4,-1)=Vcd**2
Vsq(4,-3)=Vcs**2
Vsq(4,-5)=Vcb**2
glsq(2,-1)=gwsq/2._dp
glsq(2,-3)=gwsq/2._dp
glsq(2,-5)=gwsq/2._dp
glsq(4,-1)=gwsq/2._dp
glsq(4,-3)=gwsq/2._dp
glsq(4,-5)=gwsq/2._dp
flsq=gwsq/2._dp
fl=sqrt(flsq)
c case W-
elseif (nwz == -1) then
Vsq(1,-2)=Vud**2
Vsq(3,-2)=Vus**2
Vsq(5,-2)=Vub**2
Vsq(1,-4)=Vcd**2
Vsq(3,-4)=Vcs**2
Vsq(5,-4)=Vcb**2
glsq(1,-2)=gwsq/2._dp
glsq(3,-2)=gwsq/2._dp
glsq(5,-2)=gwsq/2._dp
glsq(1,-4)=gwsq/2._dp
glsq(3,-4)=gwsq/2._dp
glsq(5,-4)=gwsq/2._dp
flsq=gwsq/2._dp
fl=sqrt(flsq)
c case (W+ + W-)
elseif (nwz == 2) then
c case W+
Vsq(2,-1)=Vud**2
Vsq(2,-3)=Vus**2
Vsq(2,-5)=Vub**2
Vsq(4,-1)=Vcd**2
Vsq(4,-3)=Vcs**2
Vsq(4,-5)=Vcb**2
glsq(2,-1)=gwsq/2._dp
glsq(2,-3)=gwsq/2._dp
glsq(2,-5)=gwsq/2._dp
glsq(4,-1)=gwsq/2._dp
glsq(4,-3)=gwsq/2._dp
glsq(4,-5)=gwsq/2._dp
c case W-
Vsq(1,-2)=Vud**2
Vsq(3,-2)=Vus**2
Vsq(5,-2)=Vub**2
Vsq(1,-4)=Vcd**2
Vsq(3,-4)=Vcs**2
Vsq(5,-4)=Vcb**2
glsq(1,-2)=gwsq/2._dp
glsq(3,-2)=gwsq/2._dp
glsq(5,-2)=gwsq/2._dp
glsq(1,-4)=gwsq/2._dp
glsq(3,-4)=gwsq/2._dp
glsq(5,-4)=gwsq/2._dp
flsq=gwsq/2._dp
fl=sqrt(flsq)
endif
do j=-nf,nf
do k=-nf,nf
Vsq(j,k)=Vsq(k,j)
glsq(j,k)=glsq(k,j)
grsq(j,k)=grsq(k,j)
VV(j,k)=sqrt(Vsq(j,k))
gl(j,k)=sqrt(glsq(j,k))
gr(j,k)=sqrt(grsq(j,k))
enddo
enddo
do j=1,5
Vsum(+j)=Vsq(+j,-1)+Vsq(+j,-2)+Vsq(+j,-3)+Vsq(+j,-4)+Vsq(+j,-5)
Vsum(-j)=Vsq(-j,+1)+Vsq(-j,+2)+Vsq(-j,+3)+Vsq(-j,+4)+Vsq(-j,+5)
enddo
Vsum(0)=0
return
end