added cdb stuff
[u/mrichter/AliRoot.git] / TFluka / Fpart.h
1 #ifndef FPART_H
2 #define FPART_H 1
3
4 #include "Rtypes.h"
5 #include "cfortran.h"
6 #include "Fdimpar.h" //For some constants
7 extern "C" {
8 //*$ create part.add
9 //*copy part
10 //*
11 //*=== part =============================================================*
12 //*
13 //*----------------------------------------------------------------------*
14 //*                                                                      *
15 //*     include file: part copy        revised on 20-08-96 by a. ferrari *
16 //*                                                                      *
17 //*     last change   on   14-oct-00     by       alfredo ferrari        *
18 //*                                                                      *
19 //*     included in the following subroutines or functions:              *
20 //*                                                                      *
21 //*     w a r n i n g !!!! check also part2 and part3 for any change!!!  *
22 //*                                                                      *
23 //*     description of the common block(s) and variable(s)               *
24 //*                                                                      *
25 //*             am = particle mass (gev/c^2)                             *
26 //*             ga = particle width (gev)                                *
27 //*            tau = particle mean life (s)                              *
28 //*         amdisc = "effective" particle mass for energy balance (gev)  *
29 //*         zmnabs = lower width (adimensional unit) to be used during   *
30 //*                  particle decay to assure that at least one decay    *
31 //*                  channel is physically open                          *
32 //*         atnmna = atan (zmnabs)                                       *
33 //*            ich = particle electric charge                            *
34 //*           ibar = particle baryon number                              *
35 //*         isosym = index of the isospin reversed (t_z --> -t_z)        *
36 //*                  particle (if any, if 0 no such particle is available*
37 //*                  in the part listing)                                *
38 //*         ichcon = index of the charge conjugated (antiparticle)       *
39 //*                  particle (if any, if 0 no such particle is available*
40 //*                  in the part listing)                                *
41 //*             k1 = index of first decay channel                        *
42 //*             k2 = index of last  decay channel                        *
43 //*         kptoip = conversion from part to paprop numbering            *
44 //*         iptokp = conversion from paprop to part numbering            *
45 //*         kptoia = conversion from part to abltis numbering            *
46 //*         iatokp = conversion from abltis to part numbering            *
47 //*         idcflg = decay flag                                          *
48 //*         iptype = particle type                                       *
49 //*                  -1: heavy fragments                                 *
50 //*                   0: unknown particle or lepton                      *
51 //*                   1: nucleon                                         *
52 //*                   2: antinucleon                                     *
53 //*                   3: pion                                            *
54 //*                   4: k+/k0                                           *
55 //*                  -4: kshrt/klong                                     *
56 //*                   5: k-/k0bar                                        *
57 //*                   6: lamda/sigma   (strangeness -1 hyperon)          *
58 //*                   7: xsi           (strangeness -2 hyperon)          *
59 //*                   8: omega         (strangeness -3 hyperon)          *
60 //*                   9: alamda/asigma (strangeness +1 antihyperon)      *
61 //*                  10: axsi          (strangeness +2 antihyperon)      *
62 //*                  11: aomega        (strangeness +3 antihyperon)      *
63 //*                  12: d+/d0                                           *
64 //*                  13: d-/d0bar                                        *
65 //*                  14: d_s+/d_s-                                       *
66 //*                  15: lambda_c+                                       *
67 //*                  16: xsi_c+/xsi_c0                                   *
68 //*                  17: xsi'_c+/xsi'_c0                                 *
69 //*                  18: omega_c                                         *
70 //*                  19: alambda_c+                                      *
71 //*                  20: axsi_c-/axsi_c0                                 *
72 //*                  21: axsi'_c-/axsi'_c0                               *
73 //*                  22: aomega_c                                        *
74 //*          aname = particle literal name                               *
75 //*                                                                      *
76 //*----------------------------------------------------------------------*
77 //*
78
79 typedef struct {
80    Double_t am[idmaxp+7];
81    Double_t ga[idmaxp+7];
82    Double_t tau[idmaxp+7];
83    Double_t amdisc[idmaxp+7];
84    Double_t zmnabs[idmaxp+7];
85    Double_t atnmna[idmaxp+7];
86    Int_t    ich[idmaxp+7];
87    Int_t    ibar[idmaxp+7];
88    Int_t    isosym[idmaxp+7];
89    Int_t    ichcon[idmaxp+7];
90    Int_t    k1[idmaxp+7];
91    Int_t    k2[idmaxp+7];
92    Int_t    kptoip[idmaxp+7];
93    Int_t    iptokp[nallwp+7];
94    Int_t    kptoia[idmaxp+7];
95    Int_t    iatokp[mxpabl+7];
96    Int_t    idcflg[nallwp+7];
97    Int_t    iptype[nallwp+7];
98 } partCommon;
99 #define PART COMMON_BLOCK(PART,part)
100 COMMON_BLOCK_DEF(partCommon,PART);
101
102 typedef struct {
103    Char_t   aname[idmaxp+7][8];
104 } chpartCommon;
105 #define CHPART COMMON_BLOCK(CHPART,chpart)
106 COMMON_BLOCK_DEF(chpartCommon,CHPART);
107 }
108
109 //Get functions
110 inline Double_t GetFlukaAM(unsigned int i) {return PART.am[i+6];}
111 inline Double_t GetFlukaGA(unsigned int i) {return PART.ga[i+6];}
112 inline Double_t GetFlukaTAU(unsigned int i) {return PART.tau[i+6];}
113 inline Double_t GetFlukaAMDISC(unsigned int i) {return PART.amdisc[i+6];}
114 inline Double_t GetFlukaZMNABS(unsigned int i) {return PART.zmnabs[i+6];}
115 inline Double_t GetFlukaATNMNA(unsigned int i) {return PART.atnmna[i+6];}
116 inline Int_t    GetFlukaICH(unsigned int i) {return PART.ich[i+6];}
117 inline Int_t    GetFlukaIBAR(unsigned int i) {return PART.ibar[i+6];}
118 inline Int_t    GetFlukaISOSYM(unsigned int i) {return PART.isosym[i+6];}
119 inline Int_t    GetFlukaICHCON(unsigned int i) {return PART.ichcon[i+6];}
120 inline Int_t    GetFlukaK1(unsigned int i) {return PART.k1[i+6];}
121 inline Int_t    GetFlukaK2(unsigned int i) {return PART.k2[i+6];}
122 inline Int_t    GetFlukaKPTOIP(unsigned int i) {return PART.kptoip[i+6];}
123 inline Int_t    GetFlukaIPTOKP(unsigned int i) {return PART.iptokp[i+6];}
124 inline Int_t    GetFlukaKPTOIA(unsigned int i) {return PART.kptoia[i+6];}
125 inline Int_t    GetFlukaIATOKP(unsigned int i) {return PART.iatokp[i+6];}
126 inline Int_t    GetFlukaIDCFLG(unsigned int i) {return PART.idcflg[i+6];}
127 inline Int_t    GetFlukaIPTYPE(unsigned int i) {return PART.iptype[i+6];}
128
129 #endif