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