10 //*=== trackr ===========================================================*
12 //*----------------------------------------------------------------------*
14 //* tracks recording by alfredo ferrari, infn - milan *
16 //* last change 31 january 2001 by alfredo ferrari *
21 //* kaskad (new version) *
24 //* geoden (new version) *
32 //* ntrack = number of track segments *
33 //* mtrack = number of energy deposition events along the track *
35 //* xtrack = end x-point of the ith track segment *
36 //* ytrack = end y-point of the ith track segment *
37 //* ztrack = end z-point of the ith track segment *
39 //* ttrack = length of the ith track segment *
41 //* dtrack = energy deposition of the jth deposition event *
42 //* dptrck = momentum loss of the jth deposition event *
44 //* Jtrack = identity number of the particle: for recoils or *
45 //* kerma deposition it can be outside the allowed *
46 //* particle id range, assuming values like: *
47 //* 208: "heavy" recoil *
48 //* 211: EM below threshold *
49 //* 308: low energy neutron kerma *
50 //* in those cases the id of the particle originating *
51 //* the interaction is saved inside J0trck (which othe-*
53 //* J0trck = see above *
54 //* Ifltrk = flag used for internal debugging (trying to solve *
55 //* possible residual issues with Mgdraw driven *
57 //* etrack = total energy of the particle *
58 //* ptrack = momentum of the particle (not always defined, if *
59 //* < 0 must be obtained from etrack) *
60 //* cx,y,ztrck = direction cosines of the current particle *
61 //* cx,y,ztrpl = polarization cosines of the current particle *
62 //* wtrack = weight of the particle *
63 //* wscrng = scoring weight: it can differ from wtrack if some *
64 //* biasing techniques are used (for example inelastic *
65 //* interaction length biasing) *
66 //* ctrack = total curved path *
67 //* cmtrck = cumulative curved path since particle birth *
68 //* zfftrk = <z_eff> of the particle *
69 //* zfrttk = actual z_eff of the particle *
70 //* atrack = age of the particle *
71 //* akshrt = kshrt amplitude for k0/k0bar *
72 //* aklong = klong amplitude for k0/k0bar *
73 //* wninou = neutron algebraic balance of interactions (both *
74 //* for "high" energy particles and "low" energy *
76 //* spausr = user defined spare variables for the current *
78 //* sttrck = macroscopic total cross section for low energy *
79 //* neutron collisions *
80 //* satrck = macroscopic absorption cross section for low energy*
81 //* neutron collisions (it can be negative for pnab>1) *
82 //* ktrack = if > 0 neutron group of the particle (neutron) *
84 //* ntrack > 0, mtrack > 0 : energy loss distributed along the *
86 //* ntrack > 0, mtrack = 0 : no energy loss along the track *
87 //* ntrack = 0, mtrack = 0 : local energy deposition (the *
88 //* value and the point are not re- *
89 //* corded in trackr) *
90 //* mmtrck = flag recording the material index for low energy *
91 //* neutron collisions *
92 //* lt1trk = initial lattice cell of the current track *
93 //* (or lattice cell for a point energy deposition) *
94 //* lt2trk = final lattice cell of the current track *
95 //* ihspnt = current geometry history pointer (not set if -1) *
96 //* ltrack = flag recording the generation number *
97 //* llouse = user defined flag for the current particle *
98 //* ispusr = user defined spare flags for the current particle *
99 //* lfsssc = logical flag for inelastic interactions ending with*
100 //* fission (used also for low energy neutrons) *
102 //*----------------------------------------------------------------------*
107 // ispusr[mkbmx2 - 1] : track index in vmcstack
108 // ispusr[mkbmx2 - 2] : flag for "interrupted" track
111 const Int_t mxtrck = 2500;
114 Double_t xtrack[mxtrck+1];
115 Double_t ytrack[mxtrck+1];
116 Double_t ztrack[mxtrck+1];
117 Double_t ttrack[mxtrck];
118 Double_t dtrack[mxtrck];
119 Double_t dptrck[mxtrck][3];
138 Double_t spausr[mkbmx1];
153 Int_t ispusr[mkbmx2];
157 #define TRACKR COMMON_BLOCK(TRACKR,trackr)
158 COMMON_BLOCK_DEF(trackrCommon,TRACKR);
159 //static union { Double_t spause; Double_t spausr[0];};
160 //static union { Int_t ispuse; Int_t ispusr[0];};