File indexing completed on 2025-08-05 08:21:14
0001
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE PYPDPR(X,Q2,XPPR)
0009
0010
0011 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0012 IMPLICIT INTEGER(I-N)
0013 INTEGER PYK,PYCHGE,PYCOMP
0014
0015 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0016 COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0017 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0018 COMMON/PYINT1/MINT(400),VINT(400)
0019 SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
0020
0021 DIMENSION XPPR(-6:6),Q2MIN(16)
0022 DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
0023 &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
0024
0025
0026 DO 100 KFL=-6,6
0027 XPPR(KFL)=0D0
0028 100 CONTINUE
0029
0030
0031 NSET=MAX(1,MIN(16,MSTP(51)))
0032 IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
0033 VINT(231)=Q2MIN(NSET)
0034 IF(MSTP(57).EQ.0) THEN
0035 Q2L=Q2MIN(NSET)
0036 ELSE
0037 Q2L=MAX(Q2MIN(NSET),Q2)
0038 ENDIF
0039
0040 IF(NSET.GE.1.AND.NSET.LE.3) THEN
0041
0042 QRT=SQRT(MAX(1D0,Q2L))
0043
0044
0045 DO 110 I=-6,6
0046 IF(I.LE.0) THEN
0047 XPPR(I)=PYCTEQ(NSET,I,X,QRT)
0048 ELSEIF(I.LE.2) THEN
0049 XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
0050 ELSE
0051 XPPR(I)=XPPR(-I)
0052 ENDIF
0053 110 CONTINUE
0054
0055 ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
0056
0057 IF(NSET.EQ.4) THEN
0058 CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
0059 ELSEIF(NSET.EQ.5) THEN
0060 CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
0061 ELSE
0062 CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
0063 ENDIF
0064
0065
0066 XPPR(0)=GL
0067 XPPR(-1)=0.5D0*(UDB+DEL)
0068 XPPR(-2)=0.5D0*(UDB-DEL)
0069 XPPR(-3)=SB
0070 XPPR(-4)=CHM
0071 XPPR(-5)=BOT
0072 XPPR(1)=DV+XPPR(-1)
0073 XPPR(2)=UV+XPPR(-2)
0074 XPPR(3)=SB
0075 XPPR(4)=CHM
0076 XPPR(5)=BOT
0077
0078 ELSEIF(NSET.EQ.7) THEN
0079
0080
0081
0082 QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
0083 XIN=MAX(1D-6,MIN(1D0,X))
0084
0085
0086 SUMUDB=PYCT5L(-1,XIN,QRT)
0087 RATUDB=PYCT5L(-2,XIN,QRT)
0088 DO 120 I=-5,2
0089 IF(I.EQ.1) THEN
0090 XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
0091 ELSEIF(I.EQ.2) THEN
0092 XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
0093 ELSEIF(I.EQ.-1) THEN
0094 XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
0095 ELSEIF(I.EQ.-2) THEN
0096 XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
0097 ELSE
0098 XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
0099 IF(I.LT.0) XPPR(-I)=XPPR(I)
0100 ENDIF
0101 120 CONTINUE
0102
0103 ELSEIF(NSET.EQ.8) THEN
0104
0105 QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
0106 XIN=MAX(1D-6,MIN(1D0,X))
0107
0108
0109 SUMUDB=PYCT5M(-1,XIN,QRT)
0110 RATUDB=PYCT5M(-2,XIN,QRT)
0111 DO 130 I=-5,2
0112 IF(I.EQ.1) THEN
0113 XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
0114 ELSEIF(I.EQ.2) THEN
0115 XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
0116 ELSEIF(I.EQ.-1) THEN
0117 XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
0118 ELSEIF(I.EQ.-2) THEN
0119 XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
0120 ELSE
0121 XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
0122 IF(I.LT.0) XPPR(-I)=XPPR(I)
0123 ENDIF
0124 130 CONTINUE
0125
0126 ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
0127
0128
0129 CALL PYPDPO(X,Q2L,XPPR)
0130
0131
0132 ELSEIF(NSET.EQ.16) THEN
0133 XPPR(0)=.5D0/X
0134 XPPR(1)=.05D0/X
0135 XPPR(2)=.05D0/X
0136 XPPR(3)=.05D0/X
0137 XPPR(4)=.05D0/X
0138 XPPR(5)=.05D0/X
0139 XPPR(-1)=.05D0/X
0140 XPPR(-2)=.05D0/X
0141 XPPR(-3)=.05D0/X
0142 XPPR(-4)=.05D0/X
0143 XPPR(-5)=.05D0/X
0144
0145 ENDIF
0146
0147 RETURN
0148 END