File indexing completed on 2025-08-05 08:15:43
0001
0002
0003
0004
0005
0006
0007
0008
0009 SUBROUTINE HIJSFT(JP,JT,JOUT,IERROR)
0010 COMMON/HIJCRDN/YP(3,300),YT(3,300)
0011 SAVE /HIJCRDN/
0012 COMMON/HIPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
0013 SAVE /HIPARNT/
0014 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
0015 SAVE /HIJDAT/
0016 COMMON/RANSEED/NSEED
0017 SAVE /RANSEED/
0018 COMMON/HIJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
0019 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
0020 & PJPM(300,500),NTJ(300),KFTJ(300,500),
0021 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
0022 & PJTE(300,500),PJTM(300,500)
0023 SAVE /HIJJET1/
0024 COMMON/HIJJET2/NSG,NJSG(900),IASG(900,3),K1SG(900,100),
0025 & K2SG(900,100),PXSG(900,100),PYSG(900,100),
0026 & PZSG(900,100),PESG(900,100),PMSG(900,100)
0027 SAVE /HIJJET2/
0028 COMMON/HISTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
0029 SAVE /HISTRNG/
0030 COMMON/DPMCOM1/JJP,JJT,AMP,AMT,APX0,ATX0,AMPN,AMTN,AMP0,AMT0,
0031 & NFDP,NFDT,WP,WM,SW,XREMP,XREMT,DPKC1,DPKC2,PP11,PP12,
0032 & PT11,PT12,PTP2,PTT2
0033 SAVE /DPMCOM1/
0034 COMMON/DPMCOM2/NDPM,KDPM(20,2),PDPM1(20,5),PDPM2(20,5)
0035 SAVE /DPMCOM2/
0036
0037
0038
0039
0040
0041
0042 IERROR=0
0043 JJP=JP
0044 JJT=JT
0045 NDPM=0
0046 IOPMAIN=0
0047 IF(JP.GT.IHNT2(1) .OR. JT.GT.IHNT2(3)) RETURN
0048
0049 EPP=PP(JP,4)+PP(JP,3)
0050 EPM=PP(JP,4)-PP(JP,3)
0051 ETP=PT(JT,4)+PT(JT,3)
0052 ETM=PT(JT,4)-PT(JT,3)
0053
0054 WP=EPP+ETP
0055 WM=EPM+ETM
0056 SW=WP*WM
0057
0058
0059 IF(WP.LT.0.0 .OR. WM.LT.0.0) GO TO 1000
0060
0061 IF(JOUT.EQ.0) THEN
0062 IF(EPP.LT.0.0) GO TO 1000
0063 IF(EPM.LT.0.0) GO TO 1000
0064 IF(ETP.LT.0.0) GO TO 1000
0065 IF(ETM.LT.0.0) GO TO 1000
0066 IF(EPP/(EPM+0.01).LE.ETP/(ETM+0.01)) RETURN
0067 ENDIF
0068
0069
0070
0071
0072
0073 IHNT2(11)=JP
0074 IHNT2(12)=JT
0075
0076
0077
0078 MISS=0
0079 PKC1=0.0
0080 PKC2=0.0
0081 PKC11=0.0
0082 PKC12=0.0
0083 PKC21=0.0
0084 PKC22=0.0
0085 DPKC11=0.0
0086 DPKC12=0.0
0087 DPKC21=0.0
0088 DPKC22=0.0
0089 IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN
0090 IF(NFP(JP,10).EQ.1) THEN
0091 PHI1=ULANGL(PP(JP,10),PP(JP,11))
0092 PPJET=SQRT(PP(JP,10)**2+PP(JP,11)**2)
0093 PKC1=PPJET
0094 PKC11=PP(JP,10)
0095 PKC12=PP(JP,11)
0096 ENDIF
0097 IF(NFT(JT,10).EQ.1) THEN
0098 PHI2=ULANGL(PT(JT,10),PT(JT,11))
0099 PTJET=SQRT(PT(JT,10)**2+PT(JT,11)**2)
0100 PKC2=PTJET
0101 PKC21=PT(JT,10)
0102 PKC22=PT(JT,11)
0103 ENDIF
0104 IF(IHPR2(4).GT.0.AND.IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
0105 IF(NFP(JP,10).EQ.0) THEN
0106 PHI=-PHI2
0107 ELSE IF(NFT(JT,10).EQ.0) THEN
0108 PHI=PHI1
0109 ELSE
0110 PHI=(PHI1+PHI2-HIPR1(40))/2.0
0111 ENDIF
0112 BX=HINT1(19)*COS(HINT1(20))
0113 BY=HINT1(19)*SIN(HINT1(20))
0114 XP0=YP(1,JP)
0115 YP0=YP(2,JP)
0116 XT0=YT(1,JT)+BX
0117 YT0=YT(2,JT)+BY
0118 R1=MAX(1.2*IHNT2(1)**0.3333333,
0119 & SQRT(XP0**2+YP0**2))
0120 R2=MAX(1.2*IHNT2(3)**0.3333333,
0121 & SQRT((XT0-BX)**2+(YT0-BY)**2))
0122 IF(ABS(COS(PHI)).LT.1.0E-5) THEN
0123 DD1=R1
0124 DD2=R1
0125 DD3=ABS(BY+SQRT(R2**2-(XP0-BX)**2)-YP0)
0126 DD4=ABS(BY-SQRT(R2**2-(XP0-BX)**2)-YP0)
0127 GO TO 5
0128 ENDIF
0129 BB=2.0*SIN(PHI)*(COS(PHI)*YP0-SIN(PHI)*XP0)
0130 CC=(YP0**2-R1**2)*COS(PHI)**2+XP0*SIN(PHI)*(
0131 & XP0*SIN(PHI)-2.0*YP0*COS(PHI))
0132 DD=BB**2-4.0*CC
0133 IF(DD.LT.0.0) GO TO 10
0134 XX1=(-BB+SQRT(DD))/2.0
0135 XX2=(-BB-SQRT(DD))/2.0
0136 DD1=ABS((XX1-XP0)/COS(PHI))
0137 DD2=ABS((XX2-XP0)/COS(PHI))
0138
0139 BB=2.0*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0)-2.0*BX
0140 CC=(BX**2+(YT0-BY)**2-R2**2)*COS(PHI)**2+XT0*SIN(PHI)
0141 & *(XT0*SIN(PHI)-2.0*COS(PHI)*(YT0-BY))
0142 & -2.0*BX*SIN(PHI)*(COS(PHI)*(YT0-BY)-SIN(PHI)*XT0)
0143 DD=BB**2-4.0*CC
0144 IF(DD.LT.0.0) GO TO 10
0145 XX1=(-BB+SQRT(DD))/2.0
0146 XX2=(-BB-SQRT(DD))/2.0
0147 DD3=ABS((XX1-XT0)/COS(PHI))
0148 DD4=ABS((XX2-XT0)/COS(PHI))
0149
0150 5 DD1=MIN(DD1,DD3)
0151 DD2=MIN(DD2,DD4)
0152 IF(DD1.LT.HIPR1(13)) DD1=0.0
0153 IF(DD2.LT.HIPR1(13)) DD2=0.0
0154 IF(NFP(JP,10).EQ.1.AND.PPJET.GT.HIPR1(11)) THEN
0155 DP1=DD1*HIPR1(14)/2.0
0156 DP1=MIN(DP1,PPJET-HIPR1(11))
0157 PKC1=PPJET-DP1
0158 DPX1=COS(PHI1)*DP1
0159 DPY1=SIN(PHI1)*DP1
0160 PKC11=PP(JP,10)-DPX1
0161 PKC12=PP(JP,11)-DPY1
0162 IF(DP1.GT.0.0) THEN
0163 CTHEP=PP(JP,12)/SQRT(PP(JP,12)**2+PPJET**2)
0164 DPZ1=DP1*CTHEP/SQRT(1.0-CTHEP**2)
0165 DPE1=SQRT(DPX1**2+DPY1**2+DPZ1**2)
0166 EPPPRM=PP(JP,4)+PP(JP,3)-DPE1-DPZ1
0167 EPMPRM=PP(JP,4)-PP(JP,3)-DPE1+DPZ1
0168 IF(EPPPRM.LE.0.0.OR.EPMPRM.LE.0.0) GO TO 15
0169 EPP=EPPPRM
0170 EPM=EPMPRM
0171 PP(JP,10)=PKC11
0172 PP(JP,11)=PKC12
0173 NPJ(JP)=NPJ(JP)+1
0174 KFPJ(JP,NPJ(JP))=21
0175 PJPX(JP,NPJ(JP))=DPX1
0176 PJPY(JP,NPJ(JP))=DPY1
0177 PJPZ(JP,NPJ(JP))=DPZ1
0178 PJPE(JP,NPJ(JP))=DPE1
0179 PJPM(JP,NPJ(JP))=0.0
0180 PP(JP,3)=PP(JP,3)-DPZ1
0181 PP(JP,4)=PP(JP,4)-DPE1
0182 ENDIF
0183 ENDIF
0184 15 IF(NFT(JT,10).EQ.1.AND.PTJET.GT.HIPR1(11)) THEN
0185 DP2=DD2*HIPR1(14)/2.0
0186 DP2=MIN(DP2,PTJET-HIPR1(11))
0187 PKC2=PTJET-DP2
0188 DPX2=COS(PHI2)*DP2
0189 DPY2=SIN(PHI2)*DP2
0190 PKC21=PT(JT,10)-DPX2
0191 PKC22=PT(JT,11)-DPY2
0192 IF(DP2.GT.0.0) THEN
0193 CTHET=PT(JT,12)/SQRT(PT(JT,12)**2+PTJET**2)
0194 DPZ2=DP2*CTHET/SQRT(1.0-CTHET**2)
0195 DPE2=SQRT(DPX2**2+DPY2**2+DPZ2**2)
0196 ETPPRM=PT(JT,4)+PT(JT,3)-DPE2-DPZ2
0197 ETMPRM=PT(JT,4)-PT(JT,3)-DPE2+DPZ2
0198 IF(ETPPRM.LE.0.0.OR.ETMPRM.LE.0.0) GO TO 16
0199 ETP=ETPPRM
0200 ETM=ETMPRM
0201 PT(JT,10)=PKC21
0202 PT(JT,11)=PKC22
0203 NTJ(JT)=NTJ(JT)+1
0204 KFTJ(JT,NTJ(JT))=21
0205 PJTX(JT,NTJ(JT))=DPX2
0206 PJTY(JT,NTJ(JT))=DPY2
0207 PJTZ(JT,NTJ(JT))=DPZ2
0208 PJTE(JT,NTJ(JT))=DPE2
0209 PJTM(JT,NTJ(JT))=0.0
0210 PT(JT,3)=PT(JT,3)-DPZ2
0211 PT(JT,4)=PT(JT,4)-DPE2
0212 ENDIF
0213 ENDIF
0214 16 DPKC11=-(PP(JP,10)-PKC11)/2.0
0215 DPKC12=-(PP(JP,11)-PKC12)/2.0
0216 DPKC21=-(PT(JT,10)-PKC21)/2.0
0217 DPKC22=-(PT(JT,11)-PKC22)/2.0
0218 WP=EPP+ETP
0219 WM=EPM+ETM
0220 SW=WP*WM
0221 ENDIF
0222 ENDIF
0223
0224
0225
0226
0227 10 PTP02=PP(JP,1)**2+PP(JP,2)**2
0228 PTT02=PT(JT,1)**2+PT(JT,2)**2
0229
0230 AMQ=MAX(PP(JP,14)+PP(JP,15),PT(JT,14)+PT(JT,15))
0231 AMX=HIPR1(1)+AMQ
0232
0233
0234 AMP0=AMX
0235 DPM0=AMX
0236 NFDP=0
0237 IF(NFP(JP,5).LE.2.AND.NFP(JP,3).NE.0) THEN
0238 AMP0=ULMASS(NFP(JP,3))
0239 NFDP=NFP(JP,3)+2*NFP(JP,3)/ABS(NFP(JP,3))
0240 DPM0=ULMASS(NFDP)
0241 IF(DPM0.LE.0.0) THEN
0242 NFDP=NFDP-2*NFDP/ABS(NFDP)
0243 DPM0=ULMASS(NFDP)
0244 ENDIF
0245 ENDIF
0246 AMT0=AMX
0247 DTM0=AMX
0248 NFDT=0
0249 IF(NFT(JT,5).LE.2.AND.NFT(JT,3).NE.0) THEN
0250 AMT0=ULMASS(NFT(JT,3))
0251 NFDT=NFT(JT,3)+2*NFT(JT,3)/ABS(NFT(JT,3))
0252 DTM0=ULMASS(NFDT)
0253 IF(DTM0.LE.0.0) THEN
0254 NFDT=NFDT-2*NFDT/ABS(NFDT)
0255 DTM0=ULMASS(NFDT)
0256 ENDIF
0257 ENDIF
0258
0259 AMPN=SQRT(AMP0**2+PTP02)
0260 AMTN=SQRT(AMT0**2+PTT02)
0261 SNN=(AMPN+AMTN)**2+0.001
0262
0263 IF(SW.LT.SNN+0.001) GO TO 4000
0264
0265
0266 20 SWPTN=4.0*(MAX(AMP0,AMT0)**2+MAX(PTP02,PTT02))
0267 SWPTD=4.0*(MAX(DPM0,DTM0)**2+MAX(PTP02,PTT02))
0268 SWPTX=4.0*(AMX**2+MAX(PTP02,PTT02))
0269 IF(SW.LE.SWPTN) THEN
0270 PKCMX=0.0
0271 ELSE IF(SW.GT.SWPTN .AND. SW.LE.SWPTD
0272 & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN
0273 PKCMX=SQRT(SW/4.0-MAX(AMP0,AMT0)**2)
0274 & -SQRT(MAX(PTP02,PTT02))
0275 ELSE IF(SW.GT.SWPTD .AND. SW.LE.SWPTX
0276 & .AND.NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0) THEN
0277 PKCMX=SQRT(SW/4.0-MAX(DPM0,DTM0)**2)
0278 & -SQRT(MAX(PTP02,PTT02))
0279 ELSE IF(SW.GT.SWPTX) THEN
0280 PKCMX=SQRT(SW/4.0-AMX**2)-SQRT(MAX(PTP02,PTT02))
0281 ENDIF
0282
0283
0284
0285 IF(NFP(JP,10).EQ.1.OR.NFT(JT,10).EQ.1) THEN
0286 IF(PKC1.GT.PKCMX) THEN
0287 PKC1=PKCMX
0288 PKC11=PKC1*COS(PHI1)
0289 PKC12=PKC1*SIN(PHI1)
0290 DPKC11=-(PP(JP,10)-PKC11)/2.0
0291 DPKC12=-(PP(JP,11)-PKC12)/2.0
0292 ENDIF
0293 IF(PKC2.GT.PKCMX) THEN
0294 PKC2=PKCMX
0295 PKC21=PKC2*COS(PHI2)
0296 PKC22=PKC2*SIN(PHI2)
0297 DPKC21=-(PT(JT,10)-PKC21)/2.0
0298 DPKC22=-(PT(JT,11)-PKC22)/2.0
0299 ENDIF
0300 DPKC1=DPKC11+DPKC21
0301 DPKC2=DPKC12+DPKC22
0302 NFP(JP,10)=-NFP(JP,10)
0303 NFT(JT,10)=-NFT(JT,10)
0304 GO TO 40
0305 ENDIF
0306
0307
0308 I_SNG=0
0309 IF(IHPR2(13).NE.0 .AND. ATL_RAN(NSEED).LE.HIDAT(4)) I_SNG=1
0310 IF((NFP(JP,5).EQ.3 .OR.NFT(JT,5).EQ.3).OR.
0311 & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR.
0312 & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) I_SNG=0
0313
0314
0315 IF(IHPR2(5).EQ.0) THEN
0316 PKC=HIPR1(2)*SQRT(-ALOG(1.0-ATL_RAN(NSEED)
0317 & *(1.0-EXP(-PKCMX**2/HIPR1(2)**2))))
0318 GO TO 30
0319 ENDIF
0320 PKC=HIRND2(3,0.0,PKCMX**2)
0321 PKC=SQRT(PKC)
0322 IF(PKC.GT.HIPR1(20))
0323 & PKC=HIPR1(2)*SQRT(-ALOG(EXP(-HIPR1(20)**2/HIPR1(2)**2)
0324 & -ATL_RAN(NSEED)*(EXP(-HIPR1(20)**2/HIPR1(2)**2)-
0325 & EXP(-PKCMX**2/HIPR1(2)**2))))
0326
0327 IF(I_SNG.EQ.1) PKC=0.65*SQRT(
0328 & -ALOG(1.0-ATL_RAN(NSEED)*(1.0-EXP(-PKCMX**2/0.65**2))))
0329
0330 30 PHI0=2.0*HIPR1(40)*ATL_RAN(NSEED)
0331 PKC11=PKC*SIN(PHI0)
0332 PKC12=PKC*COS(PHI0)
0333 PKC21=-PKC11
0334 PKC22=-PKC12
0335 DPKC1=0.0
0336 DPKC2=0.0
0337 40 PP11=PP(JP,1)+PKC11-DPKC1
0338 PP12=PP(JP,2)+PKC12-DPKC2
0339 PT11=PT(JT,1)+PKC21-DPKC1
0340 PT12=PT(JT,2)+PKC22-DPKC2
0341 PTP2=PP11**2+PP12**2
0342 PTT2=PT11**2+PT12**2
0343
0344 AMPN=SQRT(AMP0**2+PTP2)
0345 AMTN=SQRT(AMT0**2+PTT2)
0346 SNN=(AMPN+AMTN)**2+0.001
0347
0348 WP=EPP+ETP
0349 WM=EPM+ETM
0350 SW=WP*WM
0351
0352 IF(SW.LT.SNN) THEN
0353 MISS=MISS+1
0354 IF(MISS.LE.100) then
0355 PKC=0.0
0356 GO TO 30
0357 ENDIF
0358 IF(IHPR2(10).NE.0)
0359 &WRITE(6,*) 'Error occured in Pt kick section of HIJSFT'
0360 GO TO 4000
0361 ENDIF
0362
0363 AMPD=SQRT(DPM0**2+PTP2)
0364 AMTD=SQRT(DTM0**2+PTT2)
0365
0366 AMPX=SQRT(AMX**2+PTP2)
0367 AMTX=SQRT(AMX**2+PTT2)
0368
0369 DPN=AMPN**2/SW
0370 DTN=AMTN**2/SW
0371 DPD=AMPD**2/SW
0372 DTD=AMTD**2/SW
0373 DPX=AMPX**2/SW
0374 DTX=AMTX**2/SW
0375
0376 SPNTD=(AMPN+AMTD)**2
0377 SPNTX=(AMPN+AMTX)**2
0378
0379 SPDTN=(AMPD+AMTN)**2
0380 SPXTN=(AMPX+AMTN)**2
0381
0382 SPDTX=(AMPD+AMTX)**2
0383 SPXTD=(AMPX+AMTD)**2
0384 SDD=(AMPD+AMTD)**2
0385 SXX=(AMPX+AMTX)**2
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395 45 CONTINUE
0396 IF(SW.GT.SXX+0.001) THEN
0397 IF(I_SNG.EQ.0) THEN
0398 D1=DPX
0399 D2=DTX
0400 NFP3=0
0401 NFT3=0
0402 GO TO 400
0403 ELSE
0404
0405
0406 IF((NFP(JP,5).EQ.3 .AND.NFT(JT,5).EQ.3).OR.
0407 & (NPJ(JP).NE.0.OR.NFP(JP,10).NE.0).OR.
0408 & (NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN
0409 D1=DPX
0410 D2=DTX
0411 NFP3=0
0412 NFT3=0
0413 GO TO 400
0414 ENDIF
0415
0416
0417 IF(ATL_RAN(NSEED).GT.0.5.OR.(NFT(JT,5).GT.2.OR.
0418 & NTJ(JT).NE.0.OR.NFT(JT,10).NE.0)) THEN
0419 D1=DPN
0420 D2=DTX
0421 NFP3=NFP(JP,3)
0422 NFT3=0
0423 GO TO 220
0424 ELSE
0425 D1=DPX
0426 D2=DTN
0427 NFP3=0
0428 NFT3=NFT(JT,3)
0429 GO TO 240
0430 ENDIF
0431
0432 ENDIF
0433 ELSE IF(SW.GT.MAX(SPDTX,SPXTD)+0.001 .AND.
0434 & SW.LE.SXX+0.001) THEN
0435 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0.AND.
0436 & ATL_RAN(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
0437 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
0438 D1=DPD
0439 D2=DTX
0440 NFP3=NFDP
0441 NFT3=0
0442 GO TO 220
0443 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
0444 D1=DPX
0445 D2=DTD
0446 NFP3=0
0447 NFT3=NFDT
0448 GO TO 240
0449 ENDIF
0450 GO TO 4000
0451 ELSE IF(SW.GT.MIN(SPDTX,SPXTD)+0.001.AND.
0452 & SW.LE.MAX(SPDTX,SPXTD)+0.001) THEN
0453 IF(SPDTX.LE.SPXTD.AND.NPJ(JP).EQ.0
0454 & .AND.NFP(JP,5).LE.2) THEN
0455 D1=DPD
0456 D2=DTX
0457 NFP3=NFDP
0458 NFT3=0
0459 GO TO 220
0460 ELSE IF(SPDTX.GT.SPXTD.AND.NTJ(JT).EQ.0
0461 & .AND.NFT(JT,5).LE.2) THEN
0462 D1=DPX
0463 D2=DTD
0464 NFP3=0
0465 NFT3=NFDT
0466 GO TO 240
0467 ENDIF
0468
0469
0470 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0
0471 & .AND.ATL_RAN(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
0472 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
0473 D1=DPN
0474 D2=DTX
0475 NFP3=NFP(JP,3)
0476 NFT3=0
0477 GO TO 220
0478 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
0479 D1=DPX
0480 D2=DTN
0481 NFP3=0
0482 NFT3=NFT(JT,3)
0483 GO TO 240
0484 ENDIF
0485 GO TO 4000
0486 ELSE IF(SW.GT.MAX(SPNTX,SPXTN)+0.001 .AND.
0487 & SW.LE.MIN(SPDTX,SPXTD)+0.001) THEN
0488 IF(((NPJ(JP).EQ.0.AND.NTJ(JT).EQ.0
0489 & .AND.ATL_RAN(NSEED).GT.0.5).OR.(NPJ(JP).EQ.0
0490 & .AND.NTJ(JT).NE.0)).AND.NFP(JP,5).LE.2) THEN
0491 D1=DPN
0492 D2=DTX
0493 NFP3=NFP(JP,3)
0494 NFT3=0
0495 GO TO 220
0496 ELSE IF(NTJ(JT).EQ.0.AND.NFT(JT,5).LE.2) THEN
0497 D1=DPX
0498 D2=DTN
0499 NFP3=0
0500 NFT3=NFT(JT,3)
0501 GO TO 240
0502 ENDIF
0503 GO TO 4000
0504 ELSE IF(SW.GT.MIN(SPNTX,SPXTN)+0.001 .AND.
0505 & SW.LE.MAX(SPNTX,SPXTN)+0.001) THEN
0506 IF(SPNTX.LE.SPXTN.AND.NPJ(JP).EQ.0
0507 & .AND.NFP(JP,5).LE.2) THEN
0508 D1=DPN
0509 D2=DTX
0510 NFP3=NFP(JP,3)
0511 NFT3=0
0512 GO TO 220
0513 ELSEIF(SPNTX.GT.SPXTN.AND.NTJ(JT).EQ.0
0514 & .AND.NFT(JT,5).LE.2) THEN
0515 D1=DPX
0516 D2=DTN
0517 NFP3=0
0518 NFT3=NFT(JT,3)
0519 GO TO 240
0520 ENDIF
0521 GO TO 4000
0522 ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND.
0523 & (NPJ(JP).NE.0 .OR.NTJ(JT).NE.0)) THEN
0524 GO TO 4000
0525 ELSE IF(SW.LE.MIN(SPNTX,SPXTN)+0.001 .AND.
0526 & NFP(JP,5).GT.2.AND.NFT(JT,5).GT.2) THEN
0527 GO TO 4000
0528 ELSE IF(SW.GT.SDD+0.001.AND.SW.LE.
0529 & MIN(SPNTX,SPXTN)+0.001) THEN
0530 D1=DPD
0531 D2=DTD
0532 NFP3=NFDP
0533 NFT3=NFDT
0534 GO TO 100
0535 ELSE IF(SW.GT.MAX(SPNTD,SPDTN)+0.001
0536 & .AND. SW.LE.SDD+0.001) THEN
0537 IF(ATL_RAN(NSEED).GT.0.5) THEN
0538 D1=DPD
0539 D2=DTN
0540 NFP3=NFDP
0541 NFT3=NFT(JT,3)
0542 GO TO 100
0543 ELSE
0544 D1=DPN
0545 D2=DTD
0546 NFP3=NFP(JP,3)
0547 NFT3=NFDT
0548 GO TO 100
0549 ENDIF
0550 ELSE IF(SW.GT.MIN(SPNTD,SPDTN)+0.001
0551 & .AND. SW.LE.MAX(SPNTD,SPDTN)+0.001) THEN
0552 IF(SPNTD.GT.SPDTN) THEN
0553 D1=DPD
0554 D2=DTN
0555 NFP3=NFDP
0556 NFT3=NFT(JT,3)
0557 GO TO 100
0558 ELSE
0559 D1=DPN
0560 D2=DTD
0561 NFP3=NFP(JP,3)
0562 NFT3=NFDT
0563 GO TO 100
0564 ENDIF
0565 ELSE IF(SW.LE.MIN(SPNTD,SPDTN)+0.001) THEN
0566 D1=DPN
0567 D2=DTN
0568 NFP3=NFP(JP,3)
0569 NFT3=NFT(JT,3)
0570 GO TO 100
0571 ENDIF
0572 WRITE(6,*) 'Error in HIJSFT: There is no path to here'
0573 RETURN
0574
0575
0576
0577
0578
0579 100 NFP5=MAX(2,NFP(JP,5))
0580 NFT5=MAX(2,NFT(JT,5))
0581 BB1=1.0+D1-D2
0582 BB2=1.0+D2-D1
0583 IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN
0584 MISS=MISS+1
0585 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
0586 PKC=PKC*0.5
0587 GO TO 30
0588 ENDIF
0589 IF(ATL_RAN(NSEED).LT.0.5) THEN
0590 X1=(BB1-SQRT(BB1**2-4.0*D1))/2.0
0591 X2=(BB2-SQRT(BB2**2-4.0*D2))/2.0
0592 ELSE
0593 X1=(BB1+SQRT(BB1**2-4.0*D1))/2.0
0594 X2=(BB2+SQRT(BB2**2-4.0*D2))/2.0
0595 ENDIF
0596 IHNT2(13)=2
0597 GO TO 600
0598
0599
0600
0601
0602 220 NFP5=MAX(2,NFP(JP,5))
0603 NFT5=3
0604 IF(NFP3.EQ.0) NFP5=3
0605 BB2=1.0+D2-D1
0606 IF(BB2**2.LT.4.0*D2) THEN
0607 MISS=MISS+1
0608 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
0609 PKC=PKC*0.5
0610 GO TO 30
0611 ENDIF
0612 XMIN=(BB2-SQRT(BB2**2-4.0*D2))/2.0
0613 XMAX=(BB2+SQRT(BB2**2-4.0*D2))/2.0
0614 MISS4=0
0615 222 X2=HIRND2(6,XMIN,XMAX)
0616 X1=D1/(1.0-X2)
0617 IF(X2*(1.0-X1).LT.(D2+1.E-4/SW)) THEN
0618 MISS4=MISS4+1
0619 IF(MISS4.LE.1000) GO TO 222
0620 GO TO 5000
0621 ENDIF
0622 IHNT2(13)=2
0623 GO TO 600
0624
0625 240 NFP5=3
0626 NFT5=MAX(2,NFT(JT,5))
0627 IF(NFT3.EQ.0) NFT5=3
0628 BB1=1.0+D1-D2
0629 IF(BB1**2.LT.4.0*D1) THEN
0630 MISS=MISS+1
0631 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
0632 PKC=PKC*0.5
0633 GO TO 30
0634 ENDIF
0635 XMIN=(BB1-SQRT(BB1**2-4.0*D1))/2.0
0636 XMAX=(BB1+SQRT(BB1**2-4.0*D1))/2.0
0637 MISS4=0
0638 242 X1=HIRND2(6,XMIN,XMAX)
0639 X2=D2/(1.0-X1)
0640 IF(X1*(1.0-X2).LT.(D1+1.E-4/SW)) THEN
0641 MISS4=MISS4+1
0642 IF(MISS4.LE.1000) GO TO 242
0643 GO TO 5000
0644 ENDIF
0645 IHNT2(13)=2
0646 GO TO 600
0647
0648
0649
0650
0651
0652
0653 400 NFP5=3
0654 NFT5=3
0655 BB1=1.0+D1-D2
0656 BB2=1.0+D2-D1
0657 IF(BB1**2.LT.4.0*D1 .OR. BB2**2.LT.4.0*D2) THEN
0658 MISS=MISS+1
0659 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 3000
0660 PKC=PKC*0.5
0661 GO TO 30
0662 ENDIF
0663 XMIN1=(BB1-SQRT(BB1**2-4.0*D1))/2.0
0664 XMAX1=(BB1+SQRT(BB1**2-4.0*D1))/2.0
0665 XMIN2=(BB2-SQRT(BB2**2-4.0*D2))/2.0
0666 XMAX2=(BB2+SQRT(BB2**2-4.0*D2))/2.0
0667 MISS4=0
0668 410 X1=HIRND2(4,XMIN1,XMAX1)
0669 X2=HIRND2(4,XMIN2,XMAX2)
0670 IF(NFP(JP,5).EQ.3.OR.NFT(JT,5).EQ.3) THEN
0671 X1=HIRND2(6,XMIN1,XMAX1)
0672 X2=HIRND2(6,XMIN2,XMAX2)
0673 ENDIF
0674
0675 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR.
0676 & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN
0677 X1=HIRND2(5,XMIN1,XMAX1)
0678 ENDIF
0679 IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR.
0680 & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN
0681 X2=HIRND2(5,XMIN2,XMAX2)
0682 ENDIF
0683
0684
0685
0686
0687
0688
0689 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000) X1=1.0-X1
0690 XXP=X1*(1.0-X2)
0691 XXT=X2*(1.0-X1)
0692 IF(XXP.LT.(D1+1.E-4/SW) .OR. XXT.LT.(D2+1.E-4/SW)) THEN
0693 MISS4=MISS4+1
0694 IF(MISS4.LE.1000) GO TO 410
0695 GO TO 5000
0696 ENDIF
0697 IHNT2(13)=3
0698
0699
0700 600 CONTINUE
0701 IF(X1*(1.0-X2).LT.(AMPN**2-1.E-4)/SW.OR.
0702 & X2*(1.0-X1).LT.(AMTN**2-1.E-4)/SW) THEN
0703 MISS=MISS+1
0704 IF(MISS.GT.100.OR.PKC.EQ.0.0) GO TO 2000
0705 PKC=0.0
0706 GO TO 30
0707 ENDIF
0708
0709 EPP=(1.0-X2)*WP
0710 EPM=X1*WM
0711 ETP=X2*WP
0712 ETM=(1.0-X1)*WM
0713 PP(JP,3)=(EPP-EPM)/2.0
0714 PP(JP,4)=(EPP+EPM)/2.0
0715 IF(EPP*EPM-PTP2.LT.0.0) GO TO 6000
0716 PP(JP,5)=SQRT(EPP*EPM-PTP2)
0717 NFP(JP,3)=NFP3
0718 NFP(JP,5)=NFP5
0719
0720 PT(JT,3)=(ETP-ETM)/2.0
0721 PT(JT,4)=(ETP+ETM)/2.0
0722 IF(ETP*ETM-PTT2.LT.0.0) GO TO 6000
0723 PT(JT,5)=SQRT(ETP*ETM-PTT2)
0724 NFT(JT,3)=NFT3
0725 NFT(JT,5)=NFT5
0726
0727
0728 PP(JP,1)=PP11-PKC11
0729 PP(JP,2)=PP12-PKC12
0730
0731 KICKDIP=1
0732 KICKDIT=1
0733 IF(ABS(NFP(JP,1)*NFP(JP,2)).GT.1000000.OR.
0734 & ABS(NFP(JP,1)*NFP(JP,2)).LT.100) THEN
0735 KICKDIP=0
0736 ENDIF
0737 IF(ABS(NFT(JT,1)*NFT(JT,2)).GT.1000000.OR.
0738 & ABS(NFT(JT,1)*NFT(JT,2)).LT.100) THEN
0739 KICKDIT=0
0740 ENDIF
0741 IF((KICKDIP.EQ.0.AND.ATL_RAN(NSEED).LT.0.5)
0742 & .OR.(KICKDIP.NE.0.AND.ATL_RAN(NSEED)
0743 & .LT.0.5/(1.0+(PKC11**2+PKC12**2)/HIPR1(22)**2))) THEN
0744 PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,6)
0745 PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,7)
0746 PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0
0747 & +PP(JP,8)+PKC11
0748 PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0
0749 & +PP(JP,9)+PKC12
0750 ELSE
0751 PP(JP,8)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0+PP(JP,8)
0752 PP(JP,9)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0+PP(JP,9)
0753 PP(JP,6)=(PP(JP,1)-PP(JP,6)-PP(JP,8)-DPKC1)/2.0
0754 & +PP(JP,6)+PKC11
0755 PP(JP,7)=(PP(JP,2)-PP(JP,7)-PP(JP,9)-DPKC2)/2.0
0756 & +PP(JP,7)+PKC12
0757 ENDIF
0758 PP(JP,1)=PP(JP,6)+PP(JP,8)
0759 PP(JP,2)=PP(JP,7)+PP(JP,9)
0760
0761 PT(JT,1)=PT11-PKC21
0762 PT(JT,2)=PT12-PKC22
0763 IF((KICKDIT.EQ.0.AND.ATL_RAN(NSEED).LT.0.5)
0764 & .OR.(KICKDIT.NE.0.AND.ATL_RAN(NSEED)
0765 & .LT.0.5/(1.0+(PKC21**2+PKC22**2)/HIPR1(22)**2))) THEN
0766 PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,6)
0767 PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,7)
0768 PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0
0769 & +PT(JT,8)+PKC21
0770 PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0
0771 & +PT(JT,9)+PKC22
0772 ELSE
0773 PT(JT,8)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0+PT(JT,8)
0774 PT(JT,9)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0+PT(JT,9)
0775 PT(JT,6)=(PT(JT,1)-PT(JT,6)-PT(JT,8)-DPKC1)/2.0
0776 & +PT(JT,6)+PKC21
0777 PT(JT,7)=(PT(JT,2)-PT(JT,7)-PT(JT,9)-DPKC2)/2.0
0778 & +PT(JT,7)+PKC22
0779 ENDIF
0780 PT(JT,1)=PT(JT,6)+PT(JT,8)
0781 PT(JT,2)=PT(JT,7)+PT(JT,9)
0782
0783
0784 IF(NPJ(JP).NE.0) NFP(JP,5)=3
0785 IF(NTJ(JT).NE.0) NFT(JT,5)=3
0786
0787 IF(EPP/(EPM+0.0001).LT.ETP/(ETM+0.0001).AND.
0788 & ABS(NFP(JP,1)*NFP(JP,2)).LT.1000000)THEN
0789 DO 620 JSB=1,15
0790 PSB=PP(JP,JSB)
0791 PP(JP,JSB)=PT(JT,JSB)
0792 PT(JT,JSB)=PSB
0793 NSB=NFP(JP,JSB)
0794 NFP(JP,JSB)=NFT(JT,JSB)
0795 NFT(JT,JSB)=NSB
0796 620 CONTINUE
0797
0798
0799 ENDIF
0800
0801 RETURN
0802
0803
0804 1000 IERROR=1
0805 IF(IHPR2(10).EQ.0) RETURN
0806 WRITE(6,*) ' Fatal HIJSFT start error,abandon this event'
0807 WRITE(6,*) ' PROJ E+,E-,W+',EPP,EPM,WP
0808 WRITE(6,*) ' TARG E+,E-,W-',ETP,ETM,WM
0809 WRITE(6,*) ' W+*W-, (APN+ATN)^2',SW,SNN
0810 RETURN
0811 2000 IERROR=0
0812 IF(IHPR2(10).EQ.0) RETURN
0813 WRITE(6,*) ' (2)energy partition fail,'
0814 WRITE(6,*) ' HIJSFT not performed, but continue'
0815 WRITE(6,*) ' MP1,MPN',X1*(1.0-X2)*SW,AMPN**2
0816 WRITE(6,*) ' MT2,MTN',X2*(1.0-X1)*SW,AMTN**2
0817 RETURN
0818 3000 IERROR=0
0819 IF(IHPR2(10).EQ.0) RETURN
0820 WRITE(6,*) ' (3)something is wrong with the pt kick, '
0821 WRITE(6,*) ' HIJSFT not performed, but continue'
0822 WRITE(6,*) ' D1=',D1,' D2=',D2,' SW=',SW
0823 WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5)
0824 WRITE(6,*) ' THIS COLLISON NFP5=',NFP5, ' NFT5=',NFT5
0825 WRITE(6,*) ' # OF JET IN PROJ',NPJ(JP),' IN TARG',NTJ(JT)
0826 RETURN
0827 4000 IERROR=0
0828 IF(IHPR2(10).EQ.0) RETURN
0829 WRITE(6,*) ' (4)unable to choose process, but not harmful'
0830 WRITE(6,*) ' HIJSFT not performed, but continue'
0831 WRITE(6,*) ' PTP=',SQRT(PTP2),' PTT=',SQRT(PTT2),' SW=',SW
0832 WRITE(6,*) ' AMCUT=',AMX,' JP=',JP,' JT=',JT
0833 WRITE(6,*) ' HISTORY NFP5=',NFP(JP,5),' NFT5=',NFT(JT,5)
0834 RETURN
0835 5000 IERROR=0
0836 IF(IHPR2(10).EQ.0) RETURN
0837 WRITE(6,*) ' energy partition failed(5),for limited try'
0838 WRITE(6,*) ' HIJSFT not performed, but continue'
0839 WRITE(6,*) ' NFP5=',NFP5,' NFT5=',NFT5
0840 WRITE(6,*) ' D1',D1,' X1(1-X2)',X1*(1.0-X2)
0841 WRITE(6,*) ' D2',D2,' X2(1-X1)',X2*(1.0-X1)
0842 RETURN
0843 6000 PKC=0.0
0844 MISS=MISS+1
0845 IF(MISS.LT.100) GO TO 30
0846 IERROR=1
0847 IF(IHPR2(10).EQ.0) RETURN
0848 WRITE(6,*) 'ERROR OCCURED, HIJSFT NOT PERFORMED'
0849 WRITE(6,*) ' Abort this event'
0850 WRITE(6,*) 'MTP,PTP2',EPP*EPM,PTP2,' MTT,PTT2',ETP*ETM,PTT2
0851 RETURN
0852 END