COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cdedx2atLE.f
Go to the documentation of this file.
1 !#include "cblkdedx.h"
2 ! implicit none
3 ! real*8 etemp, amass, dedt, e
4 ! integer i
5 !
6 ! amass= 105.659e-3
7 ! amass= 938.659e-3
8 ! amass = 500.e-3
9 ! do i=1, 200
10 ! e= 1.e-6* 10.**((i-1)/20.0)
11 ! etemp=e+amass
12 ! call cdedx2atLE(etemp, amass, dedt)
13 ! write(*, *) sngl(e), sngl(dedt)
14 ! enddo
15 ! end
16 ! ****************************************************************
17 ! * *
18 ! * cdedx2atLE: gives -de/dx (gev/(g/cm2)) of non electrons *
19 ! * this gives dedx at all energy region but
20 ! * with constant air density
21 ! * *
22 ! ************************ tested 87.09.19 ********************k.k
23 !
24 ! /usage/ call cdedx2atLE(e,amass, dedt)
25 
26 ! -- input--
27 ! e: total energy of ptcl in GeV
28 ! amass: mass in GeV
29 ! -- output --
30 ! dedt; energy loss / (g/cm2) in gev unit.
31 !
32 !
33 !
34 !
35  subroutine cdedx2atle(eini, amassi, dedt)
36  implicit none
37 !
38 !
39 #include "ZdedxAir.h"
40  real*8 eini, amassi, dedt
41  real*8 ek, peak2, peak2e
42 !
43  ek=eini-amassi
44  if(ek .lt. 1.d-3) then ! < 1MeV
45  peak2e = 1.4d-6* (amassi/100.d-3)**1.6d0
46  if(ek .lt. peak2e ) then
47  if(ek .gt. 0.) then
48  peak2 = 0.6d0*(ek/1.5d-5)**(-0.15d0)
49  dedt=peak2*sqrt(ek/peak2e)
50  else
51  dedt = 0.
52  endif
53  else
54  call cdedx2atlea(eini, amassi, dedt)
55  endif
56  else
57  call cdedx2atlea(eini, amassi, dedt)
58  endif
59  if(dedt .lt. 0.) then
60  dedt = 1.d-7
61  endif
62  end
63 !
64  subroutine cdedx2atlea(eini, amassi, dedt)
65  implicit none
66 !
67 !
68 #include "ZdedxAir.h"
69 
70 !
71  real*8 eini, amassi, dedt
72 
73  real*8 emass, emass2
74  parameter(emass=.511d0, emass2=emass**2)
75  real*8 e, amass, ein, gi, Beta2, x, a, b, c, cb, x0
76  real*8 dltx, p2, wm, wlg, x1
77 
78 
79  if(jdef .eq. 0) then
80  write(*, *) ' cdedxEleci must be called'
81  stop 9999
82  endif
83  ein=eini
84 !
85 ! energy in mev unit
86  e=ein*1000.d0
87  amass=amassi*1000.d0
88  gi=amass/e
89  if(gi .ge. 1.d0) then
90  dedt=.01d0
91  else
92  beta2= 1.d0 - gi**2
93 ! x=log10(p/mc)
94  x=log10((e/amass)**2 - 1.d0) / 2.d0
95  a=stha
96  b=sthb
97  c=sthc
98  cb=-c
99  x0=sthx0
100  x1=sthx1
101  if(x .lt. x0) then
102 ! 4.605x - dlt
103  dltx=4.605d0*x
104  elseif(x .lt. x1) then
105  dltx=cb - (x1-x)**3 * sthsa
106  else
107  dltx=cb
108  endif
109  p2=e**2 -amass**2
110  wm=2*emass*p2/( amass**2+ emass2+ emass*e*2)
111  if(wm .gt. w0) then
112  wlg = wlg0
113  else
114  wlg=log(wm)
115  endif
116  dedt=a/beta2 *( b+0.693d0+wlg -2.d0*beta2 + dltx)
117  endif
118  dedt=dedt *1.d-3
119  end
120 
121 
122 
123 
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine cdedx2atle(eini, amassi, dedt)
Definition: cdedx2atLE.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
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
subroutine cdedx2atlea(eini, amassi, dedt)
Definition: cdedx2atLE.f:65
common ZdedxAir sthsa
Definition: ZdedxAir.h:2
dE dx *! Nuc Int sampling table d
Definition: cblkMuInt.h:130
common ZdedxAir sthx0
Definition: ZdedxAir.h:2
common ZdedxAir stha
Definition: ZdedxAir.h:2