COSMOS v7.655
COSMOSv7655
(AirShowerMC)
cdedxElec.f
Go to the documentation of this file.
1
!#include "cblkdedx.h"
2
! implicit none
3
! real*8 e, dedt, ek
4
! integer i
5
! call cdedxEleci(225.d-6, .true.)
6
! do i=1, 300
7
! ek=1.e-9*10.**( (i-1) /20.)
8
! e = ek + 0.511e-3
9
! call cdedxElec(e, -1, dedt)
10
! write(*, *)sngl(ek), sngl(dedt)
11
! enddo
12
! end
13
14
! ****************************************************************
15
! * *
16
! * cdedxElec: gives -de/dx (gev/(g/cm2) of e+/e-
17
! * if knock-on process is not to be included, *
18
! * -de/dx by sternheimer is computed else *
19
! * -de/dx by sternheimer - (-de/dx(recoil k.e > w) ) *
20
! * is computed. *
21
! * *
22
! ************************ tested 87.09.19 ********************k.k
23
!
24
! /usage/ call cdedxElec(e, ic, dedt)
25
26
! -- input--
27
! e: total energy of electron in GeV
28
! ic: charge. -1 if electron. 1 if positron
29
!
30
! *** note ***
31
! Before calling this, cdedxEleci must have been called.
32
!
33
!
34
!
35
subroutine
cdedxelec
(eini, ic, dedt)
36
implicit none
37
!
38
!
39
#include "ZdedxAir.h"
40
!
41
real*8
eini, dedt
42
integer
ic
43
! external cblkdedx
44
45
real*8
emass, emassg
46
real*8
ek, ein, e, gi, Beta2, x, a, b, c, cb, x0, x1
47
real*8
dltx, wm, wlg
48
!
49
real*8
peake/2.3d-7/, peak/0.858d0/
50
data
emass/0.511d0/, emassg/0.511d-3/
51
52
53
!
54
if
(jdef .eq. 0)
then
55
write
(*, *)
' cdedxEleci must be called'
56
stop 9999
57
endif
58
59
ek=eini-emassg
60
ein=eini
61
62
if
( ek .lt. peake)
then
63
dedt=peak*sqrt(ek/peake)
64
else
65
! energy in mev unit
66
e=ein*1000.d0
67
gi=emass/e
68
beta2= 1.d0 - gi**2
69
! x=log10(p/mc)
70
x=log10(e**2 - 0.2611d0)/2.0d0 + 0.29d0
71
a=
stha
72
b=
sthb
73
c=
sthc
74
cb=-c
75
x0=
sthx0
76
x1=
sthx1
77
if
(x .lt. x0)
then
78
! 4.605x - dlt
79
dltx=4.605d0*x
80
elseif
(x .lt. x1)
then
81
dltx=cb - (x1-x)**3 *
sthsa
82
else
83
dltx=cb
84
endif
85
wm=e- emass
86
! if(Knckon) then
87
! Now we don't use Knckon, since big wm can do
88
! the equivalent
89
if
(wm .gt.
w0
)
then
90
wlg=
wlg0
91
else
92
wlg=log(wm)
93
endif
94
! else
95
! wlg=log(wm)
96
! endif
97
if
(ic .eq. -1)
then
98
dedt=a/beta2 * (b + 1.12d0 + wlg-beta2 +dltx)
99
else
100
dedt=a/beta2 *( b+0.693d0 + wlg -2*beta2 + dltx)
101
endif
102
! convert it to gev/(g/cm^2)
103
dedt=dedt *1.d-3
104
endif
105
end
cdedxelec
subroutine cdedxelec(eini, ic, dedt)
Definition:
cdedxElec.f:36
w0
common ZdedxAir w0
Definition:
ZdedxAir.h:2
sthb
common ZdedxAir sthb
Definition:
ZdedxAir.h:2
sthc
common ZdedxAir sthc
Definition:
ZdedxAir.h:2
sthx1
common ZdedxAir sthx1
Definition:
ZdedxAir.h:2
wlg0
common ZdedxAir * wlg0
Definition:
ZdedxAir.h:2
sthsa
common ZdedxAir sthsa
Definition:
ZdedxAir.h:2
sthx0
common ZdedxAir sthx0
Definition:
ZdedxAir.h:2
stha
common ZdedxAir stha
Definition:
ZdedxAir.h:2
Particle
Event
Elemag
cdedxElec.f
Generated by
1.8.13