]>
Commit | Line | Data |
---|---|---|
e74335a4 | 1 | * $Id$ |
2 | C | |
3 | C | |
4 | C******************************************************************* | |
5 | C * | |
6 | C Subroutine HIJSFT * | |
7 | C * | |
8 | C Scatter two excited strings, JP from proj and JT from target * | |
9 | C******************************************************************* | |
10 | SUBROUTINE HIJSFT(JP,JT,JOUT,IERROR) | |
11 | #include "hijcrdn.inc" | |
12 | #include "hiparnt.inc" | |
13 | #include "hijdat.inc" | |
14 | #include "hijjet1.inc" | |
15 | #include "hijjet2.inc" | |
16 | #include "histrng.inc" | |
17 | #include "dpmcom1.inc" | |
18 | #include "dpmcom2.inc" | |
19 | SAVE | |
20 | C******************************************************************* | |
21 | C JOUT-> the number | |
22 | C of hard scatterings preceding this soft collision. | |
23 | C IHNT2(13)-> 1= | |
24 | C double diffrac 2=single diffrac, 3=non-single diffrac. | |
25 | C******************************************************************* | |
26 | IERROR=0 | |
27 | JJP=JP | |
28 | JJT=JT | |
29 | NDPM=0 | |
30 | IOPMAIN=0 | |
31 | IF(JP.GT.IHNT2(1) .OR. JT.GT.IHNT2(3)) RETURN | |
32 | ||
33 | EPP=PP(JP,4)+PP(JP,3) | |
34 | EPM=PP(JP,4)-PP(JP,3) | |
35 | ETP=PT(JT,4)+PT(JT,3) | |
36 | ETM=PT(JT,4)-PT(JT,3) | |
37 | ||
38 | WP=EPP+ETP | |
39 | WM=EPM+ETM | |
40 | SW=WP*WM | |
41 | C ********total W+,W- and center-of-mass energy | |
42 | ||
43 | IF(WP.LT.0.0 .OR. WM.LT.0.0) GO TO 1000 | |
44 | ||
45 | IF(JOUT.EQ.0) THEN | |
46 | IF(EPP.LT.0.0) GO TO 1000 | |
47 | IF(EPM.LT.0.0) GO TO 1000 | |
48 | IF(ETP.LT.0.0) GO TO 1000 | |
49 | IF(ETM.LT.0.0) GO TO 1000 | |
50 | IF(EPP/(EPM+0.01).LE.ETP/(ETM+0.01)) RETURN | |
51 | ENDIF | |
52 | C ********For strings which does not follow a jet-prod, | |
53 | C scatter only if Ycm(JP)>Ycm(JT). When jets | |
54 | C are produced just before this collision | |
55 | C this requirement has already be enforced | |
56 | C (see SUBROUTINE HIJHRD) | |
57 | IHNT2(11)=JP | |
58 | IHNT2(12)=JT | |
59 | C | |
60 | C | |
61 | C | |
62 | MISS=0 | |
63 | PKC1=0.0 | |
64 | PKC2=0.0 | |
65 | PKC11=0.0 | |
66 | PKC12=0.0 | |
67 | PKC21=0.0 | |
68 | PKC22=0.0 | |
69 | DPKC11=0.0 | |
70 | DPKC12=0.0 | |
71 | DPKC21=0.0 | |
72 | DPKC22=0.0 | |
73 | IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN | |
74 | IF(NFP(JP,10).EQ.1) THEN | |
75 | PHI1=ULANGL_HIJING(PP(JP,10),PP(JP,11)) | |
76 | PPJET=SQRT(PP(JP,10)**2+PP(JP,11)**2) | |
77 | PKC1=PPJET | |
78 | PKC11=PP(JP,10) | |
79 | PKC12=PP(JP,11) | |
80 | ENDIF | |
81 | IF(NFT(JT,10).EQ.1) THEN | |
82 | PHI2=ULANGL_HIJING(PT(JT,10),PT(JT,11)) | |
83 | PTJET=SQRT(PT(JT,10)**2+PT(JT,11)**2) | |
84 | PKC2=PTJET | |
85 | PKC21=PT(JT,10) | |
86 | PKC22=PT(JT,11) | |
87 | ENDIF | |
88 | IF(IHPR2(4).GT.0.AND.IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN | |
89 | IF(NFP(JP,10).EQ.0) THEN | |
90 | PHI=-PHI2 | |
91 | ELSE IF(NFT(JT,10).EQ.0) THEN | |
92 | PHI=PHI1 | |
93 | ELSE | |
94 | PHI=(PHI1+PHI2-HIPR1(40))/2.0 | |
95 | ENDIF | |
96 | BX=HINT1(19)*COS(HINT1(20)) | |
97 | BY=HINT1(19)*SIN(HINT1(20)) | |
98 | XP0=YP(1,JP) | |
99 | YP0=YP(2,JP) | |
100 | XT0=YT(1,JT)+BX | |
101 | YT0=YT(2,JT)+BY | |
102 | R1=MAX(1.2*IHNT2(1)**0.3333333, | |
103 | & SQRT(XP0**2+YP0**2)) | |
104 | R2=MAX(1.2*IHNT2(3)**0.3333333, | |
105 | & SQRT((XT0-BX)**2+(YT0-BY)**2)) | |
106 | IF(ABS(COS(PHI)).LT.1.0E-5) THEN | |
107 | DD1=R1 | |
108 | DD2=R1 | |
28d5a4c1 | 109 | C PH DD3=ABS(BY+SQRT(R2**2-(XP0-BX)**2)-YP0) |
110 | C PH DD4=ABS(BY-SQRT(R2**2-(XP0-BX)**2)-YP0) | |
111 | DD3=ABS(BY+SQRT(R2**2-(XT0-BX)**2)-YP0) | |
112 | DD4=ABS(BY-SQRT(R2**2-(XT0-BX)**2)-YP0) | |
e74335a4 | 113 | GO TO 5 |
114 | ENDIF | |
115 | BB=2.0*SIN(PHI)*(COS(PHI)*YP0-SIN(PHI)*XP0) | |
116 | CC=(YP0**2-R1**2)*COS(PHI)**2+XP0*SIN(PHI)*( | |
117 | & XP0*SIN(PHI)-2.0*YP0*COS(PHI)) | |
118 | DD=BB**2-4.0*CC | |
119 | IF(DD.LT.0.0) GO TO 10 | |
120 | XX1=(-BB+SQRT(DD))/2.0 | |
121 | XX2=(-BB-SQRT(DD))/2.0 | |
122 | DD1=ABS((XX1-XP0)/COS(PHI)) | |
123 | DD2=ABS((XX2-XP0)/COS(PHI)) | |
124 | C | |
125 | BB=2.0*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0)-2.0*BX | |
126 | CC=(BX**2+(YT0-BY)**2-R2**2)*COS(PHI)**2+XT0*SIN(PHI) | |
127 | & *(XT0*SIN(PHI)-2.0*COS(PHI)*(YT0-BY)) | |
128 | & -2.0*BX*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0) | |
129 | DD=BB**2-4.0*CC | |
130 | IF(DD.LT.0.0) GO TO 10 | |
131 | XX1=(-BB+SQRT(DD))/2.0 | |
132 | XX2=(-BB-SQRT(DD))/2.0 | |
133 | DD3=ABS((XX1-XT0)/COS(PHI)) | |
134 | DD4=ABS((XX2-XT0)/COS(PHI)) | |
135 | C | |
136 | 5 DD1=MIN(DD1,DD3) | |
137 | DD2=MIN(DD2,DD4) | |
138 | IF(DD1.LT.HIPR1(13)) DD1=0.0 | |
139 | IF(DD2.LT.HIPR1(13)) DD2=0.0 | |
140 | IF(NFP(JP,10).EQ.1.AND.PPJET.GT.HIPR1(11)) THEN | |
141 | DP1=DD1*HIPR1(14)/2.0 | |
142 | DP1=MIN(DP1,PPJET-HIPR1(11)) | |
143 | PKC1=PPJET-DP1 | |
144 | DPX1=COS(PHI1)*DP1 | |
145 | DPY1=SIN(PHI1)*DP1 | |
146 | PKC11=PP(JP,10)-DPX1 | |
147 | PKC12=PP(JP,11)-DPY1 | |
148 | IF(DP1.GT.0.0) THEN | |
149 | CTHEP=PP(JP,12)/SQRT(PP(JP,12)**2+PPJET**2) | |
150 | DPZ1=DP1*CTHEP/SQRT(1.0-CTHEP**2) | |
151 | DPE1=SQRT(DPX1**2+DPY1**2+DPZ1**2) | |
152 | EPPPRM=PP(JP,4)+PP(JP,3)-DPE1-DPZ1 | |
153 | EPMPRM=PP(JP,4)-PP(JP,3)-DPE1+DPZ1 | |
154 | IF(EPPPRM.LE.0.0.OR.EPMPRM.LE.0.0) GO TO 15 | |
155 | EPP=EPPPRM | |
156 | EPM=EPMPRM | |
157 | PP(JP,10)=PKC11 | |
158 | PP(JP,11)=PKC12 | |
159 | NPJ(JP)=NPJ(JP)+1 | |
160 | KFPJ(JP,NPJ(JP))=21 | |
161 | PJPX(JP,NPJ(JP))=DPX1 | |
162 | PJPY(JP,NPJ(JP))=DPY1 | |
163 | PJPZ(JP,NPJ(JP))=DPZ1 | |
164 | PJPE(JP,NPJ(JP))=DPE1 | |
165 | PJPM(JP,NPJ(JP))=0.0 | |
166 | PP(JP,3)=PP(JP,3)-DPZ1 | |
167 | PP(JP,4)=PP(JP,4)-DPE1 | |
168 | ENDIF | |
169 | ENDIF | |
170 | 15 IF(NFT(JT,10).EQ.1.AND.PTJET.GT.HIPR1(11)) THEN | |
171 | DP2=DD2*HIPR1(14)/2.0 | |
172 | DP2=MIN(DP2,PTJET-HIPR1(11)) | |
173 | PKC2=PTJET-DP2 | |
174 | DPX2=COS(PHI2)*DP2 | |
175 | DPY2=SIN(PHI2)*DP2 | |
176 | PKC21=PT(JT,10)-DPX2 | |
177 | PKC22=PT(JT,11)-DPY2 | |
178 | IF(DP2.GT.0.0) THEN | |
179 | CTHET=PT(JT,12)/SQRT(PT(JT,12)**2+PTJET**2) | |
180 | DPZ2=DP2*CTHET/SQRT(1.0-CTHET**2) | |
181 | DPE2=SQRT(DPX2**2+DPY2**2+DPZ2**2) | |
182 | ETPPRM=PT(JT,4)+PT(JT,3)-DPE2-DPZ2 | |
183 | ETMPRM=PT(JT,4)-PT(JT,3)-DPE2+DPZ2 | |
184 | IF(ETPPRM.LE.0.0.OR.ETMPRM.LE.0.0) GO TO 16 | |
185 | ETP=ETPPRM | |
186 | ETM=ETMPRM | |
187 | PT(JT,10)=PKC21 | |
188 | PT(JT,11)=PKC22 | |
189 | NTJ(JT)=NTJ(JT)+1 | |
190 | KFTJ(JT,NTJ(JT))=21 | |
191 | PJTX(JT,NTJ(JT))=DPX2 | |
192 | PJTY(JT,NTJ(JT))=DPY2 | |
193 | PJTZ(JT,NTJ(JT))=DPZ2 | |
194 | PJTE(JT,NTJ(JT))=DPE2 | |
195 | PJTM(JT,NTJ(JT))=0.0 | |
196 | PT(JT,3)=PT(JT,3)-DPZ2 | |
197 | PT(JT,4)=PT(JT,4)-DPE2 | |
198 | ENDIF | |
199 | ENDIF | |
200 | 16 DPKC11=-(PP(JP,10)-PKC11)/2.0 | |
201 | DPKC12=-(PP(JP,11)-PKC12)/2.0 | |
202 | DPKC21=-(PT(JT,10)-PKC21)/2.0 | |
203 | DPKC22=-(PT(JT,11)-PKC22)/2.0 | |
204 | WP=EPP+ETP | |
205 | WM=EPM+ETM | |
206 | SW=WP*WM | |
207 | ENDIF | |
208 | ENDIF | |
209 | C ********If jet is quenched the pt from valence quark | |
210 | C hard scattering has to reduced by d*kapa | |
211 | C | |
212 | C | |
213 | 10 PTP02=PP(JP,1)**2+PP(JP,2)**2 | |
214 | PTT02=PT(JT,1)**2+PT(JT,2)**2 | |
215 | C | |
216 | AMQ=MAX(PP(JP,14)+PP(JP,15),PT(JT,14)+PT(JT,15)) | |
217 | AMX=HIPR1(1)+AMQ | |
218 | C ********consider mass cut-off for strings which | |
219 | C must also include quark's mass | |
220 | AMP0=AMX | |
221 | DPM0=AMX | |
222 | NFDP=0 | |
223 | IF(NFP(JP,5).LE.2.AND.NFP(JP,3).NE.0) THEN | |
224 | AMP0=ULMASS_HIJING(NFP(JP,3)) | |
225 | NFDP=NFP(JP,3)+2*NFP(JP,3)/ABS(NFP(JP,3)) | |
226 | DPM0=ULMASS_HIJING(NFDP) | |
227 | IF(DPM0.LE.0.0) THEN | |
228 | NFDP=NFDP-2*NFDP/ABS(NFDP) | |
229 | DPM0=ULMASS_HIJING(NFDP) | |
230 | ENDIF | |
231 | ENDIF | |
232 | AMT0=AMX | |
233 | DTM0=AMX | |
234 | NFDT=0 | |
235 | IF(NFT(JT,5).LE.2.AND.NFT(JT,3).NE.0) THEN | |
236 | AMT0=ULMASS_HIJING(NFT(JT,3)) | |
237 | NFDT=NFT(JT,3)+2*NFT(JT,3)/ABS(NFT(JT,3)) | |
238 | DTM0=ULMASS_HIJING(NFDT) | |
239 | IF(DTM0.LE.0.0) THEN | |
240 | NFDT=NFDT-2*NFDT/ABS(NFDT) | |
241 | DTM0=ULMASS_HIJING(NFDT) | |
242 | ENDIF | |
243 | ENDIF | |
244 | C | |
245 | AMPN=SQRT(AMP0**2+PTP02) | |
246 | AMTN=SQRT(AMT0**2+PTT02) | |
247 | SNN=(AMPN+AMTN)**2+0.001 | |
248 | C | |
249 | IF(SW.LT.SNN+0.001) GO TO 4000 | |
250 | C ********Scatter only if SW>SNN | |
251 | C*****give some PT kick to the two exited strings****************** | |
252 | 20 SWPTN=4.0*(MAX(AMP0,AMT0)**2+MAX(PTP02,PTT02)) | |
253 | SWPTD=4.0*(MAX(DPM0,DTM0)**2+MAX(PTP02,PTT02)) | |
254 | SWPTX=4.0*(AMX**2+MAX(PTP02,PTT02)) | |
255 | IF(SW.LE.SWPTN) THEN | |
256 | PKCMX=0.0 | |
257 | ELSE IF(SW.GT.SWPTN .AND. SW.LE.SWPTD | |
258 | & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN | |
259 | PKCMX=SQRT(SW/4.0-MAX(AMP0,AMT0)**2) | |
260 | & -SQRT(MAX(PTP02,PTT02)) | |
261 | ELSE IF(SW.GT.SWPTD .AND. SW.LE.SWPTX | |
262 | & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN | |
263 | PKCMX=SQRT(SW/4.0-MAX(DPM0,DTM0)**2) | |
264 | & -SQRT(MAX(PTP02,PTT02)) | |
265 | ELSE IF(SW.GT.SWPTX) THEN | |
266 | PKCMX=SQRT(SW/4.0-AMX**2)-SQRT(MAX(PTP02,PTT02)) | |
267 | ENDIF | |
268 | C ********maximun PT kick | |
269 | C********************************************************* | |
270 | C | |
271 | IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN | |
272 | IF(PKC1.GT.PKCMX) THEN | |
273 | PKC1=PKCMX | |
274 | PKC11=PKC1*COS(PHI1) | |
275 | PKC12=PKC1*SIN(PHI1) | |
276 | DPKC11=-(PP(JP,10)-PKC11)/2.0 | |
277 | DPKC12=-(PP(JP,11)-PKC12)/2.0 | |
278 | ENDIF | |
279 | IF(PKC2.GT.PKCMX) THEN | |
280 | PKC2=PKCMX | |
281 | PKC21=PKC2*COS(PHI2) | |
282 | PKC22=PKC2*SIN(PHI2) | |
283 | DPKC21=-(PT(JT,10)-PKC21)/2.0 | |
284 | DPKC22=-(PT(JT,11)-PKC22)/2.0 | |
285 | ENDIF | |
286 | DPKC1=DPKC11+DPKC21 | |
287 | DPKC2=DPKC12+DPKC22 | |
288 | NFP(JP,10)=-NFP(JP,10) | |
289 | NFT(JT,10)=-NFT(JT,10) | |
290 | GO TO 40 | |
291 | ENDIF | |
292 | C ********If the valence quarks had a hard-collision | |
293 | C the pt kick is the pt from hard-collision. | |
294 | I_SNG=0 | |
295 | IF(IHPR2(13).NE.0 .AND. RLU_HIJING(0).LE.HIDAT(4)) I_SNG=1 | |
296 | IF((NFP(JP,5).EQ.3 .OR.NFT(JT,5).EQ.3).OR. | |
297 | & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR. | |
298 | & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) I_SNG=0 | |
299 | C | |
300 | C ********decite whether to have single-diffractive | |
301 | IF(IHPR2(5).EQ.0) THEN | |
302 | PKC=HIPR1(2)*SQRT(-ALOG(1.0-RLU_HIJING(0) | |
303 | & *(1.0-EXP(-PKCMX**2/HIPR1(2)**2)))) | |
304 | GO TO 30 | |
305 | ENDIF | |
306 | PKC=HIRND2(3,0.0,PKCMX**2) | |
307 | PKC=SQRT(PKC) | |
308 | IF(PKC.GT.HIPR1(20)) | |
309 | & PKC=HIPR1(2)*SQRT(-ALOG(EXP(-HIPR1(20)**2/HIPR1(2)**2) | |
310 | & -RLU_HIJING(0)*(EXP(-HIPR1(20)**2/HIPR1(2)**2)- | |
311 | & EXP(-PKCMX**2/HIPR1(2)**2)))) | |
312 | C | |
313 | IF(I_SNG.EQ.1) PKC=0.65*SQRT( | |
314 | & -ALOG(1.0-RLU_HIJING(0)*(1.0-EXP(-PKCMX**2/0.65**2)))) | |
315 | C ********select PT kick | |
316 | 30 PHI0=2.0*HIPR1(40)*RLU_HIJING(0) | |
317 | PKC11=PKC*SIN(PHI0) | |
318 | PKC12=PKC*COS(PHI0) | |
319 | PKC21=-PKC11 | |
320 | PKC22=-PKC12 | |
321 | DPKC1=0.0 | |
322 | DPKC2=0.0 | |
323 | 40 PP11=PP(JP,1)+PKC11-DPKC1 | |
324 | PP12=PP(JP,2)+PKC12-DPKC2 | |
325 | PT11=PT(JT,1)+PKC21-DPKC1 | |
326 | PT12=PT(JT,2)+PKC22-DPKC2 | |
327 | PTP2=PP11**2+PP12**2 | |
328 | PTT2=PT11**2+PT12**2 | |
329 | C | |
330 | AMPN=SQRT(AMP0**2+PTP2) | |
331 | AMTN=SQRT(AMT0**2+PTT2) | |
332 | SNN=(AMPN+AMTN)**2+0.001 | |
333 | C*************************************** | |
334 | WP=EPP+ETP | |
335 | WM=EPM+ETM | |
336 | SW=WP*WM | |
337 | C**************************************** | |
338 | IF(SW.LT.SNN) THEN | |
339 | MISS=MISS+1 | |
340 | IF(MISS.LE.100) then | |
341 | PKC=0.0 | |
342 | GO TO 30 | |
343 | ENDIF | |
344 | IF(IHPR2(10).NE.0) | |
345 | & WRITE(6,*) 'Error occured in Pt kick section of HIJSFT' | |
346 | GO TO 4000 | |
347 | ENDIF | |
348 | C****************************************************************** | |
349 | AMPD=SQRT(DPM0**2+PTP2) | |
350 | AMTD=SQRT(DTM0**2+PTT2) | |
351 | ||
352 | AMPX=SQRT(AMX**2+PTP2) | |
353 | AMTX=SQRT(AMX**2+PTT2) | |
354 | ||
355 | DPN=AMPN**2/SW | |
356 | DTN=AMTN**2/SW | |
357 | DPD=AMPD**2/SW | |
358 | DTD=AMTD**2/SW | |
359 | DPX=AMPX**2/SW | |
360 | DTX=AMTX**2/SW | |
361 | C | |
362 | SPNTD=(AMPN+AMTD)**2 | |
363 | SPNTX=(AMPN+AMTX)**2 | |
364 | C ********CM energy if proj=N,targ=N* | |
365 | SPDTN=(AMPD+AMTN)**2 | |
366 | SPXTN=(AMPX+AMTN)**2 | |
367 | C ********CM energy if proj=N*,targ=N | |
368 | SPDTX=(AMPD+AMTX)**2 | |
369 | SPXTD=(AMPX+AMTD)**2 | |
370 | SDD=(AMPD+AMTD)**2 | |
371 | SXX=(AMPX+AMTX)**2 | |
372 | ||
373 | C | |
374 | C | |
375 | C ********CM energy if proj=delta, targ=delta | |
376 | C****************There are many different cases********** | |
377 | c IF(IHPR2(15).EQ.1) GO TO 500 | |
378 | C | |
379 | C ********to have DPM type soft interactions | |
380 | C | |
381 | 45 CONTINUE | |
382 | IF(SW.GT.SXX+0.001) THEN | |
383 | IF(I_SNG.EQ.0) THEN | |
384 | D1=DPX | |
385 | D2=DTX | |
386 | NFP3=0 | |
387 | NFT3=0 | |
388 | GO TO 400 | |
389 | ELSE | |
390 | c**** 5/30/1998 this is identical to the above statement. Added to | |
391 | c**** avoid questional branching to block. | |
392 | IF((NFP(JP,5).EQ.3 .AND.NFT(JT,5).EQ.3).OR. | |
393 | & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR. | |
394 | & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN | |
395 | D1=DPX | |
396 | D2=DTX | |
397 | NFP3=0 | |
398 | NFT3=0 | |
399 | GO TO 400 | |
400 | ENDIF | |
401 | C ********do not allow excited strings to have | |
402 | C single-diffr | |
403 | IF(RLU_HIJING(0).GT.0.5.OR.(NFT(JT,5).GT.2.OR. | |
404 | & NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN | |
405 | D1=DPN | |
406 | D2=DTX | |
407 | NFP3=NFP(JP,3) | |
408 | NFT3=0 | |
409 | GO TO 220 | |
410 | ELSE | |
411 | D1=DPX | |
412 | D2=DTN | |
413 | NFP3=0 | |
414 | NFT3=NFT(JT,3) | |
415 | GO TO 240 | |
416 | ENDIF | |
417 | C ********have single diffractive collision | |
418 | ENDIF | |
419 | ELSE IF(SW.GT.MAX(SPDTX,SPXTD)+0.001 .AND. | |
420 | & SW.LE.SXX+0.001) THEN | |
421 | IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0.AND. | |
422 | & RLU_HIJING(0).GT.0.5).OR.(NPJ(JP).EQ.0 | |
423 | & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN | |
424 | D1=DPD | |
425 | D2=DTX | |
426 | NFP3=NFDP | |
427 | NFT3=0 | |
428 | GO TO 220 | |
429 | ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN | |
430 | D1=DPX | |
431 | D2=DTD | |
432 | NFP3=0 | |
433 | NFT3=NFDT | |
434 | GO TO 240 | |
435 | ENDIF | |
436 | GO TO 4000 | |
437 | ELSE IF(SW.GT.MIN(SPDTX,SPXTD)+0.001.AND. | |
438 | & SW.LE.MAX(SPDTX,SPXTD)+0.001) THEN | |
439 | IF(SPDTX.LE.SPXTD.AND.NPJ(JP).EQ.0 | |
440 | & .AND.NFP(JP,5).LE.2) THEN | |
441 | D1=DPD | |
442 | D2=DTX | |
443 | NFP3=NFDP | |
444 | NFT3=0 | |
445 | GO TO 220 | |
446 | ELSE IF(SPDTX.GT.SPXTD.AND.NTJ(JT).EQ.0 | |
447 | & .AND.NFT(JT,5).LE.2) THEN | |
448 | D1=DPX | |
449 | D2=DTD | |
450 | NFP3=0 | |
451 | NFT3=NFDT | |
452 | GO TO 240 | |
453 | ENDIF | |
454 | c*** 5/30/1998 added to avoid questional branching to another block | |
455 | c*** this is identical to the statement following the next ELSE IF | |
456 | IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0 | |
457 | & .AND.RLU_HIJING(0).GT.0.5).OR.(NPJ(JP).EQ.0 | |
458 | & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN | |
459 | D1=DPN | |
460 | D2=DTX | |
461 | NFP3=NFP(JP,3) | |
462 | NFT3=0 | |
463 | GO TO 220 | |
464 | ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN | |
465 | D1=DPX | |
466 | D2=DTN | |
467 | NFP3=0 | |
468 | NFT3=NFT(JT,3) | |
469 | GO TO 240 | |
470 | ENDIF | |
471 | GO TO 4000 | |
472 | ELSE IF(SW.GT.MAX(SPNTX,SPXTN)+0.001 .AND. | |
473 | & SW.LE.MIN(SPDTX,SPXTD)+0.001) THEN | |
474 | IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0 | |
475 | & .AND.RLU_HIJING(0).GT.0.5).OR.(NPJ(JP).EQ.0 | |
476 | & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN | |
477 | D1=DPN | |
478 | D2=DTX | |
479 | NFP3=NFP(JP,3) | |
480 | NFT3=0 | |
481 | GO TO 220 | |
482 | ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN | |
483 | D1=DPX | |
484 | D2=DTN | |
485 | NFP3=0 | |
486 | NFT3=NFT(JT,3) | |
487 | GO TO 240 | |
488 | ENDIF | |
489 | GO TO 4000 | |
490 | ELSE IF(SW.GT.MIN(SPNTX,SPXTN)+0.001 .AND. | |
491 | & SW.LE.MAX(SPNTX,SPXTN)+0.001) THEN | |
492 | IF(SPNTX.LE.SPXTN.AND.NPJ(JP).EQ.0 | |
493 | & .AND.NFP(JP,5).LE.2) THEN | |
494 | D1=DPN | |
495 | D2=DTX | |
496 | NFP3=NFP(JP,3) | |
497 | NFT3=0 | |
498 | GO TO 220 | |
499 | ELSEIF(SPNTX.GT.SPXTN.AND.NTJ(JT).EQ.0 | |
500 | & .AND.NFT(JT,5).LE.2) THEN | |
501 | D1=DPX | |
502 | D2=DTN | |
503 | NFP3=0 | |
504 | NFT3=NFT(JT,3) | |
505 | GO TO 240 | |
506 | ENDIF | |
507 | GO TO 4000 | |
508 | ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND. | |
509 | & (NPJ(JP).NE.0 .OR.NTJ(JT).NE.0)) THEN | |
510 | GO TO 4000 | |
511 | ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND. | |
512 | & NFP(JP,5).GT.2.AND.NFT(JT,5).GT.2) THEN | |
513 | GO TO 4000 | |
514 | ELSE IF(SW.GT.SDD+0.001.AND.SW.LE. | |
515 | & MIN(SPNTX,SPXTN)+0.001) THEN | |
516 | D1=DPD | |
517 | D2=DTD | |
518 | NFP3=NFDP | |
519 | NFT3=NFDT | |
520 | GO TO 100 | |
521 | ELSE IF(SW.GT.MAX(SPNTD,SPDTN)+0.001 | |
522 | & .AND. SW.LE.SDD+0.001) THEN | |
523 | IF(RLU_HIJING(0).GT.0.5) THEN | |
524 | D1=DPD | |
525 | D2=DTN | |
526 | NFP3=NFDP | |
527 | NFT3=NFT(JT,3) | |
528 | GO TO 100 | |
529 | ELSE | |
530 | D1=DPN | |
531 | D2=DTD | |
532 | NFP3=NFP(JP,3) | |
533 | NFT3=NFDT | |
534 | GO TO 100 | |
535 | ENDIF | |
536 | ELSE IF(SW.GT.MIN(SPNTD,SPDTN)+0.001 | |
537 | & .AND. SW.LE.MAX(SPNTD,SPDTN)+0.001) THEN | |
538 | IF(SPNTD.GT.SPDTN) THEN | |
539 | D1=DPD | |
540 | D2=DTN | |
541 | NFP3=NFDP | |
542 | NFT3=NFT(JT,3) | |
543 | GO TO 100 | |
544 | ELSE | |
545 | D1=DPN | |
546 | D2=DTD | |
547 | NFP3=NFP(JP,3) | |
548 | NFT3=NFDT | |
549 | GO TO 100 | |
550 | ENDIF | |
551 | ELSE IF(SW.LE.MIN(SPNTD,SPDTN)+0.001) THEN | |
552 | D1=DPN | |
553 | D2=DTN | |
554 | NFP3=NFP(JP,3) | |
555 | NFT3=NFT(JT,3) | |
556 | GO TO 100 | |
557 | ENDIF | |
558 | WRITE(6,*) ' Error in HIJSFT: There is no path to here' | |
559 | RETURN | |
560 | C | |
561 | C*************** elastic scattering *************** | |
562 | C this is like elastic, both proj and targ mass | |
563 | C must be fixed | |
564 | C*************************************************** | |
565 | 100 NFP5=MAX(2,NFP(JP,5)) | |
566 | NFT5=MAX(2,NFT(JT,5)) | |
567 | BB1=1.0+D1-D2 | |
568 | BB2=1.0+D2-D1 | |
569 | IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN | |
570 | MISS=MISS+1 | |
571 | IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000 | |
572 | PKC=PKC*0.5 | |
573 | GO TO 30 | |
574 | ENDIF | |
575 | IF(RLU_HIJING(0).LT.0.5) THEN | |
576 | X1=(BB1-SQRT(BB1**2-4.0*D1))/2.0 | |
577 | X2=(BB2-SQRT(BB2**2-4.0*D2))/2.0 | |
578 | ELSE | |
579 | X1=(BB1+SQRT(BB1**2-4.0*D1))/2.0 | |
580 | X2=(BB2+SQRT(BB2**2-4.0*D2))/2.0 | |
581 | ENDIF | |
582 | IHNT2(13)=2 | |
583 | GO TO 600 | |
584 | C | |
585 | C********** Single diffractive *********************** | |
586 | C either proj or targ's mass is fixed | |
587 | C***************************************************** | |
588 | 220 NFP5=MAX(2,NFP(JP,5)) | |
589 | NFT5=3 | |
590 | IF(NFP3.EQ.0) NFP5=3 | |
591 | BB2=1.0+D2-D1 | |
592 | IF(BB2**2.LT.4.0*D2) THEN | |
593 | MISS=MISS+1 | |
594 | IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000 | |
595 | PKC=PKC*0.5 | |
596 | GO TO 30 | |
597 | ENDIF | |
598 | XMIN=(BB2-SQRT(BB2**2-4.0*D2))/2.0 | |
599 | XMAX=(BB2+SQRT(BB2**2-4.0*D2))/2.0 | |
600 | MISS4=0 | |
601 | 222 X2=HIRND2(6,XMIN,XMAX) | |
602 | X1=D1/(1.0-X2) | |
603 | IF(X2*(1.0-X1).LT.(D2+1.E-4/SW)) THEN | |
604 | MISS4=MISS4+1 | |
605 | IF(MISS4.LE.1000) GO TO 222 | |
606 | GO TO 5000 | |
607 | ENDIF | |
608 | IHNT2(13)=2 | |
609 | GO TO 600 | |
610 | C ********Fix proj mass********* | |
611 | 240 NFP5=3 | |
612 | NFT5=MAX(2,NFT(JT,5)) | |
613 | IF(NFT3.EQ.0) NFT5=3 | |
614 | BB1=1.0+D1-D2 | |
615 | IF(BB1**2.LT.4.0*D1) THEN | |
616 | MISS=MISS+1 | |
617 | IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000 | |
618 | PKC=PKC*0.5 | |
619 | GO TO 30 | |
620 | ENDIF | |
621 | XMIN=(BB1-SQRT(BB1**2-4.0*D1))/2.0 | |
622 | XMAX=(BB1+SQRT(BB1**2-4.0*D1))/2.0 | |
623 | MISS4=0 | |
624 | 242 X1=HIRND2(6,XMIN,XMAX) | |
625 | X2=D2/(1.0-X1) | |
626 | IF(X1*(1.0-X2).LT.(D1+1.E-4/SW)) THEN | |
627 | MISS4=MISS4+1 | |
628 | IF(MISS4.LE.1000) GO TO 242 | |
629 | GO TO 5000 | |
630 | ENDIF | |
631 | IHNT2(13)=2 | |
632 | GO TO 600 | |
633 | C ********Fix targ mass********* | |
634 | C | |
635 | C*************non-single diffractive********************** | |
636 | C both proj and targ may not be fixed in mass | |
637 | C********************************************************* | |
638 | C | |
639 | 400 NFP5=3 | |
640 | NFT5=3 | |
641 | BB1=1.0+D1-D2 | |
642 | BB2=1.0+D2-D1 | |
643 | IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN | |
644 | MISS=MISS+1 | |
645 | IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000 | |
646 | PKC=PKC*0.5 | |
647 | GO TO 30 | |
648 | ENDIF | |
649 | XMIN1=(BB1-SQRT(BB1**2-4.0*D1))/2.0 | |
650 | XMAX1=(BB1+SQRT(BB1**2-4.0*D1))/2.0 | |
651 | XMIN2=(BB2-SQRT(BB2**2-4.0*D2))/2.0 | |
652 | XMAX2=(BB2+SQRT(BB2**2-4.0*D2))/2.0 | |
653 | MISS4=0 | |
654 | 410 X1=HIRND2(4,XMIN1,XMAX1) | |
655 | X2=HIRND2(4,XMIN2,XMAX2) | |
656 | IF(NFP(JP,5).EQ.3.OR.NFT(JT,5).EQ.3) THEN | |
657 | X1=HIRND2(6,XMIN1,XMAX1) | |
658 | X2=HIRND2(6,XMIN2,XMAX2) | |
659 | ENDIF | |
660 | C ******** | |
661 | IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR. | |
662 | & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN | |
663 | X1=HIRND2(5,XMIN1,XMAX1) | |
664 | ENDIF | |
665 | IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR. | |
666 | & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN | |
667 | X2=HIRND2(5,XMIN2,XMAX2) | |
668 | ENDIF | |
669 | c IF(IOPMAIN.EQ.3) X1=HIRND2(6,XMIN1,XMAX1) | |
670 | c IF(IOPMAIN.EQ.2) X2=HIRND2(6,XMIN2,XMAX2) | |
671 | C ********For q-qbar or (qq)-(qq)bar system use symetric | |
672 | C distribution, for q-(qq) or qbar-(qq)bar use | |
673 | C unsymetrical distribution | |
674 | C | |
675 | IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000) X1=1.0-X1 | |
676 | XXP=X1*(1.0-X2) | |
677 | XXT=X2*(1.0-X1) | |
678 | IF(XXP.LT.(D1+1.E-4/SW) .OR. XXT.LT.(D2+1.E-4/SW)) THEN | |
679 | MISS4=MISS4+1 | |
680 | IF(MISS4.LE.1000) GO TO 410 | |
681 | GO TO 5000 | |
682 | ENDIF | |
683 | IHNT2(13)=3 | |
684 | C*************************************************** | |
685 | C*************************************************** | |
686 | 600 CONTINUE | |
687 | IF(X1*(1.0-X2).LT.(AMPN**2-1.E-4)/SW.OR. | |
688 | & X2*(1.0-X1).LT.(AMTN**2-1.E-4)/SW) THEN | |
689 | MISS=MISS+1 | |
690 | IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 2000 | |
691 | PKC=0.0 | |
692 | GO TO 30 | |
693 | ENDIF | |
694 | C | |
695 | EPP=(1.0-X2)*WP | |
696 | EPM=X1*WM | |
697 | ETP=X2*WP | |
698 | ETM=(1.0-X1)*WM | |
699 | PP(JP,3)=(EPP-EPM)/2.0 | |
700 | PP(JP,4)=(EPP+EPM)/2.0 | |
701 | IF(EPP*EPM-PTP2.LT.0.0) GO TO 6000 | |
702 | PP(JP,5)=SQRT(EPP*EPM-PTP2) | |
703 | NFP(JP,3)=NFP3 | |
704 | NFP(JP,5)=NFP5 | |
705 | ||
706 | PT(JT,3)=(ETP-ETM)/2.0 | |
707 | PT(JT,4)=(ETP+ETM)/2.0 | |
708 | IF(ETP*ETM-PTT2.LT.0.0) GO TO 6000 | |
709 | PT(JT,5)=SQRT(ETP*ETM-PTT2) | |
710 | NFT(JT,3)=NFT3 | |
711 | NFT(JT,5)=NFT5 | |
712 | C*****recoil PT from hard-inter is shared by two end-partons | |
713 | C so that pt=p1+p2 | |
714 | PP(JP,1)=PP11-PKC11 | |
715 | PP(JP,2)=PP12-PKC12 | |
716 | ||
717 | KICKDIP=1 | |
718 | KICKDIT=1 | |
719 | IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR. | |
720 | & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN | |
721 | KICKDIP=0 | |
722 | ENDIF | |
723 | IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR. | |
724 | & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN | |
725 | KICKDIT=0 | |
726 | ENDIF | |
727 | IF((KICKDIP.EQ.0.AND.RLU_HIJING(0).LT.0.5) | |
728 | & .OR.(KICKDIP.NE.0.AND.RLU_HIJING(0) | |
729 | & .LT.0.5/(1.0+(PKC11**2+PKC12**2)/HIPR1(22)**2))) THEN | |
730 | PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,6) | |
731 | PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,7) | |
732 | PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0 | |
733 | & +PP(JP,8)+PKC11 | |
734 | PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0 | |
735 | & +PP(JP,9)+PKC12 | |
736 | ELSE | |
737 | PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,8) | |
738 | PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,9) | |
739 | PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0 | |
740 | & +PP(JP,6)+PKC11 | |
741 | PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0 | |
742 | & +PP(JP,7)+PKC12 | |
743 | ENDIF | |
744 | PP(JP,1)=PP(JP,6)+PP(JP,8) | |
745 | PP(JP,2)=PP(JP,7)+PP(JP,9) | |
746 | C ********pt kick for proj | |
747 | PT(JT,1)=PT11-PKC21 | |
748 | PT(JT,2)=PT12-PKC22 | |
749 | IF((KICKDIT.EQ.0.AND.RLU_HIJING(0).LT.0.5) | |
750 | & .OR.(KICKDIT.NE.0.AND.RLU_HIJING(0) | |
751 | & .LT.0.5/(1.0+(PKC21**2+PKC22**2)/HIPR1(22)**2))) THEN | |
752 | PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,6) | |
753 | PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,7) | |
754 | PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0 | |
755 | & +PT(JT,8)+PKC21 | |
756 | PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0 | |
757 | & +PT(JT,9)+PKC22 | |
758 | ELSE | |
759 | PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,8) | |
760 | PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,9) | |
761 | PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0 | |
762 | & +PT(JT,6)+PKC21 | |
763 | PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0 | |
764 | & +PT(JT,7)+PKC22 | |
765 | ENDIF | |
766 | PT(JT,1)=PT(JT,6)+PT(JT,8) | |
767 | PT(JT,2)=PT(JT,7)+PT(JT,9) | |
768 | C ********pt kick for targ | |
769 | ||
770 | IF(NPJ(JP).NE.0) NFP(JP,5)=3 | |
771 | IF(NTJ(JT).NE.0) NFT(JT,5)=3 | |
772 | C ********jets must be connected to string | |
773 | IF(EPP/(EPM+0.0001).LT.ETP/(ETM+0.0001).AND. | |
774 | & ABS(NFP(JP,1)*NFP(JP,2)).LT.1000000)THEN | |
775 | DO 620 JSB=1,15 | |
776 | PSB=PP(JP,JSB) | |
777 | PP(JP,JSB)=PT(JT,JSB) | |
778 | PT(JT,JSB)=PSB | |
779 | NSB=NFP(JP,JSB) | |
780 | NFP(JP,JSB)=NFT(JT,JSB) | |
781 | NFT(JT,JSB)=NSB | |
782 | 620 CONTINUE | |
783 | C ********when Ycm(JP)<Ycm(JT) after the collision | |
784 | C exchange the positions of the two | |
785 | ENDIF | |
786 | C | |
787 | RETURN | |
788 | C************************************************** | |
789 | C************************************************** | |
790 | 1000 IERROR=1 | |
791 | IF(IHPR2(10).EQ.0) RETURN | |
792 | WRITE(6,*) ' Fatal HIJSFT start error,abandon this event' | |
793 | WRITE(6,*) ' PROJ E+,E-,W+',EPP,EPM,WP | |
794 | WRITE(6,*) ' TARG E+,E-,W-',ETP,ETM,WM | |
795 | WRITE(6,*) ' W+*W-, (APN+ATN)^2',SW,SNN | |
796 | RETURN | |
797 | 2000 IERROR=0 | |
798 | IF(IHPR2(10).EQ.0) RETURN | |
799 | WRITE(6,*) ' (2)energy partition fail,' | |
800 | WRITE(6,*) ' HIJSFT not performed, but continue' | |
801 | WRITE(6,*) ' MP1,MPN',X1*(1.0-X2)*SW,AMPN**2 | |
802 | WRITE(6,*) ' MT2,MTN',X2*(1.0-X1)*SW,AMTN**2 | |
803 | RETURN | |
804 | 3000 IERROR=0 | |
805 | IF(IHPR2(10).EQ.0) RETURN | |
806 | WRITE(6,*) ' (3)something is wrong with the pt kick, ' | |
807 | WRITE(6,*) ' HIJSFT not performed, but continue' | |
808 | WRITE(6,*) ' D1=',D1,' D2=',D2,' SW=',SW | |
809 | WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5) | |
810 | WRITE(6,*) ' THIS COLLISON NFP5=',NFP5, ' NFT5=',NFT5 | |
811 | WRITE(6,*) ' # OF JET IN PROJ',NPJ(JP),' IN TARG',NTJ(JT) | |
812 | RETURN | |
813 | 4000 IERROR=0 | |
814 | IF(IHPR2(10).EQ.0) RETURN | |
815 | WRITE(6,*) ' (4)unable to choose process, but not harmful' | |
816 | WRITE(6,*) ' HIJSFT not performed, but continue' | |
817 | WRITE(6,*) ' PTP=',SQRT(PTP2),' PTT=',SQRT(PTT2),' SW=',SW | |
818 | WRITE(6,*) ' AMCUT=',AMX,' JP=',JP,' JT=',JT | |
819 | WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5) | |
820 | RETURN | |
821 | 5000 IERROR=0 | |
822 | IF(IHPR2(10).EQ.0) RETURN | |
823 | WRITE(6,*) ' energy partition failed(5),for limited try' | |
824 | WRITE(6,*) ' HIJSFT not performed, but continue' | |
825 | WRITE(6,*) ' NFP5=',NFP5,' NFT5=',NFT5 | |
826 | WRITE(6,*) ' D1',D1,' X1(1-X2)',X1*(1.0-X2) | |
827 | WRITE(6,*) ' D2',D2,' X2(1-X1)',X2*(1.0-X1) | |
828 | RETURN | |
829 | 6000 PKC=0.0 | |
830 | MISS=MISS+1 | |
831 | IF(MISS.LT.100) GO TO 30 | |
832 | IERROR=1 | |
833 | IF(IHPR2(10).EQ.0) RETURN | |
834 | WRITE(6,*) ' ERROR OCCURED, HIJSFT NOT PERFORMED' | |
835 | WRITE(6,*) ' Abort this event' | |
836 | WRITE(6,*) 'MTP,PTP2',EPP*EPM,PTP2,' MTT,PTT2',ETP*ETM,PTT2 | |
837 | RETURN | |
838 | END |