1#ifndef _MSPASS_ENSEMBLE_H_
2#define _MSPASS_ENSEMBLE_H_
3#include "mspass/seismic/Seismogram.h"
4#include "mspass/seismic/TimeSeries.h"
5#include "mspass/utility/memory_constants.h"
45 dynamic_cast<const mspass::utility::
Metadata &>(parent)),
49 if (
this != (&parent)) {
67 return (this->member[n]);
99 for (i = 0; i < this->member.size(); ++i) {
108 for (
size_t i = 0; i < exclude.size(); i++) {
110 sync_md.
erase(exclude[i]);
113 for (
size_t i = 0; i < this->member.size(); ++i) {
115 (*mdmember) += sync_md;
160 ensemble_is_live =
false;
172 ensemble_is_live =
false;
187 ensemble_is_live = parent.ensemble_is_live;
192 ensemble_is_live =
true;
195 void kill() { ensemble_is_live =
false; };
197 bool live()
const {
return ensemble_is_live; };
200 bool dead()
const {
return !ensemble_is_live; };
218 ensemble_is_live =
true;
226 if (&parent !=
this) {
228 this->member.reserve(parent.
member.size());
229 this->member = parent.
member;
231 ensemble_is_live = parent.ensemble_is_live;
243 memuse =
sizeof(*this);
244 for (
auto p = this->member.begin(); p != this->member.end(); ++p) {
245 memuse += p->memory_use();
251 mspass::utility::memory_constants::MD_AVERAGE_SIZE * this->
md.size();
252 memuse += mspass::utility::memory_constants::KEY_AVERAGE_SIZE *
255 memuse += mspass::utility::memory_constants::ELOG_AVERAGE_SIZE *
261 bool ensemble_is_live;
265 for (
auto dptr = this->member.begin(); dptr != this->member.end(); ++dptr) {
Metadata-bearing container for a collection of seismic data objects.
Definition Ensemble.h:14
Ensemble()
Definition Ensemble.h:27
void sync_metadata(std::vector< std::string > exclude)
copy ensemble metadata to all members except for the ones excluded.
Definition Ensemble.h:106
std::vector< Tdata > member
Container holding data objects.
Definition Ensemble.h:25
void sync_metadata()
copy ensemble metadata to all members.
Definition Ensemble.h:97
Ensemble(const size_t n)
Reserve space but build empty ensemble.
Definition Ensemble.h:36
void update_metadata(const mspass::utility::Metadata &newmd)
updates ensemble header (Metadata).
Definition Ensemble.h:82
Ensemble(const mspass::utility::Metadata &md, const size_t n)
Definition Ensemble.h:38
Ensemble(const Ensemble &parent)
Definition Ensemble.h:43
Ensemble & operator=(const Ensemble &parent)
Definition Ensemble.h:48
Tdata & operator[](const size_t n) const
Indexing operator.
Definition Ensemble.h:66
Template class that extends Ensemble to include an error log and live tests.
Definition Ensemble.h:140
LoggingEnsemble(const Ensemble< T > &parent)
Definition Ensemble.h:191
LoggingEnsemble(const mspass::utility::Metadata &md, const mspass::utility::ErrorLogger &elogin, const size_t ndata)
Definition Ensemble.h:180
LoggingEnsemble< T > & operator=(const LoggingEnsemble< T > &parent)
Definition Ensemble.h:225
LoggingEnsemble(const mspass::utility::Metadata &md, const size_t n)
Definition Ensemble.h:168
LoggingEnsemble()
Definition Ensemble.h:146
size_t memory_use() const
Estimate memory used by this ensemble.
Definition Ensemble.h:241
void kill()
Definition Ensemble.h:195
bool set_live()
Definition Ensemble.h:216
bool validate()
Definition Ensemble.h:264
mspass::utility::ErrorLogger elog
Definition Ensemble.h:143
LoggingEnsemble(const size_t n)
Definition Ensemble.h:159
bool live() const
Definition Ensemble.h:197
LoggingEnsemble(const LoggingEnsemble< T > &parent)
Definition Ensemble.h:185
bool dead() const
Definition Ensemble.h:200
Container to hold error logs for a data object.
Definition ErrorLogger.h:63
int size() const
Definition ErrorLogger.h:115
Define metadata keys.
Definition BasicSpectrum.h:6
Ensemble< TimeSeries > TimeSeriesEnsemble
Definition Ensemble.h:273
Ensemble< Seismogram > ThreeComponentEnsemble
Definition Ensemble.h:275