beam replaced by beamcm
[u/mrichter/AliRoot.git] / TFluka / Ftrackr.h
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 //*          dptrck = momentum loss of the jth deposition event          *
38 //*                                                                      *
39 //*          jtrack = identity number of the particle                    *
40 //*          etrack = total energy of the particle                       *
41 //*          ptrack = momentum of the particle (not always defined, if   *
42 //*                 < 0 must be obtained from etrack)                    *
43 //*      cx,y,ztrck = direction cosines of the current particle          *
44 //*      cx,y,ztrpl = polarization cosines of the current particle       *
45 //*          wtrack = weight of the particle                             *
46 //*          wscrng = scoring weight: it can differ from wtrack if some  *
47 //*                   biasing techniques are used (for example inelastic *
48 //*                   interaction length biasing)                        *
49 //*          ctrack = total curved path                                  *
50 //*          cmtrck = cumulative curved path since particle birth        *
51 //*          zfftrk = <z_eff> of the particle                            *
52 //*          zfrttk = actual z_eff of the particle                       *
53 //*          atrack = age of the particle                                *
54 //*          akshrt = kshrt amplitude for k0/k0bar                       *
55 //*          aklong = klong amplitude for k0/k0bar                       *
56 //*          wninou = neutron algebraic balance of interactions (both    *
57 //*                   for "high" energy particles and "low" energy       *
58 //*                   neutrons)                                          *
59 //*          spausr = user defined spare variables for the current       *
60 //*                   particle                                           *
61 //*          sttrck = macroscopic total cross section for low energy     *
62 //*                   neutron collisions                                 *
63 //*          satrck = macroscopic absorption cross section for low energy*
64 //*                   neutron collisions (it can be negative for pnab>1) *
65 //*          ktrack = if > 0 neutron group of the particle (neutron)     *
66 //*                                                                      *
67 //*          ntrack > 0, mtrack > 0 : energy loss distributed along the  *
68 //*                                   track                              *
69 //*          ntrack > 0, mtrack = 0 : no energy loss along the track     *
70 //*          ntrack = 0, mtrack = 0 : local energy deposition (the       *
71 //*                                   value and the point are not re-    *
72 //*                                   corded in trackr)                  *
73 //*          mmtrck = flag recording the material index for low energy   *
74 //*                   neutron collisions                                 *
75 //*          lt1trk = initial lattice cell of the current track          *
76 //*                  (or lattice cell for a point energy deposition)     *
77 //*          lt2trk = final   lattice cell of the current track          *
78 //*          ihspnt = current geometry history pointer (not set if -1)   *
79 //*          ltrack = flag recording the generation number               *
80 //*          llouse = user defined flag for the current particle         *
81 //*          ispusr = user defined spare flags for the current particle  *
82 //*          lfsssc = logical flag for inelastic interactions ending with*
83 //*                   fission (used also for low energy neutrons)        *
84 //*                                                                      *
85 //*----------------------------------------------------------------------*
86 //
87
88 //
89 // TFluka specific:
90 // ispusr[mkbmx2 - 1] : track index in vmcstack
91 // ispusr[mkbmx2 - 2] : flag for "interrupted" track
92 //
93     
94 const Int_t mxtrck = 2500;
95
96 typedef struct {
97    Double_t xtrack[mxtrck+1];
98    Double_t ytrack[mxtrck+1];
99    Double_t ztrack[mxtrck+1];
100    Double_t ttrack[mxtrck];
101    Double_t dtrack[mxtrck];
102    Double_t dptrck[mxtrck][3];
103    Double_t etrack;
104    Double_t ptrack;
105    Double_t cxtrck;
106    Double_t cytrck;
107    Double_t cztrck;
108    Double_t wtrack;
109    Double_t cxtrpl;
110    Double_t cytrpl;
111    Double_t cztrpl;
112    Double_t zfftrk;
113    Double_t zfrttk;
114    Double_t atrack;
115    Double_t ctrack;
116    Double_t cmtrck;
117    Double_t akshrt;
118    Double_t aklong;
119    Double_t wscrng;
120    Double_t wninou;
121    Double_t spausr[mkbmx1];
122    Double_t sttrck;
123    Double_t satrck;
124    Int_t    ntrack;
125    Int_t    mtrack;
126    Int_t    jtrack;
127    Int_t    ktrack;
128    Int_t    mmtrck;
129    Int_t    lt1trk;
130    Int_t    lt2trk;
131    Int_t    ihspnt;
132    Int_t    ltrack;
133    Int_t    llouse;
134    Int_t    ispusr[mkbmx2];
135    Int_t    lfsssc;
136    Int_t    lpkill;
137 } trackrCommon;
138 #define TRACKR COMMON_BLOCK(TRACKR,trackr)
139 COMMON_BLOCK_DEF(trackrCommon,TRACKR);
140 //static union { Double_t spause; Double_t spausr[0];};
141 //static union { Int_t    ispuse; Int_t    ispusr[0];};
142 }