OpendTect  6.6
wavelet.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H. Bril
8  Date: 24-3-1996
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "seismod.h"
15 #include "mathfunc.h"
16 #include "namedobj.h"
17 #include "ranges.h"
18 #include "valseries.h"
19 #include "uistring.h"
20 class IOObj;
21 template <class T> class ValueSeriesInterpolator;
22 
23 
26 public:
27  Wavelet(const char* nm=0);
28  Wavelet(bool ricker_else_sinc,float fpeak,
29  float sample_intv=mUdf(float),float scale=1);
30  Wavelet(const Wavelet&);
32  virtual ~Wavelet();
33 
34  static Wavelet* get(const IOObj*);
35  static IOObj* getIOObj(const char* wvltnm);
36  bool put(const IOObj*) const;
37 
38  float* samples() { return samps_; }
39  const float* samples() const { return samps_; }
40  inline void set( int idx, float v )
41  { if ( isValidSample(idx) ) samps_[idx] = v; }
42  inline float get( int idx ) const
43  { return isValidSample(idx) ? samps_[idx] : 0.f; }
44  inline bool isValidSample( int idx ) const
45  { return idx>=0 && idx<sz_; }
46 
47  float sampleRate() const { return dpos_; }
48  int centerSample() const { return cidx_; }
50  { return StepInterval<float>(
51  -cidx_*dpos_, (sz_-cidx_-1)*dpos_, dpos_ ); }
52  int nearestSample(float z) const;
53  bool hasSymmetricalSamples() { return cidx_ * 2 + 1 == sz_; }
54 
55  int size() const { return sz_; }
56  float getValue(float) const;
57 
58  void setSampleRate(float sr) { dpos_ = sr; }
59  void setCenterSample(int cidx) { cidx_ = cidx; }
61  void reSize(int); // destroys current sample data!
62 
63  bool reSample(float newsr);
64  bool reSampleTime(float newsr);
67  // for better results
68  void transform(float b,float a);
70  void normalize();
71  bool trimPaddedZeros();
72  float getExtrValue(bool ismax = true) const;
74  int getPos(float val,bool closetocenteronly=false) const;
75 
79 
80  static void markScaled(const MultiID& id);
81  static void markScaled(const MultiID& id,const MultiID& orgid,
82  const MultiID& horid,const MultiID& seisid,
83  const char* lvlnm);
84  static bool isScaled(const MultiID&);
85  static bool isScaled(const MultiID& id,MultiID& orgid,
86  MultiID& horid,MultiID& seisid,
87  BufferString& lvlnm);
89 
90 protected:
91 
92  float dpos_;
93  float* samps_;
94  int sz_;
95  int cidx_;
97 
98 };
99 
100 
109 public:
110 
112  :wv_(const_cast<Wavelet&>(wv)) {}
113 
114  float value( od_int64 idx ) const;
115  bool writable() const { return true; }
116  void setValue( od_int64 idx,float v);
117  float* arr();
118  const float* arr() const;
119 
120  inline ValueSeries<float>* clone() const;
121 
122 protected:
123 
125 };
126 
136 public:
138  : wv_(wv)
139  {}
140 
141  float getValue( float z ) const { return wv_.getValue(z); }
142  float getValue( const float* p ) const { return getValue(*p); }
143 
144 protected:
145 
146  const Wavelet& wv_;
147 };
148 
150 { return new WaveletValueSeries( wv_ ); }
151 
152 
ValueSeries< float >
Wavelet::ensureSymmetricalSamples
void ensureSymmetricalSamples()
pads with zeros - use with and before reSample
Wavelet::getIOObj
static IOObj * getIOObj(const char *wvltnm)
WaveletValueSeries::arr
const float * arr() const
Wavelet::hasSymmetricalSamples
bool hasSymmetricalSamples()
Definition: wavelet.h:53
NamedCallBacker
CallBacker object with a name. Use if you want your object to be able to send and receive CallBack's,...
Definition: namedobj.h:72
Wavelet::set
void set(int idx, float v)
Definition: wavelet.h:40
Wavelet::isValidSample
bool isValidSample(int idx) const
Definition: wavelet.h:44
uistring.h
Wavelet::samples
float * samples()
Definition: wavelet.h:38
Wavelet::getExtrValue
float getExtrValue(bool ismax=true) const
Wavelet::setSampleRate
void setSampleRate(float sr)
Definition: wavelet.h:58
WaveletValueSeries::wv_
Wavelet & wv_
Definition: wavelet.h:124
valseries.h
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
Wavelet::Wavelet
Wavelet(const Wavelet &)
Wavelet::get
float get(int idx) const
Definition: wavelet.h:42
od_int64
#define od_int64
Definition: plftypes.h:35
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
namedobj.h
Wavelet::markScaled
static void markScaled(const MultiID &id, const MultiID &orgid, const MultiID &horid, const MultiID &seisid, const char *lvlnm)
Wavelet::size
int size() const
Definition: wavelet.h:55
Wavelet::put
bool put(const IOObj *) const
Wavelet::Wavelet
Wavelet(bool ricker_else_sinc, float fpeak, float sample_intv=mUdf(float), float scale=1)
Wavelet::getExtrValues
void getExtrValues(Interval< float > &) const
WaveletValueSeries::clone
ValueSeries< float > * clone() const
Definition: wavelet.h:149
WaveletValueSeries::value
float value(od_int64 idx) const
Wavelet::isScaled
static bool isScaled(const MultiID &)
Wavelet::nearestSample
int nearestSample(float z) const
WaveletValueSeries::setValue
void setValue(od_int64 idx, float v)
MathFunction< float, float >
Wavelet::dpos_
float dpos_
Definition: wavelet.h:92
Wavelet::mODTextTranslationClass
mODTextTranslationClass(Wavelet)
WaveletFunction::getValue
float getValue(float z) const
Definition: wavelet.h:141
WaveletFunction::WaveletFunction
WaveletFunction(const Wavelet &wv)
Definition: wavelet.h:137
Wavelet::reSampleTime
bool reSampleTime(float newsr)
Wavelet::operator=
Wavelet & operator=(const Wavelet &)
Wavelet::setInterpolator
void setInterpolator(ValueSeriesInterpolator< float > *)
becomes mine
StepInterval< float >
Wavelet::getPos
int getPos(float val, bool closetocenteronly=false) const
WaveletFunction::mODTextTranslationClass
mODTextTranslationClass(WaveletFunction)
WaveletFunction::wv_
const Wavelet & wv_
Definition: wavelet.h:146
Wavelet::interpolator
const ValueSeriesInterpolator< float > & interpolator() const
WaveletValueSeries::mODTextTranslationClass
mODTextTranslationClass(WaveletValueSeries)
Wavelet::cidx_
int cidx_
The index of the center sample.
Definition: wavelet.h:95
Wavelet::Wavelet
Wavelet(const char *nm=0)
Wavelet::samples
const float * samples() const
Definition: wavelet.h:39
Wavelet::samps_
float * samps_
Definition: wavelet.h:93
Wavelet::~Wavelet
virtual ~Wavelet()
Wavelet::isScaled
static bool isScaled(const MultiID &id, MultiID &orgid, MultiID &horid, MultiID &seisid, BufferString &lvlnm)
if external, orgid will be "0"
IOObj
Definition: ioobj.h:58
WaveletValueSeries::writable
bool writable() const
Definition: wavelet.h:115
Wavelet::normalize
void normalize()
ValueSeriesInterpolator
Definition: valseriesinterpol.h:25
mathfunc.h
Wavelet::reSample
bool reSample(float newsr)
MultiID
Compound key consisting of ints.
Definition: multiid.h:24
Wavelet::getValue
float getValue(float) const
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
Wavelet::get
static Wavelet * get(const IOObj *)
Wavelet::trimPaddedZeros
bool trimPaddedZeros()
returns whether any change
Wavelet::sz_
int sz_
Definition: wavelet.h:94
Wavelet::sampleRate
float sampleRate() const
Definition: wavelet.h:47
WaveletValueSeries::arr
float * arr()
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
Wavelet::samplePositions
StepInterval< float > samplePositions() const
Definition: wavelet.h:49
Wavelet::transform
void transform(float b, float a)
a*X+b transformation
WaveletValueSeries
Definition: wavelet.h:108
Wavelet::reSize
void reSize(int)
Wavelet::markScaled
static void markScaled(const MultiID &id)
"External"
Wavelet::intpol_
ValueSeriesInterpolator< float > * intpol_
Definition: wavelet.h:96
Wavelet::centerSample
int centerSample() const
Definition: wavelet.h:48
Wavelet
Definition: wavelet.h:25
ranges.h
WaveletFunction
Definition: wavelet.h:135
Interval< float >
WaveletValueSeries::WaveletValueSeries
WaveletValueSeries(const Wavelet &wv)
Definition: wavelet.h:111
WaveletFunction::getValue
float getValue(const float *p) const
Definition: wavelet.h:142
Wavelet::setCenterSample
void setCenterSample(int cidx)
positive for starttwt < 0
Definition: wavelet.h:59

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021