00001 #ifndef CRECFUNC_H
00002 #define CRECFUNC_H
00003 #include "SeismicDataComp.h"
00004 #include "ResPkModel.h"
00005 #include "TsSpectrum.h"
00006 #include <string>
00007
00008
00009
00010
00011
00012 class RecCalc{
00013 public:
00014
00015 enum trfmethod {specdiv, iterdecon};
00016 private:
00017
00018 trfmethod method;
00019
00020 TsSpectrum Spectrum;
00021
00022 double c;
00023 double omega;
00024
00025 double sigma;
00026
00027 int shift;
00028
00029 bool normalize;
00030
00031 SeismicDataComp RadComp;
00032 SeismicDataComp VerComp;
00033
00034 void SpectralDivision(const SeismicDataComp &RComp,
00035 const SeismicDataComp &VComp, SeismicDataComp &Receiver);
00036
00037 void IterativeDeconvolution(const SeismicDataComp &RComp,
00038 const SeismicDataComp &VComp, SeismicDataComp &Receiver);
00039 public:
00040
00041 const SeismicDataComp &GetRadComp(){return RadComp;}
00042 const SeismicDataComp &GetVerComp(){return VerComp;}
00043
00044 void SetNormalize(const bool what){normalize = what;}
00045
00046 void SynthPreParallel(const std::string &filename,ResPkModel &Model,SeismicDataComp &Receiver, const bool cleanfiles = false);
00047
00048 void SynthSafeParallel(const std::string &filename,ResPkModel &Model,SeismicDataComp &Receiver, const bool cleanfiles = false);
00049
00050 void SynthPostParallel(const std::string &filename,ResPkModel &Model,SeismicDataComp &Receiver, const bool cleanfiles = false);
00051
00052 void CalcRecData(const SeismicDataComp &RadComp, const SeismicDataComp &VerComp, SeismicDataComp &Receiver);
00053
00054 void CalcRecSynth(const std::string &filename,ResPkModel &Model,SeismicDataComp &Receiver, const bool cleanfiles = false);
00055 RecCalc& operator=(const RecCalc& source);
00056
00057 RecCalc(const int myshift, const double myomega, const double mysigma,
00058 const double myc, const bool multicalc = false, const trfmethod themethod = specdiv);
00059 RecCalc(const RecCalc &Old);
00060 virtual ~RecCalc();
00061 };
00062
00063 #endif // CRECFUNC_H