1
1
SUBROUTINE SBORN_SF(P_BORN,M,N,WGT)
3
3
INCLUDE 'nexternal.inc'
4
DOUBLE PRECISION P_BORN(0:3,NEXTERNAL-1),WGT
8
C b_sf_001 links partons 1 and 2
9
IF ((M.EQ.1 .AND. N.EQ.2).OR.(M.EQ.2 .AND. N.EQ.1)) THEN
10
CALL SB_SF_001(P_BORN,WGT)
5
DOUBLE PRECISION P_BORN(0:3,NEXTERNAL-1), WGT
7
PARAMETER (NSQAMPSO = 1)
9
C return the color-linked borns if i_fks is a color octet,
10
C the charge-linked if it is a color singlet
11
DOUBLE COMPLEX WGT_BORN(2,0:NSQAMPSO)
12
DOUBLE PRECISION WGT_COL
13
DOUBLE PRECISION CHARGEPROD
16
COMPLEX*16 ANS_CNT(2, NSPLITORDERS)
17
COMMON /C_BORN_CNT/ ANS_CNT
18
LOGICAL KEEP_ORDER_CNT(NSPLITORDERS, NSQAMPSO)
19
COMMON /C_KEEP_ORDER_CNT/ KEEP_ORDER_CNT
20
DOUBLE PRECISION CHARGES_BORN(NEXTERNAL-1)
21
COMMON /C_CHARGES_BORN/CHARGES_BORN
22
LOGICAL NEED_COLOR_LINKS, NEED_CHARGE_LINKS
23
COMMON /C_NEED_LINKS/NEED_COLOR_LINKS, NEED_CHARGE_LINKS
24
DOUBLE PRECISION PMASS(NEXTERNAL), ZERO
26
DOUBLE PRECISION AMP_SPLIT_SOFT(AMP_SPLIT_SIZE)
27
COMMON /TO_AMP_SPLIT_SOFT/AMP_SPLIT_SOFT
31
IF (NEED_COLOR_LINKS.AND.NEED_CHARGE_LINKS) THEN
32
WRITE(*,*) 'ERROR IN SBORN_SF, both color and charged links'
36
C check if need color or charge links, and include the gs/w**2
38
IF (NEED_COLOR_LINKS) THEN
39
C link partons 1 and 2
40
IF ((M.EQ.1 .AND. N.EQ.2).OR.(M.EQ.2 .AND. N.EQ.1)) THEN
41
CALL SB_SF_001(P_BORN,WGT_COL)
45
C update the amp_split_soft, which is summed in sbornsoft
46
AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
47
$ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QCD_POS)) * G**2
49
ELSE IF (NEED_CHARGE_LINKS) THEN
50
CHARGEPROD = CHARGES_BORN(M) * CHARGES_BORN(N)
51
IF ((M.LE.NINCOMING.AND.N.GT.NINCOMING) .OR.
52
$ (N.LE.NINCOMING.AND.M.GT.NINCOMING)) CHARGEPROD = -
54
C add a factor 1/2 for the self-eikonal soft link
55
IF (M.EQ.N) CHARGEPROD = CHARGEPROD / 2D0
56
WGT = DBLE(ANS_CNT(1, QED_POS)) * CHARGEPROD * DBLE(GAL(1))**2
57
C update the amp_split_soft, which is summed in sbornsoft
58
AMP_SPLIT_SOFT(1:AMP_SPLIT_SIZE) =
59
$ DBLE(AMP_SPLIT_CNT(1:AMP_SPLIT_SIZE,1,QED_POS)) * CHARGEPROD