]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HERWIG/src/sasano.f
Additional protection in Digitize, which was moved to the implementation file
[u/mrichter/AliRoot.git] / HERWIG / src / sasano.f
1
2 C
3
4 C*********************************************************************
5
6 C
7
8       SUBROUTINE SASANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
9
10 C...Purpose: to evaluate the parton distributions of the anomalous
11
12 C...photon, inhomogeneously evolved from a scale P2 (where it vanishes)
13
14 C...to Q2.
15
16 C...KF=0 gives the sum over (up to) 5 flavours,
17
18 C...KF<0 limits to flavours up to abs(KF),
19
20 C...KF>0 is for flavour KF only.
21
22 C...ALAM is the 4-flavour Lambda, which is automatically converted
23
24 C...to 3- and 5-flavour equivalents as needed.
25
26       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
27
28       DATA PMC/1.3/, PMB/4.6/, AEM2PI/0.0011614/
29
30 C
31
32 C...Reset output.
33
34       DO 100 KFL=-6,6
35
36       XPGA(KFL)=0.
37
38       VXPGA(KFL)=0.
39
40   100 CONTINUE
41
42       IF(Q2.LE.P2) RETURN
43
44       KFA=IABS(KF)
45
46 C
47
48 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
49
50       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2./27.))**2
51
52       ALAMSQ(4)=ALAM**2
53
54       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2./23.))**2
55
56       P2EFF=MAX(P2,1.2*ALAMSQ(3))
57
58       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
59
60       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
61
62       Q2EFF=MAX(Q2,P2EFF)
63
64       XL=-LOG(X)
65
66 C
67
68 C...Find number of flavours at lower and upper scale.
69
70       NFP=4
71
72       IF(P2EFF.LT.PMC**2) NFP=3
73
74       IF(P2EFF.GT.PMB**2) NFP=5
75
76       NFQ=4
77
78       IF(Q2EFF.LT.PMC**2) NFQ=3
79
80       IF(Q2EFF.GT.PMB**2) NFQ=5
81
82 C
83
84 C...Define range of flavour loop.
85
86       IF(KF.EQ.0) THEN
87
88         KFLMN=1
89
90         KFLMX=5
91
92       ELSEIF(KF.LT.0) THEN
93
94         KFLMN=1
95
96         KFLMX=KFA
97
98       ELSE
99
100         KFLMN=KFA
101
102         KFLMX=KFA
103
104       ENDIF
105
106 C
107
108 C...Loop over flavours the photon can branch into.
109
110       DO 110 KFL=KFLMN,KFLMX
111
112 C
113
114 C...Light flavours: calculate t range and (approximate) s range.
115
116       IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
117
118         TDIFF=LOG(Q2EFF/P2EFF)
119
120         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
121
122      &  LOG(P2EFF/ALAMSQ(NFQ)))
123
124         IF(NFQ.GT.NFP) THEN
125
126           Q2DIV=PMB**2
127
128           IF(NFQ.EQ.4) Q2DIV=PMC**2
129
130           SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
131
132      &    LOG(P2EFF/ALAMSQ(NFQ)))
133
134           SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
135
136      &    LOG(P2EFF/ALAMSQ(NFQ-1)))
137
138           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
139
140         ENDIF
141
142         IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
143
144           Q2DIV=PMC**2
145
146           SNF4=(6./(33.-2.*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
147
148      &    LOG(P2EFF/ALAMSQ(4)))
149
150           SNF3=(6./(33.-2.*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
151
152      &    LOG(P2EFF/ALAMSQ(3)))
153
154           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
155
156         ENDIF
157
158 C
159
160 C...u and s quark do not need a separate treatment when d has been done.
161
162       ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
163
164 C
165
166 C...Charm: as above, but only include range above c threshold.
167
168       ELSEIF(KFL.EQ.4) THEN
169
170         IF(Q2.LE.PMC**2) GOTO 110
171
172         P2EFF=MAX(P2EFF,PMC**2)
173
174         Q2EFF=MAX(Q2EFF,P2EFF)
175
176         TDIFF=LOG(Q2EFF/P2EFF)
177
178         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
179
180      &  LOG(P2EFF/ALAMSQ(NFQ)))
181
182         IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
183
184           Q2DIV=PMB**2
185
186           SNFQ=(6./(33.-2.*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
187
188      &    LOG(P2EFF/ALAMSQ(NFQ)))
189
190           SNFP=(6./(33.-2.*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
191
192      &    LOG(P2EFF/ALAMSQ(NFQ-1)))
193
194           S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
195
196         ENDIF
197
198 C
199
200 C...Bottom: as above, but only include range above b threshold.
201
202       ELSEIF(KFL.EQ.5) THEN
203
204         IF(Q2.LE.PMB**2) GOTO 110
205
206         P2EFF=MAX(P2EFF,PMB**2)
207
208         Q2EFF=MAX(Q2,P2EFF)
209
210         TDIFF=LOG(Q2EFF/P2EFF)
211
212         S=(6./(33.-2.*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
213
214      &  LOG(P2EFF/ALAMSQ(NFQ)))
215
216       ENDIF
217
218 C
219
220 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
221
222       CHSQ=1./9.
223
224       IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4./9.
225
226       FAC=AEM2PI*2.*CHSQ*TDIFF
227
228 C
229
230 C...Evaluate parton distributions (normalized to unit momentum sum).
231
232       IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
233
234         XVAL= ((1.5+2.49*S+26.9*S**2)/(1.+32.3*S**2)*X**2 +
235
236      &  (1.5-0.49*S+7.83*S**2)/(1.+7.68*S**2)*(1.-X)**2 +
237
238      &  1.5*S/(1.-3.2*S+7.*S**2)*X*(1.-X)) *
239
240      &  X**(1./(1.+0.58*S)) * (1.-X**2)**(2.5*S/(1.+10.*S))
241
242         XGLU= 2.*S/(1.+4.*S+7.*S**2) *
243
244      &  X**(-1.67*S/(1.+2.*S)) * (1.-X**2)**(1.2*S) *
245
246      &  ((4.*X**2+7.*X+4.)*(1.-X)/3. - 2.*X*(1.+X)*XL)
247
248         XSEA= 0.333*S**2/(1.+4.90*S+4.69*S**2+21.4*S**3) *
249
250      &  X**(-1.18*S/(1.+1.22*S)) * (1.-X)**(1.2*S) *
251
252      &  ((8.-73.*X+62.*X**2)*(1.-X)/9. + (3.-8.*X**2/3.)*X*XL +
253
254      &  (2.*X-1.)*X*XL**2)
255
256 C
257
258 C...Threshold factors for c and b sea.
259
260         SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
261
262         XCHM=0.
263
264         IF(Q2.GT.PMC**2.AND.Q2.GT.1.001*P2EFF) THEN
265
266           SCH=MAX(0.,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
267
268           XCHM=XSEA*(1.-(SCH/SLL)**3)
269
270         ENDIF
271
272         XBOT=0.
273
274         IF(Q2.GT.PMB**2.AND.Q2.GT.1.001*P2EFF) THEN
275
276           SBT=MAX(0.,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
277
278           XBOT=XSEA*(1.-(SBT/SLL)**3)
279
280         ENDIF
281
282       ENDIF
283
284 C
285
286 C...Add contribution of each valence flavour.
287
288       XPGA(0)=XPGA(0)+FAC*XGLU
289
290       XPGA(1)=XPGA(1)+FAC*XSEA
291
292       XPGA(2)=XPGA(2)+FAC*XSEA
293
294       XPGA(3)=XPGA(3)+FAC*XSEA
295
296       XPGA(4)=XPGA(4)+FAC*XCHM
297
298       XPGA(5)=XPGA(5)+FAC*XBOT
299
300       XPGA(KFL)=XPGA(KFL)+FAC*XVAL
301
302       VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
303
304   110 CONTINUE
305
306       DO 120 KFL=1,5
307
308       XPGA(-KFL)=XPGA(KFL)
309
310       VXPGA(-KFL)=VXPGA(KFL)
311
312   120 CONTINUE
313
314 C
315
316       RETURN
317
318       END