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