File indexing completed on 2025-08-05 08:15:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192 SUBROUTINE HIJING(FRAME,BMIN0,BMAX0)
0193 CHARACTER FRAME*8
0194 DIMENSION SCIP(300,300),RNIP(300,300),SJIP(300,300),JTP(3),
0195 & IPCOL(90000),ITCOL(90000)
0196 COMMON/HIPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
0197 SAVE /HIPARNT/
0198
0199 COMMON/HIJCRDN/YP(3,300),YT(3,300)
0200 SAVE /HIJCRDN/
0201 COMMON/HIJGLBR/NELT,NINT,NELP,NINP
0202 SAVE /HIJGLBR/
0203
0204
0205
0206
0207
0208
0209
0210 COMMON/HIMAIN1/NATT,EATT,JATT,NT,NP,N0,N01,N10,N11,IERRSTAT
0211
0212 SAVE /HIMAIN1/
0213
0214
0215
0216
0217
0218 COMMON/HIMAIN2/KATT(130000,4),PATT(130000,4), VATT(130000,4)
0219 SAVE /HIMAIN2/
0220
0221
0222 COMMON/HISTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
0223 SAVE /HISTRNG/
0224 COMMON/HIJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
0225 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
0226 & PJPM(300,500),NTJ(300),KFTJ(300,500),
0227 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
0228 & PJTE(300,500),PJTM(300,500)
0229 SAVE /HIJJET1/
0230 COMMON/HIJJET2/NSG,NJSG(900),IASG(900,3),K1SG(900,100),
0231 & K2SG(900,100),PXSG(900,100),PYSG(900,100),
0232 & PZSG(900,100),PESG(900,100),PMSG(900,100)
0233 SAVE /HIJJET2/
0234
0235
0236
0237
0238
0239 COMMON/HIJJET4/NDR,IADR(900,2),KFDR(900),PDR(900,5), VDR(900,5)
0240 SAVE /HIJJET4/
0241
0242
0243
0244 COMMON/RANSEED/NSEED
0245 SAVE /RANSEED/
0246
0247 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0248 SAVE /LUJETS/
0249 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0250 SAVE /LUDAT1/
0251
0252
0253
0254
0255
0256
0257 IERRSTAT = 0
0258
0259 BMAX=MIN(BMAX0,HIPR1(34)+HIPR1(35))
0260 BMIN=MIN(BMIN0,BMAX)
0261 IF(IHNT2(1).LE.1 .AND. IHNT2(3).LE.1) THEN
0262 BMIN=0.0
0263 BMAX=2.5*SQRT(HIPR1(31)*0.1/HIPR1(40))
0264 ENDIF
0265
0266
0267
0268
0269 YP(1,1)=0.0
0270 YP(2,1)=0.0
0271 YP(3,1)=0.0
0272 IF(IHNT2(1).LE.1) GO TO 14
0273 DO 10 KP=1,IHNT2(1)
0274 5 R=HIRND(1)
0275
0276 if(IHNT2(1).EQ.2) then
0277 rnd1=max(ATL_RAN(NSEED),1.0e-20)
0278 rnd2=max(ATL_RAN(NSEED),1.0e-20)
0279 rnd3=max(ATL_RAN(NSEED),1.0e-20)
0280 R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
0281 & +4.38*0.85*log(rnd3)/(4.38+0.85))
0282 endif
0283
0284 X=ATL_RAN(NSEED)
0285 CX=2.0*X-1.0
0286 SX=SQRT(1.0-CX*CX)
0287
0288 PHI=ATL_RAN(NSEED)*2.0*HIPR1(40)
0289
0290 YP(1,KP)=R*SX*COS(PHI)
0291 YP(2,KP)=R*SX*SIN(PHI)
0292 YP(3,KP)=R*CX
0293 IF(HIPR1(29).EQ.0.0) GO TO 10
0294 DO 8 KP2=1,KP-1
0295 DNBP1=(YP(1,KP)-YP(1,KP2))**2
0296 DNBP2=(YP(2,KP)-YP(2,KP2))**2
0297 DNBP3=(YP(3,KP)-YP(3,KP2))**2
0298 DNBP=DNBP1+DNBP2+DNBP3
0299 IF(DNBP.LT.HIPR1(29)*HIPR1(29)) GO TO 5
0300
0301
0302 8 CONTINUE
0303 10 CONTINUE
0304
0305 if(IHNT2(1).EQ.2) then
0306 YP(1,2)=-YP(1,1)
0307 YP(2,2)=-YP(2,1)
0308 YP(3,2)=-YP(3,1)
0309 endif
0310
0311 DO 12 I=1,IHNT2(1)-1
0312 DO 12 J=I+1,IHNT2(1)
0313 IF(YP(3,I).GT.YP(3,J)) GO TO 12
0314 Y1=YP(1,I)
0315 Y2=YP(2,I)
0316 Y3=YP(3,I)
0317 YP(1,I)=YP(1,J)
0318 YP(2,I)=YP(2,J)
0319 YP(3,I)=YP(3,J)
0320 YP(1,J)=Y1
0321 YP(2,J)=Y2
0322 YP(3,J)=Y3
0323 12 CONTINUE
0324
0325
0326 14 YT(1,1)=0.0
0327 YT(2,1)=0.0
0328 YT(3,1)=0.0
0329 IF(IHNT2(3).LE.1) GO TO 24
0330 DO 20 KT=1,IHNT2(3)
0331 15 R=HIRND(2)
0332
0333 if(IHNT2(3).EQ.2) then
0334 rnd1=max(ATL_RAN(NSEED),1.0e-20)
0335 rnd2=max(ATL_RAN(NSEED),1.0e-20)
0336 rnd3=max(ATL_RAN(NSEED),1.0e-20)
0337 R=-0.5*(log(rnd1)*4.38/2.0+log(rnd2)*0.85/2.0
0338 & +4.38*0.85*log(rnd3)/(4.38+0.85))
0339 endif
0340
0341 X=ATL_RAN(NSEED)
0342 CX=2.0*X-1.0
0343 SX=SQRT(1.0-CX*CX)
0344
0345 PHI=ATL_RAN(NSEED)*2.0*HIPR1(40)
0346
0347 YT(1,KT)=R*SX*COS(PHI)
0348 YT(2,KT)=R*SX*SIN(PHI)
0349 YT(3,KT)=R*CX
0350 IF(HIPR1(29).EQ.0.0) GO TO 20
0351 DO 18 KT2=1,KT-1
0352 DNBT1=(YT(1,KT)-YT(1,KT2))**2
0353 DNBT2=(YT(2,KT)-YT(2,KT2))**2
0354 DNBT3=(YT(3,KT)-YT(3,KT2))**2
0355 DNBT=DNBT1+DNBT2+DNBT3
0356 IF(DNBT.LT.HIPR1(29)*HIPR1(29)) GO TO 15
0357
0358
0359 18 CONTINUE
0360 20 CONTINUE
0361
0362 if(IHNT2(3).EQ.2) then
0363 YT(1,2)=-YT(1,1)
0364 YT(2,2)=-YT(2,1)
0365 YT(3,2)=-YT(3,1)
0366 endif
0367
0368 DO 22 I=1,IHNT2(3)-1
0369 DO 22 J=I+1,IHNT2(3)
0370 IF(YT(3,I).LT.YT(3,J)) GO TO 22
0371 Y1=YT(1,I)
0372 Y2=YT(2,I)
0373 Y3=YT(3,I)
0374 YT(1,I)=YT(1,J)
0375 YT(2,I)=YT(2,J)
0376 YT(3,I)=YT(3,J)
0377 YT(1,J)=Y1
0378 YT(2,J)=Y2
0379 YT(3,J)=Y3
0380 22 CONTINUE
0381
0382 24 MISS=-1
0383
0384 50 MISS=MISS+1
0385 IF(MISS.GT.50) THEN
0386 WRITE(6,*) 'infinite loop happened in HIJING'
0387 STOP
0388 ENDIF
0389
0390 NATT=0
0391 JATT=0
0392 EATT=0.0
0393 CALL HIJINI
0394 NLOP=0
0395
0396 60 NT=0
0397 NP=0
0398 N0=0
0399 N01=0
0400 N10=0
0401 N11=0
0402 NELT=0
0403 NINT=0
0404 NELP=0
0405 NINP=0
0406 NSG=0
0407 NCOLT=0
0408
0409
0410
0411
0412
0413 BB=SQRT(BMIN**2+ATL_RAN(NSEED)*(BMAX**2-BMIN**2))
0414 PHI=2.0*HIPR1(40)*ATL_RAN(NSEED)
0415 BBX=BB*COS(PHI)
0416 BBY=BB*SIN(PHI)
0417 HINT1(19)=BB
0418 HINT1(20)=PHI
0419
0420 DO 70 JP=1,IHNT2(1)
0421 DO 70 JT=1,IHNT2(3)
0422 SCIP(JP,JT)=-1.0
0423 B2=(YP(1,JP)+BBX-YT(1,JT))**2+(YP(2,JP)+BBY-YT(2,JT))**2
0424 R2=B2*HIPR1(40)/HIPR1(31)/0.1
0425
0426 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)
0427 & /1.2**2/REAL(IHNT2(1))**0.6666667,1.0)
0428 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)
0429 & /1.2**2/REAL(IHNT2(3))**0.6666667,1.0)
0430 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
0431 & *SQRT(1.0-RRB1)
0432 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
0433 & *SQRT(1.0-RRB2)
0434 HINT1(18)=HINT1(14)-APHX1*HINT1(15)
0435 & -APHX2*HINT1(16)+APHX1*APHX2*HINT1(17)
0436 IF(IHPR2(14).EQ.0.OR.
0437 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) THEN
0438 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))*ROMG(R2)/HIPR1(31))
0439 RANTOT=ATL_RAN(NSEED)
0440 IF(RANTOT.GT.GS) GO TO 70
0441 GO TO 65
0442 ENDIF
0443 GSTOT_0=2.0*(1.0-EXP(-(HIPR1(30)+HINT1(18))
0444 & /HIPR1(31)/2.0*ROMG(0.0)))
0445 R2=R2/GSTOT_0
0446 GS=1.0-EXP(-(HIPR1(30)+HINT1(18))/HIPR1(31)*ROMG(R2))
0447 GSTOT=2.0*(1.0-SQRT(1.0-GS))
0448 RANTOT=ATL_RAN(NSEED)*GSTOT_0
0449 IF(RANTOT.GT.GSTOT) GO TO 70
0450 IF(RANTOT.GT.GS) THEN
0451 CALL HIJCSC(JP,JT)
0452 GO TO 70
0453
0454 ENDIF
0455 65 SCIP(JP,JT)=R2
0456 RNIP(JP,JT)=RANTOT
0457 SJIP(JP,JT)=HINT1(18)
0458 NCOLT=NCOLT+1
0459 IPCOL(NCOLT)=JP
0460 ITCOL(NCOLT)=JT
0461 70 CONTINUE
0462
0463
0464 IF(NCOLT.EQ.0) THEN
0465 NLOP=NLOP+1
0466 IF(NLOP.LE.20.OR.
0467 & (IHNT2(1).EQ.1.AND.IHNT2(3).EQ.1)) GO TO 60
0468 RETURN
0469 ENDIF
0470
0471
0472
0473
0474 IF(IHPR2(3).NE.0) THEN
0475 NHARD=1+INT(ATL_RAN(NSEED)*(NCOLT-1)+0.5)
0476 NHARD=MIN(NHARD,NCOLT)
0477 JPHARD=IPCOL(NHARD)
0478 JTHARD=ITCOL(NHARD)
0479 ENDIF
0480
0481 IF(IHPR2(9).EQ.1) THEN
0482 NMINI=1+INT(ATL_RAN(NSEED)*(NCOLT-1)+0.5)
0483 NMINI=MIN(NMINI,NCOLT)
0484 JPMINI=IPCOL(NMINI)
0485 JTMINI=ITCOL(NMINI)
0486 ENDIF
0487
0488
0489
0490 DO 200 JP=1,IHNT2(1)
0491 DO 200 JT=1,IHNT2(3)
0492 IF(SCIP(JP,JT).EQ.-1.0) GO TO 200
0493 NFP(JP,11)=NFP(JP,11)+1
0494 NFT(JT,11)=NFT(JT,11)+1
0495 IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).GT.1) THEN
0496 NP=NP+1
0497 N01=N01+1
0498 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).LE.1) THEN
0499 NT=NT+1
0500 N10=N10+1
0501 ELSE IF(NFP(JP,5).LE.1 .AND. NFT(JT,5).LE.1) THEN
0502 NP=NP+1
0503 NT=NT+1
0504 N0=N0+1
0505 ELSE IF(NFP(JP,5).GT.1 .AND. NFT(JT,5).GT.1) THEN
0506 N11=N11+1
0507 ENDIF
0508
0509 JOUT=0
0510 NFP(JP,10)=0
0511 NFT(JT,10)=0
0512
0513 IF(IHPR2(8).EQ.0 .AND. IHPR2(3).EQ.0) GO TO 160
0514
0515 IF(NFP(JP,6).LT.0 .OR. NFT(JT,6).LT.0) GO TO 160
0516
0517
0518
0519 R2=SCIP(JP,JT)
0520 HINT1(18)=SJIP(JP,JT)
0521 TT=ROMG(R2)*HINT1(18)/HIPR1(31)
0522 TTS=HIPR1(30)*ROMG(R2)/HIPR1(31)
0523 NJET=0
0524 IF(IHPR2(3).NE.0 .AND. JP.EQ.JPHARD .AND. JT.EQ.JTHARD) THEN
0525 CALL JETINI(JP,JT,1)
0526 CALL HIJHRD(JP,JT,0,JFLG,0)
0527 HINT1(26)=HINT1(47)
0528 HINT1(27)=HINT1(48)
0529 HINT1(28)=HINT1(49)
0530 HINT1(29)=HINT1(50)
0531 HINT1(36)=HINT1(67)
0532 HINT1(37)=HINT1(68)
0533 HINT1(38)=HINT1(69)
0534 HINT1(39)=HINT1(70)
0535
0536 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
0537 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
0538 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
0539 & JFLG.GE.3) IASG(NSG,3)=1
0540 IHNT2(9)=IHNT2(14)
0541 IHNT2(10)=IHNT2(15)
0542 DO 105 I05=1,5
0543 HINT1(20+I05)=HINT1(40+I05)
0544 HINT1(30+I05)=HINT1(50+I05)
0545 105 CONTINUE
0546 JOUT=1
0547 IF(IHPR2(8).EQ.0) GO TO 160
0548 RRB1=MIN((YP(1,JP)**2+YP(2,JP)**2)/1.2**2
0549 & /REAL(IHNT2(1))**0.6666667,1.0)
0550 RRB2=MIN((YT(1,JT)**2+YT(2,JT)**2)/1.2**2
0551 & /REAL(IHNT2(3))**0.6666667,1.0)
0552 APHX1=HIPR1(6)*4.0/3.0*(IHNT2(1)**0.3333333-1.0)
0553 & *SQRT(1.0-RRB1)
0554 APHX2=HIPR1(6)*4.0/3.0*(IHNT2(3)**0.3333333-1.0)
0555 & *SQRT(1.0-RRB2)
0556 HINT1(65)=HINT1(61)-APHX1*HINT1(62)
0557 & -APHX2*HINT1(63)+APHX1*APHX2*HINT1(64)
0558 TTRIG=ROMG(R2)*HINT1(65)/HIPR1(31)
0559 NJET=-1
0560
0561
0562
0563 XR1=-ALOG(EXP(-TTRIG)+ATL_RAN(NSEED)*(1.0-EXP(-TTRIG)))
0564 106 NJET=NJET+1
0565 XR1=XR1-ALOG(max(ATL_RAN(NSEED),1.0e-20))
0566 IF(XR1.LT.TTRIG) GO TO 106
0567 XR=0.0
0568 107 NJET=NJET+1
0569 XR=XR-ALOG(max(ATL_RAN(NSEED),1.0e-20))
0570 IF(XR.LT.TT-TTRIG) GO TO 107
0571 NJET=NJET-1
0572 GO TO 112
0573 ENDIF
0574
0575
0576 IF(IHPR2(9).EQ.1.AND.JP.EQ.JPMINI.AND.JT.EQ.JTMINI) GO TO 110
0577
0578
0579
0580 IF(IHPR2(8).GT.0 .AND.RNIP(JP,JT).LT.EXP(-TT)*
0581 & (1.0-EXP(-TTS))) GO TO 160
0582
0583 110 XR=-ALOG(EXP(-TT)+ATL_RAN(NSEED)*(1.0-EXP(-TT)))
0584 111 NJET=NJET+1
0585 XR=XR-ALOG(max(ATL_RAN(NSEED),1.0e-20))
0586 IF(XR.LT.TT) GO TO 111
0587 112 NJET=MIN(NJET,IHPR2(8))
0588 IF(IHPR2(8).LT.0) NJET=ABS(IHPR2(8))
0589
0590
0591 DO 150 I_JET=1,NJET
0592 CALL JETINI(JP,JT,0)
0593 CALL HIJHRD(JP,JT,JOUT,JFLG,1)
0594
0595
0596
0597
0598
0599
0600 IF(JFLG.EQ.0) GO TO 160
0601 IF(JFLG.LT.0) THEN
0602 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJHRD'
0603 GO TO 50
0604 ENDIF
0605 JOUT=JOUT+1
0606 IF(ABS(HINT1(46)).GT.HIPR1(11).AND.JFLG.EQ.2) NFP(JP,7)=1
0607 IF(ABS(HINT1(56)).GT.HIPR1(11).AND.JFLG.EQ.2) NFT(JT,7)=1
0608 IF(MAX(ABS(HINT1(46)),ABS(HINT1(56))).GT.HIPR1(11).AND.
0609 & JFLG.GE.3) IASG(NSG,3)=1
0610
0611 150 CONTINUE
0612 160 CONTINUE
0613 CALL HIJSFT(JP,JT,JOUT,IERROR)
0614 IF(IERROR.NE.0) THEN
0615 IF(IHPR2(10).NE.0) WRITE(6,*) 'error occured in HIJSFT'
0616 GO TO 50
0617 ENDIF
0618
0619
0620 JATT=JATT+JOUT
0621
0622 200 CONTINUE
0623
0624
0625
0626 DO 201 JP=1,IHNT2(1)
0627 IF(NFP(JP,5).GT.2) THEN
0628 NINP=NINP+1
0629 ELSE IF(NFP(JP,5).EQ.2.OR.NFP(JP,5).EQ.1) THEN
0630 NELP=NELP+1
0631 ENDIF
0632 201 continue
0633 DO 202 JT=1,IHNT2(3)
0634 IF(NFT(JT,5).GT.2) THEN
0635 NINT=NINT+1
0636 ELSE IF(NFT(JT,5).EQ.2.OR.NFT(JT,5).EQ.1) THEN
0637 NELT=NELT+1
0638 ENDIF
0639 202 continue
0640
0641
0642
0643
0644
0645
0646 IF((IHPR2(8).NE.0.OR.IHPR2(3).NE.0).AND.IHPR2(4).GT.0.AND.
0647 & IHNT2(1).GT.1.AND.IHNT2(3).GT.1) THEN
0648 DO 271 I=1,IHNT2(1)
0649 IF(NFP(I,7).EQ.1) CALL QUENCH(I,1)
0650 271 CONTINUE
0651 DO 272 I=1,IHNT2(3)
0652 IF(NFT(I,7).EQ.1) CALL QUENCH(I,2)
0653 272 CONTINUE
0654 DO 273 ISG=1,NSG
0655 IF(IASG(ISG,3).EQ.1) CALL QUENCH(ISG,3)
0656 273 CONTINUE
0657 ENDIF
0658
0659
0660
0661
0662
0663
0664
0665
0666 IF(IHPR2(20).NE.0) THEN
0667 DO 360 ISG=1,NSG
0668 CALL HIJFRG(ISG,3,IERROR)
0669 IF(MSTU(24).NE.0 .OR.IERROR.GT.0) THEN
0670 MSTU(24)=0
0671 MSTU(28)=0
0672 IF(IHPR2(10).NE.0) THEN
0673 call lulist(1)
0674 WRITE(6,*) 'error occured, repeat the event'
0675 ENDIF
0676 GO TO 50
0677 ENDIF
0678
0679
0680
0681
0682
0683
0684 CALL HIJFST(N,9000,K,P,V)
0685
0686
0687
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697 N_ST=1
0698 IDSTR=92
0699 IF(IHPR2(21).EQ.0) THEN
0700 CALL LUEDIT(2)
0701
0702
0703
0704
0705
0706
0707 ELSE IF (N .GT. 1) THEN
0708
0709
0710 351 N_ST=N_ST+1
0711
0712
0713
0714
0715
0716
0717 if (N_ST .GT. N) then
0718 IERRSTAT = 2
0719 RETURN
0720 ENDIF
0721
0722 IF(K(N_ST,2).LT.91.OR.K(N_ST,2).GT.93) GO TO 351
0723 IDSTR=K(N_ST,2)
0724 N_ST=N_ST+1
0725 ENDIF
0726
0727 IF(FRAME.EQ.'LAB') THEN
0728 CALL HIBOOST
0729 ENDIF
0730
0731
0732 N_STR=0
0733 DO 361 I=N_ST,N
0734 IF(K(I,2).EQ.IDSTR) THEN
0735
0736 IF (K(I,3) .LT. N_ST) THEN
0737
0738 N_STR=N_STR+1
0739 GO TO 360
0740 ENDIF
0741 ENDIF
0742
0743 K(I,4)=N_STR
0744 NATT=NATT+1
0745
0746
0747
0748
0749
0750 if (NATT .GT. 130000) THEN
0751 IERRSTAT = 1
0752 RETURN
0753 ENDIF
0754
0755 KATT(NATT,1)=K(I,2)
0756 KATT(NATT,2)=20
0757 KATT(NATT,4)=K(I,1)
0758
0759
0760 IF(K(I,3).EQ.0 .OR.
0761 & K(I,3).LT.N_ST .OR.
0762 & (K(K(I,3),2) .EQ. IDSTR .AND.
0763 & K(K(I,3),3) .LT. N_ST)) THEN
0764
0765 KATT(NATT,3)=0
0766 ELSE
0767 KATT(NATT,3)=NATT-I+K(I,3)+N_STR-K(K(I,3),4)
0768 ENDIF
0769
0770 PATT(NATT,1)=P(I,1)
0771 PATT(NATT,2)=P(I,2)
0772 PATT(NATT,3)=P(I,3)
0773 PATT(NATT,4)=P(I,4)
0774 EATT=EATT+P(I,4)
0775
0776 VATT(NATT,1)=V(I,1)
0777 VATT(NATT,2)=V(I,2)
0778 VATT(NATT,3)=V(I,3)
0779
0780 IF ((ABS(VATT(NATT,3)) .GT. 0.00001) .and.
0781 & (KATT(NATT,3) .eq. 0 )) THEN
0782 CALL LULIST(3)
0783 ENDIF
0784
0785
0786 KPARENT = KATT(NATT,3)
0787 if (KPARENT .ne. 0) then
0788 R = sqrt (VATT(NATT,1)**2 + VATT(NATT,2)**2 +
0789 & VATT(NATT,3)**2)
0790
0791 RPARENT = sqrt (VATT(KPARENT,1)**2 +
0792 & VATT(KPARENT,2)**2 +
0793 & VATT(KPARENT,3)**2)
0794 IF (R/RPARENT .LT. 0.85) THEN
0795 CALL LULIST(3)
0796 ENDIF
0797 ENDIF
0798
0799
0800 VATT(NATT,4)=V(I,4)
0801 361 CONTINUE
0802 360 CONTINUE
0803
0804
0805 JTP(1)=IHNT2(1)
0806 JTP(2)=IHNT2(3)
0807 DO 400 NTP=1,2
0808 DO 400 J_JTP=1,JTP(NTP)
0809 CALL HIJFRG(J_JTP,NTP,IERROR)
0810 IF(MSTU(24).NE.0 .OR. IERROR.GT.0) THEN
0811 MSTU(24)=0
0812 MSTU(28)=0
0813 IF(IHPR2(10).NE.0) THEN
0814 call lulist(1)
0815 WRITE(6,*) 'error occured, repeat the event'
0816 ENDIF
0817 GO TO 50
0818 ENDIF
0819
0820
0821
0822
0823
0824 CALL HIJFST(N,9000,K,P,V)
0825
0826
0827
0828
0829 N_ST=1
0830 IDSTR=92
0831 IF(IHPR2(21).EQ.0) THEN
0832 CALL LUEDIT(2)
0833
0834
0835
0836
0837
0838
0839 ELSE IF (N .GT. 1) THEN
0840
0841 381 N_ST=N_ST+1
0842
0843
0844
0845
0846
0847
0848 if (N_ST .GT. N) then
0849 print *, 'inconsistency, n = ', N, ', n_st = ', N_ST
0850 IERRSTAT = 2
0851 RETURN
0852 ENDIF
0853
0854 IF(K(N_ST,2).LT.91.OR.K(N_ST,2).GT.93) GO TO 381
0855 IDSTR=K(N_ST,2)
0856 N_ST=N_ST+1
0857 ENDIF
0858
0859 IF(FRAME.EQ.'LAB') THEN
0860 CALL HIBOOST
0861 ENDIF
0862
0863
0864 NFTP=NFP(J_JTP,5)
0865 IF(NTP.EQ.2) NFTP=10+NFT(J_JTP,5)
0866 N_STR=0
0867 DO 390 I=N_ST,N
0868 IF(K(I,2).EQ.IDSTR) THEN
0869
0870 IF (K(I,3) .LT. N_ST) THEN
0871
0872 N_STR=N_STR+1
0873 GO TO 390
0874 ENDIF
0875 ENDIF
0876 K(I,4)=N_STR
0877 NATT=NATT+1
0878
0879
0880
0881
0882
0883
0884 if (NATT .GT. 130000) THEN
0885 IERRSTAT = 1
0886 RETURN
0887 ENDIF
0888
0889 KATT(NATT,1)=K(I,2)
0890 KATT(NATT,2)=NFTP
0891 KATT(NATT,4)=K(I,1)
0892
0893
0894 IF(K(I,3).EQ.0 .OR.
0895 & K(I,3).LT.N_ST .OR.
0896 & (K(K(I,3),2) .EQ. IDSTR .AND.
0897 & K(K(I,3),3) .LT. N_ST)) THEN
0898
0899 KATT(NATT,3)=0
0900 ELSE
0901 KATT(NATT,3)=NATT-I+K(I,3)+N_STR-K(K(I,3),4)
0902 ENDIF
0903
0904 PATT(NATT,1)=P(I,1)
0905 PATT(NATT,2)=P(I,2)
0906 PATT(NATT,3)=P(I,3)
0907 PATT(NATT,4)=P(I,4)
0908 EATT=EATT+P(I,4)
0909
0910 VATT(NATT,1)=V(I,1)
0911 VATT(NATT,2)=V(I,2)
0912 VATT(NATT,3)=V(I,3)
0913
0914 if ((abs(VATT(NATT,3)) .gt. 0.00001) .and.
0915 & (KATT(NATT,3) .eq. 0 )) then
0916 call lulist(3)
0917 endif
0918
0919
0920 KPARENT = KATT(NATT,3)
0921 if (KPARENT .ne. 0) then
0922 R = sqrt (VATT(NATT,1)**2 + VATT(NATT,2)**2 +
0923 & VATT(NATT,3)**2)
0924
0925 RPARENT = sqrt (VATT(KPARENT,1)**2 +
0926 & VATT(KPARENT,2)**2 +
0927 & VATT(KPARENT,3)**2)
0928 IF (R/RPARENT .LT. 0.85) THEN
0929 CALL LULIST(3)
0930 ENDIF
0931 ENDIF
0932
0933
0934 VATT(NATT,4)=V(I,4)
0935 390 CONTINUE
0936 400 CONTINUE
0937
0938 ENDIF
0939
0940 DO 450 I=1,NDR
0941 NATT=NATT+1
0942
0943
0944
0945
0946
0947
0948 if (NATT .GT. 130000) THEN
0949 IERRSTAT = 1
0950 RETURN
0951 ENDIF
0952
0953 KATT(NATT,1)=KFDR(I)
0954 KATT(NATT,2)=40
0955 KATT(NATT,3)=0
0956 PATT(NATT,1)=PDR(I,1)
0957 PATT(NATT,2)=PDR(I,2)
0958 PATT(NATT,3)=PDR(I,3)
0959 PATT(NATT,4)=PDR(I,4)
0960 EATT=EATT+PDR(I,4)
0961
0962 VATT(NATT,1)=VDR(I,1)
0963 VATT(NATT,2)=VDR(I,2)
0964 VATT(NATT,3)=VDR(I,3)
0965 VATT(NATT,4)=VDR(I,4)
0966 450 CONTINUE
0967
0968
0969 DENGY=EATT/(IHNT2(1)*HINT1(6)+IHNT2(3)*HINT1(7))-1.0
0970 IF(ABS(DENGY).GT.HIPR1(43).AND.IHPR2(20).NE.0
0971 & .AND.IHPR2(21).EQ.0) THEN
0972 IF(IHPR2(10).NE.0) WRITE(6,*) 'Energy not conserved, repeat event'
0973
0974 GO TO 50
0975 ENDIF
0976 RETURN
0977 END