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

Go to the source code of this file.

Functions/Subroutines

subroutine cixsec
 

Function/Subroutine Documentation

◆ cixsec()

subroutine cixsec ( )

Definition at line 2 of file cixsec.f.

References d0.

Referenced by cbeginrun().

2 ! setup Air media for cross-section calculations
3  use modxsecmedia
4 !! use modBremPairAng
5  implicit none
6 #include "Zglobalc.h"
7 #include "Ztrackp.h"
8 #include "Ztrack.h"
9 #include "Ztrackv.h"
10 #include "Zevhnp.h"
11 #include "Zevhnv.h"
12 #include "Zcode.h"
13 
14 ! c
15 
16 ! real*8 shp, xsecmin, xsecstep
17 ! parameter ( xsecmin = 10.d0, xsecstep = 10 )
18  integer i, j, mbindex, jcon
19  integer,parameter::noofelem = 3
20  real(8),save::elema(noofelem)=(/14.0d0, 16.0d0, 40.0d0/)
21  real(8),save::elemz(noofelem)=(/7.0d0, 8.0d0, 18.0d0/)
22 ! real(8),save::No(noOfElem)=(/1.56d0, 0.42d0, 0.01d0/)
23 ! if next is not normalized, correct xsec will be obtained.
24 ! if normalized, same as above. correct xs may be obtained
25 ! by multiling ~2.55 in that case. mfp is correct in
26 ! either case.
27  real(8),save::no(noofelem)=(/2.0d0, 0.5385d0, 0.0128d0/)
28 
29 ! elemS(noOfElem, nxsec), sigma(nxsec)
30 ! real*8 cumsigma(noOfElem, nxsec)
31 
32  real*8 u, tga, tgz
33 
34 ! TargetMassN = 14.55 ! sum( Ai*Noi) / sum (Noi )
35 ! TargetAtomicN = 7.266 ! sum( Zi*Noi) / sum(Noi)
36 ! TargetZ2 = 53.54 (cf. <Z>^2 = 52.8)
37 
38 
39  call callocxsmediaarray(1)
40  call callocxselemarray(1,noofelem)
41  media(1)%elem(:)%OrigNo = no(:)
42  media(1)%sumNo = sum( no(:) )
43  ! normalized
44  no(:) = no(:) /media(1)%sumNo
45 
46  targetmassn =sum( no(:)*elema(:) )
47  targetatomicn = sum( no(:)*elemz(:) )
48 
49  media(1)%name = "Air"
50  media(1)%noOfElem = noofelem
51  media(1)%elem(:)%A = elema(:)
52 
53  media(1)%elem(:)%Z = elemz(:)
54  media(1)%elem(:)%No = no(:)
55 ! mfp = A2deninv*TargetMassN/xs ! in kg/m2
56  media(1)%mbtoPkgrm = 1.d0/(a2deninv*targetmassn)
57 ! then, mfp = 1/(mbtoPkgrm*xs) ! in kg/m2
58  targetz2 = sum( no(:)*elemz(:)**2 )
59 ! TargetZ2_3rd = TargetAtomicN**0.66666
60  targetz2_3rd = sum( no(:)*elemz(:)**(2.d0/3.d0) )
61 ! TargetZ1_3rd = TargetAtomicN**0.33333
62  targetz1_3rd = sum( no(:)*elemz(:)**(1.d0/3.d0) )
63 !//////////
64 ! <A>= 14.5527638190955
65 ! <Z>= 7.26633165829146
66 ! <Z^2>= 53.5477386934673
67 ! <Z>^2= 52.7995757682887
68 ! <Z>^(2/3)= 3.75149534225373
69 ! <Z>^(1/3)= 1.93687773033140
70 ! <Z^(2/3)>= 3.74733626838206
71 ! <Z^(1/3)>= 1.93486427511770
72 ! write(0,*) "<A>=", TargetMassN
73 ! write(0,*) "<Z>=", TargetAtomicN
74 ! write(0,*) "<Z^2>=", TargetZ2
75 ! write(0,*) "<Z>^2=", TargetAtomicN**2
76 ! write(0,*) "<Z^(2/3)>=", TargetZ2_3rd
77 ! write(0,*) "<Z^(1/3)>=", TargetZ1_3rd
78 !////////////
79 
80  mediumno=1 ! for Air, fixed
81  targetnucleonno = 14 ! these 2 will be updated
82  targetprotonno =7 ! for each collision (also TargetXs)
83  ! Target... were used before xsmedia was introduced
84  ! in Cosmos. We can live without Target.. but
85  ! are kept for easy modifcation.
86 ! do j = 1, noOfElem
87 ! shp = xsecmin ! (say 10mb)
88 ! do i = 1, nxsec
89 ! call cxp2xAXsec(elemA(j), shp,elemS(j,i))
90 ! shp = shp + xsecstep
91 ! enddo
92 ! enddo
93 
94 
95 ! do i = 1, nxsec
96 ! sigma(i) = 0.
97 ! do j = 1, noOfElem
98 ! sigma(i) = sigma(i) + No(j)* elemS(j,i)
99 ! enddo
100 ! enddo
101 
102 ! do i = 1, nxsec
103 ! do j = 1, noOfElem
104 ! cumsigma(j, i) =
105 ! * No(j)*elemS(j,i)/sigma(i)
106 ! enddo
107 ! enddo
108 !
109 ! do i = 1, nxsec
110 ! do j = 2, noOfElem
111 ! cumsigma(j, i) =
112 ! * cumsigma(j, i) + cumsigma(j-1, i)
113 ! enddo
114 !c for safety
115 ! cumsigma(noOfElem, i) = 1.0
116 ! enddo
117 ! &&&&&&
118 ! do i = 1, nxsec
119 ! write(*,*) ' sigma=', sigma(i)
120 ! write(*,*) (cumsigma(j, i), j=1,noOfElem)
121 ! enddo
122 ! &&&&&&
123 
124 
125 !!!!!!!!!!!!!!!
126 !
127 ! exerpt from epGetEffZA; only for rigorous Moliere scattering
128 !
129 ! sum = 0.
130 ! media.A = 0.
131 ! media.Z = 0.
132 ! media.Z2 = 0.
133 ! media.ZZ1 = 0.
134 ! media.MoliereExpb = 0.
135 ! media.Z1_3rd =0.
136 ! media.Z2_3rd =0.
137 ! do i = 1, nc
138 ! media.A = media.A + media.No(i)* media.elem(i).A
139 ! media(1)%A = sum( media(1)%elem(:)%No* media(1)%elem(:)%A )
140 ! TargetMassN =sum( No(:)*elemA(:) )
141  media(1)%A = targetmassn
142 
143 ! media.Z = media.Z + media.No(i)* media.elem(i).Z
144 ! media(1)%Z = sum( media(1)%elem(:)%No* media(1)%elem(:)%Z )
145 ! TargetAtomicN = sum(No(:)*elemZ(:))
146  media(1)%Z = targetatomicn
147 
148 ! media.Z2 = media.Z2 + media.No(i)* media.elem(i).Z**2
149 
150  media(1)%Z2 = sum( no(:)* elemz(:)**2 )
151 ! media.ZZ1 = media.ZZ1 +
152 ! * media.No(i)* media.elem(i).Z*(media.elem(i).Z + 1.)
153 ! media(1)%ZZ1 = sum(
154 ! * media(1)%elem(:)%No*
155 ! * media(1)%elem(:)%Z*(media(1)%elem(:)%Z + 1.)
156 ! * )
157 
158  media(1)%ZZ1 = sum( no(:)* elemz(:)*(elemz(:) + 1) )
159 
160 
161 ! for beta=1 and z=1; Moliere's exp(b) = MoliereExb*t
162 ! media.MoliereExpb = media.MoliereExpb +
163 ! * media.No(i)*media.elem(i).Z**0.333333 *
164 ! * (media.elem(i).Z+1.d0)/
165 ! * (1.0d0 + 3.327d0*(media.elem(i).Z/137.d0)**2)
166 
167  media(1)%MoliereExpb = sum(
168  * media(1)%elem(:)%No*media(1)%elem(:)%Z**0.333333*
169  * (media(1)%elem(:)%Z+1.d0)/
170  * (1.0d0 + 3.327d0*(media(1)%elem(:)%Z/137.d0)**2)
171  * )
172 
173 ! media.Z1_3rd = media.Z1_3rd
174 ! * + media.No(i)* media.elem(i).Z**(1./3.)
175 ! media.Z2_3rd = media.Z2_3rd
176 ! * + media.No(i)* media.elem(i).Z**(2./3.)
177 ! enddo
178 ! only for e+/e-
179  media(1)%MoliereForXc2 =0.6011 * media(1)%ZZ1/media(1)%A
180 
181  media(1)%MoliereExpb = 6702. * media(1)%MoliereExpb/
182  * media(1)%A
183 ! for brems/pair angle v7.646; removed
184 ! call cBremPairAngInit(1, media(1)%A, media(1)%Z)
nodes i
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
Definition: cblkHeavy.h:36
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
Definition: cblkEvhnp.h:5
Here is the caller graph for this function: