]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA/pythia/pystel.F
Corrections to line for alpha
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pystel.F
CommitLineData
fe4da5cc 1
2C*********************************************************************
3
4 SUBROUTINE PYSTEL(X,Q2,XPEL)
5
6C...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
15C...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
23C...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
34C...Electron inside electron, see R. Kleiss et al., in Z physics at
35C...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
54C...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
65C...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
72C...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
86C...Quarks and gluons inside photon inside electron:
87C...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
102C...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)
111C...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
118C...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
125C...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
143C...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