1 gaskelld 1.1 ! BREM.FOR
2
3 ! Exact soft photon bremstrahlung calculation of
4 ! delta, delta^\prime, and exponentiations thereof
5
6 real*8 function brem(ein,eout,egamma,radiate_proton,bsoft,bhard,dbsoft)
7
8 implicit none
9 include 'brem.inc'
10
11 real*8 pi, am, ame, e2
12 parameter (pi=3.141592653589793)
13 parameter (am= .93827231)
14 parameter (ame= .00051099906)
15 parameter (e2= 1./137.0359895)
16
17 real*8 ein ! electron energy
18 real*8 eout ! final electron energy
19 real*8 egamma ! energy of bremsstrahling photon
20 real*8 eang,ak,akp,ap,pang,eta,ape
21 real*8 q2,de
22 gaskelld 1.1 real*8 aprod,adot,ar1,ar2,alpha
23 real*8 bpi,bpf,bpp,bei,bef,bee,bepii,bepif,bepfi,bepff
24 real*8 dbpi,dbpf,dbpp,dbei,dbef,dbee,dbepii,dbepif,dbepfi,
25 > dbepff !derivatives of b's
26 real*8 b,bz,bzz,db,dbz,dbzz,bhard,bsch,spence,bsoft,dbsoft
27 real*8 inter
28 logical radiate_proton
29
30 ! Convert to GeV
31
32 ak=ein/1000.
33 akp=eout/1000.
34 de=egamma/1000.
35
36 ! electron scattering angle
37
38 eang= 2.*asin((am/(2.*ak)*(ak/akp-1.))**0.5)
39 eta= 1.+2.*ak*sin(eang/2.)**2/am
40 q2= 4.*ak*akp*sin(eang/2.)**2
41
42 ! final proton energy/momentum/scattering angle.
43 gaskelld 1.1
44 ape= am+ak-akp
45 ap= sqrt(ape**2-am**2)
46 pang= acos((ak-akp*cos(eang))/ap)
47
48 if(produce_output) then
49 write(6,*)' q2 ',q2
50 write(6,*)' k ',ak
51 write(6,*)' kp ',akp
52 write(6,*)' eang ',eang*180./pi
53 write(6,*)' ap ',ap
54 write(6,*)' pang ',pang*180./pi
55 write(6,*)' eta ',eta
56 endif
57
58 ! Calculate components of delta soft
59
60 ! ... electron terms
61
62 ! direct initial electron
63
64 gaskelld 1.1 aprod= 1.d0
65 bei= aprod*(-1./(2.*pi))*log(ak/de)
66 dbei= aprod*(1./(2.*pi*de))
67
68 ! direct final electron
69
70 aprod= 1.d0
71 bef= aprod*(-1./(2.*pi))*log(akp/de)
72 dbef= aprod*(1./(2.*pi*de))
73
74 ! e-e interference
75
76 aprod= -1.d0
77 adot= ak*akp*(1.-cos(eang))
78 alpha= 2.*ame**2-2.*adot
79 ar1= 0.5+sqrt(adot**2-ame**4)/alpha
80 ar2= 0.5-sqrt(adot**2-ame**4)/alpha
81 bee= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,ak,akp,de)
82 dbee= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
83 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
84 if(produce_output) write(6,*) ar1,ar2
85 gaskelld 1.1
86 ! ... proton terms
87
88 if (radiate_proton) then
89
90 ! initial p direct
91
92 aprod= 1.d0
93 bpi= aprod*(-1./(2.*pi))*log(am/de)
94 dbpi= aprod*(1./(2.*pi*de))
95
96 ! final p direct
97
98 aprod= 1.d0
99 bpf= aprod*(-1./(2.*pi))*log(ape/de)
100 dbpf= aprod*(1/(2.*pi*de))
101
102 ! p-p interference
103
104 aprod= -1.d0
105 adot= am*ape
106 gaskelld 1.1 alpha= 2.*am**2-2.*adot
107 ar1= 0.5+sqrt(adot**2-am**4)/alpha
108 ar2= 0.5-sqrt(adot**2-am**4)/alpha
109 bpp= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,am,ape,de)
110 dbpp= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
111 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
112 if(produce_output) write(6,*) ar1,ar2
113
114 ! ei-pi interference
115
116 aprod= -1.d0
117 adot= ak*am
118 alpha= am**2+ame**2-2.*adot
119 ar1= (am**2-adot+sqrt(adot**2-(ame*am)**2))/alpha
120 ar2= (am**2-adot-sqrt(adot**2-(ame*am)**2))/alpha
121 bepii= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,ak,am,de)
122 dbepii= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
123 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
124 if(produce_output) write(6,*) ar1,ar2
125
126 ! ef-pf interference
127 gaskelld 1.1
128 aprod= -1.d0
129 adot= akp*ape-akp*ap*cos(eang+pang)
130 alpha= am**2+ame**2-2.*adot
131 ar1= (am**2-adot+sqrt(adot**2-(ame*am)**2))/alpha
132 ar2= (am**2-adot-sqrt(adot**2-(ame*am)**2))/alpha
133 bepff= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,akp,ape,de)
134 dbepff= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
135 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
136 if(produce_output) write(6,*) ar1,ar2
137
138 ! ei-pf interference
139
140 aprod= 1.d0
141 adot= ak*ape-ak*ap*cos(pang)
142 alpha= am**2+ame**2-2.*adot
143 ar1= (am**2-adot+sqrt(adot**2-(ame*am)**2))/alpha
144 ar2= (am**2-adot-sqrt(adot**2-(ame*am)**2))/alpha
145 bepif= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,ak,ape,de)
146 dbepif= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
147 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
148 gaskelld 1.1 if(produce_output) write(6,*) ar1,ar2
149
150 ! ef-pi interference
151
152 aprod= 1.d0
153 adot= akp*am
154 alpha= am**2+ame**2-2.*adot
155 ar1= (am**2-adot+sqrt(adot**2-(ame*am)**2))/alpha
156 ar2= (am**2-adot-sqrt(adot**2-(ame*am)**2))/alpha
157 bepfi= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,akp,am,de)
158 dbepfi= aprod*adot/(pi*alpha*(ar1-ar2)*de)*
159 > (log((ar1-1)/ar1)-log((ar2-1)/ar2))
160 if(produce_output) write(6,*) ar1,ar2
161
162 endif ! <radiate_proton>
163
164 ! All together now!
165 b= 2.*e2*(bei+bef+bee)
166 if (radiate_proton) then
167 bzz= 2.*e2*(bpi+bpf+bpp)
168 bz= 2.*e2*(bepii+bepff+bepif+bepfi)
169 gaskelld 1.1 else
170 bzz = 0.0
171 bz = 0.0
172 endif
173 bsoft=b+bz+bzz
174 bhard= -1.*(e2/pi)*(-28/9.+13./6.*log(q2/ame**2))
175 db= 2.*e2*(dbei+dbef+dbee)
176 if (radiate_proton) then
177 dbzz= 2.*e2*(dbpi+dbpf+dbpp)
178 dbz= 2.*e2*(dbepii+dbepff+dbepif+dbepfi)
179 else
180 dbzz = 0.0
181 dbz = 0.0
182 endif
183 dbsoft= db+dbz+dbzz
184
185 if(produce_output) then
186 write(6,*)' ----- results ----- '
187 write(6,*)' b= ',b
188 write(6,*)' bz= ',bz
189 write(6,*)' bzz= ',bzz
190 gaskelld 1.1 write(6,*)' bhard= ',bhard
191 write(6,*)' total= ',bsoft+bhard
192 write(6,*)' exp= ',1.-dexp(-1.*(bsoft))*(1.-bhard)
193 write(6,*)' '
194 write(6,*)' ultra-relativistic limit'
195 call srad(ak,akp,eang,q2,ame,am,ap,de,produce_output)
196 write(6,*)' Schwinger Result'
197 bsch= 2.*e2/pi*((log(ak/de)-13./12.)*(log(q2/ame**2)-1.)+17./36.+
198 > 0.5*(pi**2/6.-spence((cos(eang/2.))**2)))
199 write(6,*)' b= ',bsch
200 endif
201
202 ! ... and the result --> the value of the radiative cross-section,
203 ! dsigma/dEgamma = -dbsoft * exp(-bsoft) * (1-bhard)
204 ! ......... the derivative has dimension 1/[energy] --> convert back to MeV
205 dbsoft = dbsoft/1000.
206 if (exponentiate) then
207 brem = -dbsoft/dexp(bsoft)
208 else
209 brem = 1.-dbsoft
210 endif
211 gaskelld 1.1 if (include_hard) brem = brem*(1.-bhard)
212
213 return
214 end
215
216 !-----------------------------------
217
218 real*8 function inter(calculate_spence,alpha,ar1,ar2,e1,e2,de)
219
220 ! explicit evaluation of integral ... may or may not ignore spence functions
221
222 implicit none
223
224 real*8 pi
225 parameter (pi=3.141592653589793)
226
227 real*8 alpha,ar1,ar2,e1,e2,de
228 real*8 de2,amult,arg1,arg2,arg3,arg4,spence
229 logical calculate_spence
230
231 de2 = e1-e2
232 gaskelld 1.1 amult = -1./(alpha*(ar1-ar2))
233 inter = log(abs((e2/de)+ar1*(de2/de)))*log(abs((ar1-1.)/ar1)) -
234 1 log(abs((e2/de)+ar2*(de2/de)))*log(abs((ar2-1.)/ar2))
235
236 if (calculate_spence) then
237 arg1= (de2/(e2+ar1*de2))*(ar1-1.)
238 arg2= (de2/(e2+ar1*de2))*(ar1)
239 arg3= (de2/(e2+ar2*de2))*(ar2-1.)
240 arg4= (de2/(e2+ar2*de2))*(ar2)
241 inter = inter - spence(arg1)+spence(arg2)+spence(arg3)-spence(arg4)
242 endif
243
244 inter= inter*amult/(pi)
245
246 return
247 end
248
249 !-----------------------------------
250
251 subroutine srad(ak,akp,eang,q2,ame,am,ap,de,produce_output)
252
253 gaskelld 1.1 ! calculates ultra-relativistic limit
254
255 implicit none
256
257 real*8 pi, alpha
258 parameter (pi = 3.141592653589793)
259 parameter (alpha = 1./137.0359895)
260
261 real*8 ak,akp,eang,q2,ame,am,ap
262 real*8 eta,dsoft,dhard,de
263 real*8 dsoftz,dsoftzz,ep
264 logical produce_output
265
266 ep= sqrt(ap**2+am**2)
267 dhard= -13./12.*(log(q2/ame**2)-1.)+17./36.
268 eta= 1.+2.*ak*(sin(eang/2.)**2)/am
269
270 dsoft= alpha/pi*log(ak*akp/de**2)*(log(q2/ame**2)-1.)
271 dsoftz= alpha/pi*log(eta)*(log(ak*akp/de**2)+log(am*ep/de**2))
272 dsoftzz= alpha/pi*log(am*ep/de**2)*(log(q2/am**2)-1.)
273 if(dsoftzz.le.0) dsoftzz=0.0
274 gaskelld 1.1
275 if (produce_output) then
276 write(6,*)' '
277 write(6,*)' b= ',dsoft
278 write(6,*)' bz= ',dsoftz
279 write(6,*)' bzz= ',dsoftzz
280 endif
281
282 return
283 end
284
285 !-----------------------------------
286
287 real*8 function spence(ax)
288
289 implicit none
290
291 real*8 pi
292 parameter (pi=3.141592653589793)
293
294 real*8 ax,bx
295 gaskelld 1.1
296 bx= dabs(ax)
297
298 ! ... N.B. Have replaced the former calculation (commented out) with an
299 ! ... approximate expression -- saves a WHALE of CPU!
300 !
301 ! if(bx.lt.1) then
302 ! spence= ssum(ax,100)
303 ! else if (ax.gt.1) then
304 ! spence= -0.5*(log(bx))**2+pi**2/3.-ssum(1./ax,100)
305 ! else if (ax.le.-1) then
306 ! spence= -0.5*(log(bx))**2-pi**2/6.-ssum(1./ax,100)
307 ! else if (ax.eq.1) then
308 ! spence= pi**2/6.
309 ! else if (ax.eq.-1) then
310 ! spence= -pi**2/12.
311 ! endif
312
313 if (bx.le.1) then
314 spence = 0.0
315 else
316 gaskelld 1.1 spence = -0.5*(log(bx))**2
317 endif
318
319 return
320 end
321
322 !-----------------------------------
323
324 real*8 function ssum(as,n)
325
326 implicit none
327
328 integer n,i
329 real*8 as
330
331 ssum= 0.0
332 if(as.ne.0) then
333 if(n.ge.10000) write(6,*)' large n in function ssum (brem.f)'
334 do i= 1,n
335 ssum= ssum+as**i/(1.*i)**2
336 enddo
337 gaskelld 1.1 endif
338
339 return
340 end
341
342 !------------------------------------------------------------------------------
343
344 real*8 function bremos(egamma, ! photon energy
345 1 k_ix, k_iy, k_iz, ! incoming electron 3-momentum
346 1 k_fx, k_fy, k_fz, ! scattered electron 3-momentum
347 1 p_ix, p_iy, p_iz, ! incoming proton 3-momentum (pm)
348 1 p_fx, p_fy, p_fz, p_fe, ! scattered proton 4-momentum
349 1 radiate_proton, ! proton radiation flag
350 1 bsoft, bhard, dbsoft)
351
352 ! Calculation of soft photon radiative correction factor and its derivative
353 ! allowing for both initial and final protons to be offshell.
354 ! conventions identical to on-shell calculation
355
356 implicit none
357 include 'brem.inc'
358 gaskelld 1.1
359 real*8 pi, twopi, ame, e2, mp
360 parameter (pi=3.141592653589793)
361 parameter (twopi=2.*pi)
362 parameter (ame= .00051099906)
363 parameter (e2= 1./137.0359895)
364 parameter (mp= .93827231)
365
366 structure /four_vector/
367 real*8 e, x, y, z
368 end structure
369
370 real*8 egamma, de
371 real*8 k_ix,k_iy,k_iz
372 real*8 k_fx,k_fy,k_fz
373 real*8 p_ix,p_iy,p_iz
374 real*8 p_fx,p_fy,p_fz,p_fe
375 real*8 ami,amf,q2
376 real*8 aprod,adot,ar1,ar2,alpha
377 real*8 bpi,bpf,bpp,bei,bef,bee,bepii,bepif,bepfi,bepff
378 real*8 dbpi,dbpf,dbpp,dbei,dbef,dbee,dbepii,dbepif,
379 gaskelld 1.1 > dbepfi,dbepff !derivatives of b's
380 real*8 b,bz,bzz,db,dbz,dbzz
381 real*8 bsoft,bhard,dbsoft,bsch
382 real*8 inter,inter_prime
383 logical radiate_proton
384 record /four_vector/ k_i, k_f, p_i, p_f
385
386 ! Initialize
387
388 ! ... put input into local variables, while converting energies/momenta to GeV.
389 de = egamma/1000.
390 k_i.x = k_ix/1000.
391 k_i.y = k_iy/1000.
392 k_i.z = k_iz/1000.
393 k_f.x = k_fx/1000.
394 k_f.y = k_fy/1000.
395 k_f.z = k_fz/1000.
396 p_i.x = p_ix/1000.
397 p_i.y = p_iy/1000.
398 p_i.z = p_iz/1000.
399 p_f.e = p_fe/1000.
400 gaskelld 1.1 p_f.x = p_fx/1000.
401 p_f.y = p_fy/1000.
402 p_f.z = p_fz/1000.
403
404 ! ... compute electron energies
405 k_i.e= (k_i.x**2+k_i.y**2+k_i.z**2+ame**2)**0.5
406 k_f.e= (k_f.x**2+k_f.y**2+k_f.z**2+ame**2)**0.5
407 ! ........ if he insists on e-m conservation like below, just compute p_i.e
408 c p_i.e = k_f.e+p_f.e-k_i.e
409 p_i.e = mp
410
411 ! ... check energy-momentum conservation
412 ! e_check= dabs(k_f.e+p_f.e-k_i.e-p_i.e)
413 ! x_check= dabs(k_f.x+p_f.x-k_i.x-p_i.x)
414 ! y_check= dabs(k_f.y+p_f.y-k_i.y-p_i.y)
415 ! z_check= dabs(k_f.z+p_f.z-k_i.z-p_i.z)
416 !
417 ! if((e_check.gt.0.0001).or.(x_check.gt.0.0001).or.
418 ! + (y_check.gt.0.0001).or.(z_check.gt.0.0001)) then
419 ! write(6,*)' bad kinematics'
420 ! return
421 gaskelld 1.1 ! endif
422
423 ! ... compute Q2 and masses of initial and final protons
424 q2=-1.*( (k_f.e-k_i.e)**2-(k_f.x-k_i.x)**2-
425 > (k_f.y-k_i.y)**2-(k_f.z-k_i.z)**2)
426 if (produce_output) write(6,*)' q2= ',q2
427 c ami= ((p_i.e)**2-(p_i.x)**2-(p_i.y)**2-(p_i.z)**2)**0.5
428 ami= mp
429 amf= ((p_f.e)**2-(p_f.x)**2-(p_f.y)**2-(p_f.z)**2)**0.5
430
431 ! Calculate components of delta soft
432
433 ! ... electron terms
434
435 ! ........ direct initial electron
436 aprod= 1.d0
437 bei= aprod*(-1./twopi)*log(k_i.e/de)
438 dbei= aprod*(-1./twopi)*(-1./de)
439
440 ! ........ direct final electron
441 aprod= 1.d0
442 gaskelld 1.1 bef= aprod*(-1./twopi)*log(k_f.e/de)
443 dbef= aprod*(-1./twopi)*(-1./de)
444
445 ! ........ e-e interference
446 aprod= -1.d0
447 adot= k_i.e*k_f.e-k_i.x*k_f.x-k_i.y*k_f.y-k_i.z*k_f.z
448 alpha= 2.*ame**2-2.*adot
449 ar1= 0.5+sqrt(4.*adot**2-4.*ame**4)/(2.*alpha)
450 ar2= 0.5-sqrt(4.*adot**2-4.*ame**4)/(2.*alpha)
451 bee= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,k_i.e,k_f.e,de)
452 dbee= aprod*adot*inter_prime(alpha,ar1,ar2,de)
453 if (produce_output) write(6,*) ar1,ar2
454
455 ! ... proton terms
456
457 if (radiate_proton) then
458
459 ! ........ initial p direct
460 aprod= 1.d0
461 bpi= aprod*(-1./twopi)*log(p_i.e/de)
462 dbpi= aprod*(-1./twopi)*(-1./de)
463 gaskelld 1.1
464 ! ........ final p direct
465 aprod= 1.d0
466 bpf= aprod*(-1./twopi)*log(p_f.e/de)
467 dbpf= aprod*(-1./twopi)*(-1./de)
468
469 ! ........ p-p interference
470 aprod= -1.d0
471 adot= p_i.e*p_f.e-p_i.x*p_f.x-p_i.y*p_f.y-p_i.z*p_f.z
472 alpha= ami**2+amf**2-2.*adot
473 ar1= (2.*amf**2-2.*adot+sqrt(4.*adot**2-4.*(ami*amf)**2))/(2.*alpha)
474 ar2= (2.*amf**2-2.*adot-sqrt(4.*adot**2-4.*(ami*amf)**2))/(2.*alpha)
475 bpp= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,p_i.e,p_f.e,de)
476 dbpp= aprod*adot*inter_prime(alpha,ar1,ar2,de)
477 if (produce_output) write(6,*) ar1,ar2
478
479 ! ........ ei-pi interference
480 aprod= -1.d0
481 adot= k_i.e*p_i.e-k_i.x*p_i.x-k_i.y*p_i.y-k_i.z*p_i.z
482 alpha= ami**2+ame**2-2.*adot
483 ar1= (2.*ami**2-2.*adot+sqrt(4.*adot**2-4.*(ame*ami)**2))/(2.*alpha)
484 gaskelld 1.1 ar2= (2.*ami**2-2.*adot-sqrt(4.*adot**2-4.*(ame*ami)**2))/(2.*alpha)
485 bepii= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,k_i.e,p_i.e,de)
486 dbepii= aprod*adot*inter_prime(alpha,ar1,ar2,de)
487 if (produce_output) write(6,*) ar1,ar2
488
489 ! ........ ef-pf interference
490 aprod= -1.d0
491 adot= k_f.e*p_f.e-k_f.x*p_f.x-k_f.y*p_f.y-k_f.z*p_f.z
492 alpha= amf**2+ame**2-2.*adot
493 ar1= (2.*amf**2-2.*adot+sqrt(4.*adot**2-4.*(ame*amf)**2))/(2.*alpha)
494 ar2= (2.*amf**2-2.*adot-sqrt(4.*adot**2-4.*(ame*amf)**2))/(2.*alpha)
495 bepff= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,k_f.e,p_f.e,de)
496 dbepff= aprod*adot*inter_prime(alpha,ar1,ar2,de)
497 if (produce_output) write(6,*) ar1,ar2
498
499 ! ........ ei-pf interference
500 aprod= 1.d0
501 adot= k_i.e*p_f.e-k_i.x*p_f.x-k_i.y*p_f.y-k_i.z*p_f.z
502 alpha= amf**2+ame**2-2.*adot
503 ar1=(2.*amf**2-2.*adot+sqrt(4.*adot**2-4.*(ame*amf)**2))/(2.*alpha)
504 ar2=(2.*amf**2-2.*adot-sqrt(4.*adot**2-4.*(ame*amf)**2))/(2.*alpha)
505 gaskelld 1.1 bepif= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,k_i.e,p_f.e,de)
506 dbepif= aprod*adot*inter_prime(alpha,ar1,ar2,de)
507 if (produce_output) write(6,*) ar1,ar2
508
509 ! ........ ef-pi interference
510 aprod= 1.d0
511 adot= k_f.e*p_i.e-k_f.x*p_i.x-k_f.y*p_i.y-k_f.z*p_i.z
512 alpha= ami**2+ame**2-2.*adot
513 ar1=(2.*ami**2-2.*adot+sqrt(4.*adot**2-4.*(ame*ami)**2))/(2.*alpha)
514 ar2=(2.*ami**2-2.*adot-sqrt(4.*adot**2-4.*(ame*ami)**2))/(2.*alpha)
515 bepfi= aprod*adot*inter(calculate_spence,alpha,ar1,ar2,k_f.e,p_i.e,de)
516 dbepfi= aprod*adot*inter_prime(alpha,ar1,ar2,de)
517 if (produce_output) write(6,*) ar1,ar2
518
519 endif ! <radiate_proton>
520
521 ! All together now!
522 b= 2.*e2*(bei+bef+bee)
523 if (radiate_proton) then
524 bzz= 2.*e2*(bpi+bpf+bpp)
525 bz= 2.*e2*(bepii+bepff+bepif+bepfi)
526 gaskelld 1.1 else
527 bzz = 0.0
528 bz = 0.0
529 endif
530 bsoft = b + bz + bzz
531 bhard= -1.*(e2/pi)*(-28/9.+13./6.*log(q2/ame**2))
532 * bhard= (e2/pi)*(2-1.5*log(q2/ame**2))
533 * bhard= bhard+vac(q2)
534 db= 2.*e2*(dbei+dbef+dbee)
535 if (radiate_proton) then
536 dbzz= 2.*e2*(dbpi+dbpf+dbpp)
537 dbz= 2.*e2*(dbepii+dbepff+dbepif+dbepfi)
538 else
539 dbzz = 0.0
540 dbz = 0.0
541 endif
542 dbsoft= db+dbz+dbzz
543
544 if (produce_output) then
545 write(6,*)' ----- results ----- '
546 write(6,*)' b+bhard= ',b+bhard
547 gaskelld 1.1 write(6,*)' bz= ',bz
548 write(6,*)' bzz= ',bzz
549 write(6,*)' bhard= ',bhard
550 write(6,*)' total= ',1-bsoft-bhard
551 write(6,*)' exp= ',dexp(-1.*(bsoft))*(1.-bhard)
552 write(6,*)' 1-bhard= ',1-bhard
553 write(6,*)' exps= ',dexp(-1.*(bsoft))
554 write(6,*)' expse= ',dexp(-1.*b)
555 write(6,*)' expsp= ',dexp(-1.*(bz+bzz))
556 write(6,*)' '
557 write(6,*)' Schwinger Result'
558 bsch= 2.*e2/pi*((log(k_i.e/de)-13./12.)*(log(q2/ame**2)-1.)+17./36.)
559 write(6,*)' b= ',bsch
560 endif
561
562 ! ... and the result --> the value of the radiative cross-section,
563 ! dsigma/dEgamma = -dbsoft * exp(-bsoft) * (1-bhard)
564 ! ......... the derivative has dimension 1/[energy] --> convert back to MeV
565 dbsoft = dbsoft/1000. !convert back to MeV
566 if (exponentiate) then
567 bremos = -dbsoft/dexp(bsoft)
568 gaskelld 1.1 else
569 bremos = 1.-dbsoft
570 endif
571 if (include_hard) bremos = bremos*(1.-bhard)
572
573 return
574 end
575
576 !-----------------------------------
577 c
578 c explicit evaluation of DERIVATIVE of integral (wrt de)
579 c
580
581 real*8 function inter_prime(alpha,ar1,ar2,de)
582
583 implicit none
584
585 real*8 pi
586 parameter (pi=3.141592653589793)
587
588 real*8 alpha,ar1,ar2,de
589 gaskelld 1.1 real*8 amult
590
591 amult = -1./(alpha*(ar1-ar2))
592 inter_prime = (-1./de)*amult/pi*
593 > (log(abs((ar1-1.)/ar1))-log(abs((ar2-1.)/ar2)))
594
595 return
596 end
597
598 !-----------------------------------
599
600 real*8 function vac(q2)
601
602 implicit none
603
604 real*8 q2
605 real*8 am(10),ae(10)
606 real*8 dele,dell
607 integer*4 j
608
609 real*8 del
610 gaskelld 1.1
611 am(1)= 0.00051099906
612 ae(1) = 1.0
613 am(2)= .1057
614 ae(2)= 1.0
615 am(3)= 1.782
616 ae(3)= 1.0
617 am(4)= 0.3
618 ae(4)= 2./3.
619 am(5)= .3
620 ae(5)= 1./3.
621 am(6)= .430
622 ae(6)= 1./3.
623 am(7)= 1.5
624 ae(7)= 2./3.
625 am(8)= 5.
626 ae(8)= 1./3.
627
628 dele= del(q2,am(1),ae(1))
629 dell= 0.0
630 do 20 j= 1,3
631 gaskelld 1.1 dell= dell+del(q2,am(j),ae(j))
632 20 continue
633
634 vac= dell
635
636 return
637 end
638
639 !-----------------------------------
640
641 real*8 function del(q2,bm,be)
642
643 implicit none
644 real*8 q2,bm,be
645 real*8 x,alpha
646
647 x= 4.*bm**2/q2
648 alpha= be**2/137.0359895
649 del= -2.*alpha/(3.*3.14159265)*(-5./3.+x+(1-x/2)*(1+x)**0.5*
650 > log(((1+x)**0.5+1)/((1+x)**0.5-1)))
651
652 gaskelld 1.1 return
653 end
|