COSMOS v7.655  COSMOSv7655
(AirShowerMC)
Ztrackp.h
Go to the documentation of this file.
1 /*
2 c Parameters used for Tracking.
3 c (-> --------------------------------------------
4 
5  logical ExactThick !2 If T, a given length is converted into thickness with best accuracy even for very
6  ! inclined trajectory by using numerical integration.
7  logical IncMuonPolari !1 if T, consider muon polarization
8  logical Freec !1 if F, the first interaction point is forced to be the injection point else
9  ! the interaction poin is randomly sampled.
10  integer OneDim !1 If 0, 3 dimensional simulation. if $\ge$1, one
11  ! dimensional simulation is performed. \newline
12  ! 1: onedim without use of table. \newline
13  ! 2: table is used for thickness $ \leftrightarrow$ length conversion. if cos $<$ .5 \newline
14  ! 3: table is always used for any angle.
15  ! ( for height $>$ 30 km, table is not used in any case).
16  real*8 LamorDiv !2 In the geomagnetic field, a charged particle can travel almost streight
17  ! in (Lamor Radius)/LamorDiv. Default is 5. For AMS like tracking 20 may be needed.
18  real*8 Truncc !2 coeff. for truncating path.
19  real*8 Truncn !2 coeff. for truncating path.
20  real*8 Truncx !2 coeff. for truncating path.
21  real*8 KEminObs !1 The min kinetic energy of particles for observation.
22  real*8 KEminObs2 !2 Don't touch this. skeleton/flesh use.
23  real*8 RatioToE0 !2 In the A.S generation, hadronic interactions are followed down to at
24  ! least RatioToE0 * E0/nucleon energy.
25  real*8 WaitRatio !1 Wait A.S generation until the electron energy, Ee, becomes $<$ WaitRatio* E0.
26  ! This many be 1.0 for hadron origin case. But for gamma/electron primary,
27  ! this should be as low as 0.01 to enjoy full fluctuation.
28  integer EndLevel !2 Used for skeleton/flesh-out job. In a normal job, system default value 0 is reset by
29  ! the system to be the max number of observation levels. (=NoOfSites). Its real use is in such a
30  ! skeleton/flesh-out job that one first follows the particles up to some high depth and later chooses
31  ! events and flesh them out to deeper depths. In such a skeleton-making job, the user must give the
32  ! depth list which is used flesh-out job, too. In the skeleton job, particle tracking is terminated
33  ! at the level specified by EndLevel. In such a flesh-out job, the user must give a larger value
34  ! or 0 to EndLevel
35  integer EndLevel2 !2 Don't worry. This is system use.
36  integer Trace !1 Flag for trace information output.\newline
37  ! 0 $\rightarrow$ no trace information is output.\newline
38  ! $<$10$\rightarrow$ x, y, z in the primary system(say, 1)\newline
39  ! $<$20 $\rightarrow$ x, y, in the primary sys. z in kg/m$^2$.(say,11)\newline
40  ! $<$30 $\rightarrow$ x, y, z in the detector system\newline
41  ! $<$40 $\rightarrow$ x, y, in the detector system. z in kg/m2\newline
42  ! $<$50 $\rightarrow$ x, y, z in 'xyz' system.\newline
43  ! $<$60 $\rightarrow$ x,y, in 'xyz' and z in kg/m2\newline
44  ! 61-100 $\rightarrow$ for Cherenkov observation. For Coord system, subtract 60.\newline
45  ! if the value is even, binary output is made on TraceDev.\newline
46  ! if the last digit is 1 or 2, trace is always taken. if the last digit is 3 or 4, trace is taken
47  ! only if the particle is located below the heighest observation depeth.
48  ! $>$ 101 $\rightarrow$ subtract 100 and apply the above, but chookTrace or chookCeren are used.\newline
49  ! Primary system: Origin is the deepest detector. Z-axis is the primary direction.
50  ! X-axis is Z x Vertical axis. X-Y plane is orthogonal to the primary.\newline
51  ! Detector system: origin is the deepest detector. Z-axis is the vertical one. X-axis is
52  ! directed to the magnetic east. X-Y plane is horizontal.\newline
53  ! z in kg/m$^2$ : Vertical depth in kg/m$^2$ above the deepest detector to the particle.
54  integer TraceDev !2 Logical dev \# for TraceDir/trace1,2,....
55  character*70 TraceDir !1 Directory. Default Trace information is put TraceDir/trace1, 2,..
56  ! for event 1, 2, ... The directory should exist. Default is ' ' and in this case
57  ! /tmp/YourLoginName/ is employed. The last "/" should not be given.
58  ! *** NOTE that default Cherenkov output is made only using TraceDev,
59  ! TraceDir is not used. You have to open the disk file at chookbgRun
60  ! It can by binary or ascii file depending on Trace value.
61  logical ThinSampling !1 if F, thinsampling is not tried. if T, alla Hillas thinning. Don't use with
62  ! the skeleton/flesh method
63  real*8 EthinRatio(2) !2 if ThinsSamplig != F, thin sampling is performed if the energy of a particle is
64  ! $<$ EthinRatio * PrimaryEnergy(/nucleon) (=Ethin) ( EtinRatio$>$ 0).
65  ! If EthinRatio $<$ 0, Ethin will be |EthinRatio| (GeV).
66  logical TimeStructure !1 If T, time information is computed
67  integer HowGeomag !2 if 1, no magnetic field until first coll. \newline
68  ! 2, mag.f always exists. If Reverse not=0, use this. \newline
69  ! 11, same as 1 but mag.f is const. \newline
70  ! 12, same as 2 but mag.f is const. \newline
71  ! 21, same as 1 but mag.f is const. \newline
72  ! 22, same as 2 but mag.f is const. \newline
73  ! 31, same as 1 but mag.f is dependent on the position. \newline
74  ! const value is the one at deepest observation plane. for 11,12 or should be given by
75  ! MagN, MagE, MagD for 21, 22. For normal applications, 11 is good.
76  ! If no magnetic field is applied, energy loss by dE/dx is considered.(bef.4.92,
77  ! and aft. 5.14)
78  real*8 MagN !2 See HowGeomag (in Tesla)
79  real*8 MagE !2 See HowGeomag (in Tesla)
80  real*8 MagD !2 See HowGeomag (in Tesla)
81 
82  real*8 MagChgDist !2 Distance where mag. can be seen as const.(m) at sea level
83  integer UseRungeKutta !2 How to calculate deflection by the geomagnetic field. Let L be the distance
84  ! the particle travels. \newline
85  ! 0$\rightarrow$Don't use RungeKutta method. Use the solution assuming the constant B, which
86  ! is exact if B is const. Since the particle path is made short, this is
87  ! enough for normal cases where particles are inside the atmosphere.(default) \newline
88  ! In every case below, if the particle height is $<$ 30km
89  ! (= cheight in ccomPathEnd.f), the same method as 0 is used. \newline
90  ! 1$\rightarrow$ Use the Euler method. Time needed is 20\% more than the 0 case.
91  ! As B, use the value at L/2 point obtained by using the current direction. \newline
92  ! 2$\rightarrow$ mixture of 1 and Runge-Kutta-Gill method. If gradient of B is large, RKG is
93  ! employed. This needs $\sim$4 times more cpu time than case of 1 when making a
94  ! cutoff table. The step size of RKG is $\sim$1/10 of the Lamore radius. \newline
95  ! 3$\rightarrow$ The same as 2 but use the Runge-Kutta-Fehlberg method instead of RKG.
96  ! Step size is automattically adjusted ($\sim$1/20 $\sim$1/30 of Lamor radius) \newline
97  ! 4$\rightarrow$ As a middle point, use the point obtained by assuming the constant B at
98  ! initial point. If grad B is still large, use RKG. \newline
99  ! 5$\rightarrow$ The same as 4 but us RKF instead of RKG. \newline
100  ! 6$\rightarrow$ Use always RKG \newline
101  ! 7$\rightarrow$ Use always RKF. This takes very long time.(50 times of 0). \newline
102  real*8 BorderHeightH !2 If a particle goes higher than this, discard it. This should be larger than
103  ! HeightOfInj or 0.
104  ! If 0, it is adjusted to be the same as HeightOfInj. NOTE: For upgoin primary cases, you have
105  ! to set this one explicitly.
106  real*8 BorderHeightL !2 If a particle reaches this hight, call observation routine. No further tracking is done.
107  ! This is for neutrino observation. See ObsPlane.
108  real*8 BackAngLimit !2 If the cosine of the angle between a particle and the primary becomes smaller than
109  ! this value, the particle is discarded. See also BorderHeighH. If you give a value
110  ! less than -1.0, such rejection will never happen. Default is -1.0
111  character*16 Generate !1 specify what should be generated \newline
112  ! 1) Electro-magnetic cascade(em), \newline
113  ! 2) one dimensional hybrid AS(as/qas) and/or \newline
114  ! 3) AS Lateral distribution(lat). \newline
115  ! If Generate= ' ', hadronic cascade shower is generated. \newline
116  ! For example, you may give as follows: \newline
117  ! Generate='em,as' or 'em/as' (order/case/separator insensitive) is to generate EM-cascade and AS. \newline
118  ! Generate='as' will generate AS with some adequate EM cascade (EM cascade is automatically generated
119  ! so that hybrid A.S can be observed, but the minimum energy in EM cascade is independent of KEminObs). \newline
120  ! If 'qas' is given, quick generation of AS for heavy primaries is tried. See chookASbyH.f
121 
122  character*16 Generate2 !2 don't touch this. for skeleton/flesh use.
123 
124  integer MagBrem !2 If 0, no magnetic bremsstrahlung is considered. \newline
125  ! if 1 and Ee $>$ MagBremEmin, energy loss due to magnetic brems is considered \newline
126  ! if 2 and Ee $>$ MagBremEmin, real sampling of gamma is performed. \newline
127  ! (note, actually upsilon is referred further).
128  ! if generate='as' with really high energy primaries, WaitRatio
129  ! must be made small so that WaitRatio*E0 $\sim$ MagBremEmin
130  integer MagPair !2 If 0, no magnetic pair creation is considered. \newline
131  ! if 1 and Eg > MagPairEmin, real sampling is tried.
132  ! (note, actually upsilon is referred further). To see these magnetic effects,
133  ! HowGeoMag=2 and HightOfInj $\sim$ 5000 km are desirable.
134 
135  logical LpmEffect !1 If t, the LPM effect is considered when Ee $>$ LpmBremEmin for electrons and
136  ! Eg $>$ LpmPairEmin for gamma rays.
137 
138  real*8 MagBremEmin !2 E $>$ this, magnetic bremsstrahlung by electrons may be considered. However, if
139  ! MagBrem = 0, not considered at all \newline
140  ! MagBrem = 1, total energy loss due to brems is considered. \newline
141  ! MagBrem = 2, gamma energy is sampled actually. \newline
142  ! If upsilon (Ee/m * B/Bcr) is small, the effective treatment will be
143  ! the same as MagBrem = 0 case.
144  real*8 MagPairEmin !2 E $>$ this, magnetic pair creation by gamma may be considered. However, if
145  ! MagPair = 0, not considered at all. \newline
146  ! MagPair = 1, pair creation is sampled. \newline
147  ! However, again, actual occurrence will be dependent on the angle between
148  ! B and photon direction.
149  real*8 UpsilonMin !2 Magnetic bremsstralhung is considered only if upsilon $>$ UpsilonMin.
150  real*8 LpmBremEmin !2 The LPM effect is taken into account for bremsstrahlung when LpmEffect is .true.
151  ! and the electron energy is higher than this.
152  real*8 LpmPairEmin !2 The LPM effect is taken into account for pair creation when LpmEffect is .true.
153  ! and the gamma energy is higher than this.
154  integer Reverse !2 0$\rightarrow$ Normal tracking. \newline
155  ! 1$\rightarrow$ incident is tracked to a direction opposite to the given one.
156  ! the incident is charge-conjugated.
157  ! All interactions are ignored. (Use when to make cut-off table or to see
158  ! a given particle (say, observed anti proton) can go out of Earth. \newline
159  ! 2$\rightarrow$ same as 1 but energy gain (not loss) is taken into account
160  ! TimeStructure should be T if Reverse != 0. See BackAnglLimit.
161 
162  real*8 PathLimit !2 If the sum of (path/beta) of a particle exceeds this, it is judged as dead.
163  ! (to avoid infinite cyclotron loop). However, for normal applications,
164  ! this will not be effective because of BackAnglLimit. See Reverse.
165  ! TimeStructure should be T if Reverse != 0 and PathLimit is to be effective.
166 
167  integer MuNI !2 0$\rightarrow$ nuclear interaction of muon is completely neglected \newline
168  ! 1$\rightarrow$ energy loss by n.i is subsumed in dE/dx of muons as a continuous energy loss. Let v=
169  ! Etransfer/Emu, the loss here is Int(vc:vmax) of (Emu vdsigma/dv). (vc $\sim$0, vmax$\sim$1). \newline
170  ! 2$\rightarrow$ (Default value). similar to 1 but as the continuous loss only v $<$ vmin=10$^{-3}$ of
171  ! fractional muon energy is subsumed (Int(vc: vmin) of (Emu vdsigma/dv)). The portion
172  ! of loss by v$>$vmin is treated as a stocastic process. However, the product from the
173  ! n.i itself is neglected \newline
174  ! 3$\rightarrow$ the same as 2, but the n.i is explicitly included to produce a number of particles.
175  ! The n.i is treated as a photo-nucleus interaction.
176  integer MuBr !2 parameter similar to MuNI but for bremsstrahlung by muons.
177  integer MuPr !2 parameter similar to MuNI but for pair creation by muons.
178 
179 c <-) ----------------------------------------------
180 */
181 
182 // not cztrackp; due to spelling mistake in Fortran
183 extern struct cztracp {
184  double truncc;
185  double truncn;
186  double truncx;
187  double keminobs;
188  double keminobs2;
189  double ratiotoe0;
190  double pathlimit;
191  double waitratio;
192  double ethinratio[2];
193  double backanglimit;
194  double lamordiv;
196  double magn;
197  double mage;
198  double magd;
199  double magchgdist;
201  int muni;
202  int mubr;
203  int mupr;
204  double magbrememin;
205  double magpairemin;
206  double upsilonmin;
207  double lpmbrememin;
208  double lpmpairemin;
213  int trace;
214  int tracedev;
216  int onedim;
217  int reverse;
220  int magbrem;
221  int magpair;
223  int endlevel;
225 } cztracp_;
226 
227 
228 #define Truncc cztracp_.truncc
229 #define Truncn cztracp_.truncn
230 #define Truncx cztracp_.truncx
231 #define KEminObs cztracp_.keminobs
232 #define KEminObs2 cztracp_.keminobs2
233 #define RatioToE0 cztracp_.ratiotoe0
234 #define PathLimit cztracp_.pathlimit
235 #define WaitRatio cztracp_.waitratio
236 #define EthinRatio cztracp_.ethinratio
237 #define BackAngLimit cztracp_.backanglimit
238 #define LamorDiv cztracp_.lamordiv]
239 #define BorderHeightH cztracp_.borderheighth
240 #define MagN cztracp_.magn
241 #define MagE cztracp_.mage
242 #define MagD cztracp_.magd]
243 #define MagChgDist cztracp_.magchgdist
244 #define BorderHeightL cztracp_.borderheightl
245 #define MuNI cztracp_.muni
246 #define MuBr cztracp_.mubr
247 #define MuPr cztracp_.mupr
248 #define MagBremEmin cztracp_.magbrememin
249 #define MagPairEmin cztracp_.magpairemin
250 #define UpsilonMin cztracp_.upsilonmin
251 #define LpmBremEmin cztracp_.lpmbrememin
252 #define LpmPairEmin cztracp_.lpmpairemin
253 #define UseRungeKutta cztracp_.userungekutta
254 #define ThinSampling cztracp_.thinsampling
255 #define TimeStructure cztracp_.timestructure
256 #define HowGeomag cztracp_.howgeomag
257 
258 #define TraceDir cztrackpc_.tracedir
259 
260 #define TraceDev cztracp_.tracedev
261 #define Trace cztracp_.trace
262 #define ExactThick cztracp_.exactthick
263 #define OneDim cztracp_.onedim
264 #define Reverse cztracp_.reverse
265 #define Freec cztracp_.freec
266 #define IncMuonPolari cztracp_.incmuonpolari
267 #define MagBrem cztracp_.magbrem
268 #define MagPair cztracp_.magpair
269 #define LpmEffect cztracp_.lpmeffect
270 #define EndLevel2 cztracp_.endlevel2
271 #define EndLevel cztracp_.endlevel
272 
273 extern struct cztrackpc {
274  char generate[16];
275  char generate2[16];
276  char tracedir[70];
277  DUMMYCHAR
278 } cztrackpc_;
279 
280 #define Generate2 cztrackpc_.generate2
281 #define Generate cztrackpc_.generate
#define DUMMYCHAR
Definition: Zdef.h:8
double keminobs
Definition: Ztrackp.h:187
double lamordiv
Definition: Ztrackp.h:194
int endlevel2
Definition: Ztrackp.h:224
int onedim
Definition: Ztrackp.h:216
int magpair
Definition: Ztrackp.h:221
logical timestructure
Definition: Ztrackp.h:211
double magbrememin
Definition: Ztrackp.h:204
double truncn
Definition: Ztrackp.h:185
double upsilonmin
Definition: Ztrackp.h:206
int magbrem
Definition: Ztrackp.h:220
logical incmuonpolari
Definition: Ztrackp.h:219
int howgeomag
Definition: Ztrackp.h:212
int muni
Definition: Ztrackp.h:201
int reverse
Definition: Ztrackp.h:217
logical thinsampling
Definition: Ztrackp.h:210
logical lpmeffect
Definition: Ztrackp.h:222
int userungekutta
Definition: Ztrackp.h:209
double magn
Definition: Ztrackp.h:196
int trace
Definition: Ztrackp.h:213
double borderheightl
Definition: Ztrackp.h:200
struct cztrackpc cztrackpc_
double waitratio
Definition: Ztrackp.h:191
int tracedev
Definition: Ztrackp.h:214
double truncc
Definition: Ztrackp.h:184
double mage
Definition: Ztrackp.h:197
int mubr
Definition: Ztrackp.h:202
int logical
Definition: Zdef.h:1
double ratiotoe0
Definition: Ztrackp.h:189
double truncx
Definition: Ztrackp.h:186
int mupr
Definition: Ztrackp.h:203
double ethinratio[2]
Definition: Ztrackp.h:192
double magpairemin
Definition: Ztrackp.h:205
int endlevel
Definition: Ztrackp.h:223
double magd
Definition: Ztrackp.h:198
double magchgdist
Definition: Ztrackp.h:199
logical exactthick
Definition: Ztrackp.h:215
logical freec
Definition: Ztrackp.h:218
double backanglimit
Definition: Ztrackp.h:193
double keminobs2
Definition: Ztrackp.h:188
double borderheighth
Definition: Ztrackp.h:195
double pathlimit
Definition: Ztrackp.h:190
double lpmbrememin
Definition: Ztrackp.h:207
struct cztracp cztracp_
double lpmpairemin
Definition: Ztrackp.h:208