MsPASS C++ API  2.4.1.dev4+g92330b7a
Defines the C++ API for MsPASS
Loading...
Searching...
No Matches
MultiTaperXcorDecon.h
1#ifndef __SIMPLE_MULTITAPER_DECON_H__
2#define __SIMPLE_MULTITAPER_DECON_H__
3#include "mspass/algorithms/deconvolution/FFTDeconOperator.h"
4#include "mspass/algorithms/deconvolution/ScalarDecon.h"
5#include "mspass/algorithms/deconvolution/ShapingWavelet.h"
6#include "mspass/seismic/CoreTimeSeries.h"
7#include "mspass/utility/Metadata.h"
8#include "mspass/utility/dmatrix.h"
9#include <boost/archive/text_iarchive.hpp>
10#include <boost/archive/text_oarchive.hpp>
11#include <boost/serialization/base_object.hpp>
12#include <boost/serialization/vector.hpp>
13#include <vector>
14namespace mspass::algorithms::deconvolution {
23public:
34 const std::vector<double> &noise,
35 const std::vector<double> &wavelet,
36 const std::vector<double> &data);
50 this->read_metadata(md, true);
51 this->result.clear();
52 this->winv = ComplexArray();
53 this->ao_fft = ComplexArray();
54 };
60 int loadnoise(const std::vector<double> &noise);
66 int load(const std::vector<double> &w, const std::vector<double> &d,
67 const std::vector<double> &n);
73 void process();
106 mspass::seismic::CoreTimeSeries inverse_wavelet(const double t0parent = 0.0);
119 int get_taperlen() { return taperlen; };
121 int get_number_tapers() { return nseq; };
123 double get_time_bandwidth_product() { return nw; };
124
125private:
126 /* noise data vector */
127 std::vector<double> noise;
128 double nw, damp;
129 int nseq; // number of tapers
130 unsigned int taperlen;
132 /* We also cache the actual output fft because the cost is
133 * small compared to need to recompute it when requested.
134 * This is a feature added for the GID method that adds
135 * an inefficiency for straight application */
136 ComplexArray ao_fft;
138 int read_metadata(const mspass::utility::Metadata &md, bool refresh);
139 /* Returns a tapered data in container of ComplexArray objects*/
140 std::vector<ComplexArray> taper_data(const std::vector<double> &signal);
141 friend boost::serialization::access;
142 template <class Archive>
143 void serialize(Archive &ar, const unsigned int version) {
144 ar &boost::serialization::base_object<ScalarDecon>(*this);
145 ar &boost::serialization::base_object<FFTDeconOperator>(*this);
146 ar & noise;
147 ar & nw;
148 ar & damp;
149 ar & nseq;
150 ar & taperlen;
151 ar & tapers;
152 ar & ao_fft;
153 }
154};
155} // namespace mspass::algorithms::deconvolution
156#endif
Interfacing object to ease conversion between FORTRAN and C++ complex.
Definition ComplexArray.h:41
Object to hold components needed in all fft based decon algorithms.
Definition FFTDeconOperator.h:21
ComplexArray winv
Frequency-domain inverse wavelet coefficients for derived operators.
Definition FFTDeconOperator.h:103
Multitaper source-power-stabilized deconvolution.
Definition MultiTaperXcorDecon.h:22
int load(const std::vector< double > &w, const std::vector< double > &d, const std::vector< double > &n)
Load wavelet, data, and noise vectors.
Definition MultiTaperXcorDecon.cc:156
mspass::seismic::CoreTimeSeries inverse_wavelet()
Return default FIR representation of the inverse filter.
Definition MultiTaperXcorDecon.cc:387
MultiTaperXcorDecon()
Definition MultiTaperXcorDecon.h:25
int get_number_tapers()
Definition MultiTaperXcorDecon.h:121
void changeparameter(const mspass::utility::Metadata &md)
Update operator parameters from a Metadata container.
Definition MultiTaperXcorDecon.h:49
mspass::seismic::CoreTimeSeries actual_output()
Return the actual output of the deconvolution operator.
Definition MultiTaperXcorDecon.cc:333
int get_taperlen()
Definition MultiTaperXcorDecon.h:119
int loadnoise(const std::vector< double > &noise)
Load a section of pre-event noise.
Definition MultiTaperXcorDecon.cc:130
void process()
Compute the multitaper cross-correlation deconvolution result.
Definition MultiTaperXcorDecon.cc:215
mspass::utility::Metadata QCMetrics()
Return appropriate quality measures.
Definition MultiTaperXcorDecon.cc:395
double get_time_bandwidth_product()
Definition MultiTaperXcorDecon.h:123
Base class decon operator for single station 3C decon (receiver functions).
Definition ScalarDecon.h:30
std::vector< double > result
Deconvolved output vector produced by process.
Definition ScalarDecon.h:144
std::vector< double > data
Data vector to be deconvolved by concrete scalar methods.
Definition ScalarDecon.h:140
std::vector< double > wavelet
Source-wavelet estimate used by concrete scalar methods.
Definition ScalarDecon.h:142
Scalar time series data object.
Definition CoreTimeSeries.h:17
Type-safe metadata container used throughout MsPASS.
Definition Metadata.h:101
Lightweight, simple matrix object.
Definition dmatrix.h:104