]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hijing1_36/hijsft.F
Field maps for B = 0.2 T solenoid (L3).
[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
28d5a4c1 109C PH DD3=ABS(BY+SQRT(R2**2-(XP0-BX)**2)-YP0)
110C 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))
124C
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))
135C
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
209C ********If jet is quenched the pt from valence quark
210C hard scattering has to reduced by d*kapa
211C
212C
21310 PTP02=PP(JP,1)**2+PP(JP,2)**2
214 PTT02=PT(JT,1)**2+PT(JT,2)**2
215C
216 AMQ=MAX(PP(JP,14)+PP(JP,15),PT(JT,14)+PT(JT,15))
217 AMX=HIPR1(1)+AMQ
218C ********consider mass cut-off for strings which
219C 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
244C
245 AMPN=SQRT(AMP0**2+PTP02)
246 AMTN=SQRT(AMT0**2+PTT02)
247 SNN=(AMPN+AMTN)**2+0.001
248C
249 IF(SW.LT.SNN+0.001) GO TO 4000
250C ********Scatter only if SW>SNN
251C*****give some PT kick to the two exited strings******************
25220 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
268C ********maximun PT kick
269C*********************************************************
270C
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
292C ********If the valence quarks had a hard-collision
293C 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
299C
300C ********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))))
312C
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))))
315C ********select PT kick
31630 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
32340 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
329C
330 AMPN=SQRT(AMP0**2+PTP2)
331 AMTN=SQRT(AMT0**2+PTT2)
332 SNN=(AMPN+AMTN)**2+0.001
333C***************************************
334 WP=EPP+ETP
335 WM=EPM+ETM
336 SW=WP*WM
337C****************************************
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
348C******************************************************************
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
361C
362 SPNTD=(AMPN+AMTD)**2
363 SPNTX=(AMPN+AMTX)**2
364C ********CM energy if proj=N,targ=N*
365 SPDTN=(AMPD+AMTN)**2
366 SPXTN=(AMPX+AMTN)**2
367C ********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
373C
374C
375C ********CM energy if proj=delta, targ=delta
376C****************There are many different cases**********
377c IF(IHPR2(15).EQ.1) GO TO 500
378C
379C ********to have DPM type soft interactions
380C
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
390c**** 5/30/1998 this is identical to the above statement. Added to
391c**** 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
401C ********do not allow excited strings to have
402C 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
417C ********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
454c*** 5/30/1998 added to avoid questional branching to another block
455c*** 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
560C
561C*************** elastic scattering ***************
562C this is like elastic, both proj and targ mass
563C must be fixed
564C***************************************************
565100 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
584C
585C********** Single diffractive ***********************
586C either proj or targ's mass is fixed
587C*****************************************************
588220 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
601222 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
610C ********Fix proj mass*********
611240 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
624242 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
633C ********Fix targ mass*********
634C
635C*************non-single diffractive**********************
636C both proj and targ may not be fixed in mass
637C*********************************************************
638C
639400 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
654410 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
660C ********
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
669c IF(IOPMAIN.EQ.3) X1=HIRND2(6,XMIN1,XMAX1)
670c IF(IOPMAIN.EQ.2) X2=HIRND2(6,XMIN2,XMAX2)
671C ********For q-qbar or (qq)-(qq)bar system use symetric
672C distribution, for q-(qq) or qbar-(qq)bar use
673C unsymetrical distribution
674C
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
684C***************************************************
685C***************************************************
686600 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
694C
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
712C*****recoil PT from hard-inter is shared by two end-partons
713C 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)
746C ********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)
768C ********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
772C ********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
782620 CONTINUE
783C ********when Ycm(JP)<Ycm(JT) after the collision
784C exchange the positions of the two
785 ENDIF
786C
787 RETURN
788C**************************************************
789C**************************************************
7901000 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
7972000 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
8043000 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
8134000 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
8215000 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
8296000 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