]>
Commit | Line | Data |
---|---|---|
40813143 | 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 * | |
380c2ff0 | 75 | //* Lsourc = logical flag for a user written source routine * |
40813143 | 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; | |
380c2ff0 | 120 | Int_t lsourc; |
40813143 | 121 | } beamcmCommon; |
122 | #define BEAMCM COMMON_BLOCK(BEAMCM,beamcm) | |
123 | COMMON_BLOCK_DEF(beamcmCommon,BEAMCM); | |
124 | } | |
125 | ||
126 | #endif |