COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cdedxNone.f
Go to the documentation of this file.
1 ! ****************************************************************
2 ! * *
3 ! * epdedxNone: gives -de/dx (gev/(g/cm2)) of non e+/e-
4 ! * *
5 !
6 !
7 !
8  subroutine cdedxnone(aPtcl, rhoin, dedt, dedtF)
9  implicit none
10 #include "Zcode.h"
11 #include "Zptcl.h"
12 #include "Zmass.h"
13 #include "ZdedxAir.h"
14  real*8 emass, emass2
15 ! MeV unit electron mass.
16  parameter(emass = masele*1000., emass2=emass**2)
17 
18  real*8 rhoin ! input. density of air in kg/m3
19  type(ptcl)::aPtcl ! input. a particle
20 
21  real*8 dedt ! output. restricedd energy loss rate. GeV / (g/cm2).
22  real*8 dedtF ! ouptut. full energy loss rate.
23 
24  real*8 E, mass, Beta2, x, full, restricted, temp
25  real*8 wm, wlg, u, delta, atomicEbrem, atomicEbremCut
26  real*8 bbbeta2, lindbeta2, truebeta2
27  real*8 bbbeta, lindbeta
28  real*8 logbbbeta, loglindbeta
29  real*8 a, b, c, xx, gra, gb2, g, integ
30  parameter(bbbeta = 0.1d0, lindbeta = 0.005d0, gra=5.d0/3.d0)
31  parameter(bbbeta2 = bbbeta**2, lindbeta2=lindbeta**2)
32  parameter(logbbbeta =-2.302585093e+00,
33 ! * loglindbeta =-4.605170186E+00)
34  * loglindbeta =-5.298317367e+00)
35  parameter(a = (1.+gra)/2.d0/(logbbbeta-loglindbeta),
36  * b = 2*a*loglindbeta + 1.)
37 
38  real*8 sha, shb
39 ! sha = 0.153536* (media.Z/media.A) = 0.153536*0.49919=0.07664
40 ! shb= 2*log(masele*/I) = 2*log(0.511e6/85.7)=
41  data sha/0.076643d0/, shb/17.38654d0/
42  save sha, shb
43 
44 !
45 ! energy in MeV unit
46  e = aptcl%fm%p(4)*1000.
47  mass= aptcl%mass*1000.
48  g = e/mass
49  truebeta2 = 1. -(1.0d0/g)**2
50  if(truebeta2 .lt. bbbeta2) then
51 ! fix at beta=0.1
52  beta2 = bbbeta2
53  e = mass*(1. + beta2/2)
54  g = e/mass
55  else
56  beta2 = truebeta2
57  endif
58 !
59  gb2 = beta2 * g**2 ! g^2 b^2
60 
61 ! x=log10(p/mc) = log10(g*beta)
62  x=log10( gb2 ) / 2
63 
64 
65 ! max kinetic energy of knock-on
66  wm = 2* emass * gb2
67  * /(1.0 + 2.0*g*(emass/mass) +(emass/mass)**2)
68 ! dE/dx fluctuation is not needed in Cosmos
69 ! Tupper = wm/1000. ! in GeV; used in Urban
70 ! wm in unit of Me
71  u = wm/emass
72 ! first compute full average dE/dx
73 ! sh.a/Beta2( sh.b +ln(2*g^2b^2wm/m) -2Beta^2 -delta
74 ! +spin_term )
75 !
76  full = shb + log(2*u*gb2) -2.0*beta2
77  atomicebrem = 0.
78 ! assume spin 0 particle is only pi, K
79  if(aptcl%code .ne. kpion .and. aptcl%code .ne. kkaon) then
80 ! spin 1/2 term; (almost negligible)
81  full = full + (wm/e)**2/4.
82  if(aptcl%code .eq. kmuon .and. e .gt. 5000. ) then
83 ! atomic electron brems term. at 5GeV, ~0.4 % 100GeV 2%
84 ! so we neglect below 5GeV
85 ! sh.a*alpha/(2pi) (log(2g)-1/3 log(2u)log^2(2u)
86 ! assuming sh.a/Beta2 = sh.a at E>5GeV
87 ! compute effect without sh.a and add later to full
88  temp = log(2*u)
89  atomicebrem =
90  * 0.00116*(log(2*g)-0.3333*temp)*temp*temp
91  endif
92  endif
93 ! see if restricted energy is requested
94  atomicebremcut = 0.
95  if(wm .gt. w0inmev) then
96 ! yes. requested
97 ! subtract average loss rate from Ek>w0 region
98 ! loss for Ek>w0
99  integ = log(wm/w0inmev) - beta2*(1.0-w0inmev/wm)
100 ! assume spin 0 particle is only pi, K
101  if(aptcl%code .ne. kpion .and. aptcl%code .ne. kkaon) then
102 ! mu, p, etc. spin = 1/2
103  integ = integ + ((wm/e)**2-(w0inmev/e)**2)/4.
104  if(aptcl%code .eq. kmuon .and. e .gt. 5000. ) then
105 ! Integ(0~wm) =Integ(0~w0) + Integ(w0~wm)
106 ! so Integ(w0~wm) = Ineg(0~wm)-Integ(0~w0)
107  temp = log(2*w0inmev/emass)
108  atomicebremcut = atomicebrem-
109  * 0.00116*(log(2*g)-0.3333*temp)*temp*temp
110  endif
111  endif
112  else
113  integ = 0.
114  endif
115  call cdedxdlt(rhoin, g, delta)
116  full = full -delta + atomicebrem
117  restricted = full - integ - atomicebremcut
118 
119  dedt = sha/beta2*restricted
120  dedtf = sha/beta2*full
121 
122 
123  if(truebeta2 .lt. bbbeta2) then
124  c = log(dedt) + ( a* logbbbeta - b )*logbbbeta
125  if( truebeta2 .gt. lindbeta2) then
126  xx = log( truebeta2 )/2.
127  dedt =exp( (-a*xx + b)*xx + c)
128  else
129  dedt = exp( (-a*loglindbeta + b)* loglindbeta + c) *
130  * sqrt(truebeta2)/lindbeta
131  endif
132  dedtf = dedt
133  endif
134 ! x Z**2 and to GeV unit
135  dedt=dedt * aptcl%charge**2 * 1.d-3
136  dedtf=dedtf * aptcl%charge**2 * 1.d-3
137  end
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine cdedxdlt(rhoin, gin, delta)
Definition: cdedxdlt.f:4
max ptcl codes in the kkaon
Definition: Zcode.h:2
subroutine cdedxnone(aPtcl, rhoin, dedt, dedtF)
Definition: cdedxNone.f:9
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
const double masele
Definition: Zmass.h:2
Definition: Zptcl.h:75
max ptcl codes in the kpion
Definition: Zcode.h:2
max ptcl codes in the kmuon
Definition: Zcode.h:2