File indexing completed on 2025-08-05 08:21:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 SUBROUTINE PYPTIS(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
0020
0021
0022 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0023 IMPLICIT INTEGER(I-N)
0024 INTEGER PYK,PYCHGE,PYCOMP
0025
0026 PARAMETER (MAXNUR=1000)
0027
0028 COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
0029 COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
0030 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0031 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0032 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0033 COMMON/PYINT1/MINT(400),VINT(400)
0034 COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
0035 COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
0036 & XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
0037 & XMI(2,240),PT2MI(240),IMISEP(0:240)
0038 COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
0039 & PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
0040 COMMON/PYCTAG/NCT,MCT(4000,2)
0041 COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
0042 SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
0043 & /PYINT2/,/PYINTM/,/PYISMX/,/PYCTAG/,/PYISJN/
0044
0045 DIMENSION ZSAV(2,240),PT2SAV(2,240),
0046 & XFB(-25:25),XFA(-25:25),XFN(-25:25),XFJ(-25:25),
0047 & WTAP(-25:25),WTPDF(-25:25),SHTNOW(240),
0048 & WTAPJ(240),WTPDFJ(240),X1(240),Y(240)
0049 SAVE ZSAV,PT2SAV,XFB,XFA,XFN,WTAP,WTPDF,XMXC,SHTNOW,
0050 & RMB2,RMC2,ALAM3,ALAM4,ALAM5,TMIN,PTEMAX,WTEMAX,AEM2PI
0051
0052 CHARACTER CHWT*12
0053
0054 DATA PTEMAX /0D0/
0055 DATA WTEMAX /0D0/
0056
0057 IFAIL=-1
0058
0059
0060
0061
0062 IF (MODE.EQ.-1) THEN
0063
0064 SHTNOW(1)=VINT(44)
0065
0066 AEM2PI=PARU(101)/PARU(2)
0067 RMB=PMAS(5,1)
0068 RMC=PMAS(4,1)
0069 ALAM4=PARP(61)
0070 IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
0071 IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
0072 ALAM5=ALAM4*(ALAM4/RMB)**(2D0/23D0)
0073 ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
0074 RMB2=RMB**2
0075 RMC2=RMC**2
0076
0077 TMIN=1.01D0
0078
0079 XMXC=1D0-2D0*PARP(111)/VINT(1)
0080
0081 IF (MSTP(61).GE.1) THEN
0082
0083 DO 100 JS=1,2
0084 NISGEN(JS,1)=0
0085
0086
0087
0088 KFLB=K(IMI(JS,1,1),2)
0089 KFLCB=IABS(KFLB)
0090 IF(KFBEAM(JS).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
0091
0092 IF (VINT(56).LT.1.05D0*PMAS(PYCOMP(KFLCB),1)**2) THEN
0093 CALL PYERRM(9,'(PYPTIS:) PT2MAX < 1.05 * MQ**2. '//
0094 & 'No Q creation possible.')
0095 MINT(51)=1
0096 RETURN
0097 ELSE
0098
0099
0100 FMQ=PMAS(KFLCB,1)/SQRT(SHTNOW(1))
0101 ZMXCR=(1D0-FMQ)/(1D0+FMQ*(1D0-FMQ))
0102 IF (XMI(JS,1).GT.0.9D0*ZMXCR) THEN
0103 CALL PYERRM(9,'(PYPTIS:) No physical z value for '//
0104 & 'Q creation.')
0105 MINT(51)=1
0106 RETURN
0107 ENDIF
0108 ENDIF
0109 ENDIF
0110 100 CONTINUE
0111 ENDIF
0112
0113 MINT(354)=0
0114
0115 DO 110 MJ=1,240
0116 MJOIND(1,MJ)=0
0117 MJOIND(2,MJ)=0
0118 110 CONTINUE
0119
0120
0121
0122
0123
0124 ELSEIF(MODE.EQ.0) THEN
0125 IFAIL=-1
0126 MECOR=0
0127 ISUB=MINT(1)
0128 JS=MINT(30)
0129
0130 IF (MINT(44+JS).EQ.1) RETURN
0131 MI=MINT(36)
0132 SHAT=VINT(44)
0133
0134 PT2=MIN(PT2NOW,VINT(56))
0135 IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) SHTNOW(MI)=SHAT
0136
0137 IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
0138 IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ
0139 & .142.OR.ISUB.EQ.144) MECOR=1
0140 IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
0141 IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
0142
0143 IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
0144 ENDIF
0145
0146 KFLB=K(IMI(JS,MI,1),2)
0147 KFLBA=IABS(KFLB)
0148
0149
0150 KSVCB=MAX(-1,IMI(JS,MI,2))
0151
0152
0153 IF(IMI(JS,MI,2).GT.IMISEP(MI)) KSVCB=-1
0154
0155 XB=XMI(JS,MI)/VINT(142+JS)
0156
0157 RMQ2=0D0
0158 MQMASS=0
0159 IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
0160 RMQ2=RMC2
0161 IF (KFLBA.EQ.5) RMQ2=RMB2
0162
0163 IF (KFBEAM(JS).NE.22) MQMASS=KFLBA
0164 ENDIF
0165
0166
0167 MINT(105)=MINT(102+JS)
0168 MINT(109)=MINT(106+JS)
0169 VINT(120)=VINT(2+JS)
0170
0171
0172 IF(XB.GE.XMXC) THEN
0173 RETURN
0174 ELSEIF(MQMASS.EQ.0) THEN
0175 CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
0176 ELSE
0177
0178 PT20=PT2
0179 CALL PYPDFU(KFBEAM(JS),XB,PT20,XFB)
0180
0181 XQ0=MAX(1D-10,XPSVC(KFLB,KSVCB))
0182 XG0=XFB(21)
0183 TPM0=LOG(PT20/RMQ2)
0184 WPDF0=TPM0*XG0/XQ0
0185 ENDIF
0186 IF (KFLBA.LE.6) THEN
0187
0188 IF (KSVCB.LE.0) THEN
0189 XFB(KFLB)=XPSVC(KFLB,KSVCB)
0190 ELSE
0191
0192 MISEA=0
0193 120 MISEA=MISEA+1
0194 IF (IMI(JS,MISEA,2).NE.IMI(JS,MI,1)) GOTO 120
0195 XS=XMI(JS,MISEA)
0196 XREM=VINT(142+JS)
0197 YS=XS/(XREM+XS)
0198
0199
0200 YB=XB*(1D0-YS)
0201 XFB(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
0202 ENDIF
0203 ENDIF
0204
0205
0206 130 IF (PT2.GT.TMIN*RMB2) THEN
0207 IZRG=3
0208 PT2MNE=MAX(TMIN*RMB2,PT2CUT)
0209 B0=23D0/6D0
0210 ALAM2=ALAM5**2
0211 ELSEIF(PT2.GT.TMIN*RMC2) THEN
0212 IZRG=2
0213 PT2MNE=MAX(TMIN*RMC2,PT2CUT)
0214 B0=25D0/6D0
0215 ALAM2=ALAM4**2
0216 ELSE
0217 IZRG=1
0218 PT2MNE=PT2CUT
0219 B0=27D0/6D0
0220 ALAM2=ALAM3**2
0221 ENDIF
0222
0223 ALAM2=ALAM2/PARP(64)
0224
0225 IF (MQMASS.EQ.0) THEN
0226
0227 ZMAX=1D0-0.5D0*(PT2MNE/SHTNOW(MI))*(SQRT(1D0+4D0*SHTNOW(MI)
0228 & /PT2MNE)-1D0)
0229 ELSE
0230
0231 FMQ=SQRT(RMQ2/SHTNOW(MI))
0232 ZMAX=1D0/(1D0+FMQ)
0233 ENDIF
0234 ZMIN=XB/XMXC
0235
0236
0237 IF(PT2.LT.PT2CUT.OR.ZMAX.LE.ZMIN) RETURN
0238
0239
0240 DO 140 KFL=-5,5
0241 WTAP(KFL)=0D0
0242 WTPDF(KFL)=0D0
0243 140 CONTINUE
0244 WTAP(21)=0D0
0245 WTPDF(21)=0D0
0246
0247 IF (MSTP(96).NE.0) THEN
0248 NJN=0
0249 DO 150 MJ=1,MINT(31)
0250 WTAPJ(MJ)=0D0
0251 WTPDFJ(MJ)=0D0
0252 X1(MJ)=XMI(JS,MJ)/(VINT(142+JS)+XMI(JS,MJ))
0253 Y(MJ)=(XMI(JS,MI)+XMI(JS,MJ))/(VINT(142+JS)+XMI(JS,MJ)
0254 & +XMI(JS,MI))
0255 150 CONTINUE
0256 ENDIF
0257
0258
0259
0260 IF(KFLBA.LE.5) THEN
0261
0262 IF (KSVCB.LT.0) THEN
0263 WTAP(KFLB)=(8D0/3D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
0264 ELSE
0265 RMIN=(1+SQRT(ZMIN))/(1-SQRT(ZMIN))
0266 RMAX=(1+SQRT(ZMAX))/(1-SQRT(ZMAX))
0267 WTAP(KFLB)=(8D0/3D0)*LOG(RMAX/RMIN)
0268 ENDIF
0269 WTAP(21)=0.5D0*(ZMAX-ZMIN)
0270 WTAPE=(2D0/9D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
0271 IF(MOD(KFLBA,2).EQ.0) WTAPE=4D0*WTAPE
0272 IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
0273 WTAP(KFLB)=WTFF*WTAP(KFLB)
0274 WTAP(21)=WTGF*WTAP(21)
0275 WTAPE=WTFF*WTAPE
0276 ENDIF
0277 IF (KSVCB.GE.1) THEN
0278
0279 WTAP(21)=0D0
0280 IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
0281 CALL PYERRM(9,'(PYPTIS:) Sorry, I got a heavy companion'//
0282 & " quark here. Not handled yet, giving up!")
0283 PT2=0D0
0284 MINT(51)=1
0285 RETURN
0286 ENDIF
0287
0288 IF (MSTP(96).NE.0.AND.MJOIND(JS,MI).EQ.0) THEN
0289
0290 MJ=0
0291 160 MJ=MJ+1
0292 IF (IMI(JS,MJ,2).NE.IMI(JS,MI,1)) GOTO 160
0293 IF (MJOIND(JS,MJ).EQ.0) THEN
0294 Y(MI)=YB+YS
0295 Z=YB/Y(MI)
0296 WTAPJ(MJ)=Z*(1D0-Z)*0.5D0*(Z**2+(1D0-Z)**2)
0297 IF (WTAPJ(MJ).GT.1D-6) THEN
0298 NJN=1
0299 ELSE
0300 WTAPJ(MJ)=0D0
0301 ENDIF
0302 ENDIF
0303
0304 DO 170 MJ=1,MINT(31)
0305 KFLC=K(IMI(JS,MJ,1),2)
0306 IF (KFLC.NE.21.OR.MJOIND(JS,MJ).NE.0) GOTO 170
0307 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
0308 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
0309 IF (WTAPJ(MJ).GT.1D-6) THEN
0310 NJN=NJN+1
0311 ELSE
0312 WTAPJ(MJ)=0D0
0313 ENDIF
0314 170 CONTINUE
0315 ENDIF
0316 ELSEIF (IMI(JS,MI,2).GE.0) THEN
0317
0318 WTAP(21)=0D0
0319 ELSEIF (MQMASS.EQ.0) THEN
0320
0321 WTAP(21)=WTAP(21)*1.25D0
0322 ENDIF
0323
0324
0325 ELSEIF(KFLB.EQ.21) THEN
0326
0327
0328
0329 WTAPQ=(16D0/3D0)*(SQRT(1D0/ZMIN)-SQRT(1D0/ZMAX))
0330
0331 DO 180 KFL=1,MIN(3,MSTP(58))
0332 WTAP(KFL)=WTAPQ
0333 WTAP(-KFL)=WTAPQ
0334 180 CONTINUE
0335 WTAP(21)=6D0*LOG(ZMAX*(1D0-ZMIN)/(ZMIN*(1D0-ZMAX)))
0336 IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
0337 WTAPQ=WTFG*WTAPQ
0338 WTAP(21)=WTGG*WTAP(21)
0339 ENDIF
0340
0341 IF (MSTP(96).NE.0.AND.MINT(31).GE.2.AND.MJOIND(JS,MI).EQ.0)
0342 & THEN
0343 DO 190 MJ=1,MINT(31)
0344 IF (MJ.EQ.MI.OR.MJOIND(JS,MJ).NE.0) GOTO 190
0345 KSVCC=IMI(JS,MJ,2)
0346 IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
0347 IF (KSVCC.GE.1) GOTO 190
0348 KFLC=K(IMI(JS,MJ,1),2)
0349
0350 IF (MJ.GT.MI.AND.KFLC.EQ.21) GOTO 190
0351 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
0352 IF (KFLC.EQ.21) THEN
0353 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
0354 ELSE
0355 WTAPJ(MJ)=Z*4D0/3D0*(1D0+Z**2)
0356 ENDIF
0357 IF (WTAPJ(MJ).GT.1D-6) THEN
0358 NJN=NJN+1
0359 ELSE
0360 WTAPJ(MJ)=0D0
0361 ENDIF
0362 190 CONTINUE
0363 ENDIF
0364 ENDIF
0365
0366
0367 IF (MQMASS.NE.0) THEN
0368 RML=(RMQ2+VINT(18))/ALAM2
0369 TML=LOG(RML)
0370 TPL=LOG((PT2+VINT(18))/ALAM2)
0371 TPM=LOG((PT2+VINT(18))/RMQ2)
0372 WN=WTAP(21)*WPDF0/B0
0373 ENDIF
0374
0375
0376
0377 NTRY=0
0378 NTHRES=0
0379 200 NTRY=NTRY+1
0380 IF(NTRY.GT.500) THEN
0381 CALL PYERRM(9,'(PYPTIS:) failed to evolve shower.')
0382 MINT(51)=1
0383 RETURN
0384 ENDIF
0385
0386
0387 WTSUM=0D0
0388 XFBO=MAX(1D-10,XFB(KFLB))
0389 DO 210 KFL=-5,5
0390 WTPDF(KFL)=XFB(KFL)/XFBO
0391 WTSUM=WTSUM+WTAP(KFL)*WTPDF(KFL)
0392 210 CONTINUE
0393
0394 IF(MQMASS.EQ.0) THEN
0395 WTPDF(21)=XFB(21)/XFBO
0396 WTSUM=WTSUM+WTAP(21)*WTPDF(21)
0397 ENDIF
0398 WTSUM=MAX(0.0001D0,WTSUM)
0399 WTSUMS=WTSUM
0400
0401 WTJOIN=0D0
0402 IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
0403 DO 220 MJ=1,MINT(31)
0404 IF (WTAPJ(MJ).LT.1D-3) GOTO 220
0405 WTPDFJ(MJ)=1D0/XFBO
0406
0407 KFLC=K(IMI(JS,MJ,1),2)
0408 KFLCA=IABS(KFLC)
0409 KSVCC=MAX(-1,IMI(JS,MJ,2))
0410 IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
0411 MINT(30)=JS
0412 MINT(36)=MJ
0413 CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
0414 MINT(36)=MI
0415 IF (KFLCA.LE.6.AND.KSVCC.LE.0) THEN
0416 XFJ(KFLC)=XPSVC(KFLC,KSVCC)
0417 ELSEIF (KSVCC.GE.1) THEN
0418 print*, 'error! parton C is companion!'
0419 ENDIF
0420 WTPDFJ(MJ)=WTPDFJ(MJ)/XFJ(KFLC)
0421
0422 KFLA=21
0423 KSVCA=0
0424 IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
0425 KFLA=KFLB
0426 KSVCA=KSVCB
0427 ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
0428 KFLA=KFLC
0429 KSVCA=KSVCC
0430 ENDIF
0431 MINT(30)=JS
0432 IF (KSVCA.LE.0) THEN
0433
0434
0435 IF (KFLBA.EQ.21) MINT(36)=MJ
0436 CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
0437 MINT(36)=MI
0438 IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
0439 ELSE
0440
0441 XFJ(KFLA)=PYFCMP(Y(MI)/VINT(140),YS/VINT(140),MSTP(87))
0442 ENDIF
0443 WTPDFJ(MJ)=XFJ(KFLA)*WTPDFJ(MJ)
0444 WTJOIN=WTJOIN+WTAPJ(MJ)*WTPDFJ(MJ)
0445 220 CONTINUE
0446 ENDIF
0447
0448
0449 230 PT2OLD=PT2
0450 WTSUM=WTSUMS
0451 PT2=ALAM2*((PT2+VINT(18))/ALAM2)**(PYR(0)**(B0/WTSUM))-VINT(18)
0452 KFLC=21
0453
0454
0455 IF(KFLBA.LE.5) THEN
0456 PT2QED=(PT2OLD+VINT(18))*PYR(0)**(1D0/(AEM2PI*WTAPE))-VINT(18)
0457 IF(PT2QED.GT.PT2) THEN
0458 PT2=PT2QED
0459 KFLC=22
0460 KFLA=KFLB
0461 ENDIF
0462 ENDIF
0463
0464
0465 MCRQQ=0
0466 IF (MQMASS.NE.0) THEN
0467 PT2CR=(RMQ2+VINT(18))*(RML**(TPM/(TPL*PYR(0)**(-TML/WN)-TPM)))
0468 & -VINT(18)
0469
0470 IF (PT2CR.LT.TMIN*RMQ2) THEN
0471 NTHRES=NTHRES+1
0472 IF (NTHRES.GT.50) THEN
0473 CALL PYERRM(9,'(PYPTIS:) no phase space left for '//
0474 & 'massive quark creation. Gave up trying.')
0475 MINT(51)=1
0476 RETURN
0477 ENDIF
0478 PT2=0D0
0479 PT2CR=TMIN*RMQ2
0480 MCRQQ=2
0481 ENDIF
0482
0483 IF (PT2CR.GT.PT2) THEN
0484 MCRQQ=MAX(MCRQQ,1)
0485 WTSUM=0D0
0486 PT2=PT2CR
0487 KFLA=21
0488 ELSE
0489 MCRQQ=0
0490 KFLA=KFLB
0491 ENDIF
0492
0493 TPL=LOG((PT2+VINT(18))/ALAM2)
0494 TPM=LOG((PT2+VINT(18))/(RMQ2+VINT(18)))
0495 WTCRQQ=TPM/LOG(PT2/RMQ2)
0496 ENDIF
0497
0498
0499 MJOIN=0
0500 IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
0501 PT2JN=ALAM2*((PT2OLD+VINT(18))/ALAM2)**(PYR(0)**(B0/WTJOIN))
0502 & -VINT(18)
0503 IF (PT2JN.GE.PT2) THEN
0504 MJOIN=1
0505 PT2=PT2JN
0506 ENDIF
0507 ENDIF
0508
0509
0510 IF(IZRG.EQ.3.AND.PT2.LT.RMB2) THEN
0511 PT2=RMB2
0512 GOTO 130
0513 ELSEIF(IZRG.EQ.2.AND.PT2.LT.RMC2) THEN
0514 PT2=RMC2
0515 GOTO 130
0516 ENDIF
0517
0518
0519
0520
0521
0522 IF (PT2.LT.PT2MX.OR.PT2.LT.PT2CUT) RETURN
0523
0524
0525 IF (MQMASS.EQ.0.AND.KFLC.NE.22.AND.MJOIN.EQ.0) THEN
0526 WTRAN=PYR(0)*WTSUM
0527 KFLA=-6
0528 240 KFLA=KFLA+1
0529 WTRAN=WTRAN-WTAP(KFLA)*WTPDF(KFLA)
0530 IF(KFLA.LE.5.AND.WTRAN.GT.0D0) GOTO 240
0531 IF(KFLA.EQ.6) KFLA=21
0532 ELSEIF (MJOIN.EQ.1) THEN
0533
0534 WTRAN=PYR(0)*WTJOIN
0535 MJ=0
0536 250 MJ=MJ+1
0537 WTRAN=WTRAN-WTAPJ(MJ)*WTPDFJ(MJ)
0538 IF(MJ.LE.MINT(31)-1.AND.WTRAN.GT.0D0) GOTO 250
0539 IF(MJOIND(JS,MJ).NE.0.OR.MJOIND(JS,MI).NE.0) THEN
0540 CALL PYERRM(9,'(PYPTIS:) Attempted double joining.'//
0541 & ' Rejected.')
0542 GOTO 230
0543 ENDIF
0544
0545 IF (KSVCB.LE.0) THEN
0546 MINT(30)=JS
0547 CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
0548 IF (KFLBA.LE.6) XFB(KFLB)=XPSVC(KFLB,KSVCB)
0549 ELSE
0550
0551 XFB(KFLB)=XFBO
0552 ENDIF
0553 WTVETO=1D0/WTPDFJ(MJ)/XFB(KFLB)
0554 KFLC=K(IMI(JS,MJ,1),2)
0555 KFLCA=IABS(KFLC)
0556 KSVCC=MAX(-1,IMI(JS,MJ,2))
0557 IF (KSVCB.GE.1) KSVCC=-1
0558
0559 MINT(30)=JS
0560 MINT(36)=MJ
0561 CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
0562 MINT(36)=MI
0563 IF (KFLCA.LE.6.AND.KSVCC.LE.0) XFJ(KFLC)=XPSVC(KFLC,KSVCC)
0564 WTVETO=WTVETO/XFJ(KFLC)
0565
0566 KFLA=21
0567 KSVCA=0
0568 IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
0569 KFLA=KFLB
0570 KSVCA=KSVCB
0571 ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
0572 KFLA=KFLC
0573 KSVCA=KSVCC
0574 ENDIF
0575 IF (KSVCA.LE.0) THEN
0576 MINT(30)=JS
0577 IF (KFLB.EQ.21) MINT(36)=MJ
0578 CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
0579 MINT(36)=MI
0580 IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
0581 ELSE
0582 XFJ(KFLA)=PYFCMP(Y(MJ)/VINT(140),YS/VINT(140),MSTP(87))
0583 ENDIF
0584 WTVETO=WTVETO*XFJ(KFLA)
0585
0586 IF (WTVETO.LT.PYR(0)) GOTO 200
0587
0588 IF (PT2.GT.PT2MX) THEN
0589 PT2MX=PT2
0590 JSMX=2+JS
0591 MJN1MX=MJ
0592 MJN2MX=MI
0593 WTAPJ(MJ)=0D0
0594 NJN=0
0595 ENDIF
0596
0597 GOTO 380
0598 ENDIF
0599 KFLAA=IABS(KFLA)
0600
0601
0602
0603 WTZ=0D0
0604
0605
0606
0607 IF (KFLAA.LE.5.AND.KFLBA.LE.5) THEN
0608 IF (KSVCB.LT.0) THEN
0609 Z=1D0-(1D0-ZMIN)*((1D0-ZMAX)/(1D0-ZMIN))**PYR(0)
0610 ELSE
0611 ZFAC=RMIN*(RMAX/RMIN)**PYR(0)
0612 Z=((1-ZFAC)/(1+ZFAC))**2
0613 ENDIF
0614 WTZ=0.5D0*(1D0+Z**2)
0615
0616 IF (KFLBA.GE.4) WTZ=WTZ-Z*(1D0-Z)**2*RMQ2/PT2
0617
0618 IF (KSVCB.GE.0) WTZ=WTZ*SQRT(Z)
0619
0620
0621
0622 ELSEIF (KFLAA.LE.5.AND.KFLB.EQ.21) THEN
0623 KFLC=KFLA
0624 Z=ZMAX/(1D0+PYR(0)*(SQRT(ZMAX/ZMIN)-1D0))**2
0625 WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
0626
0627
0628 ELSEIF (KFLA.EQ.21.AND.KFLBA.LE.5) THEN
0629 KFLC=-KFLB
0630 Z=ZMIN+PYR(0)*(ZMAX-ZMIN)
0631 WTZ=Z**2+(1D0-Z)**2
0632
0633 IF (MQMASS.NE.0) THEN
0634 WTZ=WTZ+2D0*Z*(1D0-Z)*RMQ2/PT2
0635
0636 ELSEIF (KSVCB.LT.0) THEN
0637 WTZ=WTZ/1.25D0
0638 ENDIF
0639
0640
0641 ELSEIF (KFLA.EQ.21.AND.KFLB.EQ.21) THEN
0642 KFLC=21
0643 Z=1D0/(1D0+((1D0-ZMIN)/ZMIN)*((1D0-ZMAX)*ZMIN/
0644 & (ZMAX*(1D0-ZMIN)))**PYR(0))
0645 WTZ=(1D0-Z*(1D0-Z))**2
0646 ENDIF
0647
0648
0649 Q2B=PT2/(1D0-Z)
0650 IF (KFLBA.GE.4) Q2B=Q2B-RMQ2
0651
0652
0653 RM2C=PYMASS(KFLC)**2
0654 PT2ADJ=Q2B-Z*(SHTNOW(MI)+Q2B)*(Q2B+RM2C)/SHTNOW(MI)
0655 IF (PT2ADJ.LT.1D-6) GOTO 230
0656
0657
0658 IF (MSTP(62).GE.3.AND.NISGEN(JS,MI).GE.1) THEN
0659 IF(PT2.GT.((1D0-Z)/(Z*(1D0-ZSAV(JS,MI))))**2*PT2SAV(JS,MI))
0660 & GOTO 230
0661 ENDIF
0662
0663
0664 PHI=PARU(2)*PYR(0)
0665
0666
0667 IF (MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
0668 IF (KFLAA.LE.20.AND.KFLBA.LE.20) THEN
0669 CALL PYMEWT(MECOR,1,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
0670 WTZ=WTZ*WTME/WTFF
0671 ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.KFLBA.LE.20) THEN
0672 CALL PYMEWT(MECOR,2,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
0673 WTZ=WTZ*WTME/WTGF
0674 ELSEIF(KFLAA.LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
0675 CALL PYMEWT(MECOR,3,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
0676 WTZ=WTZ*WTME/WTFG
0677 ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
0678 CALL PYMEWT(MECOR,4,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
0679 WTZ=WTZ*WTME/WTGG
0680 ENDIF
0681 ENDIF
0682
0683
0684 MINT(30)=JS
0685 CALL PYPDFU(KFBEAM(JS),XB,PT2,XFN)
0686
0687 IF (KFLBA.LE.6.AND.KSVCB.LE.0) XFN(KFLB)=XPSVC(KFLB,KSVCB)
0688 IF (KSVCB.GE.1)
0689 & XFN(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
0690 XFBN=XFN(KFLB)
0691 IF(XFBN.LT.1D-20) THEN
0692 IF(KFLA.EQ.KFLB) THEN
0693 WTAP(KFLB)=0D0
0694 GOTO 200
0695 ELSE
0696 XFBN=1D-10
0697 XFN(KFLB)=XFBN
0698 ENDIF
0699 ENDIF
0700 DO 260 KFL=-5,5
0701 XFB(KFL)=XFN(KFL)
0702 260 CONTINUE
0703 XFB(21)=XFN(21)
0704
0705
0706 XA=XB/Z
0707 MINT(30)=JS
0708 CALL PYPDFU(KFBEAM(JS),XA,PT2,XFA)
0709 IF (KFLBA.LE.5.AND.KFLAA.LE.5) THEN
0710
0711 IF (KSVCB.LE.0) THEN
0712 XFA(KFLA)=XPSVC(KFLA,KSVCB)
0713 ELSE
0714 YA=XA*(1D0-YS)
0715 XFA(KFLB)=PYFCMP(YA/VINT(140),YS/VINT(140),MSTP(87))
0716 ENDIF
0717 ENDIF
0718 XFAN=XFA(KFLA)
0719 IF(XFAN.LT.1D-20) THEN
0720 GOTO 200
0721 ENDIF
0722
0723
0724 WTTOT=0D0
0725 IF (MCRQQ.EQ.0) THEN
0726 WTPDFA=1D0/WTPDF(KFLA)
0727 WTTOT=WTZ*XFAN/XFBN*WTPDFA
0728 ELSEIF(MCRQQ.EQ.1) THEN
0729 WTPDFA=TPM/WPDF0
0730 WTTOT=WTCRQQ*WTZ*XFAN/XFBN*WTPDFA
0731 XBEST=TPM/TPM0*XQ0
0732 ELSEIF(MCRQQ.EQ.2) THEN
0733
0734 WTTOT=1D0
0735 ENDIF
0736
0737
0738 IF(WTTOT.GE.0D0.AND.WTTOT.LT.PYR(0)) GOTO 200
0739 WTACC=((1D0+PT2)/(0.25D0+PT2))**2
0740 IF(WTTOT.LT.0D0) THEN
0741 WRITE(CHWT,'(1P,E12.4)') WTTOT
0742 CALL PYERRM(19,'(PYPTIS:) Weight '//CHWT//' negative')
0743 ELSEIF(WTTOT.GT.WTACC) THEN
0744 WRITE(CHWT,'(1P,E12.4)') WTTOT
0745 IF (PT2.GT.PTEMAX.OR.WTTOT.GE.WTEMAX) THEN
0746
0747 IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)-1
0748 CALL PYERRM(19,
0749 & '(PYPTIS:) Weight '//CHWT//' above unity')
0750 IF (PT2.GT.PTEMAX) PTEMAX=PT2
0751 IF (WTTOT.GT.WTEMAX) WTEMAX=WTTOT
0752 ELSE
0753 CALL PYERRM(9,
0754 & '(PYPTIS:) Weight '//CHWT//' above unity')
0755 ENDIF
0756
0757
0758
0759
0760
0761
0762 ENDIF
0763
0764
0765 IF(PT2.GT.PT2MX) THEN
0766 MIMX=MINT(36)
0767 JSMX=JS
0768 PT2MX=PT2
0769 KFLAMX=KFLA
0770 KFLCMX=KFLC
0771 RM2CMX=RM2C
0772 Q2BMX=Q2B
0773 ZMX=Z
0774 PT2AMX=PT2ADJ
0775 PHIMX=PHI
0776 ENDIF
0777
0778
0779
0780 ELSEIF (MODE.EQ.1) THEN
0781 MI=MIMX
0782 JS=JSMX
0783 SHAT=SHTNOW(MI)
0784 SIDE=3D0-2D0*JS
0785
0786 IT=IMISEP(MI)+1
0787 IM=IT+1
0788 IS=IMI(JS,MI,1)
0789 DO 280 I=N,IT,-1
0790 IF (K(I,3).GE.IT) K(I,3)=K(I,3)+2
0791 KT1=K(I,4)/MSTU(5)**2
0792 KT2=K(I,5)/MSTU(5)**2
0793 ID1=MOD(K(I,4),MSTU(5))
0794 ID2=MOD(K(I,5),MSTU(5))
0795 IM1=MOD(K(I,4)/MSTU(5),MSTU(5))
0796 IM2=MOD(K(I,5)/MSTU(5),MSTU(5))
0797 IF (ID1.GE.IT) ID1=ID1+2
0798 IF (ID2.GE.IT) ID2=ID2+2
0799 IF (IM1.GE.IT) IM1=IM1+2
0800 IF (IM2.GE.IT) IM2=IM2+2
0801 K(I,4)=KT1*MSTU(5)**2+IM1*MSTU(5)+ID1
0802 K(I,5)=KT2*MSTU(5)**2+IM2*MSTU(5)+ID2
0803 DO 270 IX=1,5
0804 K(I+2,IX)=K(I,IX)
0805 P(I+2,IX)=P(I,IX)
0806 V(I+2,IX)=V(I,IX)
0807 270 CONTINUE
0808 MCT(I+2,1)=MCT(I,1)
0809 MCT(I+2,2)=MCT(I,2)
0810 280 CONTINUE
0811 N=N+2
0812
0813 DO 290 JI=1,MINT(31)
0814 IF (IMI(1,JI,1).GE.IT) IMI(1,JI,1)=IMI(1,JI,1)+2
0815 IF (IMI(1,JI,2).GE.IT) IMI(1,JI,2)=IMI(1,JI,2)+2
0816 IF (IMI(2,JI,1).GE.IT) IMI(2,JI,1)=IMI(2,JI,1)+2
0817 IF (IMI(2,JI,2).GE.IT) IMI(2,JI,2)=IMI(2,JI,2)+2
0818 IF (JI.GE.MI) IMISEP(JI)=IMISEP(JI)+2
0819
0820 IF (IMI(JS,JI,2).EQ.IS) IMI(JS,JI,2)=IM
0821 290 CONTINUE
0822 DO 300 IFS=1,NPART
0823 IF (IPART(IFS).GE.IT) IPART(IFS)=IPART(IFS)+2
0824 300 CONTINUE
0825
0826 DO 320 I=IT,IT+1
0827 DO 310 J=1,5
0828 K(I,J)=0
0829 P(I,J)=0D0
0830 V(I,J)=0D0
0831 310 CONTINUE
0832 MCT(I,1)=0
0833 MCT(I,2)=0
0834 320 CONTINUE
0835
0836
0837 K(IT,1)=3
0838 K(IT,2)=KFLCMX
0839 K(IM,1)=14
0840 K(IM,2)=KFLAMX
0841 K(IS,3)=IM
0842 K(IT,3)=IM
0843
0844 K(IM,3)=MINT(83)+JS+2
0845 IF(MI.GE.2) K(IM,3)=MINT(83)+JS
0846
0847
0848 IM1=IM
0849 IM2=IM
0850
0851 IF(K(IT,2).EQ.22) THEN
0852 K(IT,1)=1
0853 ID1=IS
0854 ID2=IS
0855
0856 ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5.AND.K(IT,2).EQ.21) THEN
0857 ID1=IT
0858 ID2=IS
0859
0860 ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5) THEN
0861 ID1=IS
0862 ID2=IT
0863
0864 ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5.AND.K(IT,2).EQ.21) THEN
0865 ID1=IS
0866 ID2=IT
0867
0868 ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5) THEN
0869 ID1=IT
0870 ID2=IS
0871
0872 ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
0873 ID1=IS
0874 ID2=IT
0875 ELSE
0876 ID1=IT
0877 ID2=IS
0878 ENDIF
0879 IF(IM1.EQ.IM) K(IM1,4)=K(IM1,4)+ID1
0880 IF(IM2.EQ.IM) K(IM2,5)=K(IM2,5)+ID2
0881 K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
0882 K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
0883 IF(ID1.NE.ID2) THEN
0884 K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
0885 K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
0886 ENDIF
0887 IF(K(IT,1).EQ.1) THEN
0888 K(IT,4)=0
0889 K(IT,5)=0
0890 ENDIF
0891
0892 IMI(JS,MI,1)=IM
0893 DO 330 MC=1,2
0894 MCT(IT,MC)=0
0895 MCT(IM,MC)=0
0896 330 CONTINUE
0897 DO 340 JCS=4,5
0898 KCS=JCS
0899
0900 IF (K(IS,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IS,-KCS,IM)
0901 IF(MINT(51).NE.0) RETURN
0902 340 CONTINUE
0903 DO 350 JCS=4,5
0904 KCS=JCS
0905
0906 IF (K(IT,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IT,KCS,IM)
0907 IF(MINT(51).NE.0) RETURN
0908 350 CONTINUE
0909
0910
0911 BETAZ=SIDE*(1D0-(1D0+Q2BMX/SHAT)**2)/
0912 & (1D0+(1D0+Q2BMX/SHAT)**2)
0913 IR=IMI(3-JS,MI,1)
0914 CALL PYROBO(IR,IR,0D0,0D0,0D0,0D0,BETAZ)
0915
0916
0917
0918
0919 IMIN=IMISEP(MI-1)+1
0920 IF (MI.EQ.1) IMIN=MINT(83)+5
0921 IMAX=IMISEP(MI)-2
0922
0923
0924 CALL PYROBO(IMIN,IMAX,0D0,-PHIMX,0D0,0D0,0D0)
0925
0926
0927 IMAX=IMISEP(MI)
0928 P(IM,1)=SQRT(PT2AMX)*SHAT/(ZMX*(SHAT+Q2BMX))
0929 P(IM,3)=0.5D0*SQRT(SHAT)*((SHAT-Q2BMX)/((SHAT
0930 & +Q2BMX)*ZMX)+(Q2BMX+RM2CMX)/SHAT)*SIDE
0931 P(IM,4)=SQRT(P(IM,1)**2+P(IM,3)**2)
0932 P(IT,1)=P(IM,1)
0933 P(IT,3)=P(IM,3)-0.5D0*(SHAT+Q2BMX)/SQRT(SHAT)*SIDE
0934 P(IT,4)=SQRT(P(IT,1)**2+P(IT,3)**2+RM2CMX)
0935 P(IT,5)=SQRT(RM2CMX)
0936
0937
0938 P(IS,1)=P(IM,1)-P(IT,1)
0939 P(IS,2)=P(IM,2)-P(IT,2)
0940 P(IS,3)=P(IM,3)-P(IT,3)
0941 P(IS,4)=P(IM,4)-P(IT,4)
0942 P(IS,5)=P(IS,4)**2-P(IS,1)**2-P(IS,2)**2-P(IS,3)**2
0943
0944 IF (P(IS,5).LT.0D0) THEN
0945 P(IS,5)=-SQRT(ABS(P(IS,5)))
0946 ELSE
0947 P(IS,5)=SQRT(P(IS,5))
0948 ENDIF
0949
0950
0951
0952 BETAX=(P(IM,1)+P(IR,1))/(P(IM,4)+P(IR,4))
0953 BETAZ=(P(IM,3)+P(IR,3))/(P(IM,4)+P(IR,4))
0954 IF(BETAX**2+BETAZ**2.GE.1D0) THEN
0955 CALL PYERRM(1,'(PYPTIS:) boost bigger than unity')
0956 MINT(51)=1
0957 IFAIL=-1
0958 RETURN
0959 ENDIF
0960 CALL PYROBO(IMIN,IMAX,0D0,0D0,-BETAX,0D0,-BETAZ)
0961 I1=IMI(1,MI,1)
0962 THETA=PYANGL(P(I1,3),P(I1,1))
0963 CALL PYROBO(IMIN,IMAX,-THETA,PHIMX,0D0,0D0,0D0)
0964
0965
0966 MINT(352)=MINT(352)+1
0967 VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
0968 IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
0969
0970
0971 IF (K(IT,2).NE.22) THEN
0972 NPART=NPART+1
0973 IPART(NPART)=IT
0974 PTPART(NPART)=SQRT(PT2AMX)
0975 ENDIF
0976
0977
0978 SHTNOW(MIMX)=SHTNOW(MIMX)/ZMX
0979 NISGEN(JSMX,MIMX)=NISGEN(JSMX,MIMX)+1
0980 XMI(JSMX,MIMX)=XMI(JSMX,MIMX)/ZMX
0981 PT2SAV(JSMX,MIMX)=PT2MX
0982 ZSAV(JS,MIMX)=ZMX
0983
0984 KSA=IABS(K(IS,2))
0985 KMA=IABS(K(IM,2))
0986 IF (KSA.EQ.21.AND.KMA.GE.1.AND.KMA.LE.5) THEN
0987
0988
0989 MINT(30)=JS
0990 CALL PYPTMI(2,PT2NOW,PTDUM1,PTDUM2,IFAIL)
0991 IF(MINT(51).NE.0) RETURN
0992 ENDIF
0993 IF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.EQ.21) THEN
0994
0995
0996 ICMP=IMI(JS,MI,2)
0997 IF (ICMP.GT.0) THEN
0998 CALL PYERRM(9,'(PYPTIS:) Sorry, companion quark radiated'
0999 & //' away. Cannot handle that yet. Giving up.')
1000 MINT(51)=1
1001 RETURN
1002 ELSEIF(ICMP.LT.0) THEN
1003
1004
1005
1006 ICMP=-ICMP
1007 IFL=-K(IS,2)
1008 DO 370 JCMP=ICMP,NVC(JS,IFL)-1
1009 XASSOC(JS,IFL,JCMP)=XASSOC(JS,IFL,JCMP+1)
1010 DO 360 JI=1,MINT(31)
1011 KMI=-IMI(JS,JI,2)
1012 JFL=-K(IMI(JS,JI,1),2)
1013 IF (KMI.EQ.JCMP+1.AND.JFL.EQ.IFL) IMI(JS,JI,2)=IMI(JS,JI
1014 & ,2)+1
1015 360 CONTINUE
1016 370 CONTINUE
1017 NVC(JS,IFL)=NVC(JS,IFL)-1
1018 ENDIF
1019
1020 IMI(JS,MI,2)=0
1021 ELSEIF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.NE.21) THEN
1022
1023
1024
1025 IF (IMI(JS,MI,2).LT.0) THEN
1026 ICMP=-IMI(JS,MI,2)
1027 IFL=-K(IS,2)
1028 XASSOC(JS,IFL,ICMP)=XMI(JSMX,MIMX)
1029 ENDIF
1030 ENDIF
1031
1032 ENDIF
1033
1034
1035 380 IFAIL=0
1036
1037 RETURN
1038 END