]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pyscat.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pyscat.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE PYSCAT
5  
6 C...Finds outgoing flavours and event type; sets up the kinematics
7 C...and colour flow of the hard scattering.
8       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5)
9       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
11       COMMON/LUDAT3/MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5)
12       COMMON/PYSUBS/MSEL,MSUB(200),KFIN(2,-40:40),CKIN(200)
13       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14       COMMON/PYINT1/MINT(400),VINT(400)
15       COMMON/PYINT2/ISET(200),KFPR(200,2),COEF(200,20),ICOL(40,4,2)
16       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
17       COMMON/PYINT4/WIDP(21:40,0:40),WIDE(21:40,0:40),WIDS(21:40,3)
18       COMMON/PYINT5/NGEN(0:200,3),XSEC(0:200,3)
19       COMMON/PYUPPR/NUP,KUP(20,7),PUP(20,5),NFUP,IFUP(10,2),Q2UP(0:10)
20       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/,/LUDAT3/
21       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,
22      &/PYINT5/,/PYUPPR/
23       DIMENSION WDTP(0:40),WDTE(0:40,0:5),PMQ(2),Z(2),CTHE(2),PHI(2),
24      &KUPPO(20),VINTSV(41:66)
25       SAVE VINTSV
26  
27 C...Read out process.
28       ISUB=MINT(1)
29       ISUBSV=ISUB
30  
31 C...Restore information for low-pT processes.
32       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
33         DO 100 J=41,66
34   100   VINT(J)=VINTSV(J)
35       ENDIF
36  
37 C...Convert H' or A process into equivalent H one.
38       IHIGG=1
39       KFHIGG=25
40       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
41      &ISUB.LE.190)) THEN
42         IHIGG=2
43         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
44         KFHIGG=33+IHIGG
45         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
46         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
47         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
48         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
49         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
50         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
51         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
52         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
53         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
54       ENDIF
55  
56 C...Choice of subprocess, number of documentation lines.
57       IDOC=6+ISET(ISUB)
58       IF(ISUB.EQ.95) IDOC=8
59       IF(ISET(ISUB).EQ.5.OR.ISET(ISUB).EQ.6) IDOC=9
60       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
61       MINT(3)=IDOC-6
62       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
63       MINT(4)=IDOC
64       IPU1=MINT(84)+1
65       IPU2=MINT(84)+2
66       IPU3=MINT(84)+3
67       IPU4=MINT(84)+4
68       IPU5=MINT(84)+5
69       IPU6=MINT(84)+6
70  
71 C...Reset K, P and V vectors. Store incoming particles.
72       DO 120 JT=1,MSTP(126)+20
73       I=MINT(83)+JT
74       DO 110 J=1,5
75       K(I,J)=0
76       P(I,J)=0.
77       V(I,J)=0.
78   110 CONTINUE
79   120 CONTINUE
80       DO 140 JT=1,2
81       I=MINT(83)+JT
82       K(I,1)=21
83       K(I,2)=MINT(10+JT)
84       DO 130 J=1,5
85       P(I,J)=VINT(285+5*JT+J)
86   130 CONTINUE
87   140 CONTINUE
88       MINT(6)=2
89       KFRES=0
90  
91 C...Store incoming partons in their CM-frame.
92       SH=VINT(44)
93       SHR=SQRT(SH)
94       SHP=VINT(26)*VINT(2)
95       SHPR=SQRT(SHP)
96       SHUSER=SHR
97       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
98       DO 150 JT=1,2
99       I=MINT(84)+JT
100       K(I,1)=14
101       K(I,2)=MINT(14+JT)
102       K(I,3)=MINT(83)+2+JT
103       P(I,3)=0.5*SHUSER*(-1.)**(JT-1)
104       P(I,4)=0.5*SHUSER
105   150 CONTINUE
106  
107 C...Copy incoming partons to documentation lines.
108       DO 170 JT=1,2
109       I1=MINT(83)+4+JT
110       I2=MINT(84)+JT
111       K(I1,1)=21
112       K(I1,2)=K(I2,2)
113       K(I1,3)=I1-2
114       DO 160 J=1,5
115       P(I1,J)=P(I2,J)
116   160 CONTINUE
117   170 CONTINUE
118  
119 C...Choose new quark/lepton flavour for relevant annihilation graphs.
120       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58) THEN
121         IGLGA=21
122         IF(ISUB.EQ.58) IGLGA=22
123         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
124   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*RLU(0)
125         DO 190 I=1,MDCY(IGLGA,3)
126         KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
127         RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
128         IF(RKFL.LE.0.) GOTO 200
129   190   CONTINUE
130   200   CONTINUE
131         IF(ISUB.EQ.12.AND.MSTP(5).EQ.1.AND.IABS(MINT(15)).LE.2.AND.
132      &  IABS(KFLF).GE.3) THEN
133           FACQQB=VINT(58)**2*4./9.*(VINT(45)**2+VINT(46)**2)/
134      &    VINT(44)**2
135           FACCIB=VINT(46)**2/PARU(155)**4
136           IF(FACQQB/(FACQQB+FACCIB).LT.RLU(0)) GOTO 180
137         ELSEIF(ISUB.EQ.54) THEN
138           IF((KCHG(IABS(KFLF),1)/2.)**2.LT.RLU(0)) GOTO 180
139         ELSEIF(ISUB.EQ.58) THEN
140           IF((KCHG(IABS(KFLF),1)/3.)**2.LT.RLU(0)) GOTO 180
141         ENDIF
142       ENDIF
143  
144 C...Final state flavours and colour flow: default values.
145       JS=1
146       MINT(21)=MINT(15)
147       MINT(22)=MINT(16)
148       MINT(23)=0
149       MINT(24)=0
150       KCC=20
151       KCS=ISIGN(1,MINT(15))
152  
153       IF(ISET(ISUB).EQ.11) THEN
154 C...User-defined processes: find products.
155         IRUP=0
156         DO 210 IUP=3,NUP
157         IF(KUP(IUP,1).NE.1) THEN
158         ELSEIF(IRUP.LE.5) THEN
159           IRUP=IRUP+1
160           MINT(20+IRUP)=KUP(IUP,2)
161         ENDIF
162   210   CONTINUE
163  
164       ELSEIF(ISUB.LE.10) THEN
165       IF(ISUB.EQ.1) THEN
166 C...f + f~ -> gamma*/Z0.
167         KFRES=23
168  
169       ELSEIF(ISUB.EQ.2) THEN
170 C...f + f~' -> W+/- .
171         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
172         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
173         KFRES=ISIGN(24,KCH1+KCH2)
174  
175       ELSEIF(ISUB.EQ.3) THEN
176 C...f + f~ -> H0 (or H'0, or A0).
177         KFRES=KFHIGG
178  
179       ELSEIF(ISUB.EQ.4) THEN
180 C...gamma + W+/- -> W+/-.
181  
182       ELSEIF(ISUB.EQ.5) THEN
183 C...Z0 + Z0 -> H0.
184         XH=SH/SHP
185         MINT(21)=MINT(15)
186         MINT(22)=MINT(16)
187         PMQ(1)=ULMASS(MINT(21))
188         PMQ(2)=ULMASS(MINT(22))
189   220   JT=INT(1.5+RLU(0))
190         ZMIN=2.*PMQ(JT)/SHPR
191         ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
192         ZMAX=MIN(1.-XH,ZMAX)
193         Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
194         IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
195      &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 220
196         SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
197         IF(SQC1.LT.1.E-8) GOTO 220
198         C1=SQRT(SQC1)
199         C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
200         CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
201         CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
202         Z(3-JT)=1.-XH/(1.-Z(JT))
203         SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
204         IF(SQC1.LT.1.E-8) GOTO 220
205         C1=SQRT(SQC1)
206         C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
207         CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
208         CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
209         PHIR=PARU(2)*RLU(0)
210         CPHI=COS(PHIR)
211         ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
212         Z1=2.-Z(JT)
213         Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
214         Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
215         Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
216      &  PMQ(3-JT)**2/SHP))
217         ZMIN=2.*PMQ(3-JT)/SHPR
218         ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
219         ZMAX=MIN(1.-XH,ZMAX)
220         IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
221         KCC=22
222         KFRES=25
223  
224       ELSEIF(ISUB.EQ.6) THEN
225 C...Z0 + W+/- -> W+/-.
226  
227       ELSEIF(ISUB.EQ.7) THEN
228 C...W+ + W- -> Z0.
229  
230       ELSEIF(ISUB.EQ.8) THEN
231 C...W+ + W- -> H0.
232         XH=SH/SHP
233   230   DO 260 JT=1,2
234         I=MINT(14+JT)
235         IA=IABS(I)
236         IF(IA.LE.10) THEN
237           RVCKM=VINT(180+I)*RLU(0)
238           DO 240 J=1,MSTP(1)
239           IB=2*J-1+MOD(IA,2)
240           IPM=(5-ISIGN(1,I))/2
241           IDC=J+MDCY(IA,2)+2
242           IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
243           MINT(20+JT)=ISIGN(IB,I)
244           RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
245           IF(RVCKM.LE.0.) GOTO 250
246   240     CONTINUE
247         ELSE
248           IB=2*((IA+1)/2)-1+MOD(IA,2)
249           MINT(20+JT)=ISIGN(IB,I)
250         ENDIF
251   250   PMQ(JT)=ULMASS(MINT(20+JT))
252   260   CONTINUE
253         JT=INT(1.5+RLU(0))
254         ZMIN=2.*PMQ(JT)/SHPR
255         ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
256         ZMAX=MIN(1.-XH,ZMAX)
257         IF(ZMIN.GE.ZMAX) GOTO 230
258         Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
259         IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
260      &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 230
261         SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
262         IF(SQC1.LT.1.E-8) GOTO 230
263         C1=SQRT(SQC1)
264         C2=1.+2.*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
265         CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
266         CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
267         Z(3-JT)=1.-XH/(1.-Z(JT))
268         SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
269         IF(SQC1.LT.1.E-8) GOTO 230
270         C1=SQRT(SQC1)
271         C2=1.+2.*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
272         CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
273         CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
274         PHIR=PARU(2)*RLU(0)
275         CPHI=COS(PHIR)
276         ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
277         Z1=2.-Z(JT)
278         Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
279         Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
280         Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
281      &  PMQ(3-JT)**2/SHP))
282         ZMIN=2.*PMQ(3-JT)/SHPR
283         ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
284         ZMAX=MIN(1.-XH,ZMAX)
285         IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
286         KCC=22
287         KFRES=25
288  
289       ELSEIF(ISUB.EQ.10) THEN
290 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2.
291         IF(MINT(2).EQ.1) THEN
292           KCC=22
293         ELSE
294 C...W exchange: need to mix flavours according to CKM matrix.
295           DO 280 JT=1,2
296           I=MINT(14+JT)
297           IA=IABS(I)
298           IF(IA.LE.10) THEN
299             RVCKM=VINT(180+I)*RLU(0)
300             DO 270 J=1,MSTP(1)
301             IB=2*J-1+MOD(IA,2)
302             IPM=(5-ISIGN(1,I))/2
303             IDC=J+MDCY(IA,2)+2
304             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
305             MINT(20+JT)=ISIGN(IB,I)
306             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
307             IF(RVCKM.LE.0.) GOTO 280
308   270       CONTINUE
309           ELSE
310             IB=2*((IA+1)/2)-1+MOD(IA,2)
311             MINT(20+JT)=ISIGN(IB,I)
312           ENDIF
313   280     CONTINUE
314           KCC=22
315         ENDIF
316       ENDIF
317  
318       ELSEIF(ISUB.LE.20) THEN
319       IF(ISUB.EQ.11) THEN
320 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2.
321         KCC=MINT(2)
322         IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
323  
324       ELSEIF(ISUB.EQ.12) THEN
325 C...f + f~ -> f' + f~'; th = (p(f)-p(f'))**2.
326         MINT(21)=ISIGN(KFLF,MINT(15))
327         MINT(22)=-MINT(21)
328         KCC=4
329  
330       ELSEIF(ISUB.EQ.13) THEN
331 C...f + f~ -> g + g; th arbitrary.
332         MINT(21)=21
333         MINT(22)=21
334         KCC=MINT(2)+4
335  
336       ELSEIF(ISUB.EQ.14) THEN
337 C...f + f~ -> g + gamma; th arbitrary.
338         IF(RLU(0).GT.0.5) JS=2
339         MINT(20+JS)=21
340         MINT(23-JS)=22
341         KCC=17+JS
342  
343       ELSEIF(ISUB.EQ.15) THEN
344 C...f + f~ -> g + Z0; th arbitrary.
345         IF(RLU(0).GT.0.5) JS=2
346         MINT(20+JS)=21
347         MINT(23-JS)=23
348         KCC=17+JS
349  
350       ELSEIF(ISUB.EQ.16) THEN
351 C...f + f~' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
352         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
353         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
354         IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
355         MINT(20+JS)=21
356         MINT(23-JS)=ISIGN(24,KCH1+KCH2)
357         KCC=17+JS
358  
359       ELSEIF(ISUB.EQ.17) THEN
360 C...f + f~ -> g + H0; th arbitrary.
361         IF(RLU(0).GT.0.5) JS=2
362         MINT(20+JS)=21
363         MINT(23-JS)=25
364         KCC=17+JS
365  
366       ELSEIF(ISUB.EQ.18) THEN
367 C...f + f~ -> gamma + gamma; th arbitrary.
368         MINT(21)=22
369         MINT(22)=22
370  
371       ELSEIF(ISUB.EQ.19) THEN
372 C...f + f~ -> gamma + Z0; th arbitrary.
373         IF(RLU(0).GT.0.5) JS=2
374         MINT(20+JS)=22
375         MINT(23-JS)=23
376  
377       ELSEIF(ISUB.EQ.20) THEN
378 C...f + f~' -> gamma + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
379         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
380         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
381         IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
382         MINT(20+JS)=22
383         MINT(23-JS)=ISIGN(24,KCH1+KCH2)
384       ENDIF
385  
386       ELSEIF(ISUB.LE.30) THEN
387       IF(ISUB.EQ.21) THEN
388 C...f + f~ -> gamma + H0; th arbitrary.
389         IF(RLU(0).GT.0.5) JS=2
390         MINT(20+JS)=22
391         MINT(23-JS)=25
392  
393       ELSEIF(ISUB.EQ.22) THEN
394 C...f + f~ -> Z0 + Z0; th arbitrary.
395         MINT(21)=23
396         MINT(22)=23
397  
398       ELSEIF(ISUB.EQ.23) THEN
399 C...f + f~' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
400         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
401         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
402         IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
403         MINT(20+JS)=23
404         MINT(23-JS)=ISIGN(24,KCH1+KCH2)
405  
406       ELSEIF(ISUB.EQ.24) THEN
407 C...f + f~ -> Z0 + H0 (or H'0, or A0); th arbitrary.
408         IF(RLU(0).GT.0.5) JS=2
409         MINT(20+JS)=23
410         MINT(23-JS)=KFHIGG
411  
412       ELSEIF(ISUB.EQ.25) THEN
413 C...f + f~ -> W+ + W-; th = (p(f)-p(W-))**2.
414         MINT(21)=-ISIGN(24,MINT(15))
415         MINT(22)=-MINT(21)
416  
417       ELSEIF(ISUB.EQ.26) THEN
418 C...f + f~' -> W+/- + H0 (or H'0, or A0);
419 C...th = (p(f)-p(W-))**2 or (p(f~')-p(W+))**2.
420         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
421         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
422         IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
423         MINT(20+JS)=ISIGN(24,KCH1+KCH2)
424         MINT(23-JS)=KFHIGG
425  
426       ELSEIF(ISUB.EQ.27) THEN
427 C...f + f~ -> H0 + H0.
428  
429       ELSEIF(ISUB.EQ.28) THEN
430 C...f + g -> f + g; th = (p(f)-p(f))**2.
431         KCC=MINT(2)+6
432         IF(MINT(15).EQ.21) KCC=KCC+2
433         IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
434         IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
435  
436       ELSEIF(ISUB.EQ.29) THEN
437 C...f + g -> f + gamma; th = (p(f)-p(f))**2.
438         IF(MINT(15).EQ.21) JS=2
439         MINT(23-JS)=22
440         KCC=15+JS
441         KCS=ISIGN(1,MINT(14+JS))
442  
443       ELSEIF(ISUB.EQ.30) THEN
444 C...f + g -> f + Z0; th = (p(f)-p(f))**2.
445         IF(MINT(15).EQ.21) JS=2
446         MINT(23-JS)=23
447         KCC=15+JS
448         KCS=ISIGN(1,MINT(14+JS))
449       ENDIF
450  
451       ELSEIF(ISUB.LE.40) THEN
452       IF(ISUB.EQ.31) THEN
453 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'.
454         IF(MINT(15).EQ.21) JS=2
455         I=MINT(14+JS)
456         IA=IABS(I)
457         MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
458         RVCKM=VINT(180+I)*RLU(0)
459         DO 290 J=1,MSTP(1)
460         IB=2*J-1+MOD(IA,2)
461         IPM=(5-ISIGN(1,I))/2
462         IDC=J+MDCY(IA,2)+2
463         IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
464         MINT(20+JS)=ISIGN(IB,I)
465         RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
466         IF(RVCKM.LE.0.) GOTO 300
467   290   CONTINUE
468   300   KCC=15+JS
469         KCS=ISIGN(1,MINT(14+JS))
470  
471       ELSEIF(ISUB.EQ.32) THEN
472 C...f + g -> f + H0; th = (p(f)-p(f))**2.
473         IF(MINT(15).EQ.21) JS=2
474         MINT(23-JS)=25
475         KCC=15+JS
476         KCS=ISIGN(1,MINT(14+JS))
477  
478       ELSEIF(ISUB.EQ.33) THEN
479 C...f + gamma -> f + g; th=(p(f)-p(f))**2.
480         IF(MINT(15).EQ.22) JS=2
481         MINT(23-JS)=21
482         KCC=24+JS
483         KCS=ISIGN(1,MINT(14+JS))
484  
485       ELSEIF(ISUB.EQ.34) THEN
486 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2.
487         IF(MINT(15).EQ.22) JS=2
488         KCC=22
489         KCS=ISIGN(1,MINT(14+JS))
490  
491       ELSEIF(ISUB.EQ.35) THEN
492 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2.
493         IF(MINT(15).EQ.22) JS=2
494         MINT(23-JS)=23
495         KCC=22
496  
497       ELSEIF(ISUB.EQ.36) THEN
498 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2.
499         IF(MINT(15).EQ.22) JS=2
500         I=MINT(14+JS)
501         IA=IABS(I)
502         MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
503         IF(IA.LE.10) THEN
504           RVCKM=VINT(180+I)*RLU(0)
505           DO 310 J=1,MSTP(1)
506           IB=2*J-1+MOD(IA,2)
507           IPM=(5-ISIGN(1,I))/2
508           IDC=J+MDCY(IA,2)+2
509           IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
510           MINT(20+JS)=ISIGN(IB,I)
511           RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
512           IF(RVCKM.LE.0.) GOTO 320
513   310     CONTINUE
514         ELSE
515           IB=2*((IA+1)/2)-1+MOD(IA,2)
516           MINT(20+JS)=ISIGN(IB,I)
517         ENDIF
518   320   KCC=22
519  
520       ELSEIF(ISUB.EQ.37) THEN
521 C...f + gamma -> f + H0.
522  
523       ELSEIF(ISUB.EQ.38) THEN
524 C...f + Z0 -> f + g.
525  
526       ELSEIF(ISUB.EQ.39) THEN
527 C...f + Z0 -> f + gamma.
528  
529       ELSEIF(ISUB.EQ.40) THEN
530 C...f + Z0 -> f + Z0.
531       ENDIF
532  
533       ELSEIF(ISUB.LE.50) THEN
534       IF(ISUB.EQ.41) THEN
535 C...f + Z0 -> f' + W+/-.
536  
537       ELSEIF(ISUB.EQ.42) THEN
538 C...f + Z0 -> f + H0.
539  
540       ELSEIF(ISUB.EQ.43) THEN
541 C...f + W+/- -> f' + g.
542  
543       ELSEIF(ISUB.EQ.44) THEN
544 C...f + W+/- -> f' + gamma.
545  
546       ELSEIF(ISUB.EQ.45) THEN
547 C...f + W+/- -> f' + Z0.
548  
549       ELSEIF(ISUB.EQ.46) THEN
550 C...f + W+/- -> f' + W+/-.
551  
552       ELSEIF(ISUB.EQ.47) THEN
553 C...f + W+/- -> f' + H0.
554  
555       ELSEIF(ISUB.EQ.48) THEN
556 C...f + H0 -> f + g.
557  
558       ELSEIF(ISUB.EQ.49) THEN
559 C...f + H0 -> f + gamma.
560  
561       ELSEIF(ISUB.EQ.50) THEN
562 C...f + H0 -> f + Z0.
563       ENDIF
564  
565       ELSEIF(ISUB.LE.60) THEN
566       IF(ISUB.EQ.51) THEN
567 C...f + H0 -> f' + W+/-.
568  
569       ELSEIF(ISUB.EQ.52) THEN
570 C...f + H0 -> f + H0.
571  
572       ELSEIF(ISUB.EQ.53) THEN
573 C...g + g -> f + f~; th arbitrary.
574         KCS=(-1)**INT(1.5+RLU(0))
575         MINT(21)=ISIGN(KFLF,KCS)
576         MINT(22)=-MINT(21)
577         KCC=MINT(2)+10
578  
579       ELSEIF(ISUB.EQ.54) THEN
580 C...g + gamma -> f + f~; th arbitrary.
581         KCS=(-1)**INT(1.5+RLU(0))
582         MINT(21)=ISIGN(KFLF,KCS)
583         MINT(22)=-MINT(21)
584         KCC=27
585         IF(MINT(16).EQ.21) KCC=28
586  
587       ELSEIF(ISUB.EQ.55) THEN
588 C...g + Z0 -> f + f~.
589  
590       ELSEIF(ISUB.EQ.56) THEN
591 C...g + W+/- -> f + f~'.
592  
593       ELSEIF(ISUB.EQ.57) THEN
594 C...g + H0 -> f + f~.
595  
596       ELSEIF(ISUB.EQ.58) THEN
597 C...gamma + gamma -> f + f~; th arbitrary.
598         KCS=(-1)**INT(1.5+RLU(0))
599         MINT(21)=ISIGN(KFLF,KCS)
600         MINT(22)=-MINT(21)
601         KCC=21
602  
603       ELSEIF(ISUB.EQ.59) THEN
604 C...gamma + Z0 -> f + f~.
605  
606       ELSEIF(ISUB.EQ.60) THEN
607 C...gamma + W+/- -> f + f~'.
608       ENDIF
609  
610       ELSEIF(ISUB.LE.70) THEN
611       IF(ISUB.EQ.61) THEN
612 C...gamma + H0 -> f + f~.
613  
614       ELSEIF(ISUB.EQ.62) THEN
615 C...Z0 + Z0 -> f + f~.
616  
617       ELSEIF(ISUB.EQ.63) THEN
618 C...Z0 + W+/- -> f + f~'.
619  
620       ELSEIF(ISUB.EQ.64) THEN
621 C...Z0 + H0 -> f + f~.
622  
623       ELSEIF(ISUB.EQ.65) THEN
624 C...W+ + W- -> f + f~.
625  
626       ELSEIF(ISUB.EQ.66) THEN
627 C...W+/- + H0 -> f + f~'.
628  
629       ELSEIF(ISUB.EQ.67) THEN
630 C...H0 + H0 -> f + f~.
631  
632       ELSEIF(ISUB.EQ.68) THEN
633 C...g + g -> g + g; th arbitrary.
634         KCC=MINT(2)+12
635         KCS=(-1)**INT(1.5+RLU(0))
636  
637       ELSEIF(ISUB.EQ.69) THEN
638 C...gamma + gamma -> W+ + W-; th arbitrary.
639         MINT(21)=24
640         MINT(22)=-24
641         KCC=21
642  
643       ELSEIF(ISUB.EQ.70) THEN
644 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2.
645         IF(MINT(15).EQ.22) MINT(21)=23
646         IF(MINT(16).EQ.22) MINT(22)=23
647         KCC=21
648       ENDIF
649  
650       ELSEIF(ISUB.LE.80) THEN
651       IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
652 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-.
653         XH=SH/SHP
654         MINT(21)=MINT(15)
655         MINT(22)=MINT(16)
656         PMQ(1)=ULMASS(MINT(21))
657         PMQ(2)=ULMASS(MINT(22))
658   330   JT=INT(1.5+RLU(0))
659         ZMIN=2.*PMQ(JT)/SHPR
660         ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
661         ZMAX=MIN(1.-XH,ZMAX)
662         Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
663         IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
664      &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 330
665         SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
666         IF(SQC1.LT.1.E-8) GOTO 330
667         C1=SQRT(SQC1)
668         C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
669         CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
670         CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
671         Z(3-JT)=1.-XH/(1.-Z(JT))
672         SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
673         IF(SQC1.LT.1.E-8) GOTO 330
674         C1=SQRT(SQC1)
675         C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
676         CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
677         CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
678         PHIR=PARU(2)*RLU(0)
679         CPHI=COS(PHIR)
680         ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
681         Z1=2.-Z(JT)
682         Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
683         Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
684         Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
685      &  PMQ(3-JT)**2/SHP))
686         ZMIN=2.*PMQ(3-JT)/SHPR
687         ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
688         ZMAX=MIN(1.-XH,ZMAX)
689         IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
690         KCC=22
691  
692       ELSEIF(ISUB.EQ.73) THEN
693 C...Z0 + W+/- -> Z0 + W+/-.
694         JS=MINT(2)
695         XH=SH/SHP
696   340   JT=3-MINT(2)
697         I=MINT(14+JT)
698         IA=IABS(I)
699         IF(IA.LE.10) THEN
700           RVCKM=VINT(180+I)*RLU(0)
701           DO 350 J=1,MSTP(1)
702           IB=2*J-1+MOD(IA,2)
703           IPM=(5-ISIGN(1,I))/2
704           IDC=J+MDCY(IA,2)+2
705           IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
706           MINT(20+JT)=ISIGN(IB,I)
707           RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
708           IF(RVCKM.LE.0.) GOTO 360
709   350     CONTINUE
710         ELSE
711           IB=2*((IA+1)/2)-1+MOD(IA,2)
712           MINT(20+JT)=ISIGN(IB,I)
713         ENDIF
714   360   PMQ(JT)=ULMASS(MINT(20+JT))
715         MINT(23-JT)=MINT(17-JT)
716         PMQ(3-JT)=ULMASS(MINT(23-JT))
717         JT=INT(1.5+RLU(0))
718         ZMIN=2.*PMQ(JT)/SHPR
719         ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
720         ZMAX=MIN(1.-XH,ZMAX)
721         IF(ZMIN.GE.ZMAX) GOTO 340
722         Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
723         IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
724      &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 340
725         SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
726         IF(SQC1.LT.1.E-8) GOTO 340
727         C1=SQRT(SQC1)
728         C2=1.+2.*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
729         CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
730         CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
731         Z(3-JT)=1.-XH/(1.-Z(JT))
732         SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
733         IF(SQC1.LT.1.E-8) GOTO 340
734         C1=SQRT(SQC1)
735         C2=1.+2.*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
736         CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
737         CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
738         PHIR=PARU(2)*RLU(0)
739         CPHI=COS(PHIR)
740         ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
741         Z1=2.-Z(JT)
742         Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
743         Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
744         Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
745      &  PMQ(3-JT)**2/SHP))
746         ZMIN=2.*PMQ(3-JT)/SHPR
747         ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
748         ZMAX=MIN(1.-XH,ZMAX)
749         IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
750         KCC=22
751  
752       ELSEIF(ISUB.EQ.74) THEN
753 C...Z0 + H0 -> Z0 + H0.
754  
755       ELSEIF(ISUB.EQ.75) THEN
756 C...W+ + W- -> gamma + gamma.
757  
758       ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
759 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-.
760         XH=SH/SHP
761   370   DO 400 JT=1,2
762         I=MINT(14+JT)
763         IA=IABS(I)
764         IF(IA.LE.10) THEN
765           RVCKM=VINT(180+I)*RLU(0)
766           DO 380 J=1,MSTP(1)
767           IB=2*J-1+MOD(IA,2)
768           IPM=(5-ISIGN(1,I))/2
769           IDC=J+MDCY(IA,2)+2
770           IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
771           MINT(20+JT)=ISIGN(IB,I)
772           RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
773           IF(RVCKM.LE.0.) GOTO 390
774   380     CONTINUE
775         ELSE
776           IB=2*((IA+1)/2)-1+MOD(IA,2)
777           MINT(20+JT)=ISIGN(IB,I)
778         ENDIF
779   390   PMQ(JT)=ULMASS(MINT(20+JT))
780   400   CONTINUE
781         JT=INT(1.5+RLU(0))
782         ZMIN=2.*PMQ(JT)/SHPR
783         ZMAX=1.-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/(SHPR*(SHPR-PMQ(3-JT)))
784         ZMAX=MIN(1.-XH,ZMAX)
785         IF(ZMIN.GE.ZMAX) GOTO 370
786         Z(JT)=ZMIN+(ZMAX-ZMIN)*RLU(0)
787         IF(-1.+(1.+XH)/(1.-Z(JT))-XH/(1.-Z(JT))**2.LT.
788      &  (1.-XH)**2/(4.*XH)*RLU(0)) GOTO 370
789         SQC1=1.-4.*PMQ(JT)**2/(Z(JT)**2*SHP)
790         IF(SQC1.LT.1.E-8) GOTO 370
791         C1=SQRT(SQC1)
792         C2=1.+2.*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
793         CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
794         CTHE(JT)=MIN(1.,MAX(-1.,CTHE(JT)))
795         Z(3-JT)=1.-XH/(1.-Z(JT))
796         SQC1=1.-4.*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
797         IF(SQC1.LT.1.E-8) GOTO 370
798         C1=SQRT(SQC1)
799         C2=1.+2.*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
800         CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2.*RLU(0)-1.)*C1))/C1
801         CTHE(3-JT)=MIN(1.,MAX(-1.,CTHE(3-JT)))
802         PHIR=PARU(2)*RLU(0)
803         CPHI=COS(PHIR)
804         ANG=CTHE(1)*CTHE(2)-SQRT(1.-CTHE(1)**2)*SQRT(1.-CTHE(2)**2)*CPHI
805         Z1=2.-Z(JT)
806         Z2=ANG*SQRT(Z(JT)**2-4.*PMQ(JT)**2/SHP)
807         Z3=1.-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
808         Z(3-JT)=2./(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
809      &  PMQ(3-JT)**2/SHP))
810         ZMIN=2.*PMQ(3-JT)/SHPR
811         ZMAX=1.-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
812         ZMAX=MIN(1.-XH,ZMAX)
813         IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
814         KCC=22
815  
816       ELSEIF(ISUB.EQ.78) THEN
817 C...W+/- + H0 -> W+/- + H0.
818  
819       ELSEIF(ISUB.EQ.79) THEN
820 C...H0 + H0 -> H0 + H0.
821  
822       ELSEIF(ISUB.EQ.80) THEN
823 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2.
824         IF(MINT(15).EQ.22) JS=2
825         I=MINT(14+JS)
826         IA=IABS(I)
827         MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
828         IB=3-IA
829         MINT(20+JS)=ISIGN(IB,I)
830         KCC=22
831       ENDIF
832  
833       ELSEIF(ISUB.LE.90) THEN
834       IF(ISUB.EQ.81) THEN
835 C...q + q~ -> Q + Q~; th = (p(q)-p(Q))**2.
836         MINT(21)=ISIGN(MINT(55),MINT(15))
837         MINT(22)=-MINT(21)
838         KCC=4
839  
840       ELSEIF(ISUB.EQ.82) THEN
841 C...g + g -> Q + Q~; th arbitrary.
842         KCS=(-1)**INT(1.5+RLU(0))
843         MINT(21)=ISIGN(MINT(55),KCS)
844         MINT(22)=-MINT(21)
845         KCC=MINT(2)+10
846  
847       ELSEIF(ISUB.EQ.83) THEN
848 C...f + q -> f' + Q; th = (p(f) - p(f'))**2.
849         KFOLD=MINT(16)
850         IF(MINT(2).EQ.2) KFOLD=MINT(15)
851         KFAOLD=IABS(KFOLD)
852         IF(KFAOLD.GT.10) THEN
853           KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
854         ELSE
855           RCKM=VINT(180+KFOLD)*RLU(0)
856           IPM=(5-ISIGN(1,KFOLD))/2
857           KFANEW=-MOD(KFAOLD+1,2)
858   410     KFANEW=KFANEW+2
859           IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
860           IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
861             IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-VCKM(KFAOLD/2,(KFANEW+1)/2)
862             IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-VCKM(KFANEW/2,(KFAOLD+1)/2)
863           ENDIF
864           IF(KFANEW.LE.6.AND.RCKM.GT.0.) GOTO 410
865         ENDIF
866         IF(MINT(2).EQ.1) THEN
867           MINT(21)=ISIGN(MINT(55),MINT(15))
868           MINT(22)=ISIGN(KFANEW,MINT(16))
869         ELSE
870           MINT(21)=ISIGN(KFANEW,MINT(15))
871           MINT(22)=ISIGN(MINT(55),MINT(16))
872           JS=2
873         ENDIF
874         KCC=22
875  
876       ELSEIF(ISUB.EQ.84) THEN
877 C...g + gamma -> Q + Q~; th arbitary.
878         KCS=(-1)**INT(1.5+RLU(0))
879         MINT(21)=ISIGN(MINT(55),KCS)
880         MINT(22)=-MINT(21)
881         KCC=27
882         IF(MINT(16).EQ.21) KCC=28
883  
884       ELSEIF(ISUB.EQ.85) THEN
885 C...gamma + gamma -> F + F~; th arbitary.
886         KCS=(-1)**INT(1.5+RLU(0))
887         MINT(21)=ISIGN(MINT(56),KCS)
888         MINT(22)=-MINT(21)
889         KCC=21
890  
891       ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
892 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
893         MINT(21)=KFPR(ISUB,1)
894         MINT(22)=KFPR(ISUB,2)
895         KCC=24
896         KCS=(-1)**INT(1.5+RLU(0))
897       ENDIF
898  
899       ELSEIF(ISUB.LE.100) THEN
900       IF(ISUB.EQ.95) THEN
901 C...Low-pT ( = energyless g + g -> g + g).
902         KCC=MINT(2)+12
903         KCS=(-1)**INT(1.5+RLU(0))
904  
905       ELSEIF(ISUB.EQ.96) THEN
906 C...Multiple interactions (should be reassigned to QCD process).
907       ENDIF
908  
909       ELSEIF(ISUB.LE.110) THEN
910       IF(ISUB.EQ.101) THEN
911 C...g + g -> gamma*/Z0.
912         KCC=21
913         KFRES=22
914  
915       ELSEIF(ISUB.EQ.102) THEN
916 C...g + g -> H0 (or H'0, or A0).
917         KCC=21
918         KFRES=KFHIGG
919  
920       ELSEIF(ISUB.EQ.103) THEN
921 C...gamma + gamma -> H0 (or H'0, or A0).
922         KCC=21
923         KFRES=KFHIGG
924  
925       ELSEIF(ISUB.EQ.110) THEN
926 C...f + f~ -> gamma + H0; th arbitrary.
927         IF(RLU(0).GT.0.5) JS=2
928         MINT(20+JS)=22
929         MINT(23-JS)=KFHIGG
930       ENDIF
931  
932       ELSEIF(ISUB.LE.120) THEN
933       IF(ISUB.EQ.111) THEN
934 C...f + f~ -> g + H0; th arbitrary.
935         IF(RLU(0).GT.0.5) JS=2
936         MINT(20+JS)=21
937         MINT(23-JS)=25
938         KCC=17+JS
939  
940       ELSEIF(ISUB.EQ.112) THEN
941 C...f + g -> f + H0; th = (p(f) - p(f))**2.
942         IF(MINT(15).EQ.21) JS=2
943         MINT(23-JS)=25
944         KCC=15+JS
945         KCS=ISIGN(1,MINT(14+JS))
946  
947       ELSEIF(ISUB.EQ.113) THEN
948 C...g + g -> g + H0; th arbitrary.
949         IF(RLU(0).GT.0.5) JS=2
950         MINT(23-JS)=25
951         KCC=22+JS
952         KCS=(-1)**INT(1.5+RLU(0))
953  
954       ELSEIF(ISUB.EQ.114) THEN
955 C...g + g -> gamma + gamma; th arbitrary.
956         IF(RLU(0).GT.0.5) JS=2
957         MINT(21)=22
958         MINT(22)=22
959         KCC=21
960  
961       ELSEIF(ISUB.EQ.115) THEN
962 C...g + g -> g + gamma; th arbitrary.
963         IF(RLU(0).GT.0.5) JS=2
964         MINT(23-JS)=22
965         KCC=22+JS
966         KCS=(-1)**INT(1.5+RLU(0))
967  
968       ELSEIF(ISUB.EQ.116) THEN
969 C...g + g -> gamma + Z0.
970  
971       ELSEIF(ISUB.EQ.117) THEN
972 C...g + g -> Z0 + Z0.
973  
974       ELSEIF(ISUB.EQ.118) THEN
975 C...g + g -> W+ + W-.
976       ENDIF
977  
978       ELSEIF(ISUB.LE.140) THEN
979       IF(ISUB.EQ.121) THEN
980 C...g + g -> Q + Q~ + H0.
981         KCS=(-1)**INT(1.5+RLU(0))
982         MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
983         MINT(22)=-MINT(21)
984         KCC=11+INT(0.5+RLU(0))
985         KFRES=KFHIGG
986  
987       ELSEIF(ISUB.EQ.122) THEN
988 C...q + q~ -> Q + Q~ + H0.
989         MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
990         MINT(22)=-MINT(21)
991         KCC=4
992         KFRES=KFHIGG
993  
994       ELSEIF(ISUB.EQ.123) THEN
995 C...f + f' -> f + f' + H0 (or H'0, or A0) (Z0 + Z0 -> H0 as
996 C...inner process).
997         KCC=22
998         KFRES=KFHIGG
999  
1000       ELSEIF(ISUB.EQ.124) THEN
1001 C...f + f' -> f" + f"' + H0 (or H'0, or A) (W+ + W- -> H0 as
1002 C...inner process).
1003         DO 430 JT=1,2
1004         I=MINT(14+JT)
1005         IA=IABS(I)
1006         IF(IA.LE.10) THEN
1007           RVCKM=VINT(180+I)*RLU(0)
1008           DO 420 J=1,MSTP(1)
1009           IB=2*J-1+MOD(IA,2)
1010           IPM=(5-ISIGN(1,I))/2
1011           IDC=J+MDCY(IA,2)+2
1012           IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
1013           MINT(20+JT)=ISIGN(IB,I)
1014           RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
1015           IF(RVCKM.LE.0.) GOTO 430
1016   420     CONTINUE
1017         ELSE
1018           IB=2*((IA+1)/2)-1+MOD(IA,2)
1019           MINT(20+JT)=ISIGN(IB,I)
1020         ENDIF
1021   430   CONTINUE
1022         KCC=22
1023         KFRES=KFHIGG
1024  
1025       ELSEIF(ISUB.EQ.131) THEN
1026 C...g + g -> Z0 + q + q~.
1027         MINT(21)=KFPR(131,1)
1028         MINT(22)=KFPR(131,2)
1029         MINT(23)=-MINT(22)
1030         KCC=MINT(2)+10
1031         KCS=1
1032       ENDIF
1033  
1034       ELSEIF(ISUB.LE.160) THEN
1035       IF(ISUB.EQ.141) THEN
1036 C...f + f~ -> gamma*/Z0/Z'0.
1037         KFRES=32
1038  
1039       ELSEIF(ISUB.EQ.142) THEN
1040 C...f + f~' -> W'+/- .
1041         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
1042         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
1043         KFRES=ISIGN(34,KCH1+KCH2)
1044  
1045       ELSEIF(ISUB.EQ.143) THEN
1046 C...f + f~' -> H+/-.
1047         KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
1048         KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
1049         KFRES=ISIGN(37,KCH1+KCH2)
1050  
1051       ELSEIF(ISUB.EQ.144) THEN
1052 C...f + f~' -> R.
1053         KFRES=ISIGN(40,MINT(15)+MINT(16))
1054  
1055       ELSEIF(ISUB.EQ.145) THEN
1056 C...q + l -> LQ (leptoquark).
1057         IF(IABS(MINT(16)).LE.8) JS=2
1058         KFRES=ISIGN(39,MINT(14+JS))
1059         KCC=28+JS
1060         KCS=ISIGN(1,MINT(14+JS))
1061  
1062       ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
1063 C...q + g -> q* (excited quark).
1064         IF(MINT(15).EQ.21) JS=2
1065         KFRES=MINT(14+JS)+ISIGN(6,MINT(14+JS))
1066         KCC=30+JS
1067         KCS=ISIGN(1,MINT(14+JS))
1068  
1069       ELSEIF(ISUB.EQ.149) THEN
1070 C...g + g -> eta_techni.
1071         KFRES=38
1072         KCC=23
1073         KCS=(-1)**INT(1.5+RLU(0))
1074       ENDIF
1075  
1076       ELSE
1077       IF(ISUB.EQ.161) THEN
1078 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2.
1079         IF(MINT(15).EQ.21) JS=2
1080         I=MINT(14+JS)
1081         IA=IABS(I)
1082         MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
1083         IB=IA+MOD(IA,2)-MOD(IA+1,2)
1084         MINT(20+JS)=ISIGN(IB,I)
1085         KCC=15+JS
1086         KCS=ISIGN(1,MINT(14+JS))
1087  
1088       ELSEIF(ISUB.EQ.162) THEN
1089 C...q + g -> LQ + l~; LQ=leptoquark; th=(p(q)-p(LQ))^2.
1090         IF(MINT(15).EQ.21) JS=2
1091         MINT(20+JS)=ISIGN(39,MINT(14+JS))
1092         KFLQL=KFDP(MDCY(39,2),2)
1093         MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
1094         KCC=15+JS
1095         KCS=ISIGN(1,MINT(14+JS))
1096  
1097       ELSEIF(ISUB.EQ.163) THEN
1098 C...g + g -> LQ + LQ~; LQ=leptoquark; th arbitrary.
1099         KCS=(-1)**INT(1.5+RLU(0))
1100         MINT(21)=ISIGN(39,KCS)
1101         MINT(22)=-MINT(21)
1102         KCC=MINT(2)+10
1103  
1104       ELSEIF(ISUB.EQ.164) THEN
1105 C...q + q~ -> LQ + LQ~; LQ=leptoquark; th=(p(q)-p(LQ))**2.
1106         MINT(21)=ISIGN(39,MINT(15))
1107         MINT(22)=-MINT(21)
1108         KCC=4
1109  
1110       ELSEIF(ISUB.EQ.165) THEN
1111 C...q + q~ -> l- + l+; th=(p(q)-p(l-))**2.
1112         MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
1113         MINT(22)=-MINT(21)
1114  
1115       ELSEIF(ISUB.EQ.166) THEN
1116 C...q + q~' -> l + nu; th=(p(u)-p(nu))**2 or (p(u~)-p(nu~))**2.
1117         IF(MOD(MINT(15),2).EQ.0) THEN
1118           MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
1119           MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
1120         ELSE
1121           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
1122           MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
1123         ENDIF
1124  
1125       ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
1126 C...q + q' -> q" + q* (excited quark).
1127         KFQEXC=ISUB-166
1128         KFQSTR=ISUB-160
1129         JS=MINT(2)
1130         MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
1131         IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
1132      &  MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
1133         KCC=22
1134       ENDIF
1135       ENDIF
1136  
1137       IF(ISET(ISUB).EQ.11) THEN
1138 C...Store documentation for user-defined processes.
1139         BEZUP=(PUP(1,4)-PUP(2,4))/(PUP(1,4)+PUP(2,4))
1140         KUPPO(1)=MINT(83)+5
1141         KUPPO(2)=MINT(83)+6
1142         I=MINT(83)+6
1143         DO 450 IUP=3,NUP
1144         KUPPO(IUP)=0
1145         IF(MSTP(128).GE.2.AND.KUP(IUP,3).NE.0) THEN
1146           IDOC=IDOC-1
1147           MINT(4)=MINT(4)-1
1148           GOTO 450
1149         ENDIF
1150         I=I+1
1151         KUPPO(IUP)=I
1152         K(I,1)=21
1153         K(I,2)=KUP(IUP,2)
1154         K(I,3)=0
1155         IF(KUP(IUP,3).NE.0) K(I,3)=KUPPO(KUP(IUP,3))
1156         K(I,4)=0
1157         K(I,5)=0
1158         DO 440 J=1,5
1159         P(I,J)=PUP(IUP,J)
1160   440   CONTINUE
1161   450   CONTINUE
1162         CALL LUDBRB(MINT(83)+7,MINT(83)+4+NUP,0.,VINT(24),0D0,0D0,
1163      &  -DBLE(BEZUP))
1164  
1165 C...Store final state partons for user-defined processes.
1166         N=IPU2
1167         DO 470 IUP=3,NUP
1168         N=N+1
1169         K(N,1)=1
1170         IF(KUP(IUP,1).NE.1) K(N,1)=11
1171         K(N,2)=KUP(IUP,2)
1172         IF(MSTP(128).LE.0.OR.KUP(IUP,3).EQ.0) THEN
1173           K(N,3)=KUPPO(IUP)
1174         ELSE
1175           K(N,3)=MINT(84)+KUP(IUP,3)
1176         ENDIF
1177         K(N,4)=0
1178         K(N,5)=0
1179         DO 460 J=1,5
1180         P(N,J)=PUP(IUP,J)
1181   460   CONTINUE
1182   470   CONTINUE
1183         CALL LUDBRB(IPU3,N,0.,VINT(24),0D0,0D0,-DBLE(BEZUP))
1184  
1185 C...Arrange colour flow for user-defined processes.
1186         N=MINT(84)
1187         DO 480 IUP=1,NUP
1188         N=N+1
1189         IF(KCHG(LUCOMP(K(N,2)),2).EQ.0) GOTO 480
1190         IF(K(N,1).EQ.1) K(N,1)=3
1191         IF(K(N,1).EQ.11) K(N,1)=14
1192         IF(KUP(IUP,4).NE.0) K(N,4)=K(N,4)+MSTU(5)*(KUP(IUP,4)+MINT(84))
1193         IF(KUP(IUP,5).NE.0) K(N,5)=K(N,5)+MSTU(5)*(KUP(IUP,5)+MINT(84))
1194         IF(KUP(IUP,6).NE.0) K(N,4)=K(N,4)+KUP(IUP,6)+MINT(84)
1195         IF(KUP(IUP,7).NE.0) K(N,5)=K(N,5)+KUP(IUP,7)+MINT(84)
1196   480   CONTINUE
1197  
1198       ELSEIF(IDOC.EQ.7) THEN
1199 C...Resonance not decaying; store kinematics.
1200         I=MINT(83)+7
1201         K(IPU3,1)=1
1202         K(IPU3,2)=KFRES
1203         K(IPU3,3)=I
1204         P(IPU3,4)=SHUSER
1205         P(IPU3,5)=SHUSER
1206         K(I,1)=21
1207         K(I,2)=KFRES
1208         P(I,4)=SHUSER
1209         P(I,5)=SHUSER
1210         N=IPU3
1211         MINT(21)=KFRES
1212         MINT(22)=0
1213  
1214 C...Special cases: colour flow in g + g -> eta_techni, q + l -> LQ
1215 C...and q + g -> q*.
1216         IF(KFRES.EQ.38.OR.IABS(KFRES).EQ.39.OR.(MSTP(6).EQ.1.AND.
1217      &  (IABS(KFRES).EQ.7.OR.IABS(KFRES).EQ.8))) THEN
1218           K(IPU3,1)=3
1219           DO 490 J=1,2
1220           JC=J
1221           IF(KCS.EQ.-1) JC=3-J
1222           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
1223      &    MINT(84)+ICOL(KCC,1,JC)
1224           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
1225      &    MINT(84)+ICOL(KCC,2,JC)
1226           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
1227      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
1228   490     CONTINUE
1229         ELSE
1230           K(IPU1,4)=IPU2
1231           K(IPU1,5)=IPU2
1232           K(IPU2,4)=IPU1
1233           K(IPU2,5)=IPU1
1234         ENDIF
1235  
1236       ELSEIF(IDOC.EQ.8) THEN
1237 C...2 -> 2 processes: store outgoing partons in their CM-frame.
1238         DO 500 JT=1,2
1239         I=MINT(84)+2+JT
1240         K(I,1)=1
1241         IF(IABS(MINT(20+JT)).LE.100) THEN
1242           IF(KCHG(IABS(MINT(20+JT)),2).NE.0) K(I,1)=3
1243         ENDIF
1244         K(I,2)=MINT(20+JT)
1245         K(I,3)=MINT(83)+IDOC+JT-2
1246         KFAA=IABS(K(I,2))
1247         IF(KFAA.GE.23.OR.(KFAA.EQ.6.AND.KFPR(ISUBSV,1).NE.0.AND.
1248      &  MSTP(48).GE.1).OR.((KFAA.EQ.7.OR.KFAA.EQ.8.OR.KFAA.EQ.17.OR.
1249      &  KFAA.EQ.18).AND.KFPR(ISUBSV,1).NE.0.AND.MSTP(49).GE.1)) THEN
1250           P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
1251         ELSEIF((KFAA.EQ.7.OR.KFAA.EQ.8).AND.MSTP(6).EQ.1.AND.
1252      &  KFPR(ISUBSV,2).NE.0) THEN
1253           P(I,5)=SQRT(VINT(64))
1254         ELSE
1255           P(I,5)=ULMASS(K(I,2))
1256         ENDIF
1257   500   CONTINUE
1258         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
1259           KFA1=IABS(MINT(21))
1260           KFA2=IABS(MINT(22))
1261           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
1262      &    THEN
1263             MINT(51)=1
1264             RETURN
1265           ENDIF
1266           P(IPU3,5)=0.
1267           P(IPU4,5)=0.
1268         ENDIF
1269         P(IPU3,4)=0.5*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
1270         P(IPU3,3)=SQRT(MAX(0.,P(IPU3,4)**2-P(IPU3,5)**2))
1271         P(IPU4,4)=SHR-P(IPU3,4)
1272         P(IPU4,3)=-P(IPU3,3)
1273         N=IPU4
1274         MINT(7)=MINT(83)+7
1275         MINT(8)=MINT(83)+8
1276  
1277 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4).
1278         CALL LUDBRB(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
1279  
1280       ELSEIF(IDOC.EQ.9.AND.ISET(ISUB).EQ.5) THEN
1281 C...2 -> 3 processes (alt 1): store outgoing partons in their CM frame.
1282         DO 510 JT=1,2
1283         I=MINT(84)+2+JT
1284         K(I,1)=1
1285         IF(IABS(MINT(20+JT)).LE.100) THEN
1286           IF(KCHG(IABS(MINT(20+JT)),2).NE.0) K(I,1)=3
1287         ENDIF
1288         K(I,2)=MINT(20+JT)
1289         K(I,3)=MINT(83)+IDOC+JT-3
1290         IF(IABS(K(I,2)).LE.22) THEN
1291           P(I,5)=ULMASS(K(I,2))
1292         ELSE
1293           P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
1294         ENDIF
1295         PT=SQRT(MAX(0.,VINT(197+5*JT)-P(I,5)**2+VINT(196+5*JT)**2))
1296         P(I,1)=PT*COS(VINT(198+5*JT))
1297         P(I,2)=PT*SIN(VINT(198+5*JT))
1298   510   CONTINUE
1299         K(IPU5,1)=1
1300         K(IPU5,2)=KFRES
1301         K(IPU5,3)=MINT(83)+IDOC
1302         P(IPU5,5)=SHR
1303         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
1304         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
1305         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
1306         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
1307         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
1308         PMT3=SQRT(PMS3)
1309         P(IPU5,3)=PMT3*SINH(VINT(211))
1310         P(IPU5,4)=PMT3*COSH(VINT(211))
1311         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
1312         SQL12=(PMS12-PMS1-PMS2)**2-4.*PMS1*PMS2
1313         IF(SQL12.LE.0.) THEN
1314           MINT(51)=1
1315           RETURN
1316         ENDIF
1317         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
1318      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2.*PMS12)
1319         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
1320         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
1321         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
1322         MINT(23)=KFRES
1323         N=IPU5
1324         MINT(7)=MINT(83)+7
1325         MINT(8)=MINT(83)+8
1326  
1327       ELSEIF(IDOC.EQ.9) THEN
1328 C...2 -> 3 processes: store outgoing partons in their CM frame.
1329         DO 520 JT=1,3
1330         I=MINT(84)+2+JT
1331         K(I,1)=1
1332         IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
1333         K(I,2)=MINT(20+JT)
1334         K(I,3)=MINT(83)+IDOC+JT-3
1335         IF(JT.EQ.1) THEN
1336           P(I,5)=SQRT(VINT(63))
1337         ELSE
1338           P(I,5)=PMAS(KFPR(ISUB,2),1)
1339         ENDIF
1340   520   CONTINUE
1341         P(IPU3,4)=0.5*(SHR+(VINT(63)-VINT(64))/SHR)
1342         P(IPU3,3)=SQRT(MAX(0.,P(IPU3,4)**2-P(IPU3,5)**2))
1343         P(IPU4,4)=0.5*SQRT(VINT(64))
1344         P(IPU4,3)=SQRT(MAX(0.,P(IPU4,4)**2-P(IPU4,5)**2))
1345         P(IPU5,4)=P(IPU4,4)
1346         P(IPU5,3)=-P(IPU4,3)
1347         N=IPU5
1348         MINT(7)=MINT(83)+7
1349         MINT(8)=MINT(83)+9
1350  
1351 C...Rotate and boost outgoing partons.
1352         CALL LUDBRB(IPU4,IPU5,ACOS(VINT(83)),VINT(84),0D0,0D0,0D0)
1353         CALL LUDBRB(IPU4,IPU5,0.,0.,0D0,0D0,
1354      &  -DBLE(P(IPU3,3)/(SHR-P(IPU3,4))))
1355         CALL LUDBRB(IPU3,IPU5,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
1356  
1357       ELSEIF(IDOC.EQ.11) THEN
1358 C...Z0 + Z0 -> H0, W+ + W- -> H0: store Higgs and outgoing partons.
1359         PHI(1)=PARU(2)*RLU(0)
1360         PHI(2)=PHI(1)-PHIR
1361         DO 530 JT=1,2
1362         I=MINT(84)+2+JT
1363         K(I,1)=1
1364         IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
1365         K(I,2)=MINT(20+JT)
1366         K(I,3)=MINT(83)+IDOC+JT-2
1367         P(I,5)=ULMASS(K(I,2))
1368         IF(0.5*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0.
1369         PABS=SQRT(MAX(0.,(0.5*SHPR*Z(JT))**2-P(I,5)**2))
1370         PTABS=PABS*SQRT(MAX(0.,1.-CTHE(JT)**2))
1371         P(I,1)=PTABS*COS(PHI(JT))
1372         P(I,2)=PTABS*SIN(PHI(JT))
1373         P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
1374         P(I,4)=0.5*SHPR*Z(JT)
1375         IZW=MINT(83)+6+JT
1376         K(IZW,1)=21
1377         K(IZW,2)=23
1378         IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,LUCHGE(MINT(14+JT)))
1379         K(IZW,3)=IZW-2
1380         P(IZW,1)=-P(I,1)
1381         P(IZW,2)=-P(I,2)
1382         P(IZW,3)=(0.5*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
1383         P(IZW,4)=0.5*SHPR*(1.-Z(JT))
1384         P(IZW,5)=-SQRT(MAX(0.,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
1385   530   CONTINUE
1386         I=MINT(83)+9
1387         K(IPU5,1)=1
1388         K(IPU5,2)=KFRES
1389         K(IPU5,3)=I
1390         P(IPU5,5)=SHR
1391         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
1392         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
1393         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
1394         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
1395         K(I,1)=21
1396         K(I,2)=KFRES
1397         DO 540 J=1,5
1398         P(I,J)=P(IPU5,J)
1399   540   CONTINUE
1400         N=IPU5
1401         MINT(23)=KFRES
1402  
1403       ELSEIF(IDOC.EQ.12) THEN
1404 C...Z0 and W+/- scattering: store bosons and outgoing partons.
1405         PHI(1)=PARU(2)*RLU(0)
1406         PHI(2)=PHI(1)-PHIR
1407         JTRAN=INT(1.5+RLU(0))
1408         DO 550 JT=1,2
1409         I=MINT(84)+2+JT
1410         K(I,1)=1
1411         IF(IABS(MINT(20+JT)).LE.10.OR.MINT(20+JT).EQ.21) K(I,1)=3
1412         K(I,2)=MINT(20+JT)
1413         K(I,3)=MINT(83)+IDOC+JT-2
1414         P(I,5)=ULMASS(K(I,2))
1415         IF(0.5*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0.
1416         PABS=SQRT(MAX(0.,(0.5*SHPR*Z(JT))**2-P(I,5)**2))
1417         PTABS=PABS*SQRT(MAX(0.,1.-CTHE(JT)**2))
1418         P(I,1)=PTABS*COS(PHI(JT))
1419         P(I,2)=PTABS*SIN(PHI(JT))
1420         P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
1421         P(I,4)=0.5*SHPR*Z(JT)
1422         IZW=MINT(83)+6+JT
1423         K(IZW,1)=21
1424         IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
1425           K(IZW,2)=23
1426         ELSE
1427           K(IZW,2)=ISIGN(24,LUCHGE(MINT(14+JT))-LUCHGE(MINT(20+JT)))
1428         ENDIF
1429         K(IZW,3)=IZW-2
1430         P(IZW,1)=-P(I,1)
1431         P(IZW,2)=-P(I,2)
1432         P(IZW,3)=(0.5*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
1433         P(IZW,4)=0.5*SHPR*(1.-Z(JT))
1434         P(IZW,5)=-SQRT(MAX(0.,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
1435         IPU=MINT(84)+4+JT
1436         K(IPU,1)=3
1437         K(IPU,2)=KFPR(ISUB,JT)
1438         IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
1439         IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
1440         K(IPU,3)=MINT(83)+8+JT
1441         IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
1442           P(IPU,5)=ULMASS(K(IPU,2))
1443         ELSE
1444           P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
1445         ENDIF
1446         MINT(22+JT)=K(IPU,2)
1447   550   CONTINUE
1448 C...Find rotation and boost for hard scattering subsystem.
1449         I1=MINT(83)+7
1450         I2=MINT(83)+8
1451         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
1452         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
1453         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
1454         GAMCM=(P(I1,4)+P(I2,4))/SHR
1455         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
1456         PX=P(I1,1)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEXCM
1457         PY=P(I1,2)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEYCM
1458         PZ=P(I1,3)+GAMCM*(GAMCM/(1.+GAMCM)*BEPCM-P(I1,4))*BEZCM
1459         THECM=ULANGL(PZ,SQRT(PX**2+PY**2))
1460         PHICM=ULANGL(PX,PY)
1461 C...Store hard scattering subsystem. Rotate and boost it.
1462         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4.*P(IPU5,5)**2*
1463      &  P(IPU6,5)**2
1464         PABS=SQRT(MAX(0.,SQLAM/(4.*SH)))
1465         CTHWZ=VINT(23)
1466         STHWZ=SQRT(MAX(0.,1.-CTHWZ**2))
1467         PHIWZ=VINT(24)-PHICM
1468         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
1469         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
1470         P(IPU5,3)=PABS*CTHWZ
1471         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
1472         P(IPU6,1)=-P(IPU5,1)
1473         P(IPU6,2)=-P(IPU5,2)
1474         P(IPU6,3)=-P(IPU5,3)
1475         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
1476         CALL LUDBRB(IPU5,IPU6,THECM,PHICM,DBLE(BEXCM),DBLE(BEYCM),
1477      &  DBLE(BEZCM))
1478         DO 570 JT=1,2
1479         I1=MINT(83)+8+JT
1480         I2=MINT(84)+4+JT
1481         K(I1,1)=21
1482         K(I1,2)=K(I2,2)
1483         DO 560 J=1,5
1484         P(I1,J)=P(I2,J)
1485   560   CONTINUE
1486   570   CONTINUE
1487         N=IPU6
1488         MINT(7)=MINT(83)+9
1489         MINT(8)=MINT(83)+10
1490       ENDIF
1491  
1492       IF(ISET(ISUB).EQ.11) THEN
1493       ELSEIF(IDOC.GE.8.AND.ISET(ISUB).NE.6) THEN
1494 C...Store colour connection indices.
1495         DO 580 J=1,2
1496         JC=J
1497         IF(KCS.EQ.-1) JC=3-J
1498         IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
1499      &  K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
1500         IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
1501      &  K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
1502         IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
1503      &  MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
1504         IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
1505      &  MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
1506   580   CONTINUE
1507  
1508 C...Copy outgoing partons to documentation lines.
1509         IMAX=2
1510         IF(IDOC.EQ.9) IMAX=3
1511         DO 600 I=1,IMAX
1512         I1=MINT(83)+IDOC-IMAX+I
1513         I2=MINT(84)+2+I
1514         K(I1,1)=21
1515         K(I1,2)=K(I2,2)
1516         IF(IDOC.LE.9) K(I1,3)=0
1517         IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
1518         DO 590 J=1,5
1519         P(I1,J)=P(I2,J)
1520   590   CONTINUE
1521   600   CONTINUE
1522  
1523       ELSEIF(IDOC.EQ.9) THEN
1524 C...Store colour connection indices.
1525         DO 610 J=1,2
1526         JC=J
1527         IF(KCS.EQ.-1) JC=3-J
1528         IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
1529      &  K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
1530      &  MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
1531         IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
1532      &  K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
1533      &  MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
1534         IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
1535      &  MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
1536         IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
1537      &  MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
1538   610   CONTINUE
1539  
1540 C...Copy outgoing partons to documentation lines.
1541         DO 630 I=1,3
1542         I1=MINT(83)+IDOC-3+I
1543         I2=MINT(84)+2+I
1544         K(I1,1)=21
1545         K(I1,2)=K(I2,2)
1546         K(I1,3)=0
1547         DO 620 J=1,5
1548         P(I1,J)=P(I2,J)
1549   620   CONTINUE
1550   630   CONTINUE
1551       ENDIF
1552  
1553 C...Low-pT events: remove gluons used for string drawing purposes.
1554       IF(ISUB.EQ.95) THEN
1555         K(IPU3,1)=K(IPU3,1)+10
1556         K(IPU4,1)=K(IPU4,1)+10
1557         DO 640 J=41,66
1558         VINTSV(J)=VINT(J)
1559         VINT(J)=0.
1560   640   CONTINUE
1561         DO 660 I=MINT(83)+5,MINT(83)+8
1562         DO 650 J=1,5
1563         P(I,J)=0.
1564   650   CONTINUE
1565   660   CONTINUE
1566       ENDIF
1567  
1568       RETURN
1569       END