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
subroutine cdedxelec(eini, ic, dedt)
Definition: cdedxElec.f:36
common ZdedxAir w0
Definition: ZdedxAir.h:2
common ZdedxAir sthb
Definition: ZdedxAir.h:2
common ZdedxAir sthc
Definition: ZdedxAir.h:2
common ZdedxAir sthx1
Definition: ZdedxAir.h:2
common ZdedxAir * wlg0
Definition: ZdedxAir.h:2
common ZdedxAir sthsa
Definition: ZdedxAir.h:2
common ZdedxAir sthx0
Definition: ZdedxAir.h:2
common ZdedxAir stha
Definition: ZdedxAir.h:2