First commit common block (FLKSTK)
[u/mrichter/AliRoot.git] / TFluka / Fflkstk.h
1 #ifndef FFLKSTK_H
2 #define FFLKSTK_H 1
3
4 #include "cfortran.h"
5 #include "Rtypes.h"
6
7 #include "Fdimpar.h"
8
9 extern "C" {
10 //*$ create flkstk.add
11 //*copy flkstk
12 //*
13 //*=== flkstk ============================================================*
14 //*
15 //*----------------------------------------------------------------------*
16 //*                                                                      *
17 //*     FLUKA90-200x particle stack:                                     *
18 //*                                                                      *
19 //*     Changes: last change on 15-may-2005   by    Alfredo Ferrari      *
20 //*                                                  INFN, Milan         *
21 //*                                                                      *
22 //*                                                                      *
23 //*     description of the common block(s) and variable(s)               *
24 //*                                                                      *
25 //*     /Flkstk/ stack for the primaries                                  *
26 //*        Wt     = particle statistical weight                          *
27 //*        Pmom   = particle (laboratory) momentum (GeV/c)               *
28 //*        Tke    = particle (laboratory) kinetic energy (GeV)           *
29 //*        Xa     = particle position  x-coordinate                      *
30 //*        Ya     = particle position  y-coordinate                      *
31 //*        Za     = particle position  z-coordinate                      *
32 //*        Tx     = particle direction x-coordinate                      *
33 //*        Ty     = particle direction y-coordinate                      *
34 //*        Tz     = particle direction z-coordinate                      *
35 //*        Txpol  = x direction cosine of the particle polarization      *
36 //*        Typol  = y direction cosine of the particle polarization      *
37 //*        Tzpol  = z direction cosine of the particle polarization      *
38 //*        Txnor  = x direction cosine of a (possible) surface normal    *
39 //*        Tynor  = y direction cosine of a (possible) surface normal    *
40 //*        Tznor  = z direction cosine of a (possible) surface normal    *
41 //*        Dfnear = distance to the nearest boundary                     *
42 //*        Agestk = age of the particle (seconds)                        *
43 //*        Aknshr = Kshort component of K0/K0bar                         *
44 //*        Frcphn = cross section for force photonuclear interaction (if *
45 //*                 < 0), distance to a forced photonuclear interaction  *
46 //*                (if > 0)                                              *
47 //*        Lfrphn = flag for forced photonuclear interaction             *
48 //*        Raddly = delay (s) in production wrt the nominal primary "0"  *
49 //*                 time for particle produced in radioactive decays     *
50 //*                (i.e. those coming from decays of daughter isotopes)  *
51 //*        Cmpath = cumulative path travelled by the particle since it   *
52 //*                 was produced (cm)                                    *
53 //*        Sparek = spare real variables available for K.W.Burn          *
54 //*        Ispark = spare integer variables available for K.W.Burn       *
55 //*        Ilo    = particle identity (Paprop numbering)                 *
56 //*        Igroup = energy group for low energy neutrons                 *
57 //*        Lo     = particle generation                                  *
58 //*        Louse  = user flag                                            *
59 //*        Nreg   = particle region number                               *
60 //*        Nlattc = particle lattice cell number                         *
61 //*        Nhspnt = pointer to the history object (Geant4 geometry)      *
62 //*        Nevent = number of the event which created the particle       *
63 //*        Numpar = particle number                                      *
64 //*        Lraddc = flag for particles generated in radioactive decays   *
65 //*        Nparma = largest particle number ever reached                 *
66 //*        Mstack = stack size                                           *
67 //*        Lstmax = highest value of the stack pointer ever reached      *
68 //*                 in the run                                           *
69 //*        Lstack = stack pointer                                        *
70 //*        Lstaol = stack pointer of the last processed particle         *
71 //*        Igroun = energy group number of the last processed particle   *
72 //*                 if it is a low energy neutron                        *
73 //*----------------------------------------------------------------------*
74 //*
75
76 typedef struct {
77    Double_t xflk[mfstck+1];             //(0:MFSTCK)
78    Double_t yflk[mfstck+1];             //(0:MFSTCK)
79    Double_t zflk[mfstck+1];             //(0:MFSTCK)
80    Double_t txflk[mfstck+1];             //(0:MFSTCK)
81    Double_t tyflk[mfstck+1];             //(0:MFSTCK)
82    Double_t tzflk[mfstck+1];             //(0:MFSTCK)
83    Double_t txpol[mfstck+1];          //(0:MFSTCK)
84    Double_t typol[mfstck+1];          //(0:MFSTCK)
85    Double_t tzpol[mfstck+1];          //(0:MFSTCK)
86    Double_t txnor[mfstck+1];          //(0:MFSTCK)
87    Double_t tynor[mfstck+1];          //(0:MFSTCK)
88    Double_t tznor[mfstck+1];          //(0:MFSTCK)
89    Double_t wtflk[mfstck+1];             //(0:MFSTCK)
90    Double_t pmoflk[mfstck+1];           //(0:MFSTCK)
91    Double_t tkeflk[mfstck+1];            //(0:MFSTCK)
92    Double_t dfnear[mfstck+1];         //(0:MFSTCK)
93    Double_t agestk[mfstck+1];         //(0:MFSTCK)
94    Double_t aknshr[mfstck+1];         //(0:MFSTCK)
95    Double_t raddly[mfstck+1];         //(0:MFSTCK)
96    Double_t cmpath[mfstck+1];         //(0:MFSTCK)
97    Double_t frcphn[mfstck+1];         //(0:MFSTCK)
98    Double_t sparek[mfstck+1][mkbmx1]; //(MKBMX1,0:MFSTCK)
99    Int_t    ispark[mfstck+1][mkbmx2]; //(MKBMX2,0:MFSTCK)
100    Int_t    iloflk[mfstck+1];            //(0:MFSTCK)
101    Int_t    igroup[mfstck+1];         //(0:MFSTCK)
102    Int_t    loflk[mfstck+1];             //(0:MFSTCK)
103    Int_t    louse[mfstck+1];          //(0:MFSTCK)
104    Int_t    nrgflk[mfstck+1];           //(0:MFSTCK)
105    Int_t    nlattc[mfstck+1];         //(0:MFSTCK)
106    Int_t    nhspnt[mfstck+1];         //(0:MFSTCK)
107    Int_t    nevent[mfstck+1];         //(0:MFSTCK)
108    Int_t    numpar[mfstck+1];         //(0:MFSTCK)
109    Int_t    lraddc[mfstck+1];         //(0:MFSTCK)
110    Int_t    lfrphn[mfstck+1];         //(0:MFSTCK)
111    Int_t    nparma;
112    Int_t    nstmax;
113    Int_t    npflka;
114    Int_t    nstaol;
115    Int_t    igroun;
116 } flkstkCommon;
117 #define FLKSTK COMMON_BLOCK(FLKSTK,flkstk)
118 COMMON_BLOCK_DEF(flkstkCommon,FLKSTK);
119 }
120
121 #endif