]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pystel.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pystel.F
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