fa3d1cc7 |
1 | extern "C" { |
2 | //*$ create trackr.add |
3 | //*copy trackr |
4 | //* * |
5 | //*=== trackr ===========================================================* |
6 | //* * |
7 | //*----------------------------------------------------------------------* |
8 | //* * |
9 | //* tracks recording by alfredo ferrari, infn - milan * |
10 | //* * |
11 | //* last change 31 january 2001 by alfredo ferrari * |
12 | //* * |
13 | //* included in : * |
14 | //* electr * |
15 | //* emfsco * |
16 | //* kaskad (new version) * |
17 | //* kashea * |
18 | //* kasneu * |
19 | //* geoden (new version) * |
20 | //* mageas * |
21 | //* magmov * |
22 | //* magnew * |
23 | //* move * |
24 | //* photon * |
25 | //* usrsco * |
26 | //* * |
27 | //* ntrack = number of track segments * |
28 | //* mtrack = number of energy deposition events along the track * |
29 | //* 0 < i < ntrack * |
30 | //* xtrack = end x-point of the ith track segment * |
31 | //* ytrack = end y-point of the ith track segment * |
32 | //* ztrack = end z-point of the ith track segment * |
33 | //* 1 < i < ntrack * |
34 | //* ttrack = length of the ith track segment * |
35 | //* 1 < j < mtrack * |
36 | //* dtrack = energy deposition of the jth deposition event * |
37 | //* * |
38 | //* jtrack = identity number of the particle * |
39 | //* etrack = total energy of the particle * |
40 | //* ptrack = momentum of the particle (not always defined, if * |
41 | //* < 0 must be obtained from etrack) * |
42 | //* cx,y,ztrck = direction cosines of the current particle * |
43 | //* cx,y,ztrpl = polarization cosines of the current particle * |
44 | //* wtrack = weight of the particle * |
45 | //* wscrng = scoring weight: it can differ from wtrack if some * |
46 | //* biasing techniques are used (for example inelastic * |
47 | //* interaction length biasing) * |
48 | //* ctrack = total curved path * |
49 | //* zfftrk = <z_eff> of the particle * |
50 | //* zfrttk = actual z_eff of the particle * |
51 | //* atrack = age of the particle * |
52 | //* akshrt = kshrt amplitude for k0/k0bar * |
53 | //* aklong = klong amplitude for k0/k0bar * |
54 | //* wninou = neutron algebraic balance of interactions (both * |
55 | //* for "high" energy particles and "low" energy * |
56 | //* neutrons) * |
57 | //* spausr = user defined spare variables for the current * |
58 | //* particle * |
59 | //* sttrck = macroscopic total cross section for low energy * |
60 | //* neutron collisions * |
61 | //* satrck = macroscopic absorption cross section for low energy* |
62 | //* neutron collisions (it can be negative for pnab>1) * |
63 | //* ktrack = if > 0 neutron group of the particle (neutron) * |
64 | //* * |
65 | //* ntrack > 0, mtrack > 0 : energy loss distributed along the * |
66 | //* track * |
67 | //* ntrack > 0, mtrack = 0 : no energy loss along the track * |
68 | //* ntrack = 0, mtrack = 0 : local energy deposition (the * |
69 | //* value and the point are not re- * |
70 | //* corded in trackr) * |
71 | //* mmtrck = flag recording the material index for low energy * |
72 | //* neutron collisions * |
73 | //* lt1trk = initial lattice cell of the current track * |
74 | //* (or lattice cell for a point energy deposition) * |
75 | //* lt2trk = final lattice cell of the current track * |
76 | //* ihspnt = current geometry history pointer (not set if -1) * |
77 | //* ltrack = flag recording the generation number * |
78 | //* llouse = user defined flag for the current particle * |
79 | //* ispusr = user defined spare flags for the current particle * |
80 | //* lfsssc = logical flag for inelastic interactions ending with* |
81 | //* fission (used also for low energy neutrons) * |
82 | //* * |
83 | //*----------------------------------------------------------------------* |
84 | //* * |
85 | const Int_t mxtrck = 2500; |
86 | |
87 | typedef struct { |
88 | Double_t xtrack[mxtrck+1]; |
89 | Double_t ytrack[mxtrck+1]; |
90 | Double_t ztrack[mxtrck+1]; |
91 | Double_t ttrack[mxtrck]; |
92 | Double_t dtrack[mxtrck]; |
93 | Double_t etrack; |
94 | Double_t ptrack; |
95 | Double_t cxtrck; |
96 | Double_t cytrck; |
97 | Double_t cztrck; |
98 | Double_t wtrack; |
99 | Double_t cxtrpl; |
100 | Double_t cytrpl; |
101 | Double_t cztrpl; |
102 | Double_t zfftrk; |
103 | Double_t zfrttk; |
104 | Double_t atrack; |
105 | Double_t ctrack; |
106 | Double_t akshrt; |
107 | Double_t aklong; |
108 | Double_t wscrng; |
109 | Double_t wninou; |
110 | Double_t spausr[mkbmx1]; |
111 | Double_t sttrck; |
112 | Double_t satrck; |
113 | Int_t ntrack; |
114 | Int_t mtrack; |
115 | Int_t jtrack; |
116 | Int_t ktrack; |
117 | Int_t mmtrck; |
118 | Int_t lt1trk; |
119 | Int_t lt2trk; |
120 | Int_t ihspnt; |
121 | Int_t ltrack; |
122 | Int_t llouse; |
123 | Int_t ispusr[mkbmx2]; |
124 | Int_t lfsssc; |
cd4c194d |
125 | Int_t lpkill; |
fa3d1cc7 |
126 | } trackrCommon; |
127 | #define TRACKR COMMON_BLOCK(TRACKR,trackr) |
128 | COMMON_BLOCK_DEF(trackrCommon,TRACKR); |
129 | //static union { Double_t spause; Double_t spausr[0];}; |
130 | //static union { Int_t ispuse; Int_t ispusr[0];}; |
131 | } |