24b575fe88e47ff32b3dc26fc0443ecf8b6b2f8c
[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 //*                                                                      *
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;
125    Int_t    lpkill;
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 }