]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TFluka/Fbeamcm.h
Comments added.
[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 //*                                                                      *
77 //*----------------------------------------------------------------------*
78
79 typedef struct {
80    Double_t pbeam;
81    Double_t dpbeam;
82    Double_t pbmmax;
83    Double_t divbm;
84    Double_t xspot;
85    Double_t yspot;
86    Double_t xbeam;
87    Double_t ybeam;
88    Double_t zbeam;
89    Double_t ubeam;
90    Double_t vbeam;
91    Double_t wbeam;
92    Double_t ubmpol;
93    Double_t vbmpol;
94    Double_t wbmpol;
95    Double_t polfra;
96    Double_t beawei;
97    Double_t bmaxis[3][3];
98    Double_t rvlmin;
99    Double_t rvlmax;
100    Double_t dxvlmn;
101    Double_t dxvlmx;
102    Double_t dyvlmn;
103    Double_t dyvlmx;
104    Double_t dzvlmn;
105    Double_t dzvlmx;
106    Int_t    ijbeam;
107    Int_t    ijhion;
108    Int_t    ldpgss;
109    Int_t    ldvgss;
110    Int_t    ldxgss;
111    Int_t    ldygss;
112    Int_t    lbeamc;
113    Int_t    lpperp;
114    Int_t    lpfrac;
115    Int_t    lbaxis;
116    Int_t    lflood;
117    Int_t    lvlcar;
118    Int_t    lvlcyl;
119    Int_t    lvlsph;
120    Int_t    lsourc;
121 } beamcmCommon;
122 #define BEAMCM COMMON_BLOCK(BEAMCM,beamcm)
123 COMMON_BLOCK_DEF(beamcmCommon,BEAMCM);
124 }
125
126 #endif