39 columns_m.addColumn(
"t",
"double",
"ns",
"Time");
40 columns_m.addColumn(
"s",
"double",
"m",
"Path length");
41 columns_m.addColumn(
"numParticles",
"long",
"1",
"Number of Macro Particles");
42 columns_m.addColumn(
"charge",
"double",
"1",
"Bunch Charge");
43 columns_m.addColumn(
"energy",
"double",
"MeV",
"Mean Bunch Energy");
45 columns_m.addColumn(
"rms_x",
"double",
"m",
"RMS Beamsize in x");
46 columns_m.addColumn(
"rms_y",
"double",
"m",
"RMS Beamsize in y");
47 columns_m.addColumn(
"rms_s",
"double",
"m",
"RMS Beamsize in s");
49 columns_m.addColumn(
"rms_px",
"double",
"1",
"RMS Normalized Momenta in x");
50 columns_m.addColumn(
"rms_py",
"double",
"1",
"RMS Normalized Momenta in y");
51 columns_m.addColumn(
"rms_ps",
"double",
"1",
"RMS Normalized Momenta in s");
53 columns_m.addColumn(
"emit_x",
"double",
"m",
"Normalized Emittance x");
54 columns_m.addColumn(
"emit_y",
"double",
"m",
"Normalized Emittance y");
55 columns_m.addColumn(
"emit_s",
"double",
"m",
"Normalized Emittance s");
57 columns_m.addColumn(
"mean_x",
"double",
"m",
"Mean Beam Position in x");
58 columns_m.addColumn(
"mean_y",
"double",
"m",
"Mean Beam Position in y");
59 columns_m.addColumn(
"mean_s",
"double",
"m",
"Mean Beam Position in s");
61 columns_m.addColumn(
"ref_x",
"double",
"m",
"x coordinate of reference particle in lab cs");
62 columns_m.addColumn(
"ref_y",
"double",
"m",
"y coordinate of reference particle in lab cs");
63 columns_m.addColumn(
"ref_z",
"double",
"m",
"z coordinate of reference particle in lab cs");
65 columns_m.addColumn(
"ref_px",
"double",
"1",
"x momentum of reference particle in lab cs");
66 columns_m.addColumn(
"ref_py",
"double",
"1",
"y momentum of reference particle in lab cs");
67 columns_m.addColumn(
"ref_pz",
"double",
"1",
"z momentum of reference particle in lab cs");
69 columns_m.addColumn(
"max_x",
"double",
"m",
"Max Beamsize in x");
70 columns_m.addColumn(
"max_y",
"double",
"m",
"Max Beamsize in y");
71 columns_m.addColumn(
"max_s",
"double",
"m",
"Max Beamsize in s");
73 columns_m.addColumn(
"xpx",
"double",
"1",
"Correlation xpx");
74 columns_m.addColumn(
"ypy",
"double",
"1",
"Correlation ypy");
75 columns_m.addColumn(
"zpz",
"double",
"1",
"Correlation zpz");
77 columns_m.addColumn(
"Dx",
"double",
"m",
"Dispersion in x");
78 columns_m.addColumn(
"DDx",
"double",
"1",
"Derivative of dispersion in x");
79 columns_m.addColumn(
"Dy",
"double",
"m",
"Dispersion in y");
80 columns_m.addColumn(
"DDy",
"double",
"1",
"Derivative of dispersion in y");
82 columns_m.addColumn(
"Bx_ref",
"double",
"T",
"Bx-Field component of ref particle");
83 columns_m.addColumn(
"By_ref",
"double",
"T",
"By-Field component of ref particle");
84 columns_m.addColumn(
"Bz_ref",
"double",
"T",
"Bz-Field component of ref particle");
86 columns_m.addColumn(
"Ex_ref",
"double",
"MV/m",
"Ex-Field component of ref particle");
87 columns_m.addColumn(
"Ey_ref",
"double",
"MV/m",
"Ey-Field component of ref particle");
88 columns_m.addColumn(
"Ez_ref",
"double",
"MV/m",
"Ez-Field component of ref particle");
90 columns_m.addColumn(
"dE",
"double",
"MeV",
"energy spread of the beam");
91 columns_m.addColumn(
"dt",
"double",
"ns",
"time step size");
92 columns_m.addColumn(
"partsOutside",
"double",
"1",
"outside n*sigma of the beam");
93 columns_m.addColumn(
"DebyeLength",
"double",
"m",
"Debye length in the boosted frame");
94 columns_m.addColumn(
"plasmaParameter",
"double",
"1",
"Plasma parameter that gives no. of particles in a Debye sphere");
95 columns_m.addColumn(
"temperature",
"double",
"K",
"Temperature of the beam");
96 columns_m.addColumn(
"rmsDensity",
"double",
"1",
"RMS number density of the beam");
99 columns_m.addColumn(
"68_Percentile_x",
"double",
"m",
100 "68.27 percentile (1 sigma of normal distribution) of x-component of position");
101 columns_m.addColumn(
"68_Percentile_y",
"double",
"m",
102 "68.27 percentile (1 sigma of normal distribution) of y-component of position");
103 columns_m.addColumn(
"68_Percentile_z",
"double",
"m",
104 "68.27 percentile (1 sigma of normal distribution) of z-component of position");
106 columns_m.addColumn(
"95_Percentile_x",
"double",
"m",
107 "95.45 percentile (2 sigma of normal distribution) of x-component of position");
108 columns_m.addColumn(
"95_Percentile_y",
"double",
"m",
109 "95.45 percentile (2 sigma of normal distribution) of y-component of position");
110 columns_m.addColumn(
"95_Percentile_z",
"double",
"m",
111 "95.45 percentile (2 sigma of normal distribution) of z-component of position");
113 columns_m.addColumn(
"99_Percentile_x",
"double",
"m",
114 "99.73 percentile (3 sigma of normal distribution) of x-component of position");
115 columns_m.addColumn(
"99_Percentile_y",
"double",
"m",
116 "99.73 percentile (3 sigma of normal distribution) of y-component of position");
117 columns_m.addColumn(
"99_Percentile_z",
"double",
"m",
118 "99.73 percentile (3 sigma of normal distribution) of z-component of position");
120 columns_m.addColumn(
"99_99_Percentile_x",
"double",
"m",
121 "99.994 percentile (4 sigma of normal distribution) of x-component of position");
122 columns_m.addColumn(
"99_99_Percentile_y",
"double",
"m",
123 "99.994 percentile (4 sigma of normal distribution) of y-component of position");
124 columns_m.addColumn(
"99_99_Percentile_z",
"double",
"m",
125 "99.994 percentile (4 sigma of normal distribution) of z-component of position");
127 columns_m.addColumn(
"normalizedEps68Percentile_x",
"double",
"m",
128 "x-component of normalized emittance at 68 percentile (1 sigma of normal distribution)");
129 columns_m.addColumn(
"normalizedEps68Percentile_y",
"double",
"m",
130 "y-component of normalized emittance at 68 percentile (1 sigma of normal distribution)");
131 columns_m.addColumn(
"normalizedEps68Percentile_z",
"double",
"m",
132 "z-component of normalized emittance at 68 percentile (1 sigma of normal distribution)");
134 columns_m.addColumn(
"normalizedEps95Percentile_x",
"double",
"m",
135 "x-component of normalized emittance at 95 percentile (2 sigma of normal distribution)");
136 columns_m.addColumn(
"normalizedEps95Percentile_y",
"double",
"m",
137 "y-component of normalized emittance at 95 percentile (2 sigma of normal distribution)");
138 columns_m.addColumn(
"normalizedEps95Percentile_z",
"double",
"m",
139 "z-component of normalized emittance at 95 percentile (2 sigma of normal distribution)");
141 columns_m.addColumn(
"normalizedEps99Percentile_x",
"double",
"m",
142 "x-component of normalized emittance at 99 percentile (3 sigma of normal distribution)");
143 columns_m.addColumn(
"normalizedEps99Percentile_y",
"double",
"m",
144 "y-component of normalized emittance at 99 percentile (3 sigma of normal distribution)");
145 columns_m.addColumn(
"normalizedEps99Percentile_z",
"double",
"m",
146 "z-component of normalized emittance at 99 percentile (3 sigma of normal distribution)");
148 columns_m.addColumn(
"normalizedEps99_99Percentile_x",
"double",
"m",
149 "x-component of normalized emittance at 99.99 percentile (4 sigma of normal distribution)");
150 columns_m.addColumn(
"normalizedEps99_99Percentile_y",
"double",
"m",
151 "y-component of normalized emittance at 99.99 percentile (4 sigma of normal distribution)");
152 columns_m.addColumn(
"normalizedEps99_99Percentile_z",
"double",
"m",
153 "z-component of normalized emittance at 99.99 percentile (4 sigma of normal distribution)");
156 columns_m.addColumn(
"S11",
"double",
"m**2",
"element 1,1 of 6D beam matrix");
157 columns_m.addColumn(
"S12",
"double",
"m",
"element 1,2 of 6D beam matrix");
158 columns_m.addColumn(
"S13",
"double",
"m**2",
"element 1,3 of 6D beam matrix");
159 columns_m.addColumn(
"S14",
"double",
"m",
"element 1,4 of 6D beam matrix");
160 columns_m.addColumn(
"S15",
"double",
"m**2",
"element 1,5 of 6D beam matrix");
161 columns_m.addColumn(
"S16",
"double",
"m",
"element 1,6 of 6D beam matrix");
162 columns_m.addColumn(
"S22",
"double",
"1",
"element 2,2 of 6D beam matrix");
163 columns_m.addColumn(
"S23",
"double",
"m",
"element 2,3 of 6D beam matrix");
164 columns_m.addColumn(
"S24",
"double",
"1",
"element 2,4 of 6D beam matrix");
165 columns_m.addColumn(
"S25",
"double",
"m",
"element 2,5 of 6D beam matrix");
166 columns_m.addColumn(
"S26",
"double",
"1",
"element 2,6 of 6D beam matrix");
167 columns_m.addColumn(
"S33",
"double",
"m**2",
"element 3,3 of 6D beam matrix");
168 columns_m.addColumn(
"S34",
"double",
"m",
"element 3,4 of 6D beam matrix");
169 columns_m.addColumn(
"S35",
"double",
"m**2",
"element 3,5 of 6D beam matrix");
170 columns_m.addColumn(
"S36",
"double",
"m",
"element 3,6 of 6D beam matrix");
171 columns_m.addColumn(
"S44",
"double",
"1",
"element 4,4 of 6D beam matrix");
172 columns_m.addColumn(
"S45",
"double",
"m",
"element 4,5 of 6D beam matrix");
173 columns_m.addColumn(
"S46",
"double",
"1",
"element 4,6 of 6D beam matrix");
174 columns_m.addColumn(
"S55",
"double",
"m**2",
"element 5,5 of 6D beam matrix");
175 columns_m.addColumn(
"S56",
"double",
"m",
"element 5,6 of 6D beam matrix");
176 columns_m.addColumn(
"S66",
"double",
"1",
"element 6,6 of 6D beam matrix");
180 columns_m.addColumn(
"R0_x",
"double",
"m",
"R0 Particle position in x");
181 columns_m.addColumn(
"R0_y",
"double",
"m",
"R0 Particle position in y");
182 columns_m.addColumn(
"R0_s",
"double",
"m",
"R0 Particle position in z");
184 columns_m.addColumn(
"P0_x",
"double",
"1",
"R0 Particle momentum in x");
185 columns_m.addColumn(
"P0_y",
"double",
"1",
"R0 Particle momentum in y");
186 columns_m.addColumn(
"P0_s",
"double",
"1",
"R0 Particle momentum in z");
190 columns_m.addColumn(
"halo_x",
"double",
"1",
"Halo in x");
191 columns_m.addColumn(
"halo_y",
"double",
"1",
"Halo in y");
192 columns_m.addColumn(
"halo_z",
"double",
"1",
"Halo in z");
194 columns_m.addColumn(
"azimuth",
"double",
"deg",
195 "Azimuth in global coordinates");
198 for (
size_t i = 0; i < losses.size(); ++ i) {
199 columns_m.addColumn(losses[i].first,
"long",
"1",
200 "Number of lost particles in element");
203 if (
mode_m == std::ios::app )
207 std::string dateStr(simtimer.
date());
208 std::string timeStr(simtimer.
time());
210 std::stringstream ss;
211 ss <<
"Statistics data '"
213 <<
"' " << dateStr <<
" " << timeStr;
225 const losses_t &losses,
const double& azimuth,
226 const size_t npOutside)
230 double pathLength = beam->
get_sPos();
248 columns_m.addColumnValue(
"s", pathLength);
251 columns_m.addColumnValue(
"energy", Ekin);
293 columns_m.addColumnValue(
"Bx_ref", FDext[0](0));
294 columns_m.addColumnValue(
"By_ref", FDext[0](1));
295 columns_m.addColumnValue(
"Bz_ref", FDext[0](2));
297 columns_m.addColumnValue(
"Ex_ref", FDext[1](0));
298 columns_m.addColumnValue(
"Ey_ref", FDext[1](1));
299 columns_m.addColumnValue(
"Ez_ref", FDext[1](2));
303 columns_m.addColumnValue(
"partsOutside", npOutside);
369 columns_m.addColumnValue(
"R0_x", beam->
R[0](0));
370 columns_m.addColumnValue(
"R0_y", beam->
R[0](1));
371 columns_m.addColumnValue(
"R0_s", beam->
R[0](2));
372 columns_m.addColumnValue(
"P0_x", beam->
P[0](0));
373 columns_m.addColumnValue(
"P0_y", beam->
P[0](1));
374 columns_m.addColumnValue(
"P0_s", beam->
P[0](2));
385 columns_m.addColumnValue(
"halo_x", halo(0));
386 columns_m.addColumnValue(
"halo_y", halo(1));
387 columns_m.addColumnValue(
"halo_z", halo(2));
389 columns_m.addColumnValue(
"azimuth", azimuth);
392 for(
size_t i = 0; i < losses.size(); ++ i) {
393 long unsigned int loss = losses[i].second;
394 columns_m.addColumnValue(losses[i].first, loss);
double get_meanKineticEnergy() const
Vector_t get_99Percentile() const
Vector_t get_normalizedEps_99Percentile() const
size_t getLocalNum() const
FMatrix< double, 2 *Dim, 2 *Dim > getSigmaMatrix() const
double get_debyeLength() const
double get_plasmaParameter() const
size_t getTotalNum() const
Vector_t get_95Percentile() const
Vector_t get_normalizedEps_68Percentile() const
ParticleAttrib< Vector_t > P
Vector_t get_rrms() const
double get_rmsDensity() const
Vector_t get_prms() const
double getCharge() const
get the total charge per simulation particle
double get_temperature() const
Vector_t get_68Percentile() const
Vector_t get_norm_emit() const
Vector_t get_rprms() const
Vector_t get_maxExtent() const
Vector_t get_normalizedEps_95Percentile() const
Vector_t get_halo() const
Vector_t get_99_99Percentile() const
Vector_t get_normalizedEps_99_99Percentile() const
Vector_t get_rmean() const
std::string getInputFn()
get opals input filename
static OpalData * getInstance()
void addDefaultParameters()
void addDescription(const std::string &text, const std::string &content)
void writeHeader()
Write SDDS header.
std::ios_base::openmode mode_m
First write to the statistics output file.
void addInfo(const std::string &mode, const size_t &no_row_counts)
StatBaseWriter(const std::string &fname, bool restart)
std::vector< std::pair< std::string, unsigned int > > losses_t
void write(const PartBunchBase< double, 3 > *beam, Vector_t FDext[], const losses_t &losses=losses_t(), const double &azimuth=-1, const size_t npOutside=0)
Write statistical data.
void fillHeader(const losses_t &losses=losses_t())
StatWriter(const std::string &fname, bool restart)
std::string date() const
Return date.
std::string time() const
Return time.
Vektor< double, 3 > Vector_t