]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/rkbbv.F
More exact rounding function, but also much slower.
[u/mrichter/AliRoot.git] / PYTHIA / pythia / rkbbv.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE RKBBV(AK1,AK2,AP1,AP2,ALEP1,ALEP2,IMC,RESULT)
5  
6 C...The following routines have been written by Ronald Kleiss,
7 C...to evaluate the matrix element for g + g -> Z + q + qbar,
8 C...with massive quarks (e.g. q = b).
9 C...They have been modified, so that all routines and commonblocks
10 C...have names beginning with RK, and so that some unnecessary
11 C...initialization information is not printed. Further, COMPLEX*16
12 C...has been changed to COMPLEX and REAL*8 to DOUBLE PRECISION
13 C...(in a few cases to REAL), so as to make the program better
14 C...transportable.
15  
16 * THE CROSS SECTION FOR
17 * G(K1) + G(K2) ---> Z(QV) + B(P1) + B_BAR(P2)
18 *                     |
19 *                     +---> L(LEP1) + LEP_BAR(LEP2)
20 * THE B QUARKS HAVE TO BE ON-SHELL, THE LEPTONS MASSLESS
21 * THE OPTION IMC=0 PERFORMS THE STANDARD SPIN SUM
22 * THE OPTION IMC=1 PERFORMS THE CALCULATION FOR 'NMC' RANDOMLY
23 * CHOSEN HELICITY STATES WHICH IMPROVES THE
24 * SPEED BY A FACTOR 32/NMC
25       SAVE
26  
27       REAL AK1(0:3),AK2(0:3),AP1(0:3),AP2(0:3),ALEP1(0:3),ALEP2(0:3)
28       DOUBLE PRECISION K1(0:4),K2(0:4),P1(0:4),P2(0:4),LEP1(0:4),
29      &LEP2(0:4)
30       REAL RMQ,RMV,RGV,GSTR,VB,AB,VL,AL
31       INTEGER INIT
32       INTEGER J1,J2,J3,J4,J5
33       INTEGER K,IMC,KLOW,KUPP,NMC,OLDIMC
34       DOUBLE PRECISION RKRAND,RKDOT,MULT,RMB
35 C      INTEGER CHKGL1,CHKGL2
36       DOUBLE PRECISION QV(0:4),R1(0:4),R2(0:4),Q1(0:4),Q2(0:4)
37       DOUBLE PRECISION PP2(0:4)
38       DOUBLE PRECISION CROSS
39       INTEGER LG1,LG2,LV,L1,L2,HELIX,HELI
40       COMPLEX ZFACV,ZFAC1,ZFAC2
41       DOUBLE PRECISION ZFACS,ZFACB,ZFACBB,ZFACL
42       COMPLEX RKZSF
43       COMPLEX ZFAC
44       DOUBLE PRECISION VPA,VMA
45       DOUBLE PRECISION RR1(0:4),RR2(0:4)
46       DOUBLE PRECISION ZD12V,ZD21V,ZD1V2,ZD2V1,ZDV12,ZDV21
47       COMPLEX RKZF,ZN12V,ZN21V,ZN1V2,ZN2V1,ZNV12,ZNV21
48       COMPLEX ZDIA1,ZDIA2,ZDIA3,ZDIA4,ZDIA5,ZDIA6,ZDIA7,ZDIA8
49       COMPLEX ZC12V,ZC21V,ZCV12,ZCV21
50       DOUBLE PRECISION S,ZD11,ZD22
51       COMPLEX ZABEL,ZNABEL,ZNABEM
52       REAL RESULT
53       DOUBLE PRECISION THIS1
54       COMPLEX ANSS(-1:1,1:4,-1:1,1:4)
55       INTEGER DONS(-1:1,1:4,-1:1,1:4)
56       COMPLEX ANSF(-1:1,1:4,1:8,-1:1,1:4)
57       INTEGER DONF(-1:1,1:4,1:8,-1:1,1:4)
58  
59 C      PARAMETER(CHKGL1=0,CHKGL2=0)
60       PARAMETER(NMC=1)
61  
62       COMMON/RKZSCO/ANSS,DONS
63       COMMON/RKZFCO/ANSF,DONF
64       COMMON/RKBBVC/RMQ,RMV,RGV,VB,AB,VL,AL
65       DATA INIT/0/
66  
67 * CHECK ON EITHER FIRST CALL OR CHANGE IN IMC
68       IF(INIT.EQ.0.OR.IMC.NE.OLDIMC) THEN
69         OLDIMC=IMC
70         INIT=1
71 * REPRODUCE INPUT DATA
72 C       WRITE(6,*) ' ----------------------------------------'
73 C       WRITE(6,*) ' BBV: G G ---> B B_BAR Z, Z ---> L L_BAR'
74 C       WRITE(6,*) ' B QUARK MASS      = ',RMB,' GEV'
75 C       WRITE(6,*) ' BOSON MASS        = ',RMV,' GEV'
76 C       WRITE(6,*) ' BOSON WIDTH       = ',RGV,' GEV'
77 C       WRITE(6,*) ' B VECTOR C.       = ',VB
78 C       WRITE(6,*) ' B AXIAL C.        = ',AB
79 C       WRITE(6,*) ' LEPTON VECTOR C.  = ',VL
80 C       WRITE(6,*) ' LEPTON AXIAL C.   = ',AL
81         RMB=RMQ
82 * ADJUST STRONG COUPLING SO AS TO GIVE EFFECTIVELY ALPHA_S=1
83         GSTR=4D0*DSQRT(DATAN(1D0))
84 C       WRITE(6,*) ' QCD COUPLING      = ',GSTR
85 * SEE WETHER GAUGE CHECKS ARE REQUIRED
86 C        IF(CHKGL1.EQ.1) THEN
87 C          WRITE(6,*) ' GAUGE CHECK ON GLUON 1'
88 C        ENDIF
89 C        IF(CHKGL2.EQ.1) THEN
90 C          WRITE(6,*) ' GAUGE CHECK ON GLUON 2'
91 C        ENDIF
92 * SEE WETHER HELICITY MONTE CARLO IS REQUIRED
93         IF(IMC.EQ.0) THEN
94           KLOW=1
95           KUPP=32
96           MULT=1D0
97           WRITE(6,*) ' SUM OVER HELICITIES SELECTED'
98         ELSEIF(IMC.EQ.1) THEN
99           KLOW=1
100           KUPP=NMC
101           MULT=32D0/(1D0*NMC)
102 C         WRITE(6,*) ' MONTE CARLO OVER HELICITES SELECTED'
103 C         WRITE(6,*) ' WITH ',NMC,' HELICITY TRIALS'
104 C         WRITE(6,*) ' RESULT THEN MULTIPLIED BY ',MULT
105         ELSE
106           WRITE(6,*) ' ERROR: WRONG OPTION IMC=',IMC
107         ENDIF
108 C       WRITE(6,*) ' THE RESULT IS BASED ON ALPHA_S=1,',
109 C    .  ' MUST BE MULTIPLIED BY ALPHA_S**2'
110 C       WRITE(6,*) ' ----------------------------------------'
111 C       WRITE(6,800)'NO.','LG1','LG2','LV','L1','L2','AMP**2'
112 C 800   FORMAT(' ',6A4,A10)
113       ENDIF
114  
115 * INITIALIZE THE ARRAYS ANSS,DONS
116       DO 130 J1=-1,1,2
117         DO 120 J2=1,4
118           DO 110 J3=-1,1,2
119             DO 100 J4=1,4
120               ANSS(J1,J2,J3,J4)=(0.,0.)
121               DONS(J1,J2,J3,J4)=0
122   100       CONTINUE
123   110     CONTINUE
124   120   CONTINUE
125   130 CONTINUE
126  
127 * INITIALIZE THE ARRAYS ANSF,DONF
128       DO 180 J1=-1,1,2
129         DO 170 J2=1,4
130           DO 160 J3=1,8
131             DO 150 J4=-1,1,2
132               DO 140 J5=1,4
133                  ANSF(J1,J2,J3,J4,J5)=(0.,0.)
134                  DONF(J1,J2,J3,J4,J5)=0
135   140         CONTINUE
136   150       CONTINUE
137   160     CONTINUE
138   170   CONTINUE
139   180 CONTINUE
140  
141 * EQUATE THE (0:4) INTERNAL MOMENTA TO THE (0:3) ARGUMENTS MOMENTA
142       DO 190 K=0,3
143         K1(K)=AK1(K)
144         K2(K)=AK2(K)
145         P1(K)=AP1(K)
146         P2(K)=AP2(K)
147         LEP1(K)=ALEP1(K)
148         LEP2(K)=ALEP2(K)
149   190 CONTINUE
150  
151 * ASSIGN LABELS TO THE MOMENTA FOR RECOGNITION
152 * THE MOMENTA K1,K2,LEP1,LEP2 (AND R1,R2) CAN OCCUR AS THE MASSLESS
153 * MOMENTA IN ARGUMENTS NO.2 AND 6 IN ZF, AND NO.2 AND 4 IN RKZSF
154 * R1,R2 AND Q1,Q2 ARE SOME OF THESE, AND CAN ALSO OCCUR
155 * AS ARGUMENTS NO.2 AND 6 IN ZF AND NO.2 AND 4 IN RKZSF
156         K1(4)=1D0
157         K2(4)=2D0
158         LEP1(4)=3D0
159         LEP2(4)=4D0
160 * THE OTHER MOMENTA P1,P2 AND THE VARIOUS RR1,RR2 CAN OCCUR ONLY
161 * AS ARGUMENT NO.3 IN ZF
162         P1(4)=1D0
163         P2(4)=2D0
164  
165 * THE TOTAL BOSON MOMENTUM
166 * NO NEED TO ASSIGN 4TH COMPONENT LABEL SINCE IT IS NOT USED
167       DO 200 K=0,3
168         QV(K)=LEP1(K)+LEP2(K)
169   200 CONTINUE
170  
171  
172 * DEFINE THE AUXILIARY VECTORS: THE RESULT SHOULD BE THE SAME
173 * FOR EVERY NON-SINGULAR CHOICE OF THE AUXILIARY VECTORS
174 * SINGULAR CHOICES ARE R1=K1 OR R2=K2
175 * THESE ARE OBTAINED BY PUTTING CHKGL1=1 OR CHKGL2=1
176  
177 * AUXILIARY VECTOR FOR GLUON 1
178 * NEED TO ASSIGN ALSO 4TH COMPONENT LABELS HERE!
179 C      IF(CHKGL1.EQ.1) THEN
180 C        DO 210 K=0,4
181 C          R1(K)=K1(K)
182 C  210   CONTINUE
183 C      ELSE
184         DO 210 K=0,4
185           R1(K)=K2(K)
186   210   CONTINUE
187 C      ENDIF
188  
189 * AUXILIARY VECTOR FOR GLUON 2
190 C      IF(CHKGL2.EQ.1) THEN
191 C        DO 230 K=0,4
192 C          R2(K)=K2(K)
193 C  230   CONTINUE
194 C      ELSE
195         DO 220 K=0,4
196           R2(K)=K1(K)
197   220   CONTINUE
198 C      ENDIF
199  
200 * AUXILIARY VECTOR FOR THE B QUARK
201       DO 230 K=0,4
202         Q1(K)=LEP1(K)
203   230 CONTINUE
204  
205 * AUXILIARY VECTOR FOR THE B_BAR QUARK
206       DO 240 K=0,4
207         Q2(K)=LEP2(K)
208   240 CONTINUE
209  
210 * INITIALIZE THE CROSS SECTION TO ZERO
211       CROSS=0D0
212  
213 * SINCE P2 CORRESPONDS TO AN ANTIFERMION WE HAVE TO
214 * CHANGE ITS SIGN MOMENTARILY: PUT THE OLD RESULT IN PP2(0:3)
215 * BU MAKE SURE TO KEEP THE LABEL POSITIVE!
216       DO 250 K=0,3
217         PP2(K)=P2(K)
218         P2(K)=-P2(K)
219   250 CONTINUE
220  
221 * COMPUTE OVERALL FACTORS: FOR EVERY SLASHED POLARIZATION THERE
222 * APPEARS A FACTOR OF 2 IN ADDITION TO THE NORMALIZATION
223 * FOLLOWING FROM THE CHISHOLM IDENTITY
224 * IN PRINCIPLE THE OVERALL FACTORS ARE DIFFERENT FOR EACH DIFFERENT
225 * HELICITY COMPBINATION BUT IN THIS CASE WE ARE ONLY INTERESTED IN
226 * THEIR ABSOLUTE VALUE (NO TRANSVERSE GLUON POLARIZATION ETC.)
227 * SO WE CAN TAKE THIS OUT OF THE LOOP, EXCEPT FOR THE NONTRIVIAL
228 * HELICITY DEPENDENCE IN 'ZFACV'
229  
230 * OVERALL FACTOR FOR THE BOSON CURRENT, WITH BREIT-WIGNER
231       ZFACV=2./CMPLX(SNGL(RKDOT(QV,QV))-RMV**2,RMV*RGV)
232  
233 * OVERALL FACTOR FOR GLUON 1
234 C      IF(CHKGL1.EQ.1) THEN
235 C        ZFAC1=(1.,0.)
236 C      ELSE
237 * ORIGINAL FORM: ZFAC1=2D0*LG1/(DSQRT(2D0)*RKZPR(-LG1,K1,R1))
238         ZFAC1=DSQRT(2D0)/RKZSF(1,K1,-1,R1)
239 C      ENDIF
240  
241 * OVERALL FACTOR FOR GLUON 2
242 C      IF(CHKGL2.EQ.1) THEN
243 C        ZFAC2=1D0
244 C      ELSE
245 * ORIGINAL FORM: ZFAC2=2D0*LG2/(DSQRT(2D0)*RKZPR(-LG2,K2,R2))
246         ZFAC2=DSQRT(2D0)/RKZSF(1,K2,-1,R2)
247 C      ENDIF
248  
249 * OVERALL FACTOR FOR QCD COUPLINGS
250       ZFACS=GSTR**2
251  
252 * OVERALL FACTOR FOR THE B QUARK
253       ZFACB=1/DSQRT(2D0*RKDOT(P1,Q1))
254  
255 * OVERALL FACTOR FOR THE B_BAR QUARK
256       ZFACBB=1D0/DSQRT(2D0*RKDOT(PP2,Q2))
257  
258 * FINAL OVERALL FACTOR
259       ZFAC=ZFACV*ZFAC1*ZFAC2*ZFACS*ZFACB*ZFACBB
260  
261 * DO A BIG LOOP OVER ALL HELICITIES OR A RANDOM CHOICE OF HELICITIES
262 * NB: FUNNY INDENTATION HERE!
263 * ALSO INITIALIZE COUNTERS FOR RKZSF AND ZF
264  
265       DO 340 HELIX=KLOW,KUPP
266       IF(IMC.EQ.0) THEN
267         CALL RKHLPK(HELIX,LG1,LG2,LV,L1,L2)
268       ELSE
269         HELI=IDINT(32D0*RKRAND(HELIX))+1
270         CALL RKHLPK(HELI,LG1,LG2,LV,L1,L2)
271       ENDIF
272  
273 * DETERMINE THE 'LEFT-' AND 'RIGHT-'HANDED COUPLINGS OF THE B TO THE Z
274       VPA=VB+LV*AB
275       VMA=VB-LV*AB
276 * AND THE LEPTON HELICITY FACTOR
277       ZFACL=(VL-LV*AL)
278  
279 * FIRST PART OF THE RESULT: THE ABELIAN TERMS
280 * COMPUTE THE NUMERATORS (ZN...) USING THE ZF FUNCTION
281 * AND THE DENOMINATORS (ZD...) THE STANDARD WAY
282 * THE INTERNAL FERMION MOMENTA ARE DIFFERENT IN EACH DIAGRAM
283 * AND ARE DENOTED BY RR1 AND RR2
284 * THE 4TH COMPONENT LABELS ARE NONTRIVIAL HERE: HAVING ALREADY
285 * P1(4)=1 AND P2(4)=2 WE ALSO DEFINE
286 * (P1-K1)(4)=3,
287 * (P1-K1-K2)(4)=(P1-K2-K1)(4)=4
288 * (P1-K2)(4)=5
289 * (P1-K1+QV)(4)=6
290 * (P1-K2+QV)(5)=7
291 * (P1+QV)(4)=8
292 * SO THAT IN THE VARIOUS DIAGRAMS WE HAVE
293 * IN ZN12V: RR1(4)=3, RR2(4)=4
294 * IN ZN21V: RR1(4)=5, RR2(4)=4
295 * IN ZN1V2: RR1(4)=3, RR2(4)=6
296 * IN ZN2V1: RR1(4)=5, RR2(4)=7
297 * IN ZNV12: RR1(4)=8, RR2(4)=6
298 * IN ZNV21: RR1(4)=8, RR2(4)=7
299  
300       DO 260 K=0,3
301         RR1(K)=P1(K)-K1(K)
302         RR2(K)=RR1(K)-K2(K)
303   260 CONTINUE
304       RR1(4)=3D0
305       RR2(4)=4D0
306       ZD12V=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
307       ZN12V =
308      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LG2,R2)
309      .  *RKZF(LG2,K2,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
310      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LG2,R2)
311      .  *RKZF(LG2,K2,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
312      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LG2,K2)
313      .  *RKZF(-LG2,R2,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
314      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LG2,K2)
315      .  *RKZF(-LG2,R2,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
316      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LG2,R2)
317      .  *RKZF(LG2,K2,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
318      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LG2,R2)
319      .  *RKZF(LG2,K2,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
320      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LG2,K2)
321      .  *RKZF(-LG2,R2,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
322      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LG2,K2)
323      .  *RKZF(-LG2,R2,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
324  
325       DO 270 K=0,3
326         RR1(K)=P1(K)-K2(K)
327         RR2(K)=RR1(K)-K1(K)
328   270 CONTINUE
329       RR1(4)=5D0
330       RR2(4)=4D0
331       ZD21V=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
332       ZN21V =
333      .   RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LG1,R1)
334      .  *RKZF(LG1,K1,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
335      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LG1,R1)
336      .  *RKZF(LG1,K1,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
337      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LG1,K1)
338      .  *RKZF(-LG1,R1,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
339      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LG1,K1)
340      .  *RKZF(-LG1,R1,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
341      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LG1,R1)
342      .  *RKZF(LG1,K1,RR2,RMB,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
343      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LG1,R1)
344      .  *RKZF(LG1,K1,RR2,RMB,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
345      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LG1,K1)
346      .  *RKZF(-LG1,R1,RR2,RMB,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
347      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LG1,K1)
348      .  *RKZF(-LG1,R1,RR2,RMB,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
349  
350       DO 280 K=0,3
351         RR1(K)=P1(K)-K1(K)
352         RR2(K)=RR1(K)+QV(K)
353   280 CONTINUE
354       RR1(4)=3D0
355       RR2(4)=6D0
356       ZD1V2=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
357       ZN1V2 =
358      .   RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LV,LEP2)
359      .  *RKZF(LV,LEP1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
360      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,LV,LEP2)
361      .  *RKZF(LV,LEP1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
362      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LV,LEP1)
363      .  *RKZF(-LV,LEP2,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
364      . + RKZF(L1,Q1,P1,RMB,LG1,R1)     *RKZF(LG1,K1,RR1,RMB,-LV,LEP1)
365      .  *RKZF(-LV,LEP2,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
366      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LV,LEP2)
367      .  *RKZF(LV,LEP1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
368      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,LV,LEP2)
369      .  *RKZF(LV,LEP1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
370      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LV,LEP1)
371      .  *RKZF(-LV,LEP2,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
372      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)    *RKZF(-LG1,R1,RR1,RMB,-LV,LEP1)
373      .  *RKZF(-LV,LEP2,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
374  
375       DO 290 K=0,3
376         RR1(K)=P1(K)-K2(K)
377         RR2(K)=RR1(K)+QV(K)
378   290 CONTINUE
379       RR1(4)=5D0
380       RR2(4)=7D0
381       ZD2V1=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
382       ZN2V1 =
383      .   RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LV,LEP2)
384      .  *RKZF(LV,LEP1,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
385      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,LV,LEP2)
386      .  *RKZF(LV,LEP1,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
387      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LV,LEP1)
388      .  *RKZF(-LV,LEP2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
389      . + RKZF(L1,Q1,P1,RMB,LG2,R2)     *RKZF(LG2,K2,RR1,RMB,-LV,LEP1)
390      .  *RKZF(-LV,LEP2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
391      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LV,LEP2)
392      .  *RKZF(LV,LEP1,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
393      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,LV,LEP2)
394      .  *RKZF(LV,LEP1,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
395      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LV,LEP1)
396      .  *RKZF(-LV,LEP2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
397      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)    *RKZF(-LG2,R2,RR1,RMB,-LV,LEP1)
398      .  *RKZF(-LV,LEP2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
399  
400       DO 300 K=0,3
401         RR1(K)=P1(K)+QV(K)
402         RR2(K)=RR1(K)-K1(K)
403   300 CONTINUE
404       RR1(4)=8D0
405       RR2(4)=6D0
406       ZDV12=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
407       ZNV12 =
408      .   RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG1,R1)
409      .  *RKZF(LG1,K1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
410      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG1,R1)
411      .  *RKZF(LG1,K1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
412      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG1,K1)
413      .  *RKZF(-LG1,R1,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
414      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG1,K1)
415      .  *RKZF(-LG1,R1,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
416      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG1,R1)
417      .  *RKZF(LG1,K1,RR2,RMB,LG2,R2)  *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
418      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG1,R1)
419      .  *RKZF(LG1,K1,RR2,RMB,-LG2,K2) *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
420      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG1,K1)
421      .  *RKZF(-LG1,R1,RR2,RMB,LG2,R2) *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
422      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG1,K1)
423      .  *RKZF(-LG1,R1,RR2,RMB,-LG2,K2)*RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
424  
425       DO 310 K=0,3
426         RR1(K)=P1(K)+QV(K)
427         RR2(K)=RR1(K)-K2(K)
428   310 CONTINUE
429       RR1(4)=8D0
430       RR2(4)=7D0
431       ZDV21=(RKDOT(RR1,RR1)-RMB**2)*(RKDOT(RR2,RR2)-RMB**2)
432       ZNV21 =
433      .   RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG2,R2)
434      .  *RKZF(LG2,K2,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
435      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,LG2,R2)
436      .  *RKZF(LG2,K2,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
437      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG2,K2)
438      .  *RKZF(-LG2,R2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VPA
439      . + RKZF(L1,Q1,P1,RMB,LV,LEP2)   *RKZF(LV,LEP1,RR1,RMB,-LG2,K2)
440      .  *RKZF(-LG2,R2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VPA
441      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG2,R2)
442      .  *RKZF(LG2,K2,RR2,RMB,LG1,R1)  *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
443      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,LG2,R2)
444      .  *RKZF(LG2,K2,RR2,RMB,-LG1,K1) *RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
445      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG2,K2)
446      .  *RKZF(-LG2,R2,RR2,RMB,LG1,R1) *RKZF(LG1,K1,P2,RMB,L2,Q2)*VMA
447      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)  *RKZF(-LV,LEP2,RR1,RMB,-LG2,K2)
448      .  *RKZF(-LG2,R2,RR2,RMB,-LG1,K1)*RKZF(-LG1,R1,P2,RMB,L2,Q2)*VMA
449  
450 * COMPUTE THE DIAGRAMS SO FAR
451       ZDIA1=ZN12V/ZD12V
452       ZDIA2=ZN21V/ZD21V
453       ZDIA3=ZN1V2/ZD1V2
454       ZDIA4=ZN2V1/ZD2V1
455       ZDIA5=ZNV12/ZDV12
456       ZDIA6=ZNV21/ZDV21
457  
458 * SECOND PART OF THE RESULT: THE NONABELIAN PART.
459 * THIS IS MADE UP PARTLY FROM THE ABELIAN PART AND PARTLY FROM
460 * NEW PIECES
461 * THE ASSIGNMENT OF THE 4TH COMPONENT LABELS IS NOW UNNECESSARY
462 * FOR RR1 SINCE IT DOES NOT OCCUR IN ANY ZF HERE
463  
464       S=2D0*RKDOT(K1,K2)
465  
466       DO 320 K=0,3
467         RR1(K)=PP2(K)+QV(K)
468   320 CONTINUE
469       ZD11=S*(RKDOT(RR1,RR1)-RMB**2)
470  
471       ZC12V =
472      . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,LG2,R2)
473      .  *RKZSF(LG2,K2,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
474      . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,LG2,R2)
475      .  *RKZSF(LG2,K2,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
476      . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,-LG2,K2)
477      .  *RKZSF(-LG2,R2,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
478      . + RKZF(L1,Q1,P1,RMB,LG1,R1) *RKZSF(LG1,K1,-LG2,K2)
479      .  *RKZSF(-LG2,R2,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
480      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,LG2,R2)
481      .  *RKZSF(LG2,K2,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
482      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,LG2,R2)
483      .  *RKZSF(LG2,K2,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
484      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,-LG2,K2)
485      .  *RKZSF(-LG2,R2,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
486      . + RKZF(L1,Q1,P1,RMB,-LG1,K1)*RKZSF(-LG1,R1,-LG2,K2)
487      .  *RKZSF(-LG2,R2,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
488  
489       ZC21V =
490      . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,LG1,R1)
491      .  *RKZSF(LG1,K1,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
492      . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,LG1,R1)
493      .  *RKZSF(LG1,K1,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
494      . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,-LG1,K1)
495      .  *RKZSF(-LG1,R1,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
496      . + RKZF(L1,Q1,P1,RMB,LG2,R2) *RKZSF(LG2,K2,-LG1,K1)
497      .  *RKZSF(-LG1,R1,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
498      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,LG1,R1)
499      .  *RKZSF(LG1,K1,LV,LEP2)  *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
500      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,LG1,R1)
501      .  *RKZSF(LG1,K1,-LV,LEP1) *RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
502      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,-LG1,K1)
503      .  *RKZSF(-LG1,R1,LV,LEP2) *RKZF(LV,LEP1,P2,RMB,L2,Q2)*VPA
504      . + RKZF(L1,Q1,P1,RMB,-LG2,K2)*RKZSF(-LG2,R2,-LG1,K1)
505      .  *RKZSF(-LG1,R1,-LV,LEP1)*RKZF(-LV,LEP2,P2,RMB,L2,Q2)*VMA
506       ZDIA7=(-ZN12V+ZN21V)/ZD11-(ZC12V-ZC21V)/(2D0*S)
507  
508       DO 330 K=0,3
509         RR1(K)=P1(K)+QV(K)
510   330 CONTINUE
511       ZD22=S*(RKDOT(RR1,RR1)-RMB**2)
512  
513       ZCV12 =
514      . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,LG1,R1)
515      .  *RKZSF(LG1,K1,LG2,R2)    *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
516      . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,LG1,R1)
517      .  *RKZSF(LG1,K1,-LG2,K2)   *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
518      . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,-LG1,K1)
519      .  *RKZSF(-LG1,R1,LG2,R2)   *RKZF(LG2,K2,P2,RMB,L2,Q2)*VPA
520      . + RKZF(L1,Q1,P1,RMB,LV,LEP2) *RKZSF(LV,LEP1,-LG1,K1)
521      .  *RKZSF(-LG1,R1,-LG2,K2)  *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VPA
522      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,LG1,R1)
523      .  *RKZSF(LG1,K1,LG2,R2)    *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
524      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,LG1,R1)
525      .  *RKZSF(LG1,K1,-LG2,K2)   *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
526      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,-LG1,K1)
527      .  *RKZSF(-LG1,R1,LG2,R2)   *RKZF(LG2,K2,P2,RMB,L2,Q2)*VMA
528      . + RKZF(L1,Q1,P1,RMB,-LV,LEP1)*RKZSF(-LV,LEP2,-LG1,K1)
529      .  *RKZSF(-LG1,R1,-LG2,K2)  *RKZF(-LG2,R2,P2,RMB,L2,Q2)*VMA
530  
531 * THE FOURTH COMBINATION CAN BE GOTTEN FROM
532 * THE FIRST THREE USING DIRAC ALGEBRA:
533 * EPS1*EPS2*EPVS+EPS2*EPS1*EPSV = 2(EPS1.EPS2)*EPSV ETC.
534       ZCV21=ZC12V+ZC21V-ZCV12
535  
536       ZDIA8=(-ZNV12+ZNV21)/ZD22-(ZCV12-ZCV21)/(2D0*S)
537  
538 * CONSTRUCT THE ABELIAN AND NONABELIAN PART
539  
540       ZABEL= ZDIA1+ZDIA2+ZDIA3+ZDIA4+ZDIA5+ZDIA6
541       ZNABEL=ZDIA1-ZDIA2+ZDIA3-ZDIA4+ZDIA5-ZDIA6
542       ZNABEM=2D0*ZDIA7+2D0*ZDIA8
543       ZNABEL=ZNABEL-ZNABEM
544       ZABEL=ZABEL*ZFAC*ZFACL
545       ZNABEL=ZNABEL*ZFAC*ZFACL
546  
547 * INCLUDE COLOUR FACTORS:
548 * (N**2-1)*(N**2-2)/(8*N) = 7/3 FOR THE ABELIAN PART
549 * N*(N**2-1)/8 = 3 FOR THE NONABELIAN PART
550 * AND ADD THE RESULT TO THE CROSS SECTION
551       THIS1=7D0/3D0*ABS(ZABEL)**2+3D0*ABS(ZNABEL)**2
552 CC    WRITE(6,801)HELIX,LG1,LG2,LV,L1,L2,THIS1
553 CC801 FORMAT(' ',6I4,D30.20)
554       CROSS=CROSS+THIS1
555  
556 * END OF THE BIG LOOP OVER HELICITIES
557   340 CONTINUE
558  
559 * DO NOT FORGET TO PUT P2 BACK TO ITS ORIGINAL VALUE IN PP2!
560       DO 350 K=0,3
561         P2(K)=PP2(K)
562   350 CONTINUE
563  
564 * ADD AVERAGING FACTORS:
565 * 1/2 FOR EACH GLUON SPIN, 1/8 FOR EACH GLUON COLOUR
566       CROSS=CROSS/256D0
567  
568 * TAKE INTO ACCOUNT A POSSIBLE FACTOR FOR THE HELICITY SUM OPTION
569 * AND RETURN THE FINAL RESULT
570       IF(IMC.EQ.1) CROSS=CROSS*MULT
571       RESULT=CROSS
572       END