1#ifndef __CNR_DECON_ENGINE_H__
2#define __CNR_DECON_ENGINE_H__
3#include <boost/archive/text_iarchive.hpp>
4#include <boost/archive/text_oarchive.hpp>
5#include <boost/serialization/base_object.hpp>
6#include <boost/serialization/shared_ptr.hpp>
7#include <boost/serialization/version.hpp>
9#include "mspass/algorithms/Taper.h"
10#include "mspass/algorithms/deconvolution/FFTDeconOperator.h"
11#include "mspass/algorithms/deconvolution/MTPowerSpectrumEngine.h"
12#include "mspass/algorithms/deconvolution/ShapingWavelet.h"
13#include "mspass/seismic/PowerSpectrum.h"
14#include "mspass/seismic/Seismogram.h"
15#include "mspass/seismic/TimeSeries.h"
16#include "mspass/utility/AntelopePf.h"
18namespace mspass::algorithms::deconvolution {
28enum class CNR3C_algorithms { generalized_water_level, colored_noise_damping };
145 const double t0shift);
152 CNR3C_algorithms algorithm;
162 double band_snr_floor;
164 int shaping_wavelet_number_poles;
183 double snr_regularization_floor;
186 double regularization_bandwidth_fraction;
188 double signal_bandwidth_fraction[3];
198 void update_shaping_wavelet(
const double fl,
const double fh);
207 friend boost::serialization::access;
208 template <
class Archive>
209 void serialize(Archive &ar,
const unsigned int version) {
211 ar &boost::serialization::base_object<FFTDeconOperator>(*
this);
218 ar & shaping_wavelet_number_poles;
222 ar & configured_shapingwavelet;
223 }
else if (Archive::is_loading::value) {
224 configured_shapingwavelet = shapingwavelet;
230 ar & snr_regularization_floor;
235 ar & regularization_bandwidth_fraction;
240 for (
auto k = 0; k < 3; ++k) {
244 ar &signal_bandwidth_fraction[k];
Colored-noise regularized three-component deconvolution engine.
Definition CNRDeconEngine.h:35
mspass::seismic::PowerSpectrum compute_noise_spectrum(const mspass::seismic::TimeSeries &d2use)
Definition CNRDeconEngine.cc:519
void changeparameter(const mspass::utility::Metadata &md)
Definition CNRDeconEngine.cc:330
CNRDeconEngine & operator=(const CNRDeconEngine &parent)
Definition CNRDeconEngine.cc:424
virtual ~CNRDeconEngine()
Definition CNRDeconEngine.h:90
double get_operator_dt() const
Definition CNRDeconEngine.h:105
CNRDeconEngine()
Definition CNRDeconEngine.cc:155
mspass::seismic::Seismogram process(const mspass::seismic::Seismogram &d, const mspass::seismic::PowerSpectrum &psnoise, const double fl, const double fh)
Definition CNRDeconEngine.cc:908
mspass::seismic::TimeSeries resolution_kernel(const mspass::seismic::TimeSeries &wavelet)
Alias for actual_output using inverse-theory terminology.
Definition CNRDeconEngine.h:139
mspass::seismic::TimeSeries actual_output(const mspass::seismic::TimeSeries &wavelet)
Definition CNRDeconEngine.cc:1207
mspass::seismic::TimeSeries inverse_wavelet(const mspass::seismic::TimeSeries &wavelet, const double t0shift)
Definition CNRDeconEngine.cc:1359
mspass::seismic::TimeSeries output_shaping_wavelet()
Return the output shaping wavelet.
Definition CNRDeconEngine.h:129
void initialize_inverse_operator(const mspass::seismic::TimeSeries &wavelet, const mspass::seismic::TimeSeries &noise_data)
Definition CNRDeconEngine.cc:450
mspass::utility::Metadata QCMetrics()
Definition CNRDeconEngine.cc:1405
mspass::seismic::TimeSeries ideal_output()
Definition CNRDeconEngine.cc:1199
Interfacing object to ease conversion between FORTRAN and C++ complex.
Definition ComplexArray.h:44
Object to hold components needed in all fft based decon algorithms.
Definition FFTDeconOperator.h:22
Multittaper power spectral estimator.
Definition MTPowerSpectrumEngine.h:32
Frequency domain shaping wavelet.
Definition ShapingWavelet.h:22
Definition PowerSpectrum.h:11
Implemntation of Seismogram for MsPASS.
Definition Seismogram.h:14
Implemntation of TimeSeries for MsPASS.
Definition TimeSeries.h:14
C++ object version of a parameter file.
Definition AntelopePf.h:61