File indexing completed on 2025-08-05 08:15:42
0001
0002
0003
0004
0005
0006 SUBROUTINE HIJFRG(JTP,NTP,IERROR)
0007
0008
0009
0010
0011
0012
0013 COMMON/HIPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
0014 SAVE /HIPARNT/
0015 COMMON/HIJDAT/HIDAT0(10,10),HIDAT(10)
0016 SAVE /HIJDAT/
0017 COMMON/HISTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
0018 SAVE /HISTRNG/
0019 COMMON/HIJJET1/NPJ(300),KFPJ(300,500),PJPX(300,500),
0020 & PJPY(300,500),PJPZ(300,500),PJPE(300,500),
0021 & PJPM(300,500),NTJ(300),KFTJ(300,500),
0022 & PJTX(300,500),PJTY(300,500),PJTZ(300,500),
0023 & PJTE(300,500),PJTM(300,500)
0024 SAVE /HIJJET1/
0025 COMMON/HIJJET2/NSG,NJSG(900),IASG(900,3),K1SG(900,100),
0026 & K2SG(900,100),PXSG(900,100),PYSG(900,100),
0027 & PZSG(900,100),PESG(900,100),PMSG(900,100)
0028 SAVE /HIJJET2/
0029
0030 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0031 SAVE /LUJETS/
0032 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0033 SAVE /LUDAT1/
0034 COMMON/RANSEED/NSEED
0035 SAVE /RANSEED/
0036
0037 IERROR=0
0038 CALL LUEDIT(0)
0039 N=0
0040
0041 IF(NTP.EQ.3) THEN
0042 ISG=JTP
0043 N=NJSG(ISG)
0044 DO 100 I=1,NJSG(ISG)
0045 K(I,1)=K1SG(ISG,I)
0046 K(I,2)=K2SG(ISG,I)
0047 P(I,1)=PXSG(ISG,I)
0048 P(I,2)=PYSG(ISG,I)
0049 P(I,3)=PZSG(ISG,I)
0050 P(I,4)=PESG(ISG,I)
0051 P(I,5)=PMSG(ISG,I)
0052
0053
0054
0055
0056 V(I,1)=0
0057 V(I,2)=0
0058 V(I,3)=0
0059 V(I,4)=0
0060 V(I,5)=0
0061
0062
0063 100 CONTINUE
0064
0065
0066
0067 CALL LUEXEC
0068 RETURN
0069 ENDIF
0070
0071 IF(NTP.EQ.2) GO TO 200
0072 IF(JTP.GT.IHNT2(1)) RETURN
0073 IF(NFP(JTP,5).NE.3.AND.NFP(JTP,3).NE.0
0074 & .AND.NPJ(JTP).EQ.0.AND.NFP(JTP,10).EQ.0) GO TO 1000
0075 IF(NFP(JTP,15).EQ.-1) THEN
0076 KF1=NFP(JTP,2)
0077 KF2=NFP(JTP,1)
0078 PQ21=PP(JTP,6)
0079 PQ22=PP(JTP,7)
0080 PQ11=PP(JTP,8)
0081 PQ12=PP(JTP,9)
0082 AM1=PP(JTP,15)
0083 AM2=PP(JTP,14)
0084 ELSE
0085 KF1=NFP(JTP,1)
0086 KF2=NFP(JTP,2)
0087 PQ21=PP(JTP,8)
0088 PQ22=PP(JTP,9)
0089 PQ11=PP(JTP,6)
0090 PQ12=PP(JTP,7)
0091 AM1=PP(JTP,14)
0092 AM2=PP(JTP,15)
0093 ENDIF
0094
0095 PB1=PQ11+PQ21
0096 PB2=PQ12+PQ22
0097 PB3=PP(JTP,3)
0098 PECM=PP(JTP,5)
0099 BTZ=PB3/PP(JTP,4)
0100 IF((ABS(PB1-PP(JTP,1)).GT.0.01.OR.
0101 & ABS(PB2-PP(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
0102 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total'
0103
0104 GO TO 300
0105
0106 200 IF(JTP.GT.IHNT2(3)) RETURN
0107 IF(NFT(JTP,5).NE.3.AND.NFT(JTP,3).NE.0
0108 & .AND.NTJ(JTP).EQ.0.AND.NFT(JTP,10).EQ.0) GO TO 1200
0109 IF(NFT(JTP,15).EQ.1) THEN
0110 KF1=NFT(JTP,1)
0111 KF2=NFT(JTP,2)
0112 PQ11=PT(JTP,6)
0113 PQ12=PT(JTP,7)
0114 PQ21=PT(JTP,8)
0115 PQ22=PT(JTP,9)
0116 AM1=PT(JTP,14)
0117 AM2=PT(JTP,15)
0118 ELSE
0119 KF1=NFT(JTP,2)
0120 KF2=NFT(JTP,1)
0121 PQ11=PT(JTP,8)
0122 PQ12=PT(JTP,9)
0123 PQ21=PT(JTP,6)
0124 PQ22=PT(JTP,7)
0125 AM1=PT(JTP,15)
0126 AM2=PT(JTP,14)
0127 ENDIF
0128
0129 PB1=PQ11+PQ21
0130 PB2=PQ12+PQ22
0131 PB3=PT(JTP,3)
0132 PECM=PT(JTP,5)
0133 BTZ=PB3/PT(JTP,4)
0134
0135 IF((ABS(PB1-PT(JTP,1)).GT.0.01.OR.
0136 & ABS(PB2-PT(JTP,2)).GT.0.01).AND.IHPR2(10).NE.0)
0137 & WRITE(6,*) ' Pt of Q and QQ do not sum to the total'
0138
0139 300 IF(PECM.LT.HIPR1(1)) THEN
0140 IERROR=1
0141 IF(IHPR2(10).EQ.0) RETURN
0142 WRITE(6,*) ' ECM=',PECM,' energy of the string is too small'
0143 RETURN
0144 ENDIF
0145 AMT=PECM**2+PB1**2+PB2**2
0146 AMT1=AM1**2+PQ11**2+PQ12**2
0147 AMT2=AM2**2+PQ21**2+PQ22**2
0148 PZCM=SQRT(ABS(AMT**2+AMT1**2+AMT2**2-2.0*AMT*AMT1
0149 & -2.0*AMT*AMT2-2.0*AMT1*AMT2))/2.0/SQRT(AMT)
0150
0151 K(1,1)=2
0152 K(1,2)=KF1
0153 P(1,1)=PQ11
0154 P(1,2)=PQ12
0155 P(1,3)=PZCM
0156 P(1,4)=SQRT(AMT1+PZCM**2)
0157 P(1,5)=AM1
0158 K(2,1)=1
0159 K(2,2)=KF2
0160 P(2,1)=PQ21
0161 P(2,2)=PQ22
0162 P(2,3)=-PZCM
0163 P(2,4)=SQRT(AMT2+PZCM**2)
0164 P(2,5)=AM2
0165
0166
0167
0168
0169
0170 V(1,1)=0
0171 V(1,2)=0
0172 V(1,3)=0
0173 V(1,4)=0
0174 V(1,5)=0
0175
0176 V(2,1)=0
0177 V(2,2)=0
0178 V(2,3)=0
0179 V(2,4)=0
0180 V(2,5)=0
0181
0182
0183
0184 N=2
0185
0186 CALL HIROBO(0.0,0.0,0.0,0.0,BTZ)
0187 JETOT=0
0188 IF((PQ21**2+PQ22**2).GT.(PQ11**2+PQ12**2)) THEN
0189 PMAX1=P(2,1)
0190 PMAX2=P(2,2)
0191 PMAX3=P(2,3)
0192 ELSE
0193 PMAX1=P(1,1)
0194 PMAX2=P(1,2)
0195 PMAX3=P(1,3)
0196 ENDIF
0197 IF(NTP.EQ.1) THEN
0198 PP(JTP,10)=PMAX1
0199 PP(JTP,11)=PMAX2
0200 PP(JTP,12)=PMAX3
0201 ELSE IF(NTP.EQ.2) THEN
0202 PT(JTP,10)=PMAX1
0203 PT(JTP,11)=PMAX2
0204 PT(JTP,12)=PMAX3
0205 ENDIF
0206
0207 IF(NTP.EQ.1.AND.NPJ(JTP).NE.0) THEN
0208 JETOT=NPJ(JTP)
0209
0210
0211 IEX=0
0212 IF((ABS(KF1).GT.1000.AND.KF1.LT.0)
0213 & .OR.(ABS(KF1).LT.1000.AND.KF1.GT.0)) IEX=1
0214 DO 520 I=N,2,-1
0215 DO 520 J=1,5
0216 II=NPJ(JTP)+I
0217 K(II,J)=K(I,J)
0218 P(II,J)=P(I,J)
0219 V(II,J)=V(I,J)
0220 520 CONTINUE
0221 DO 540 I=1,NPJ(JTP)
0222 DO 542 J=1,5
0223 K(I+1,J)=0
0224 V(I+1,J)=0
0225 542 CONTINUE
0226 I0=I
0227 IF(IEX.EQ.1) I0=NPJ(JTP)-I+1
0228
0229 KK1=KFPJ(JTP,I0)
0230 K(I+1,1)=2
0231 K(I+1,2)=KK1
0232 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
0233 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
0234 P(I+1,1)=PJPX(JTP,I0)
0235 P(I+1,2)=PJPY(JTP,I0)
0236 P(I+1,3)=PJPZ(JTP,I0)
0237 P(I+1,4)=PJPE(JTP,I0)
0238 P(I+1,5)=PJPM(JTP,I0)
0239 540 CONTINUE
0240 N=N+NPJ(JTP)
0241 ELSE IF(NTP.EQ.2.AND.NTJ(JTP).NE.0) THEN
0242 JETOT=NTJ(JTP)
0243
0244
0245 IEX=1
0246 IF((ABS(KF2).GT.1000.AND.KF2.LT.0)
0247 & .OR.(ABS(KF2).LT.1000.AND.KF2.GT.0)) IEX=0
0248 DO 560 I=N,2,-1
0249 DO 560 J=1,5
0250 II=NTJ(JTP)+I
0251 K(II,J)=K(I,J)
0252 P(II,J)=P(I,J)
0253 V(II,J)=V(I,J)
0254 560 CONTINUE
0255 DO 580 I=1,NTJ(JTP)
0256 DO 582 J=1,5
0257 K(I+1,J)=0
0258 V(I+1,J)=0
0259 582 CONTINUE
0260 I0=I
0261 IF(IEX.EQ.1) I0=NTJ(JTP)-I+1
0262
0263 KK1=KFTJ(JTP,I0)
0264 K(I+1,1)=2
0265 K(I+1,2)=KK1
0266 IF(KK1.NE.21 .AND. KK1.NE.0) K(I+1,1)=
0267 & 1+(ABS(KK1)+(2*IEX-1)*KK1)/2/ABS(KK1)
0268 P(I+1,1)=PJTX(JTP,I0)
0269 P(I+1,2)=PJTY(JTP,I0)
0270 P(I+1,3)=PJTZ(JTP,I0)
0271 P(I+1,4)=PJTE(JTP,I0)
0272 P(I+1,5)=PJTM(JTP,I0)
0273 580 CONTINUE
0274 N=N+NTJ(JTP)
0275 ENDIF
0276 IF(IHPR2(1).GT.0.AND.ATL_RAN(NSEED).LE.HIDAT(3)) THEN
0277 HIDAT20=HIDAT(2)
0278 HIPR150=HIPR1(5)
0279 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
0280 & HIDAT(2)=2.0
0281 IF(HINT1(1).GE.1000.0.AND.JETOT.EQ.0)THEN
0282 HIDAT(2)=3.0
0283 HIPR1(5)=5.0
0284 ENDIF
0285 CALL ATTRAD(IERROR)
0286 HIDAT(2)=HIDAT20
0287 HIPR1(5)=HIPR150
0288 ELSE IF(JETOT.EQ.0.AND.IHPR2(1).GT.0.AND.
0289 & HINT1(1).GE.1000.0.AND.
0290 & ATL_RAN(NSEED).LE.0.8) THEN
0291 HIDAT20=HIDAT(2)
0292 HIPR150=HIPR1(5)
0293 HIDAT(2)=3.0
0294 HIPR1(5)=5.0
0295 IF(IHPR2(8).EQ.0.AND.IHPR2(3).EQ.0.AND.IHPR2(9).EQ.0)
0296 & HIDAT(2)=2.0
0297 CALL ATTRAD(IERROR)
0298 HIDAT(2)=HIDAT20
0299 HIPR1(5)=HIPR150
0300 ENDIF
0301 IF(IERROR.NE.0) RETURN
0302
0303
0304
0305
0306
0307 CALL LUEXEC
0308 RETURN
0309
0310 1000 N=1
0311 K(1,1)=1
0312 K(1,2)=NFP(JTP,3)
0313 DO 1100 JJ=1,5
0314 P(1,JJ)=PP(JTP,JJ)
0315
0316
0317
0318
0319 V(1,JJ)=0
0320
0321
0322 1100 CONTINUE
0323
0324 CALL LUEXEC
0325
0326 RETURN
0327
0328 1200 N=1
0329 K(1,1)=1
0330 K(1,2)=NFT(JTP,3)
0331 DO 1300 JJ=1,5
0332 P(1,JJ)=PT(JTP,JJ)
0333
0334
0335
0336
0337 V(1,JJ)=0
0338
0339
0340 1300 CONTINUE
0341
0342 CALL LUEXEC
0343
0344 RETURN
0345 END