COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cdedxe.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine cdedxe (aPtcl, rho, dedt, dedtF)
 

Function/Subroutine Documentation

◆ cdedxe()

subroutine cdedxe ( type(ptcl aPtcl,
real*8  rho,
real*8  dedt,
real*8  dedtF 
)

Definition at line 9 of file cdedxe.f.

References cdedxdlt(), d0, masele, and parameter().

Referenced by cdedxinair().

9  implicit none
10 #include "Zptcl.h"
11 #include "ZdedxAir.h"
12 #include "Zmass.h"
13 
14  type(ptcl):: aptcl ! input. a Particle (e- or e+)
15  real*8 rho ! input. air density in kg/m3
16  real*8 dedt ! output. restriced dE/dt GeV/(g/cm^2)
17  real*8 dedtf ! output. Full dE/dt GeV/(g/cm^2)
18 
19  real*8 emass
20  real*8 e, gi, beta2, x, cb
21  real*8 g, d, u, f, y
22 
23  real*8 delta
24 
25  real*8 bbbeta2, lindbeta2, truebeta2
26  real*8 bbbeta, lindbeta
27  real*8 logbbbeta, loglindbeta
28  real*8 a, b, c, xx, gra, restricted
29  real*8 full, tm, vc, b1, b2, b3, b4, g1
30  real*8 rkemin ! w0/emass
31  real*8 ln2, tln2
32  parameter(ln2=0.6931471, tln2=2*ln2)
33 
34  parameter(bbbeta = 0.1d0, lindbeta = 0.01d0, gra=4.0d0/3.d0)
35  parameter(bbbeta2 = bbbeta**2, lindbeta2=lindbeta**2)
36  parameter(logbbbeta =-2.302585093e+00,
37  * loglindbeta = -4.605170186e+00)
38  parameter(a = (1.+gra)/2.d0/(logbbbeta-loglindbeta),
39  * b = 2*a*loglindbeta + 1.)
40 !
41 ! (Z/A) I[eV] a k x0 x1 Cbar delta0
42 ! 0.49919 85.7 0.1091 3.3994 1.7418 4.2759 10.5961 0.00
43 ! | this is sh.sa not sh.a
44 
45  real*8 sha, shb
46 ! sha = 0.153536* (media.Z/media.A) = 0.153536*0.49919=0.07664
47 ! shb= 2*log(masele*/I) = 2*log(0.511e6/85.7)=
48  data sha/0.076643d0/, shb/17.38654d0/
49  save sha, shb
50 
51  parameter(emass = masele*1000.d0) ! in MeV
52 
53 
54 ! Energy, mass=emass in MeV unit
55  e = aptcl%fm%p(4)*1000.d0
56  g = e/emass
57  gi= 1.d0/g
58  truebeta2= 1. - gi**2
59  if(truebeta2 .lt. bbbeta2) then
60  beta2 = bbbeta2
61 ! wm = emass*Beta2/2
62  g = (1.+beta2/2)
63  e = emass*g
64  else
65  beta2 = truebeta2
66  endif
67  g1 =g + 1.0
68  u = g - 1.0 ! incident kinetic energy in Me unit
69 ! x=log10(p/mc)
70 ! x=log10( (E/emass)**2 - 1. ) / 2 ! = log10(gbeta) = 0.4343log(gbeta)
71  x=log10( g**2 - 1. ) / 2 ! = log10(gbeta) = 0.4343log(gbeta)
72 ! from v8.80, dltx is not used but usual delta is used.
73 
74 ! dE/dx = sh.a/Beta2* (B0 +sh.b -delta +other)
75 ! other=shell correction < 0.75 % effect at samll E
76 !
77 ! We get restricted dE/dx; i.e knock-on K.E<sh.w0
78 ! First get full dE/dx and subtract dE/dx (>sh.w0)
79 ! (get B0 + sh.b part)
80  rkemin = w0inmev/emass
81  if(aptcl%charge .eq. -1) then
82 ! electron; max recoil kinetic E
83  tm = min(u/2, rkemin)
84 
85  full = shb + log(u**2*g1/2) +
86  * (1.0+u**2/8. -(u+g)*ln2)/g/g
87 
88  if(u/2 .gt. rkemin) then
89 ! possible max recoil > w0; need subtraction
90  vc = rkemin/u
91 ! loss in w0~tm; integrate Moller
92  f = log(0.5/vc)
93  * - (u+g)*gi*gi*(0.5-vc) + (1.-vc/(1.0-vc))
94  * + 0.5*(u*gi)**2 * (0.25-vc**2)
95  * - log(2*(1.-vc)) *(1.+(u+g)*gi*gi)
96 ! next is wrong
97 ! * - (u+g)*gi*(0.5-vc) + (1.-vc/(1.0-vc))
98 ! * + (u*gi)**2* (-log(2*(1.-vc)) + 0.5*(0.25-vc**2))
99  else
100  f =0.
101  endif
102  elseif(aptcl%charge .eq. 1) then
103 ! positron
104  tm = min(u, rkemin)
105  vc = rkemin/u
106  full = shb + log(u**2*g1/2) + tln2 -
107  * beta2/12. * (((4./g1 + 10.)/g1 + 14.0)/g1 + 23.)
108  if(u .gt. rkemin) then
109  y = 1.d0/g1
110  b1 = 2.0-y**2
111  b2 = (1.0-2*y)*(3.0+y**2)
112  b3 = (1.0-2*y)**2 *( 1. + (1.-2*y))
113  b4 = (1.0-2*y)**3
114  f = log(1./vc) -beta2*
115  * (b1*(1.-vc) - b2/2.0*(1.0-vc**2) + b3/3.0*(1.-vc**3)
116  * - b4/4.0*(1.-vc**4) )
117  else
118  f = 0.
119  endif
120  else
121  write(0,*) ' charge is invalid for cdedxe=', aptcl%charge
122  write(0,*) ' ptcl code =', aptcl%code, aptcl%subcode
123  stop
124  endif
125 ! dE/dx fluctuation is not needed in Cosmos
126 ! Tupper = tm*emass/1000.0 ! in GeV; used in Urban
127 ! get delta
128  call cdedxdlt(rho, g, delta)
129  full = full - delta ! density correction
130  restricted = full - f
131  dedt =sha/beta2 *restricted
132  dedtf =sha/beta2 * full
133 
134  if(truebeta2 .lt. bbbeta2) then
135  c = log(dedt) + ( a* logbbbeta - b )*logbbbeta
136  if( truebeta2 .gt. lindbeta2) then
137  xx = log( truebeta2 )/2.
138  dedt =exp( (-a*xx + b)*xx + c)
139 
140  else
141  dedt = exp( (-a*loglindbeta + b)* loglindbeta + c) *
142  * sqrt(truebeta2)/lindbeta
143  endif
144  dedtf = dedt
145  endif
146 ! convert it to gev/(g/cm2)
147  dedt=dedt *1.d-3
148  dedtf = dedtf*1.d-3
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
dE dx *! Nuc Int sampling table e
Definition: cblkMuInt.h:130
subroutine cdedxdlt(rhoin, gin, delta)
Definition: cdedxdlt.f:4
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
Definition: Zcoord.h:25
dE dx *! Nuc Int sampling table d
Definition: cblkMuInt.h:130
const double masele
Definition: Zmass.h:2
real(4), save a
Definition: cNRLAtmos.f:20
dE dx *! Nuc Int sampling table g
Definition: cblkMuInt.h:130
real(4), save b
Definition: cNRLAtmos.f:21
Definition: Zptcl.h:75
! structure defining a particle at production ! Basic idea of what is to be contained in ! the particle structue is that dynamical ones should be included those derivable from the particle code ! is not included ******************************************************type fmom momentum sequence union map real e endmap map real * x
Definition: Zptcl.h:21
dE dx *! Nuc Int sampling table f
Definition: cblkMuInt.h:130
dE dx *! Nuc Int sampling table c
Definition: cblkMuInt.h:130
Here is the call graph for this function:
Here is the caller graph for this function: