]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwbsud.f
use TMath::Abs() instead of ambiguous abs().
[u/mrichter/AliRoot.git] / HERWIG / src / hwbsud.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWBSUD.
3
4*CMZ :- -14/07/92 13.28.23 by Mike Seymour
5
6*-- Author : Bryan Webber
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWBSUD
11
12C-----------------------------------------------------------------------
13
14C COMPUTES (OR READS) TABLES OF SUDAKOV FORM FACTORS
15
16C-----------------------------------------------------------------------
17
18 INCLUDE 'HERWIG61.INC'
19
20 DOUBLE PRECISION HWUGAU,HWBVMC,HWBSUG,HWBSU1,HWBSU2,G1,G2,QRAT,
21
22 & QLAM,POWER,AFAC,QMIN,QFAC,QNOW,ZMIN,ZMAX,Q1,QCOLD,VGOLD,VQOLD,
23
24 & RMOLD(6),ACOLD,ZLO,ZHI
25
26 INTEGER IQ,IS,L1,L2,L,LL,I,INOLD,NQOLD,NSOLD,NCOLD,NFOLD,SDOLD
27
28 EXTERNAL HWUGAU,HWBVMC,HWBSUG,HWBSU1,HWBSU2
29
30 SAVE NQOLD,NSOLD,NCOLD,NFOLD,SDOLD,QCOLD,VGOLD,VQOLD,RMOLD,ACOLD
31
32 COMMON/HWSINT/QRAT,QLAM
33
34 IF (LRSUD.EQ.0) THEN
35
36 POWER=1./FLOAT(NQEV-1)
37
38 AFAC=6.*CAFAC/BETAF
39
40 QMIN=QG+QG
41
42 QFAC=(1.1*QLIM/QMIN)**POWER
43
44 SUD(1,1)=1.
45
46 QEV(1,1)=QMIN
47
48C--IS=1 FOR GLUON->GLUON+GLUON FORM FACTOR
49
50 DO 10 IQ=2,NQEV
51
52 QNOW=QFAC*QEV(IQ-1,1)
53
54 QLAM=QNOW/QCDL3
55
56 ZMIN=QG/QNOW
57
58 QRAT=1./ZMIN
59
60 G1=0
61
62 DO 5 I=3,6
63
64 ZLO=ZMIN
65
66 ZHI=HALF
67
68 IF (I.NE.6) ZLO=MAX(ZLO,QG/RMASS(I+1))
69
70 IF (I.NE.3) ZHI=MIN(ZHI,QG/RMASS(I))
71
72 IF (ZHI.GT.ZLO) G1=G1+HWUGAU(HWBSUG,LOG(ZLO),LOG(ZHI),ACCUR)
73
74 5 CONTINUE
75
76 SUD(IQ,1)=EXP(AFAC*G1)
77
78 10 QEV(IQ,1)=QNOW
79
80 AFAC=3.*CFFAC/BETAF
81
82C--QUARK FORM FACTORS.
83
84C--IS=2,3,4,5,6,7 FOR U/D,S,C,B,T,V
85
86 DO 15 IS=2,NSUD
87
88 Q1=HWBVMC(IS)
89
90 IF (IS.EQ.7) Q1=HWBVMC(209)
91
92 QMIN=Q1+QG
93
94 IF (QMIN.GT.QLIM) GOTO 15
95
96 QFAC=(1.1*QLIM/QMIN)**POWER
97
98 SUD(1,IS)=1.
99
100 QEV(1,IS)=QMIN
101
102 DO 14 IQ=2,NQEV
103
104 QNOW=QFAC*QEV(IQ-1,IS)
105
106 QLAM=QNOW/QCDL3
107
108 ZMIN=QG/QNOW
109
110 QRAT=1./ZMIN
111
112 ZMAX=QG/QMIN
113
114 G1=0
115
116 DO 12 I=3,6
117
118 ZLO=ZMIN
119
120 ZHI=ZMAX
121
122 IF (I.NE.6) ZLO=MAX(ZLO,QG/RMASS(I+1))
123
124 IF (I.NE.3) ZHI=MIN(ZHI,QG/RMASS(I))
125
126 IF (ZHI.GT.ZLO) G1=G1+HWUGAU(HWBSU1,LOG(ZLO),LOG(ZHI),ACCUR)
127
128 12 CONTINUE
129
130 ZMIN=Q1/QNOW
131
132 QRAT=1./ZMIN
133
134 ZMAX=Q1/QMIN
135
136 G2=0
137
138 DO 13 I=3,6
139
140 ZLO=ZMIN
141
142 ZHI=ZMAX
143
144 IF (I.NE.6) ZLO=MAX(ZLO,Q1/RMASS(I+1))
145
146 IF (I.NE.3) ZHI=MIN(ZHI,Q1/RMASS(I))
147
148 IF (ZHI.GT.ZLO) G2=G2+HWUGAU(HWBSU2,ZLO,ZHI,ACCUR)
149
150 13 CONTINUE
151
152 SUD(IQ,IS)=EXP(AFAC*(G1+G2))
153
154 14 QEV(IQ,IS)=QNOW
155
156 15 CONTINUE
157
158 QCOLD=QCDLAM
159
160 VGOLD=VGCUT
161
162 VQOLD=VQCUT
163
164 ACOLD=ACCUR
165
166 INOLD=INTER
167
168 NQOLD=NQEV
169
170 NSOLD=NSUD
171
172 NCOLD=NCOLO
173
174 NFOLD=NFLAV
175
176 SDOLD=SUDORD
177
178 DO 16 IS=1,NSUD
179
180 16 RMOLD(IS)=RMASS(IS)
181
182 ELSE
183
184 IF (LRSUD.GT.0) THEN
185
186 IF (IPRINT.NE.0) WRITE (6,17) LRSUD
187
188 17 FORMAT(10X,'READING SUDAKOV TABLE ON UNIT',I4)
189
190 OPEN(UNIT=LRSUD,FORM='UNFORMATTED',STATUS='UNKNOWN')
191
192 READ(UNIT=LRSUD) QCOLD,VGOLD,VQOLD,RMOLD,
193
194 & ACOLD,QEV,SUD,INOLD,NQOLD,NSOLD,NCOLD,NFOLD,SDOLD
195
196 CLOSE(UNIT=LRSUD)
197
198 ENDIF
199
200C---CHECK THAT RELEVANT PARAMETERS ARE UNCHANGED
201
202 IF (QCDLAM.NE.QCOLD) CALL HWWARN('HWBSUD',501,*999)
203
204 IF (VGCUT .NE.VGOLD) CALL HWWARN('HWBSUD',502,*999)
205
206 IF (VQCUT .NE.VQOLD) CALL HWWARN('HWBSUD',503,*999)
207
208 IF (ACCUR .NE.ACOLD) CALL HWWARN('HWBSUD',504,*999)
209
210 IF (INTER .NE.INOLD) CALL HWWARN('HWBSUD',505,*999)
211
212 IF (NQEV .NE.NQOLD) CALL HWWARN('HWBSUD',506,*999)
213
214 IF (NSUD .NE.NSOLD) CALL HWWARN('HWBSUD',507,*999)
215
216 IF (NCOLO .NE.NCOLD) CALL HWWARN('HWBSUD',508,*999)
217
218 IF (NFLAV .NE.NFOLD) CALL HWWARN('HWBSUD',509,*999)
219
220 IF (SUDORD.NE.SDOLD) CALL HWWARN('HWBSUD',510,*999)
221
222C---CHECK MASSES AND THAT TABLES ARE BIG ENOUGH FOR THIS RUN
223
224 DO 18 IS=1,NSUD
225
226 IF (RMASS(IS).NE.RMOLD(IS))
227
228 & CALL HWWARN('HWBSUD',510+IS,*999)
229
230 IF (QEV(NQEV,IS).LT.QLIM.AND.HWBVMC(IS)+QG.LT.QLIM)
231
232 & CALL HWWARN('HWBSUD',500,*999)
233
234 18 CONTINUE
235
236 ENDIF
237
238 IF (LWSUD.GT.0) THEN
239
240 IF (IPRINT.NE.0) WRITE (6,19) LWSUD
241
242 19 FORMAT(10X,'WRITING SUDAKOV TABLE ON UNIT',I4)
243
244 OPEN (UNIT=LWSUD,FORM='UNFORMATTED',STATUS='UNKNOWN')
245
246 WRITE(UNIT=LWSUD) QCDLAM,VGCUT,VQCUT,(RMASS(I),I=1,6),
247
248 & ACCUR,QEV,SUD,INTER,NQEV,NSUD,NCOLO,NFLAV,SUDORD
249
250 CLOSE(UNIT=LWSUD)
251
252 ENDIF
253
254 IF (IPRINT.GT.2) THEN
255
256C--PRINT EXTRACTS FROM TABLES OF FORM FACTORS
257
258 DO 40 IS=1,NSUD
259
260 WRITE(6,20) IS,NQEV
261
262 20 FORMAT(1H1//10X,'EXTRACT FROM TABLE OF SUDAKOV FORM FACTOR NO.',
263
264 & I2,' (',I5,' ACTUAL ENTRIES)'//10X,'SUD IS PROBABILITY THAT',
265
266 & ' PARTON WITH GIVEN UPPER LIMIT ON Q WILL REACH THRESHOLD',
267
268 & ' WITHOUT BRANCHING'///2X,8(' Q SUD ')/)
269
270 L2=NQEV/8
271
272 L1=L2/32
273
274 IF (L1.LT.1) L1=1
275
276 DO 40 L=L1,L2,L1
277
278 LL=L+7*L2
279
280 WRITE(6,30) (QEV(I,IS),SUD(I,IS),I=L,LL,L2)
281
282 30 FORMAT(2X,8(F9.2,F7.4))
283
284 40 CONTINUE
285
286 WRITE(6,50)
287
288 50 FORMAT(1H1)
289
290 ENDIF
291
292 999 END
293
294CDECK ID>, HWBSUG.
295
296*CMZ :- -13/07/92 20.15.54 by Mike Seymour
297
298*-- Author : Bryan Webber, modified by Mike Seymour
299
300C-----------------------------------------------------------------------
301
302 FUNCTION HWBSUG(ZLOG)
303
304C-----------------------------------------------------------------------
305
306C Z TIMES INTEGRAND IN EXPONENT OF GLUON SUDAKOV FORM FACTOR
307
308C-----------------------------------------------------------------------
309
310 DOUBLE PRECISION HWBSUG,HWBSUL,Z,ZLOG,W
311
312 EXTERNAL HWBSUL
313
314 Z=EXP(ZLOG)
315
316 W=Z*(1.-Z)
317
318 HWBSUG=HWBSUL(Z)*(W-2.+1./W)*Z
319
320 END