Switch to negative values of logical output units to obtain binary output
[u/mrichter/AliRoot.git] / TFluka / Fbeamcm.h
1 #ifndef FBEAMCM_H
2 #define FBEAMCM_H 1
3
4 #include "cfortran.h"
5 #include "Rtypes.h"
6 extern "C" {
7
8 //*=== beam =============================================================*
9 //*
10 //*----------------------------------------------------------------------*
11 //*                                                                      *
12 //*     CoMmon for BEAM properties:                                      *
13 //*                                                                      *
14 //*        Pbeam  = average beam particle momentum (GeV/c)               *
15 //*        Pbmmax = maximum momentum for which tabulations must be       *
16 //*                 generated (GeV/c)                                    *
17 //*        Dpbeam = beam momentum spread (GeV/c)                         *
18 //*        Divbm  = beam angular divergense (mrad)                       *
19 //*        Xspot  = beam width in (beam frame) x-direction (cm)          *
20 //*        Yspot  = beam width in (beam frame) y-direction (cm)          *
21 //*        Xbeam  = beam spot centre (geom frame) x-coordinate (cm)      *
22 //*        Ybeam  = beam spot centre (geom frame) y-coordinate (cm)      *
23 //*        Zbeam  = beam spot centre (geom frame) z-coordinate (cm)      *
24 //*        Ubeam  = beam direction cosine wrt the (beam frame) x-axis    *
25 //*        Vbeam  = beam direction cosine wrt the (beam frame) y-axis    *
26 //*        Wbeam  = beam direction cosine wrt the (beam frame) z-axis    *
27 //*        Ubmpol = beam polarization cosine wrt the (beam frame) x-axis *
28 //*        Vbmpol = beam polarization cosine wrt the (beam frame) y-axis *
29 //*        Wbmpol = beam polarization cosine wrt the (beam frame) z-axis *
30 //*        Polfra = polarization fraction                                *
31 //*        Rflood = emission radius for a uniform and isotropic source   *
32 //*                 or maximum radius for a cylindrical/spherical volume *
33 //*                 source                                               *
34 //*        Rvlmax = emission radius for a uniform and isotropic source   *
35 //*                 or maximum radius for a cylindrical/spherical volume *
36 //*                 source                                               *
37 //*        Rvlmin = minimum radius for a cylindrical/spherical volume    *
38 //*                 source                                               *
39 //*        Dxvlmx = maximum Dx for a cartesian volume source             *
40 //*                (particle emitted inside [Xina+Dxvlmn/2,Xina+Dxvlmx/2]*
41 //*                 and inside [Xina-Dxvlmx/2, Xina-Dxvlmn/2])           *
42 //*        Dxvlmn = minimum Dx for a cartesian volume source             *
43 //*        Dyvlmx = maximum Dy for a cartesian volume source             *
44 //*                (particle emitted inside [Yina+Dyvlmn/2,Yina+Dyvlmx/2]*
45 //*                 and inside [Yina-Dyvlmx/2, Yina-Dyvlmn/2])           *
46 //*        Dyvlmn = minimum Dy for a cartesian volume source             *
47 //*        Dzvlmx = maximum Dz for a cartesian/cylindrical volume source *
48 //*                (particle emitted inside [Zina+Dzvlmn/2,Zina+Dzvlmx/2]*
49 //*                 and inside [Zina-Dzvlmx/2, Zina-Dzvlmn/2])           *
50 //*        Dzvlmn = minimum Dz for a cartesian/cylindrical volume source *
51 //*        Ijbeam = beam particle type (see btype in /paprop/)           *
52 //*        Ijhion = heavy ion type if ijbeam = -2                        *
53 //*        Ldpgss = true for a gaussian momentum distribution of the     *
54 //*                 beam particles, false for a rectangular one          *
55 //*        Ldvgss = true for a gaussian angular divergence distribution  *
56 //*                 of the beam particles, false for a rectangular one   *
57 //*        Ldxgss = true for a gaussian spatial distribution of the beam *
58 //*                 spot in the x-direction, false for a rectangular one *
59 //*        Ldygss = true for a gaussian spatial distribution of the beam *
60 //*                 spot in the y-direction, false for a rectangular one *
61 //*        Beawei = weight of the beam particles                         *
62 //*        Lbeamc = flag for an annular beam                             *
63 //*        Lpperp = flag for polar. perp. to the beam direction          *
64 //*        Lpfrac = flag for interpreting the polar. fraction            *
65 //*   Bmaxis(j,i) = j_th component of the i_th axis used to define the   *
66 //*                 conventional x,y,z beam reference frame              *
67 //*!!!!! ATTENTION: in C++ it is the component bmaxis(i,j) !!!!!         *
68 //*        Lbaxis = logical flag for using a beam axis frame different   *
69 //*                 from the standard one                                *
70 //*        Lflood = logical flag for using a uniform and isotropic beam  *
71 //*                 source out of a sphere of radius Rflood              *
72 //*        Lvlcar = logical flag for using a cartesian   volume source   *
73 //*        Lvlcyl = logical flag for using a cylindrical volume source   *
74 //*        Lvlsph = logical flag for using a spherical   volume source   *
75 //*        Lsourc = logical flag for a user written source routine       *
76 //*        Lrdbea = logical flag for a radioactive isotope beam          * 2006.3
77 //*                                                                      *
78 //*----------------------------------------------------------------------*
79
80 typedef struct {
81     Double_t pbeam;
82     Double_t dpbeam;
83     Double_t pbmmax;
84     Double_t divbm;
85     Double_t xspot;
86     Double_t yspot;
87     Double_t xbeam;
88     Double_t ybeam;
89     Double_t zbeam;
90     Double_t ubeam;
91     Double_t vbeam;
92     Double_t wbeam;
93     Double_t ubmpol;
94     Double_t vbmpol;
95     Double_t wbmpol;
96     Double_t polfra;
97     Double_t beawei;
98     Double_t bmaxis[3][3];
99     Double_t rvlmin;
100     Double_t rvlmax;
101     Double_t dxvlmn;
102     Double_t dxvlmx;
103     Double_t dyvlmn;
104     Double_t dyvlmx;
105     Double_t dzvlmn;
106     Double_t dzvlmx;
107     Int_t    ijbeam;
108     Int_t    ijhion;
109     Int_t    ldpgss;
110     Int_t    ldvgss;
111     Int_t    ldxgss;
112     Int_t    ldygss;
113     Int_t    lbeamc;
114     Int_t    lpperp;
115     Int_t    lpfrac;
116     Int_t    lbaxis;
117     Int_t    lflood;
118     Int_t    lvlcar;
119     Int_t    lvlcyl;
120     Int_t    lvlsph;
121     Int_t    lsourc;
122     Int_t    lrdbea; // 2006.3
123 } beamcmCommon;
124 #define BEAMCM COMMON_BLOCK(BEAMCM,beamcm)
125 COMMON_BLOCK_DEF(beamcmCommon,BEAMCM);
126 }
127
128 #endif