File indexing completed on 2025-08-05 08:21:10
0001
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE PYEVOL(MODE,PT2MAX,PT2MIN)
0009
0010
0011
0012
0013
0014 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0015 IMPLICIT INTEGER(I-N)
0016 INTEGER PYK,PYCHGE,PYCOMP
0017
0018 EXTERNAL PYALPS
0019 DOUBLE PRECISION PYALPS
0020
0021 PARAMETER (MAXNUR=1000)
0022
0023 COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
0024 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0025 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0026 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0027 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0028 COMMON/PYINT1/MINT(400),VINT(400)
0029 COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
0030 COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
0031 COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
0032 & XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
0033 & XMI(2,240),PT2MI(240),IMISEP(0:240)
0034 COMMON/PYCTAG/NCT,MCT(4000,2)
0035 COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
0036 & PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
0037 COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
0038
0039 DIMENSION VINTSV(11:80),KSAV(4,5),PSAV(4,5),VSAV(4,5),SHAT(240)
0040 SAVE NSAV,NPARTS,M15SV,M16SV,M21SV,M22SV,VINTSV,SHAT,ISUBHD,ALAM3
0041 & ,PSAV,KSAV,VSAV
0042
0043 SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
0044 & /PYINT2/,/PYINT3/,/PYINTM/,/PYCTAG/,/PYISMX/,/PYISJN/
0045
0046
0047
0048
0049
0050 IF (MODE.EQ.-1) THEN
0051 ISUBHD=MINT(1)
0052 NSAV=N
0053 NPARTS=NPART
0054
0055 M15SV=MINT(15)
0056 M16SV=MINT(16)
0057 M21SV=MINT(21)
0058 M22SV=MINT(22)
0059 DO 100 J=11,80
0060 VINTSV(J)=VINT(J)
0061 100 CONTINUE
0062 DO 120 J=1,5
0063 DO 110 IS=1,4
0064 I=IS+MINT(84)
0065 PSAV(IS,J)=P(I,J)
0066 KSAV(IS,J)=K(I,J)
0067 VSAV(IS,J)=V(I,J)
0068 110 CONTINUE
0069 120 CONTINUE
0070
0071
0072 SHAT(1)=VINT(44)
0073 IF(ISET(ISUBHD).GE.3.AND.ISET(ISUBHD).LE.5) SHAT(1)=VINT(26)
0074 & *VINT(2)
0075
0076
0077 RMC=PMAS(4,1)
0078 RMB=PMAS(5,1)
0079 ALAM4=PARP(61)
0080 IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
0081 IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
0082 ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
0083
0084
0085
0086
0087
0088
0089
0090 ELSEIF (MODE.EQ.0) THEN
0091
0092 N=NSAV
0093 NPART=NPARTS
0094 MINT(30)=0
0095 MINT(31)=1
0096 MINT(36)=1
0097
0098 MINT(1)=ISUBHD
0099 DO 130 J=11,80
0100 VINT(J)=VINTSV(J)
0101 130 CONTINUE
0102 DO 150 J=1,5
0103 DO 140 IS=1,4
0104 I=IS+MINT(84)
0105 P(I,J)=PSAV(IS,J)
0106 K(I,J)=KSAV(IS,J)
0107 V(I,J)=VSAV(IS,J)
0108 P(MINT(83)+4+IS,J)=PSAV(IS,J)
0109 V(MINT(83)+4+IS,J)=VSAV(IS,J)
0110 140 CONTINUE
0111 150 CONTINUE
0112
0113 DO 160 J=351,359
0114 MINT(J)=0
0115 VINT(J)=0D0
0116 160 CONTINUE
0117
0118 VINT(140)=1D0
0119
0120
0121
0122 MINT(36)=1
0123
0124
0125 CALL PYPTMI(-1,PTDUM1,PTDUM2,PTDUM3,IDUM)
0126 IF(MINT(51).NE.0) RETURN
0127
0128
0129 PT2HD=VINT(54)
0130 DO 170 JS=1,2
0131 MINT(30)=JS
0132 CALL PYPTMI(2,PT2HD,PTDUM2,PTDUM3,IDUM)
0133 IF(MINT(51).NE.0) RETURN
0134 170 CONTINUE
0135
0136
0137 VINT(18)=0D0
0138 IF(MSTP(70).EQ.0) THEN
0139 PT20=PARP(62)**2
0140 PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
0141 ELSEIF(MSTP(70).EQ.1) THEN
0142 PT20=(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2
0143 PT2MIN=MAX(PT2MIN,PT20,(1.1D0*ALAM3)**2)
0144 ELSE
0145 VINT(18)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
0146 PT2MIN=MAX(PT2MIN,(1.1D0*ALAM3)**2)
0147 ENDIF
0148
0149 180 VINT(17)=PT2MIN
0150
0151
0152 VINT(63)=0D0
0153 VINT(64)=0D0
0154
0155
0156 PT2ISR=VINT(56)
0157 CALL PYPTIS(-1,PT2ISR,PT2MIN,PT2DUM,IFAIL)
0158 IF(MINT(51).NE.0) RETURN
0159
0160 RETURN
0161
0162
0163
0164 ELSEIF (MODE.EQ.1) THEN
0165
0166
0167 190 IF (PT2MAX.LE.PT2MIN) GOTO 330
0168
0169
0170 PT2CMX=PT2MAX
0171
0172
0173 200 JSMX=-1
0174 MIMX=0
0175 PT2MX=0D0
0176
0177
0178 IF (MSTP(61).GE.1) THEN
0179 DO 230 MI=1,MINT(31)
0180 IF (MI.GE.2.AND.MSTP(84).LE.0) GOTO 230
0181 ISUB=96
0182 IF (MI.EQ.1) ISUB=ISUBHD
0183 MINT(1)=ISUB
0184 MINT(36)=MI
0185
0186 VINT(44)=SHAT(MI)
0187 VINT(141)=XMI(1,MI)
0188 VINT(142)=XMI(2,MI)
0189 VINT(143)=1D0
0190 VINT(144)=1D0
0191 DO 210 JI=1,MINT(31)
0192 IF (JI.EQ.MINT(36)) GOTO 210
0193 VINT(143)=VINT(143)-XMI(1,JI)
0194 VINT(144)=VINT(144)-XMI(2,JI)
0195 210 CONTINUE
0196
0197
0198
0199 DO 220 JS=1,2
0200 MINT(30)=JS
0201 CALL PYPTIS(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
0202 IF (MINT(51).NE.0) RETURN
0203 220 CONTINUE
0204 230 CONTINUE
0205 ENDIF
0206
0207
0208 MINT(36)=MINT(31)+1
0209 240 IF (MOD(MSTP(81),10).GE.1) THEN
0210 MINT(1)=96
0211
0212 VINT(143)=1D0
0213 VINT(144)=1D0
0214 DO 250 JI=1,MINT(31)
0215 VINT(143)=VINT(143)-XMI(1,JI)
0216 VINT(144)=VINT(144)-XMI(2,JI)
0217 250 CONTINUE
0218
0219 260 CALL PYPTMI(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
0220 IF (MINT(51).EQ.1) RETURN
0221 ENDIF
0222
0223
0224 IF (PT2MX.LT.PT2MIN) THEN
0225 GOTO 330
0226 ELSEIF (JSMX.EQ.0) THEN
0227
0228 CALL PYPTMI(1,PT2NEW,PT2MIN,PT2DUM,IFAIL)
0229 IF(MINT(51).NE.0) RETURN
0230 IF (IFAIL.EQ.0) THEN
0231 SHAT(MINT(36))=VINT(44)
0232
0233 DO 270 JS=1,2
0234 MINT(30)=JS
0235 CALL PYPTMI(2,PT2NEW,PT2MIN,PT2DUM,IFAIL)
0236 IF(MINT(51).NE.0) RETURN
0237 270 CONTINUE
0238 ENDIF
0239 ELSEIF (JSMX.EQ.1.OR.JSMX.EQ.2) THEN
0240
0241
0242 MINT(30)=JSMX
0243 MINT(36)=MIMX
0244 VINT(44)=SHAT(MINT(36))
0245 VINT(141)=XMI(1,MINT(36))
0246 VINT(142)=XMI(2,MINT(36))
0247 VINT(143)=1D0
0248 VINT(144)=1D0
0249 DO 280 JI=1,MINT(31)
0250 IF (JI.EQ.MINT(36)) GOTO 280
0251 VINT(143)=VINT(143)-XMI(1,JI)
0252 VINT(144)=VINT(144)-XMI(2,JI)
0253 280 CONTINUE
0254 PT2NEW=PT2MX
0255 CALL PYPTIS(1,PT2NEW,PT2DM1,PT2DM2,IFAIL)
0256 IF (MINT(51).EQ.1) RETURN
0257 ELSEIF (JSMX.EQ.3.OR.JSMX.EQ.4) THEN
0258
0259 MINT(354)=MINT(354)+1
0260 VINT(354)=VINT(354)+SQRT(PT2MX)
0261 IF (MINT(354).EQ.1) VINT(359)=SQRT(PT2MX)
0262 MJOIND(JSMX-2,MJN1MX)=MJN2MX
0263 MJOIND(JSMX-2,MJN2MX)=MJN1MX
0264 ENDIF
0265
0266
0267 PT2CMX=PT2MX
0268
0269
0270 IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
0271 CALL PYERRM(11,'(PYEVOL:) no more memory left in PYJETS')
0272 ELSE
0273 IF (JSMX.GE.0.AND.PT2CMX.GE.PT2MIN) GOTO 200
0274 ENDIF
0275
0276
0277
0278 ELSEIF (MODE.EQ.2) THEN
0279
0280
0281 290 DO 310 JS=1,2
0282 MINT(12+JS)=K(IMI(JS,1,1),2)
0283 VINT(140+JS)=XMI(JS,1)
0284 IF(MINT(18+JS).EQ.1) VINT(140+JS)=VINT(154+JS)*XMI(JS,1)
0285 VINT(142+JS)=1D0
0286 DO 300 MI=1,MINT(31)
0287 VINT(142+JS)=VINT(142+JS)-XMI(JS,MI)
0288 300 CONTINUE
0289 310 CONTINUE
0290
0291
0292 MINT(1)=ISUBHD
0293 MINT(15)=M15SV
0294 MINT(16)=M16SV
0295 MINT(21)=M21SV
0296 MINT(22)=M22SV
0297 DO 320 J=11,80
0298 VINT(J)=VINTSV(J)
0299 320 CONTINUE
0300
0301 ENDIF
0302
0303 330 RETURN
0304 END