COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cdedxatHE.f
Go to the documentation of this file.
1 ! ****************************************************************
2 ! * This should not be used at kinetic energies < Mass *
3 ! * *
4 ! * cdedxatHE: gives -de/dx (GeV/(kg/m**2)) of mu, pi, k, p
5 ! * in air (de/dx includes knockon electron energy)
6 ! * Density effect depending on the air density is considered *
7 ! *
8 ! * -de/dx by sternheimer is computed
9 ! * ********** use prededx for making const *******
10 ! * *
11 ! ************************ tested 87.09.19 ********************k.k
12 !
13 ! /usage/ call cdedxInAir(ptcl, rhoin, dedt)
14 ! -- input--
15 ! ptcl: type ptcl
16 ! rhoin: density of air in kg/m**3
17 ! -- output --
18 ! dedt; energy loss GeV/(kg/m**2)
19 !
20 !
21 !
22  subroutine cdedxathe(aPtcl, rhoin, dedt)
23  implicit none
24 #include "Zptcl.h"
25 #include "ZdedxAir.h"
26  type(ptcl):: aPtcl
27  real*8 rhoin, dedt
28 !
29 !
30 
31  real*8 emass, emass2
32  parameter(emass=.511d0, emass2=emass**2)
33 !
34  real*8 ek, amass, a, b, x0, c, x1, sa, rho, rl, e, gi
35  real*8 pbmc, cb, dltx, p2, wm, wlg, x
36 !
37 ! see sternheimer's consts. by p.r.b vol.3 (1971)3681
38 ! to mev unit
39  if(jdef .eq. 0) then
40  write(*, *) ' cdedxEleci must be called'
41  stop 9999
42  endif
43 
44  if(aptcl%charge .ne. 0) then
45  ek=aptcl%fm%p(4) *1.d3
46  amass=aptcl%mass * 1.d3
47  a=7.68d-2
48  b=17.87d0
49  if(ek .lt. 50.d0*amass) then
50  x0=1.884d0
51  c=-10.97d0
52  x1=4.d0
53  sa=.247d0
54  else
55  rho=min( max(rhoin, 1.d-7), 5.d-3)
56  rl=log10(rho)
57  x0= (((-.0165d0*rl-0.305d0)*rl-1.94d0)*rl
58  * -5.41d0)*rl-3.87d0
59  c=-4.0635d0+2.303d0*rl
60  if(rho .gt. 2.78605d-4) then
61  x1=4.d0
62  sa=((-.6872064d-01*rl-.5340530d0 )*rl
63  * -1.521159d0 )*rl-1.365158d0
64  else
65  x1=5.d0
66  sa=(((.04256d0*rl+0.7888d0)*rl+5.465d0)*rl
67  * + 16.642d0)*rl+ 18.855d0
68  endif
69  endif
70 ! energy in mev unit
71  e=(ek+amass)
72  gi=amass/e
73  betasq = 1.d0 - gi**2
74 ! x=log10(p/mc)
75  pbmc = (e/amass)**2 - 1.d0
76  if(pbmc .gt. 0.) then
77  x=log10(pbmc)/2.0d0
78  cb=-c
79  if(x .lt. x0) then
80 ! 4.606x - dlt
81  dltx=4.606d0*x
82  elseif(x .lt. x1) then
83  dltx=cb - (x1-x)**3 * sa
84  else
85  dltx=cb
86  endif
87  p2=e**2 -amass**2
88  wm=2*emass*p2/( amass**2+ emass2+ emass*e*2)
89 !
90  if(wm .gt. w0) then
91  wlg = wlg0
92  else
93  wlg=log(wm)
94  endif
95  dedt=a/betasq *( b+0.693d0+wlg -2.d0*betasq + dltx)
96 ! convert it to GeV/(kg/m2)
97  dedt=dedt *1.d-4 *aptcl%charge**2
98  else
99  dedt=1.d-9
100  endif
101  else
102  dedt = 0.
103  endif
104  end
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine cdedxathe(aPtcl, rhoin, dedt)
Definition: cdedxatHE.f:23
block data cblkIncident data *Za1ry *HeightOfInj d3
Definition: cblkIncident.h:7
common ZdedxAir w0
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
dE dx *! Nuc Int sampling table d
Definition: cblkMuInt.h:130
common ZdedxAir betasq
Definition: ZdedxAir.h:2
Definition: Zptcl.h:75