BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
beamBase.cc
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) BDSIM Collaboration, 2001 - 2026.
3
4This file is part of BDSIM.
5
6BDSIM is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published
8by the Free Software Foundation version 3 of the License.
9
10BDSIM is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
17*/
18#include "beamBase.h"
19
20#include <iostream>
21
22using namespace GMAD;
23
24BeamBase::BeamBase()
25{
26 particle = "";
28 beamEnergy = 0;
30 beamMomentum = 0;
31 distrType = "reference";
32 xDistrType = "reference";
33 yDistrType = "reference";
34 zDistrType = "reference";
35 spaceDistrType = "reference";
36 directionDistrType = "reference";
37 energyDistrType = "reference";
38 distrFile = "";
39 distrFileFormat = "";
42 distrFileLoop = false;
45 nlinesIgnore = 0;
46 nlinesSkip = 0;
47
49 bunchPeriod = 0;
51
52 X0 = 0.0;
53 Y0 = 0.0;
54 Z0 = 0.0;
55 S0 = 0.0;
56 Xp0 = 0.0;
57 Yp0 = 0.0;
58 Zp0 = 0.0;
59 T0 = 0.0;
60 E0 = 0.0;
61 Ek0 = 0.0;
62 P0 = 0.0;
63 tilt = 0.0;
64 sigmaT = 0.0;
65 sigmaE = 0.0;
66 sigmaEk = 0.0;
67 sigmaP = 0.0;
68
69 betx = 0.0;
70 bety = 0.0;
71 alfx = 0.0;
72 alfy = 0.0;
73 emitx = 0.0;
74 emity = 0.0;
75 emitNX = 0.0;
76 emitNY = 0.0;
77 dispx = 0.0;
78 dispy = 0.0;
79 dispxp = 0.0;
80 dispyp = 0.0;
81 sigmaX = 0.0;
82 sigmaXp = 0.0;
83 sigmaY = 0.0;
84 sigmaYp = 0.0;
85
86 envelopeX = 0.0;
87 envelopeXp = 0.0;
88 envelopeY = 0.0;
89 envelopeYp = 0.0;
90 envelopeZ = 0.0;
91 envelopeZp = 0.0;
92 envelopeT = 0.0;
93 envelopeE = 0.0;
94 envelopeR = 0.0;
95 envelopeRp = 0.0;
96 zFromT = false;
97
98 sigma11 = 0.0,sigma12 = 0.0,sigma13 = 0.0,sigma14 = 0.0,sigma15 = 0.0,sigma16 = 0.0;
99 sigma22 = 0.0,sigma23 = 0.0,sigma24 = 0.0,sigma25 = 0.0,sigma26 = 0.0;
100 sigma33 = 0.0,sigma34 = 0.0,sigma35 = 0.0,sigma36 = 0.0;
101 sigma44 = 0.0,sigma45 = 0.0,sigma46 = 0.0;
102 sigma55 = 0.0,sigma56 = 0.0;
103 sigma66 = 0.0;
104
105 shellX = 0.0;
106 shellXp = 0.0;
107 shellY = 0.0;
108 shellYp = 0.0;
109 shellXWidth = 0.0;
110 shellXpWidth = 0.0;
111 shellYWidth = 0.0;
112 shellYpWidth = 0.0;
113
114 Rmin = 0.0;
115 Rmax = 0.0;
116 Rpmin = 0.0;
117 Rpmax = 0.0;
118
119 haloNSigmaXInner = 0.0;
120 haloNSigmaXOuter = 1e9;
121 haloNSigmaYInner = 0.0;
122 haloNSigmaYOuter = 1e9;
123 haloXCutInner = 0.0;
124 haloYCutInner = 0.0;
125 haloXCutOuter = 1e9;
126 haloYCutOuter = 1e9;
127 haloXpCutInner = 0.0;
128 haloYpCutInner = 0.0;
129 haloXpCutOuter = 1e9;
130 haloYpCutOuter = 1e9;
133
134 offsetSampleMean = false;
135
137 eventGeneratorMinX = -1e6;
138 eventGeneratorMaxX = 1e6;
139 eventGeneratorMinY = -1e6;
140 eventGeneratorMaxY = 1e6;
141 eventGeneratorMinZ = -1e6;
142 eventGeneratorMaxZ = 1e6;
144 eventGeneratorMaxXp = 1.1; // > 1 for no ambiguity (max value 1)
152 eventGeneratorMaxT = 1e50;
154 eventGeneratorMaxEK = 1e50;
157
158 dTStart = 0;
159 dTStop = 0;
160 dPStart = 0;
161 dPStop = 0;
162
163 polarization1 = 0;
164 polarization2 = 0;
165 polarization3 = 0;
166}
double dispy
initial twiss parameters
Definition beamBase.h:89
double alfy
initial twiss parameters
Definition beamBase.h:89
std::string particle
beam parameters
Definition beamBase.h:39
double eventGeneratorMaxYp
fo event generator file filter
Definition beamBase.h:153
double sigma45
for the gaussian sigma matrix distribution
Definition beamBase.h:108
double eventGeneratorMaxXp
fo event generator file filter
Definition beamBase.h:151
double sigmaE
for the gaussian, elliptic shell, ring distributions
Definition beamBase.h:84
double emity
initial twiss parameters
Definition beamBase.h:89
double haloXCutOuter
for the halo distribution
Definition beamBase.h:130
double bunchFrequency
Bunch offsets in time.
Definition beamBase.h:63
double sigma16
for the gaussian sigma matrix distribution
Definition beamBase.h:105
double haloNSigmaYInner
for the halo distribution
Definition beamBase.h:126
double beamKineticEnergy
beam parameters
Definition beamBase.h:42
double envelopeRp
for the circle/square/box beam distribution
Definition beamBase.h:100
double eventGeneratorMaxEK
fo event generator file filter
Definition beamBase.h:161
double haloXpCutOuter
for the halo distribution
Definition beamBase.h:134
double sigmaX
for the gaussian beam distribution
Definition beamBase.h:94
std::string distrFileFormat
beam parameters
Definition beamBase.h:52
double beamEnergy
beam parameters
Definition beamBase.h:41
double envelopeZp
for the circle/square/box beam distribution
Definition beamBase.h:98
bool eventGeneratorWarnSkippedParticles
fo event generator file filter
Definition beamBase.h:163
double shellXp
for the elliptic shell distribution
Definition beamBase.h:114
double sigma66
for the gaussian sigma matrix distribution
Definition beamBase.h:110
double haloXCutInner
for the halo distribution
Definition beamBase.h:128
double envelopeZ
for the circle/square/box beam distribution
Definition beamBase.h:98
double sigma35
for the gaussian sigma matrix distribution
Definition beamBase.h:107
double sigma44
for the gaussian sigma matrix distribution
Definition beamBase.h:108
double haloYpCutInner
for the halo distribution
Definition beamBase.h:133
double emitNY
initial twiss parameters
Definition beamBase.h:90
double envelopeE
for the circle/square/box beam distribution
Definition beamBase.h:99
double eventGeneratorMaxZp
fo event generator file filter
Definition beamBase.h:155
double sigmaXp
for the gaussian beam distribution
Definition beamBase.h:94
double eventGeneratorMinYp
fo event generator file filter
Definition beamBase.h:152
double sigma13
for the gaussian sigma matrix distribution
Definition beamBase.h:105
int eventsPerBunch
Bunch offsets in time.
Definition beamBase.h:65
double sigma34
for the gaussian sigma matrix distribution
Definition beamBase.h:107
double betx
initial twiss parameters
Definition beamBase.h:89
std::string distrFile
beam parameters
Definition beamBase.h:51
double dPStop
for slow-extraction beam
Definition beamBase.h:170
double dTStart
for slow-extraction beam
Definition beamBase.h:167
double eventGeneratorMinEK
fo event generator file filter
Definition beamBase.h:160
std::string directionDistrType
beam parameters
Definition beamBase.h:49
double haloYCutOuter
for the halo distribution
Definition beamBase.h:131
double sigmaYp
for the gaussian beam distribution
Definition beamBase.h:94
double haloNSigmaXInner
for the halo distribution
Definition beamBase.h:124
bool distrFileFromExecOptions
Required to know how to build the absolute path properly.
Definition beamBase.h:53
double dispxp
initial twiss parameters
Definition beamBase.h:89
double envelopeYp
for the circle/square/box beam distribution
Definition beamBase.h:98
double eventGeneratorMaxZ
fo event generator file filter
Definition beamBase.h:149
double eventGeneratorMinY
fo event generator file filter
Definition beamBase.h:146
double sigma12
for the gaussian sigma matrix distribution
Definition beamBase.h:105
double Ek0
initial beam centroid
Definition beamBase.h:73
std::string spaceDistrType
beam parameters
Definition beamBase.h:48
double haloNSigmaYOuter
for the halo distribution
Definition beamBase.h:127
std::string beamParticleName
beam parameters
Definition beamBase.h:40
bool distrFileLoop
beam parameters
Definition beamBase.h:55
bool removeUnstableWithoutDecay
beam parameters
Definition beamBase.h:57
double sigma26
for the gaussian sigma matrix distribution
Definition beamBase.h:106
double haloYCutInner
for the halo distribution
Definition beamBase.h:129
double tilt
tilt of beam applied as rotation about unit local z
Definition beamBase.h:78
double sigma25
for the gaussian sigma matrix distribution
Definition beamBase.h:106
double shellXpWidth
for the elliptic shell distribution
Definition beamBase.h:115
std::string distrType
beam parameters
Definition beamBase.h:44
double sigma36
for the gaussian sigma matrix distribution
Definition beamBase.h:107
int eventGeneratorNEventsSkip
fo event generator file filter
Definition beamBase.h:143
double sigma46
for the gaussian sigma matrix distribution
Definition beamBase.h:108
double eventGeneratorMaxRp
fo event generator file filter
Definition beamBase.h:157
int nlinesIgnore
Ignore first lines in the input bunch file.
Definition beamBase.h:59
double emitNX
initial twiss parameters
Definition beamBase.h:90
double eventGeneratorMinZ
fo event generator file filter
Definition beamBase.h:148
double dPStart
for slow-extraction beam
Definition beamBase.h:169
double envelopeR
for the circle/square/box beam distribution
Definition beamBase.h:100
double S0
initial beam centroid
Definition beamBase.h:69
double eventGeneratorMinXp
fo event generator file filter
Definition beamBase.h:150
double shellYp
for the elliptic shell distribution
Definition beamBase.h:114
double dispyp
initial twiss parameters
Definition beamBase.h:89
double sigma14
for the gaussian sigma matrix distribution
Definition beamBase.h:105
bool zFromT
for the circle/square/box beam distribution
Definition beamBase.h:101
double bunchPeriod
Bunch offsets in time.
Definition beamBase.h:64
double sigma23
for the gaussian sigma matrix distribution
Definition beamBase.h:106
double sigma11
for the gaussian sigma matrix distribution
Definition beamBase.h:105
double eventGeneratorMinZp
fo event generator file filter
Definition beamBase.h:154
double envelopeX
for the circle/square/box beam distribution
Definition beamBase.h:98
double shellX
for the elliptic shell distribution
Definition beamBase.h:114
double dTStop
for slow-extraction beam
Definition beamBase.h:168
double P0
initial beam centroid
Definition beamBase.h:74
std::string zDistrType
beam parameters
Definition beamBase.h:47
double haloNSigmaXOuter
for the halo distribution
Definition beamBase.h:125
double dispx
initial twiss parameters
Definition beamBase.h:89
double alfx
initial twiss parameters
Definition beamBase.h:89
double emitx
initial twiss parameters
Definition beamBase.h:89
std::string eventGeneratorParticles
fo event generator file filter
Definition beamBase.h:162
double sigmaT
bunch length
Definition beamBase.h:81
double sigma22
for the gaussian sigma matrix distribution
Definition beamBase.h:106
double bety
initial twiss parameters
Definition beamBase.h:89
std::string yDistrType
beam parameters
Definition beamBase.h:46
double Zp0
initial beam centroid
Definition beamBase.h:70
double Rmax
for the ring beam distribution
Definition beamBase.h:119
double envelopeXp
for the circle/square/box beam distribution
Definition beamBase.h:98
int distrFileLoopNTimes
beam parameters
Definition beamBase.h:56
double Z0
initial beam centroid
Definition beamBase.h:69
double sigma33
for the gaussian sigma matrix distribution
Definition beamBase.h:107
std::string energyDistrType
beam parameters
Definition beamBase.h:50
double eventGeneratorMaxY
fo event generator file filter
Definition beamBase.h:147
double eventGeneratorMinT
fo event generator file filter
Definition beamBase.h:158
double sigma15
for the gaussian sigma matrix distribution
Definition beamBase.h:105
double eventGeneratorMaxT
fo event generator file filter
Definition beamBase.h:159
double envelopeY
for the circle/square/box beam distribution
Definition beamBase.h:98
double haloPSWeightParameter
for the halo distribution
Definition beamBase.h:136
double Rpmax
for the ring beam distribution
Definition beamBase.h:120
double sigma55
for the gaussian sigma matrix distribution
Definition beamBase.h:109
double sigma56
for the gaussian sigma matrix distribution
Definition beamBase.h:109
double X0
initial beam centroid
Definition beamBase.h:69
double eventGeneratorMaxX
fo event generator file filter
Definition beamBase.h:145
double envelopeT
for the circle/square/box beam distribution
Definition beamBase.h:99
int nlinesSkip
Number of event lines to skip after the ignore lines.
Definition beamBase.h:60
double eventGeneratorMinRp
fo event generator file filter
Definition beamBase.h:156
bool distrFileMatchLength
beam parameters
Definition beamBase.h:54
double beamMomentum
beam parameters
Definition beamBase.h:43
double Xp0
initial beam centroid
Definition beamBase.h:70
double sigma24
for the gaussian sigma matrix distribution
Definition beamBase.h:106
double eventGeneratorMinX
fo event generator file filter
Definition beamBase.h:144
std::string xDistrType
beam parameters
Definition beamBase.h:45
double shellY
for the elliptic shell distribution
Definition beamBase.h:114
double Yp0
initial beam centroid
Definition beamBase.h:70
std::string haloPSWeightFunction
for the halo distribution
Definition beamBase.h:137
double shellYpWidth
for the elliptic shell distribution
Definition beamBase.h:115
double haloXpCutInner
for the halo distribution
Definition beamBase.h:132
double Y0
initial beam centroid
Definition beamBase.h:69
double haloYpCutOuter
for the halo distribution
Definition beamBase.h:135
double Rpmin
for the ring beam distribution
Definition beamBase.h:120
double Rmin
for the ring beam distribution
Definition beamBase.h:119
double T0
initial beam centroid
Definition beamBase.h:71
double sigmaY
for the gaussian beam distribution
Definition beamBase.h:94
double shellXWidth
for the elliptic shell distribution
Definition beamBase.h:115
double shellYWidth
for the elliptic shell distribution
Definition beamBase.h:115
double E0
initial beam centroid
Definition beamBase.h:72
Parser namespace for GMAD language. Combination of Geant4 and MAD.