00001 #ifndef seistrcprop_h
00002 #define seistrcprop_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "seistype.h"
00016 #include "valseriesevent.h"
00017 class SeisTrc;
00018 #define mFlValSerEv ValueSeriesEvent<float,float>
00019
00022 mClass SeisTrcPropCalc
00023 {
00024 public:
00025 SeisTrcPropCalc( const SeisTrc& t, int ic=0 )
00026 : trc(t), curcomp(ic) {}
00027
00028 void setComponent( int i ) { curcomp = i; }
00029
00030 ValueSeriesEvent<float,float>
00031 find(VSEvent::Type,Interval<float>,int occ=1) const;
00032 double corr(const SeisTrc&,const SampleGate&,bool alpick=false) const;
00033 double dist(const SeisTrc&,const SampleGate&,bool alpick=false) const;
00034 float getFreq(int isamp) const;
00035 float getPhase(int isamp) const;
00036
00037 const SeisTrc& trace() const { return trc; }
00038
00039 protected:
00040
00041 const SeisTrc& trc;
00042 int curcomp;
00043
00044 };
00045
00050 mClass SeisTrcPropChg : public SeisTrcPropCalc
00051 {
00052 public:
00053 SeisTrcPropChg( SeisTrc& t, int ic=-1 )
00054 : SeisTrcPropCalc(t,ic) {}
00055
00056 void stack(const SeisTrc&,bool alongref=false,float wght=1);
00057 void scale(float fac,float shft=0);
00058 void normalize(bool aroundzero);
00059 void corrNormalize();
00060 void removeDC();
00061 void mute(float pos,float taperlen) {topMute(pos,taperlen);}
00062 void topMute(float,float);
00063 void tailMute(float,float);
00064
00065 SeisTrc& trace() { return mtrc(); }
00066
00067 protected:
00068
00069 inline SeisTrc& mtrc() { return const_cast<SeisTrc&>(trc); }
00070
00071 };
00072
00073
00074 #endif