OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
MonitorStatisticsWriter.cpp
Go to the documentation of this file.
2 
4 #include "Ippl.h"
5 
6 MonitorStatisticsWriter::MonitorStatisticsWriter(const std::string& fname, bool restart)
7  : SDDSWriter(fname, restart)
8 { }
9 
10 
12 
13  if (this->hasColumns()) {
14  return;
15  }
16 
17  this->addDescription("Statistics data of monitors",
18  "stat parameters");
19  this->addDefaultParameters();
20 
21  columns_m.addColumn("name", "string", "", "Monitor name");
22  columns_m.addColumn("s", "double", "m", "Longitudinal Position");
23  columns_m.addColumn("t", "double", "ns", "Passage Time Reference Particle");
24  columns_m.addColumn("numParticles", "long", "1", "Number of Macro Particles");
25  columns_m.addColumn("rms_x", "double", "m", "RMS Beamsize in x");
26  columns_m.addColumn("rms_y", "double", "m", "RMS Beamsize in y");
27  columns_m.addColumn("rms_s", "double", "m", "RMS Beamsize in s");
28  columns_m.addColumn("rms_t", "double", "ns", "RMS Passage Time");
29  columns_m.addColumn("rms_px", "double", "1", "RMS Momenta in x");
30  columns_m.addColumn("rms_py", "double", "1", "RMS Momenta in y");
31  columns_m.addColumn("rms_ps", "double", "1", "RMS Momenta in s");
32  columns_m.addColumn("emit_x", "double", "m", "Normalized Emittance x");
33  columns_m.addColumn("emit_y", "double", "m", "Normalized Emittance y");
34  columns_m.addColumn("emit_s", "double", "m", "Normalized Emittance s");
35  columns_m.addColumn("mean_x", "double", "m", "Mean Beam Position in x");
36  columns_m.addColumn("mean_y", "double", "m", "Mean Beam Position in y");
37  columns_m.addColumn("mean_s", "double", "m", "Mean Beam Position in s");
38  columns_m.addColumn("mean_t", "double", "ns", "Mean Passage Time");
39  columns_m.addColumn("ref_x", "double", "m", "x coordinate of reference particle in lab cs");
40  columns_m.addColumn("ref_y", "double", "m", "y coordinate of reference particle in lab cs");
41  columns_m.addColumn("ref_z", "double", "m", "z coordinate of reference particle in lab cs");
42  columns_m.addColumn("ref_px", "double", "1", "x momentum of reference particle in lab cs");
43  columns_m.addColumn("ref_py", "double", "1", "y momentum of reference particle in lab cs");
44  columns_m.addColumn("ref_pz", "double", "1", "z momentum of reference particle in lab cs");
45  columns_m.addColumn("min_x", "double", "m", "Max Beamsize in x");
46  columns_m.addColumn("min_y", "double", "m", "Max Beamsize in y");
47  columns_m.addColumn("min_s", "double", "m", "Max Beamsize in s");
48  columns_m.addColumn("max_x", "double", "m", "Max Beamsize in x");
49  columns_m.addColumn("max_y", "double", "m", "Max Beamsize in y");
50  columns_m.addColumn("max_s", "double", "m", "Max Beamsize in s");
51  columns_m.addColumn("xpx", "double", "1", "Correlation xpx");
52  columns_m.addColumn("ypy", "double", "1", "Correlation ypy");
53  columns_m.addColumn("zpz", "double", "1", "Correlation zpz");
54 
55  this->addInfo("ascii", 1);
56 }
57 
58 
60 
61  if ( Ippl::myNode() != 0 )
62  return;
63 
64 
65  this->fillHeader();
66 
67  this->open();
68 
69  this->writeHeader();
70 
71  columns_m.addColumnValue("name", set.element_m);
74  columns_m.addColumnValue("numParticles", set.nTotal_m);
75  columns_m.addColumnValue("rms_x", set.rrms_m(0));
76  columns_m.addColumnValue("rms_y", set.rrms_m(1));
77  columns_m.addColumnValue("rms_s", set.rrms_m(2));
78  columns_m.addColumnValue("rms_t", set.trms_m * 1e9);
79  columns_m.addColumnValue("rms_px", set.prms_m(0));
80  columns_m.addColumnValue("rms_py", set.prms_m(1));
81  columns_m.addColumnValue("rms_ps", set.prms_m(2));
82  columns_m.addColumnValue("emit_x", set.eps_norm_m(0));
83  columns_m.addColumnValue("emit_y", set.eps_norm_m(1));
84  columns_m.addColumnValue("emit_s", set.eps_norm_m(2));
85  columns_m.addColumnValue("mean_x", set.rmean_m(0));
86  columns_m.addColumnValue("mean_y", set.rmean_m(1));
87  columns_m.addColumnValue("mean_s", set.rmean_m(2));
88  columns_m.addColumnValue("mean_t", set.tmean_m * 1e9);
89  columns_m.addColumnValue("ref_x", set.RefPartR_m(0));
90  columns_m.addColumnValue("ref_y", set.RefPartR_m(1));
91  columns_m.addColumnValue("ref_z", set.RefPartR_m(2));
92  columns_m.addColumnValue("ref_px", set.RefPartP_m(0));
93  columns_m.addColumnValue("ref_py", set.RefPartP_m(1));
94  columns_m.addColumnValue("ref_pz", set.RefPartP_m(2));
95  columns_m.addColumnValue("min_x", set.rmin_m[0]);
96  columns_m.addColumnValue("min_y", set.rmin_m[1]);
97  columns_m.addColumnValue("min_s", set.rmin_m[2]);
98  columns_m.addColumnValue("max_x", set.rmax_m[0]);
99  columns_m.addColumnValue("max_y", set.rmax_m[1]);
100  columns_m.addColumnValue("max_s", set.rmax_m[2]);
101  columns_m.addColumnValue("xpx", set.rprms_m(0));
102  columns_m.addColumnValue("ypy", set.rprms_m(1));
103  columns_m.addColumnValue("zpz", set.rprms_m(2));
104 
105  this->writeRow();
106 
107  this->close();
108 }
bool hasColumns() const
Definition: SDDSWriter.h:190
void writeHeader()
Write SDDS header.
Definition: SDDSWriter.cpp:130
void writeRow()
Definition: SDDSWriter.h:175
Vector_t rmin_m
Definition: LossDataSink.h:34
static int myNode()
Definition: IpplInfo.cpp:794
void close()
Definition: SDDSWriter.cpp:123
void addDescription(const std::string &text, const std::string &content)
Definition: SDDSWriter.h:147
SDDSColumnSet columns_m
Definition: SDDSWriter.h:109
Vector_t rprms_m
Definition: LossDataSink.h:40
Vector_t rrms_m
Definition: LossDataSink.h:38
double refTime_m
Definition: LossDataSink.h:28
std::string element_m
Definition: LossDataSink.h:26
Vector_t prms_m
Definition: LossDataSink.h:39
Vector_t rmean_m
Definition: LossDataSink.h:36
void addColumnValue(const std::string &name, const T &val)
Definition: SDDSColumnSet.h:46
MonitorStatisticsWriter(const std::string &fname, bool restart)
double tmean_m
Definition: LossDataSink.h:29
Vector_t eps_norm_m
Definition: LossDataSink.h:46
void addRow(const SetStatistics &set)
Vector_t rmax_m
Definition: LossDataSink.h:35
void addColumn(const std::string &name, const std::string &type, const std::string &unit, const std::string &desc, std::ios_base::fmtflags flags=std::ios_base::scientific, unsigned short precision=15)
Vector_t RefPartP_m
Definition: LossDataSink.h:33
Vector_t RefPartR_m
Definition: LossDataSink.h:32
void open()
Definition: SDDSWriter.cpp:113
unsigned long nTotal_m
Definition: LossDataSink.h:31
void addDefaultParameters()
Definition: SDDSWriter.cpp:190
void addInfo(const std::string &mode, const size_t &no_row_counts)
Definition: SDDSWriter.h:168