MsPASS C++ API  2.4.1.dev4+g92330b7a
Defines the C++ API for MsPASS
Loading...
Searching...
No Matches
BasicSpectrum.h
1#ifndef _BASIC_SPECTRUM_H_
2#define _BASIC_SPECTRUM_H_
3#include "mspass/utility/MsPASSError.h"
4#include <math.h>
5#include <vector>
6namespace mspass::seismic {
20public:
23 dfval = 1.0;
24 f0val = 0.0;
25 };
35 BasicSpectrum(const double dfin, const double f0in, const double dtin,
36 const int npts_in) {
37 is_live = false;
38 dfval = dfin;
39 f0val = f0in;
40 parent_dt = dtin;
41 parent_npts = npts_in;
42 };
45 is_live = parent.is_live;
46 dfval = parent.dfval;
47 f0val = parent.f0val;
48 parent_dt = parent.parent_dt;
49 parent_npts = parent.parent_npts;
50 };
53 if (this != (&parent)) {
54 is_live = parent.is_live;
55 dfval = parent.dfval;
56 f0val = parent.f0val;
57 parent_dt = parent.parent_dt;
58 parent_npts = parent.parent_npts;
59 }
60 return *this;
61 };
62 /*~ Destructor.*/
63 virtual ~BasicSpectrum() {};
70 bool live() const { return is_live; };
78 bool dead() const { return !is_live; };
85 void kill() { is_live = false; };
92 void set_live() { is_live = true; };
94 double df() const { return this->dfval; };
99 double f0() const { return this->f0val; };
107 double dt() const { return this->parent_dt; };
115 double rayleigh() const {
116 return 1.0 / (this->parent_dt * static_cast<double>(this->parent_npts));
117 };
120 int timeseries_npts() const { return parent_npts; }
125 int sample_number(const double f) const {
126 int itest = static_cast<int>(round((f - f0val) / dfval));
127 if (itest < 0) {
129 "BasicSpectrum::sample_number: f must be positive or greater than "
130 "f0 if f0!=0",
131 mspass::utility::ErrorSeverity::Fatal);
132 } else if (itest >= this->nf()) {
134 "BasicSpectrum::sample_number: f received exceeds the length of "
135 "stored vector",
136 mspass::utility::ErrorSeverity::Fatal);
137 } else {
138 return itest;
139 }
140 };
142 void set_df(const double dfin) { dfval = dfin; };
144 void set_f0(const double f0in) { f0val = f0in; };
146 void set_dt(const double dtin) { parent_dt = dtin; };
150 void set_npts(const int npts_in) { parent_npts = npts_in; };
154 virtual std::vector<double> frequencies() const = 0;
157 virtual double frequency(const int sample_number) const = 0;
159 virtual size_t nf() const = 0;
163 virtual double Nyquist() const = 0;
164
165protected:
167 double dfval;
169 double f0val;
171 double parent_dt;
176};
177} // namespace mspass::seismic
178#endif
Definition BasicSpectrum.h:19
virtual double frequency(const int sample_number) const =0
int sample_number(const double f) const
Definition BasicSpectrum.h:125
double dt() const
Return the original sample interval of data used to generate spectrum.
Definition BasicSpectrum.h:107
bool is_live
Definition BasicSpectrum.h:175
void set_live()
Definition BasicSpectrum.h:92
bool live() const
Definition BasicSpectrum.h:70
double parent_npts
Definition BasicSpectrum.h:173
bool dead() const
Definition BasicSpectrum.h:78
BasicSpectrum(const BasicSpectrum &parent)
Definition BasicSpectrum.h:44
double f0val
Definition BasicSpectrum.h:169
int timeseries_npts() const
Definition BasicSpectrum.h:120
void set_f0(const double f0in)
Definition BasicSpectrum.h:144
double rayleigh() const
Return the Rayleigh bin size for this spectrum.
Definition BasicSpectrum.h:115
void set_dt(const double dtin)
Definition BasicSpectrum.h:146
void kill()
Definition BasicSpectrum.h:85
virtual size_t nf() const =0
void set_npts(const int npts_in)
Definition BasicSpectrum.h:150
BasicSpectrum & operator=(const BasicSpectrum &parent)
Definition BasicSpectrum.h:52
double dfval
Definition BasicSpectrum.h:167
double df() const
Definition BasicSpectrum.h:94
virtual std::vector< double > frequencies() const =0
BasicSpectrum(const double dfin, const double f0in, const double dtin, const int npts_in)
Definition BasicSpectrum.h:35
double f0() const
Definition BasicSpectrum.h:99
BasicSpectrum()
Definition BasicSpectrum.h:22
double parent_dt
Definition BasicSpectrum.h:171
virtual double Nyquist() const =0
void set_df(const double dfin)
Definition BasicSpectrum.h:142
Base class for error object thrown by MsPASS library routines.
Definition MsPASSError.h:38
Define metadata keys.
Definition BasicSpectrum.h:6