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