8bool GstreamerCsvFactory::openConnection() {
10 if (ofile_true_info.is_open() && ofile_digitized.is_open() &&
11 ofile_generated.is_open() && ofile_generated_tracked.is_open()) {
15 if (!ofile_true_info.is_open()) {
16 ofile_true_info.clear();
17 ofile_true_info.open(filename_true_info(), std::ios::out | std::ios::trunc);
19 if (!ofile_true_info.is_open() || !ofile_true_info) {
23 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: opened file " + filename_true_info());
26 if (!ofile_digitized.is_open()) {
27 ofile_digitized.clear();
28 ofile_digitized.open(filename_digitized(), std::ios::out | std::ios::trunc);
30 if (!ofile_digitized.is_open() || !ofile_digitized) {
34 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: opened file " + filename_digitized());
37 if (!ofile_generated.is_open()) {
38 ofile_generated.clear();
39 ofile_generated.open(filename_generated(), std::ios::out | std::ios::trunc);
40 if (!ofile_generated.is_open() || !ofile_generated) {
43 ofile_generated <<
"evn, timestamp, thread_id, bank, name, pid, type, multiplicity, p, theta, phi, vx, vy, vz\n";
44 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: opened file " + filename_generated());
47 if (!ofile_generated_tracked.is_open()) {
48 ofile_generated_tracked.clear();
49 ofile_generated_tracked.open(filename_generated_tracked(), std::ios::out | std::ios::trunc);
50 if (!ofile_generated_tracked.is_open() || !ofile_generated_tracked) {
53 ofile_generated_tracked <<
"evn, timestamp, thread_id, bank, name, pid, type, multiplicity, p, theta, phi, vx, vy, vz\n";
54 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: opened file " + filename_generated_tracked());
60bool GstreamerCsvFactory::closeConnectionImpl() {
63 if (ofile_true_info.is_open()) ofile_true_info.close();
64 if (ofile_digitized.is_open()) ofile_digitized.close();
65 if (ofile_generated.is_open()) ofile_generated.close();
66 if (ofile_generated_tracked.is_open()) ofile_generated_tracked.close();
68 if (ofile_true_info.is_open()) {
71 if (ofile_digitized.is_open()) {
74 if (ofile_generated.is_open()) {
77 if (ofile_generated_tracked.is_open()) {
81 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: closed file " + filename_true_info());
82 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: closed file " + filename_digitized());
83 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: closed file " + filename_generated());
84 log->
info(1, SFUNCTION_NAME,
"GstreamerCsvFactory: closed file " + filename_generated_tracked());
89std::ofstream& GstreamerCsvFactory::generated_stream_for_bank(
const std::string& bankName) {
90 return bankName ==
"generated_tracked" ? ofile_generated_tracked : ofile_generated;
93bool GstreamerCsvFactory::publishEventGeneratedParticlesImpl(
const std::string& bankName,
95 auto& stream = generated_stream_for_bank(bankName);
96 if (!stream.is_open()) {
100 for (
const auto& particle : particles) {
101 stream << event_number <<
", " << timestamp <<
", " << thread_id <<
", " << bankName <<
", "
102 << particle.name <<
", "
103 << particle.pid <<
", "
104 << particle.type <<
", "
105 << particle.multiplicity <<
", "
106 << particle.p <<
", "
107 << particle.theta <<
", "
108 << particle.phi <<
", "
109 << particle.vx <<
", "
110 << particle.vy <<
", "
111 << particle.vz <<
"\n";
std::shared_ptr< GLogger > log
void info(int level, Args &&... args) const
void error(int exit_code, Args &&... args) const
std::vector< GGeneratedParticleData > GGeneratedParticleBank
CSV streamer plugin declarations.
Shared constants and error codes for the gstreamer module.
#define ERR_CANTCLOSEOUTPUT
Output medium could not be closed cleanly.
#define ERR_CANTOPENOUTPUT
Output medium could not be opened successfully.