]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | |
2 | C********************************************************************* | |
3 | ||
4 | SUBROUTINE PYSTEL(X,Q2,XPEL) | |
5 | ||
6 | C...Gives electron structure function. | |
7 | COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) | |
8 | COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) | |
9 | COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) | |
10 | COMMON/PYINT1/MINT(400),VINT(400) | |
11 | SAVE /LUDAT1/,/LUDAT2/ | |
12 | SAVE /PYPARS/,/PYINT1/ | |
13 | DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6) | |
14 | ||
15 | C...Interface to PDFLIB. | |
16 | COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX | |
17 | SAVE /W50513/ | |
18 | DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU, | |
19 | &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX | |
20 | CHARACTER*20 PARM(20) | |
21 | DATA VALUE/20*0D0/,PARM/20*' '/ | |
22 | ||
23 | C...Some common constants. | |
24 | DO 100 KFL=-25,25 | |
25 | XPEL(KFL)=0. | |
26 | 100 CONTINUE | |
27 | AEM=PARU(101) | |
28 | PME=PMAS(11,1) | |
29 | XL=LOG(MAX(1E-10,X)) | |
30 | X1L=LOG(MAX(1E-10,1.-X)) | |
31 | HLE=LOG(MAX(3.,Q2/PME**2)) | |
32 | HBE2=(AEM/PARU(1))*(HLE-1.) | |
33 | ||
34 | C...Electron inside electron, see R. Kleiss et al., in Z physics at | |
35 | C...LEP 1, CERN 89-08, p. 34 | |
36 | IF(MSTP(59).LE.1) THEN | |
37 | HDE=1.+(AEM/PARU(1))*(1.5*HLE+1.289868)+(AEM/PARU(1))**2* | |
38 | & (-2.164868*HLE**2+9.840808*HLE-10.130464) | |
39 | HEE=HBE2*(1.-X)**(HBE2-1.)*SQRT(MAX(0.,HDE))- | |
40 | & 0.5*HBE2*(1.+X)+HBE2**2/8.*((1.+X)*(-4.*X1L+3.*XL)- | |
41 | & 4.*XL/(1.-X)-5.-X) | |
42 | ELSE | |
43 | HEE=HBE2*(1.-X)**(HBE2-1.)*EXP(0.172784*HBE2)/PYGAMM(1.+HBE2)- | |
44 | & 0.5*HBE2*(1.+X)+HBE2**2/8.*((1.+X)*(-4.*X1L+3.*XL)- | |
45 | & 4.*XL/(1.-X)-5.-X) | |
46 | ENDIF | |
47 | IF(X.GT.0.9999.AND.X.LE.0.999999) THEN | |
48 | HEE=HEE*100.**HBE2/(100.**HBE2-1.) | |
49 | ELSEIF(X.GT.0.999999) THEN | |
50 | HEE=0. | |
51 | ENDIF | |
52 | XPEL(11)=X*HEE | |
53 | ||
54 | C...Photon and (transverse) W- inside electron. | |
55 | AEMP=ULALEM(PME*SQRT(MAX(0.,Q2)))/PARU(2) | |
56 | IF(MSTP(13).LE.1) THEN | |
57 | HLG=HLE | |
58 | ELSE | |
59 | HLG=LOG(MAX(1.,(PARP(13)/PME**2)*(1.-X)/X**2)) | |
60 | ENDIF | |
61 | XPEL(22)=AEMP*HLG*(1.+(1.-X)**2) | |
62 | HLW=LOG(1.+Q2/PMAS(24,1)**2)/(4.*PARU(102)) | |
63 | XPEL(-24)=AEMP*HLW*(1.+(1.-X)**2) | |
64 | ||
65 | C...Electron or positron inside photon inside electron. | |
66 | IF(MSTP(12).EQ.1) THEN | |
67 | XFSEA=0.5*(AEMP*(HLE-1.))**2*(4./3.+X-X**2-4.*X**3/3.+ | |
68 | & 2.*X*(1.+X)*XL) | |
69 | XPEL(11)=XPEL(11)+XFSEA | |
70 | XPEL(-11)=XFSEA | |
71 | ||
72 | C...Initialize PDFLIB photon structure functions. | |
73 | IF(MSTP(56).EQ.2) THEN | |
74 | PARM(1)='NPTYPE' | |
75 | VALUE(1)=3 | |
76 | PARM(2)='NGROUP' | |
77 | VALUE(2)=MSTP(55)/1000 | |
78 | PARM(3)='NSET' | |
79 | VALUE(3)=MOD(MSTP(55),1000) | |
80 | IF(MINT(93).NE.3000000+MSTP(55)) THEN | |
81 | CALL PDFSET(PARM,VALUE) | |
82 | MINT(93)=3000000+MSTP(55) | |
83 | ENDIF | |
84 | ENDIF | |
85 | ||
86 | C...Quarks and gluons inside photon inside electron: | |
87 | C...numerical convolution required. | |
88 | DO 110 KFL=0,6 | |
89 | SXP(KFL)=0. | |
90 | 110 CONTINUE | |
91 | SUMXPP=0. | |
92 | ITER=-1 | |
93 | 120 ITER=ITER+1 | |
94 | SUMXP=SUMXPP | |
95 | NSTP=2**(ITER-1) | |
96 | IF(ITER.EQ.0) NSTP=2 | |
97 | DO 130 KFL=0,6 | |
98 | SXP(KFL)=0.5*SXP(KFL) | |
99 | 130 CONTINUE | |
100 | WTSTP=0.5/NSTP | |
101 | IF(ITER.EQ.0) WTSTP=0.5 | |
102 | C...Pick grid of x_{gamma} values logarithmically even. | |
103 | DO 150 ISTP=1,NSTP | |
104 | IF(ITER.EQ.0) THEN | |
105 | XLE=XL*(ISTP-1) | |
106 | ELSE | |
107 | XLE=XL*(ISTP-0.5)/NSTP | |
108 | ENDIF | |
109 | XE=MIN(0.999999,EXP(XLE)) | |
110 | XG=MIN(0.999999,X/XE) | |
111 | C...Evaluate photon inside electron structure function for convolution. | |
112 | XPGP=1.+(1.-XE)**2 | |
113 | IF(MSTP(13).LE.1) THEN | |
114 | XPGP=XPGP*HLE | |
115 | ELSE | |
116 | XPGP=XPGP*LOG(MAX(1.,(PARP(13)/PME**2)*(1.-XE)/XE**2)) | |
117 | ENDIF | |
118 | C...Evaluate photon structure functions for convolution. | |
119 | IF(MSTP(56).EQ.1) THEN | |
120 | CALL PYSTGA(XG,Q2,XPGA) | |
121 | DO 140 KFL=0,5 | |
122 | SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL) | |
123 | 140 CONTINUE | |
124 | ELSEIF(MSTP(56).EQ.2) THEN | |
125 | C...Call PDFLIB structure functions. | |
126 | XX=XG | |
127 | QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2)) | |
128 | IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN) | |
129 | CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
130 | SXP(0)=SXP(0)+WTSTP*XPGP*GLU | |
131 | SXP(1)=SXP(1)+WTSTP*XPGP*DNV | |
132 | SXP(2)=SXP(2)+WTSTP*XPGP*UPV | |
133 | SXP(3)=SXP(3)+WTSTP*XPGP*STR | |
134 | SXP(4)=SXP(4)+WTSTP*XPGP*CHM | |
135 | SXP(5)=SXP(5)+WTSTP*XPGP*BOT | |
136 | SXP(6)=SXP(6)+WTSTP*XPGP*TOP | |
137 | ENDIF | |
138 | 150 CONTINUE | |
139 | SUMXPP=SXP(0)+2.*SXP(1)+2.*SXP(2) | |
140 | IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT. | |
141 | & PARP(14)*(SUMXPP+SUMXP))) GOTO 120 | |
142 | ||
143 | C...Put convolution into output arrays. | |
144 | FCONV=AEMP*(-XL) | |
145 | XPEL(0)=FCONV*SXP(0) | |
146 | DO 160 KFL=1,6 | |
147 | XPEL(KFL)=FCONV*SXP(KFL) | |
148 | XPEL(-KFL)=XPEL(KFL) | |
149 | 160 CONTINUE | |
150 | ENDIF | |
151 | ||
152 | RETURN | |
153 | END |