File indexing completed on 2025-08-05 08:21:15
0001
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE PYREMN(IPU1,IPU2)
0009
0010
0011 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012 IMPLICIT INTEGER(I-N)
0013 INTEGER PYK,PYCHGE,PYCOMP
0014
0015 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0016 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0017 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0018 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0019 COMMON/PYINT1/MINT(400),VINT(400)
0020 SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
0021
0022 DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
0023 &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
0024
0025
0026 ISUB=MINT(1)
0027 NS=N
0028 IF(MINT(50).EQ.0.OR.MOD(MSTP(81),10).LE.0) THEN
0029 VINT(143)=1D0-VINT(141)
0030 VINT(144)=1D0-VINT(142)
0031 ENDIF
0032
0033
0034 NTRY=0
0035 100 NTRY=NTRY+1
0036 DO 130 JT=1,2
0037 I=MINT(83)+JT+2
0038 IF(JT.EQ.1) IPU=IPU1
0039 IF(JT.EQ.2) IPU=IPU2
0040 K(I,1)=21
0041 K(I,2)=K(IPU,2)
0042 K(I,3)=I-2
0043 PMS(JT)=0D0
0044 VINT(156+JT)=0D0
0045 VINT(158+JT)=0D0
0046 IF(MINT(47).EQ.1) THEN
0047 DO 110 J=1,5
0048 P(I,J)=P(I-2,J)
0049 110 CONTINUE
0050 ELSEIF(ISUB.EQ.95) THEN
0051 K(I,2)=21
0052 ELSE
0053 P(I,5)=P(IPU,5)
0054
0055
0056
0057 120 IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
0058 IF(MSTP(91).LE.0) THEN
0059 PT=0D0
0060 ELSEIF(MSTP(91).EQ.1) THEN
0061 PT=PARP(91)*SQRT(-LOG(PYR(0)))
0062 ELSE
0063 RPT1=PYR(0)
0064 RPT2=PYR(0)
0065 PT=-PARP(92)*LOG(RPT1*RPT2)
0066 ENDIF
0067 IF(PT.GT.PARP(93)) GOTO 120
0068 ELSEIF(MINT(106+JT).EQ.3) THEN
0069 PTA=SQRT(VINT(282+JT))
0070 PTB=0D0
0071 IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
0072 PTB=PARP(99)*SQRT(-LOG(PYR(0)))
0073 ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
0074 RPT1=PYR(0)
0075 RPT2=PYR(0)
0076 PTB=-PARP(99)*LOG(RPT1*RPT2)
0077 ENDIF
0078 IF(PTB.GT.PARP(100)) GOTO 120
0079 PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
0080 PT=PT*0.8D0**MINT(57)
0081 IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
0082 ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
0083 IF(MSTP(93).LE.0) THEN
0084 PT=0D0
0085 ELSEIF(MSTP(93).EQ.1) THEN
0086 PT=PARP(99)*SQRT(-LOG(PYR(0)))
0087 ELSEIF(MSTP(93).EQ.2) THEN
0088 RPT1=PYR(0)
0089 RPT2=PYR(0)
0090 PT=-PARP(99)*LOG(RPT1*RPT2)
0091 ELSEIF(MSTP(93).EQ.3) THEN
0092 HA=PARP(99)**2
0093 HB=PARP(100)**2
0094 PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
0095 ELSE
0096 HA=PARP(99)**2
0097 HB=PARP(100)**2
0098 IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
0099 PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
0100 ENDIF
0101 IF(PT.GT.PARP(100)) GOTO 120
0102 ELSE
0103 PT=0D0
0104 ENDIF
0105 VINT(156+JT)=PT
0106 PHI=PARU(2)*PYR(0)
0107 P(I,1)=PT*COS(PHI)
0108 P(I,2)=PT*SIN(PHI)
0109 PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
0110 ENDIF
0111 130 CONTINUE
0112 IF(MINT(47).EQ.1) RETURN
0113
0114
0115 I1=MINT(83)+3
0116 I2=MINT(83)+4
0117 IF(ISUB.EQ.95) THEN
0118 SHS=0D0
0119 SHR=0D0
0120 ELSE
0121 SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
0122 & (P(I1,2)+P(I2,2))**2
0123 SHR=SQRT(MAX(0D0,SHS))
0124 IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
0125 P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
0126 P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
0127 P(I2,4)=SHR-P(I1,4)
0128 P(I2,3)=-P(I1,3)
0129
0130
0131 ROBO(3)=(P(I1,1)+P(I2,1))/SHR
0132 ROBO(4)=(P(I1,2)+P(I2,2))/SHR
0133 CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
0134 ROBO(2)=PYANGL(P(I1,1),P(I1,2))
0135 CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
0136 ROBO(1)=PYANGL(P(I1,3),P(I1,1))
0137 CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
0138 CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
0139 CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
0140 ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
0141 CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
0142 ENDIF
0143
0144
0145 IDISXQ=0
0146 IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
0147 &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
0148 IF(IDISXQ.EQ.1) THEN
0149
0150
0151 LESD=1
0152 IF(MINT(42).EQ.1) LESD=2
0153 LPIN=MINT(83)+3-LESD
0154 LEIN=MINT(84)+LESD
0155 LQIN=MINT(84)+3-LESD
0156 LEOUT=MINT(84)+2+LESD
0157 LQOUT=MINT(84)+5-LESD
0158 IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
0159 IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
0160 LSCMS=0
0161 DO 140 I=MINT(84)+5,N
0162 IF(K(I,2).EQ.94) THEN
0163 LSCMS=I
0164 LEOUT=I+LESD
0165 LQOUT=I+3-LESD
0166 ENDIF
0167 140 CONTINUE
0168 LQBG=IPU1
0169 IF(LESD.EQ.1) LQBG=IPU2
0170
0171
0172 XNOM=VINT(43-LESD)
0173 Q2NOM=-VINT(45)
0174 HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
0175 & P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
0176 & (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
0177 HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
0178 FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
0179 P(N+1,1)=FAC*P(LEOUT,1)
0180 P(N+1,2)=FAC*P(LEOUT,2)
0181 P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
0182 & Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
0183 P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
0184 & P(N+1,3)**2)
0185 DO 150 J=1,4
0186 QOLD(J)=P(LEIN,J)-P(LEOUT,J)
0187 QNEW(J)=P(LEIN,J)-P(N+1,J)
0188 150 CONTINUE
0189
0190
0191 IF(LSCMS.EQ.0) THEN
0192 DO 160 J=1,4
0193 P(LEOUT,J)=P(N+1,J)
0194 160 CONTINUE
0195 ELSE
0196 DO 170 J=1,3
0197 P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
0198 170 CONTINUE
0199 PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
0200 DO 180 J=1,3
0201 DBE(J)=PINV*P(N+2,J)
0202 180 CONTINUE
0203 DO 200 I=LSCMS+1,N
0204 IORIG=I
0205 190 IORIG=K(IORIG,3)
0206 IF(IORIG.GT.LEOUT) GOTO 190
0207 IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
0208 & CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
0209 200 CONTINUE
0210 ENDIF
0211
0212
0213 NCOP=N+1
0214 K(NCOP,3)=LQBG
0215 DO 210 J=1,5
0216 P(NCOP,J)=P(LQBG,J)
0217 210 CONTINUE
0218 DO 240 I=MINT(84)+1,N
0219 ICOP=0
0220 IF(K(I,1).GT.10) GOTO 240
0221 IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
0222 ICOP=I
0223 ELSE
0224 IORIG=I
0225 220 IORIG=K(IORIG,3)
0226 IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
0227 ICOP=IORIG
0228 ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
0229 GOTO 220
0230 ENDIF
0231 ENDIF
0232 IF(ICOP.NE.0) THEN
0233 NCOP=NCOP+1
0234 K(NCOP,3)=I
0235 DO 230 J=1,5
0236 P(NCOP,J)=P(I,J)
0237 230 CONTINUE
0238 ENDIF
0239 240 CONTINUE
0240
0241
0242 SLC=3-2*LESD
0243 PLCSUM=0D0
0244 DO 250 I=N+2,NCOP
0245 PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
0246 250 CONTINUE
0247 DO 260 I=N+2,NCOP
0248 V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
0249 260 CONTINUE
0250
0251
0252 DO 280 I=N+2,NCOP
0253 DO 270 J=1,3
0254 P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
0255 270 CONTINUE
0256 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
0257 280 CONTINUE
0258
0259
0260 ITER=0
0261 290 ITER=ITER+1
0262 PEEX=-P(N+1,4)-QNEW(4)
0263 PEMV=-P(N+1,3)/P(N+1,4)
0264 DO 300 I=N+2,NCOP
0265 PEEX=PEEX+P(I,4)
0266 PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
0267 300 CONTINUE
0268 IF(ABS(PEMV).LT.1D-10) THEN
0269 MINT(51)=1
0270 MINT(57)=MINT(57)+1
0271 RETURN
0272 ENDIF
0273 PZCH=-PEEX/PEMV
0274 P(N+1,3)=P(N+1,3)+PZCH
0275 P(N+1,4)=SQRT(P(N+1,5)**2+P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
0276 DO 310 I=N+2,NCOP
0277 P(I,3)=P(I,3)+V(I,1)*PZCH
0278 P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
0279 310 CONTINUE
0280 IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
0281
0282
0283 HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
0284 & ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
0285 IF(ABS(HBE).GE.1D0) THEN
0286 MINT(51)=1
0287 MINT(57)=MINT(57)+1
0288 RETURN
0289 ENDIF
0290 I=MINT(83)+5-LESD
0291 CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
0292 DO 330 I=N+1,NCOP
0293 ICOP=K(I,3)
0294 DO 320 J=1,4
0295 P(ICOP,J)=P(I,J)
0296 320 CONTINUE
0297 330 CONTINUE
0298 ENDIF
0299
0300
0301 PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
0302 PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
0303 PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
0304 PMIN(0)=SQRT(PMS(0))
0305 DO 340 JT=1,2
0306 PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
0307 PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
0308 PMIN(JT)=0D0
0309 IF(MINT(44+JT).EQ.1) GOTO 340
0310 MINT(105)=MINT(102+JT)
0311 MINT(109)=MINT(106+JT)
0312 CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
0313 IF(MINT(51).NE.0) THEN
0314 MINT(57)=MINT(57)+1
0315 RETURN
0316 ENDIF
0317 IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
0318 IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
0319 IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
0320 PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
0321 & P(MINT(83)+JT+2,2)**2)
0322 340 CONTINUE
0323 IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
0324 &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
0325 &PSYS(2,4))) THEN
0326 MINT(51)=1
0327 MINT(57)=MINT(57)+1
0328 RETURN
0329 ENDIF
0330
0331
0332 I=NS
0333 DO 410 JT=1,2
0334 ISN(JT)=0
0335 IF(MINT(44+JT).EQ.1) GOTO 410
0336 IF(JT.EQ.1) IPU=IPU1
0337 IF(JT.EQ.2) IPU=IPU2
0338
0339
0340 I=I+1
0341 IS(JT)=I
0342 ISN(JT)=1
0343 DO 350 J=1,5
0344 K(I,J)=0
0345 P(I,J)=0D0
0346 V(I,J)=0D0
0347 350 CONTINUE
0348 K(I,1)=1
0349 K(I,2)=KFLSP(JT)
0350 K(I,3)=MINT(83)+JT
0351 P(I,5)=PYMASS(K(I,2))
0352
0353
0354 KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
0355 IF(KCOL.EQ.2) THEN
0356 K(I,1)=3
0357 K(I,4)=MSTU(5)*IPU+IPU
0358 K(I,5)=MSTU(5)*IPU+IPU
0359 K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
0360 K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
0361 ELSEIF(KCOL.NE.0) THEN
0362 K(I,1)=3
0363 KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
0364 K(I,KFLS+3)=IPU
0365 K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
0366 ENDIF
0367 IF(KFLCH(JT).EQ.0) THEN
0368 P(I,1)=-P(MINT(83)+JT+2,1)
0369 P(I,2)=-P(MINT(83)+JT+2,2)
0370 PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
0371 PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
0372 P(I,3)=PSYS(JT,3)
0373 P(I,4)=PSYS(JT,4)
0374
0375
0376 ELSE
0377 I=I+1
0378 ISN(JT)=2
0379 DO 360 J=1,5
0380 K(I,J)=0
0381 P(I,J)=0D0
0382 V(I,J)=0D0
0383 360 CONTINUE
0384 K(I,1)=1
0385 K(I,2)=KFLCH(JT)
0386 K(I,3)=MINT(83)+JT
0387 P(I,5)=PYMASS(K(I,2))
0388
0389
0390 KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
0391 IF(KCOL.EQ.2) THEN
0392 K(I,1)=3
0393 K(I,4)=MSTU(5)*IPU+IPU
0394 K(I,5)=MSTU(5)*IPU+IPU
0395 K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
0396 K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
0397 ELSEIF(KCOL.NE.0) THEN
0398 K(I,1)=3
0399 KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
0400 K(I,KFLS+3)=IPU
0401 K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
0402 ENDIF
0403
0404
0405 LOOP=0
0406 370 LOOP=LOOP+1
0407 CALL PYPTDI(1,P(I-1,1),P(I-1,2))
0408 IF(IABS(MINT(10+JT)).LT.20) THEN
0409 P(I-1,1)=0D0
0410 P(I-1,2)=0D0
0411 ELSE
0412 P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
0413 P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
0414 ENDIF
0415 PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
0416 P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
0417 P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
0418 PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
0419
0420
0421 IMB=1
0422 IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
0423
0424
0425 IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
0426 & THEN
0427 CHI(JT)=PYR(0)
0428
0429
0430 ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
0431 XHRD=VINT(140+JT)
0432 XE=VINT(154+JT)
0433 CHI(JT)=(XE-XHRD)/(1D0-XHRD)
0434
0435
0436 ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
0437 CHIK=PARP(92+2*IMB)
0438 IF(MSTP(92).LE.1) THEN
0439 IF(IMB.EQ.1) CHI(JT)=PYR(0)
0440 IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
0441 ELSEIF(MSTP(92).EQ.2) THEN
0442 CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
0443 ELSEIF(MSTP(92).EQ.3) THEN
0444 CUT=2D0*0.3D0/VINT(1)
0445 380 CHI(JT)=PYR(0)**2
0446 IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
0447 & (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
0448 ELSEIF(MSTP(92).EQ.4) THEN
0449 CUT=2D0*0.3D0/VINT(1)
0450 CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
0451 390 CHIR=CUT*CUTR**PYR(0)
0452 CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
0453 IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
0454 ELSE
0455 CUT=2D0*0.3D0/VINT(1)
0456 CUTA=CUT**(1D0-PARP(98))
0457 CUTB=(1D0+CUT)**(1D0-PARP(98))
0458 400 CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
0459 IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
0460 & (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
0461 ENDIF
0462
0463
0464 ELSE
0465 IF(MSTP(94).LE.1) THEN
0466 IF(IMB.EQ.1) CHI(JT)=PYR(0)
0467 IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
0468 IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
0469 ELSEIF(MSTP(94).EQ.2) THEN
0470 CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
0471 IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
0472 ELSEIF(MSTP(94).EQ.3) THEN
0473 CALL PYZDIS(1,0,PMS(JT+4),ZZ)
0474 CHI(JT)=ZZ
0475 ELSE
0476 CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
0477 CHI(JT)=ZZ
0478 ENDIF
0479 ENDIF
0480
0481
0482 CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
0483 PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
0484 IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
0485 IF(LOOP.LT.100) THEN
0486 GOTO 370
0487 ELSE
0488 MINT(51)=1
0489 MINT(57)=MINT(57)+1
0490 RETURN
0491 ENDIF
0492 ENDIF
0493 PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
0494 VINT(158+JT)=CHI(JT)
0495
0496
0497 PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
0498 P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
0499 P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
0500 P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
0501 P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
0502 ENDIF
0503 410 CONTINUE
0504 N=I
0505
0506
0507 PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
0508 &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
0509 IF(PDEV.LE.1D-6*VINT(1)) RETURN
0510 IF(ISN(1).EQ.0) THEN
0511 IR=0
0512 IL=2
0513 ELSEIF(ISN(2).EQ.0) THEN
0514 IR=1
0515 IL=0
0516 ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
0517 IR=1
0518 IL=2
0519 ELSEIF(VINT(143).GT.0.2D0) THEN
0520 IR=1
0521 IL=0
0522 ELSEIF(VINT(144).GT.0.2D0) THEN
0523 IR=0
0524 IL=2
0525 ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
0526 IR=1
0527 IL=0
0528 ELSE
0529 IR=0
0530 IL=2
0531 ENDIF
0532 IG=3-IR-IL
0533
0534
0535 IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
0536 PPB=VINT(1)
0537 PNB=VINT(1)
0538 ELSE
0539 PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
0540 PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
0541 ENDIF
0542
0543
0544 IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
0545 PPB=PPB-(PSYS(0,4)+PSYS(0,3))
0546 PNB=PNB-(PSYS(0,4)-PSYS(0,3))
0547 DO 420 J=1,4
0548 PSYS(0,J)=0D0
0549 420 CONTINUE
0550 DO 450 I=MINT(84)+1,NS
0551 IF(K(I,1).GT.10) GOTO 450
0552 INCL=0
0553 IORIG=I
0554 430 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
0555 IORIG=K(IORIG,3)
0556 IF(IORIG.GT.LPIN) GOTO 430
0557 IF(INCL.EQ.0) GOTO 450
0558 DO 440 J=1,4
0559 PSYS(0,J)=PSYS(0,J)+P(I,J)
0560 440 CONTINUE
0561 450 CONTINUE
0562 PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
0563 PPB=PPB+(PSYS(0,4)+PSYS(0,3))
0564 PNB=PNB+(PSYS(0,4)-PSYS(0,3))
0565 ENDIF
0566
0567
0568 DPMTB=PPB*PNB
0569 DPMTR=PMS(IR)
0570 DPMTL=PMS(IL)
0571 DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
0572 IF(DSQLAM.LE.1D-6*DPMTB) THEN
0573 MINT(51)=1
0574 MINT(57)=MINT(57)+1
0575 RETURN
0576 ENDIF
0577 DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
0578 DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
0579 &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
0580 DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
0581 &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
0582 DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
0583 DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
0584
0585
0586 IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
0587 P(IS(1),3)=0D0
0588 P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
0589 ELSEIF(IR.EQ.1) THEN
0590 CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
0591 ELSEIF(IDISXQ.EQ.1) THEN
0592 DO 470 I=I1,NS
0593 INCL=0
0594 IORIG=I
0595 460 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
0596 IORIG=K(IORIG,3)
0597 IF(IORIG.GT.LPIN) GOTO 460
0598 IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
0599 470 CONTINUE
0600 ELSE
0601 CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
0602 ENDIF
0603 IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
0604 P(IS(2),3)=0D0
0605 P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
0606 ELSEIF(IL.EQ.2) THEN
0607 CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
0608 ELSEIF(IDISXQ.EQ.1) THEN
0609 DO 490 I=I1,NS
0610 INCL=0
0611 IORIG=I
0612 480 IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
0613 IORIG=K(IORIG,3)
0614 IF(IORIG.GT.LPIN) GOTO 480
0615 IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
0616 490 CONTINUE
0617 ELSE
0618 CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
0619 ENDIF
0620
0621
0622 PESUM=0D0
0623 PZSUM=0D0
0624 DO 500 I=MINT(84)+1,N
0625 IF(K(I,1).GT.10) GOTO 500
0626 PESUM=PESUM+P(I,4)
0627 PZSUM=PZSUM+P(I,3)
0628 500 CONTINUE
0629 PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
0630 IF(PDEV.GT.1D-4*VINT(1)) THEN
0631 MINT(51)=1
0632 MINT(57)=MINT(57)+1
0633 RETURN
0634 ENDIF
0635
0636
0637
0638 MINT(91)=0
0639 IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
0640 MINT(91)=1
0641 LESD=1
0642 IF(MINT(42).EQ.1) LESD=2
0643 LPIN=MINT(83)+3-LESD
0644
0645
0646 DO 510 J=1,4
0647 PSUM(J)=0D0
0648 510 CONTINUE
0649 DO 530 I=1,N
0650 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
0651 IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
0652 IF(K(I,2).EQ.22) GOTO 530
0653 DO 520 J=1,4
0654 PSUM(J)=PSUM(J)+P(I,J)
0655 520 CONTINUE
0656 530 CONTINUE
0657 VINT(223)=-PSUM(1)/PSUM(4)
0658 VINT(224)=-PSUM(2)/PSUM(4)
0659 VINT(225)=-PSUM(3)/PSUM(4)
0660
0661
0662 K(N+1,1)=1
0663 DO 540 J=1,5
0664 P(N+1,J)=P(LPIN,J)
0665 V(N+1,J)=V(LPIN,J)
0666 540 CONTINUE
0667 CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
0668 VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
0669 CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
0670 IF(LESD.EQ.2) THEN
0671 VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
0672 ELSE
0673 VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
0674 ENDIF
0675 ENDIF
0676
0677 RETURN
0678 END