OpendTect  6.3
seistrc.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: 10-5-1995
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "seisinfo.h"
14 #include "tracedata.h"
15 #include "datachar.h"
16 #include "valseries.h"
17 #include "mathfunc.h"
18 #include "valseriesinterpol.h"
19 
20 template <class T> class ValueSeriesInterpolator;
21 template <class T> class Array1D;
22 
32 {
33 public:
34 
35  SeisTrc( int ns=0, const DataCharacteristics& dc
37  : intpol_(0)
38  { data_.addComponent(ns,dc); }
39  SeisTrc( const SeisTrc& t )
40  : intpol_(0)
41  { *this = t; }
42  ~SeisTrc();
43  SeisTrc& operator =(const SeisTrc& t);
44  inline bool isEmpty() const { return data_.isEmpty(); }
45 
46  SeisTrcInfo& info() { return info_; }
47  const SeisTrcInfo& info() const { return info_; }
48  TraceData& data() { return data_; }
49  const TraceData& data() const { return data_; }
50  int nrComponents() const { return data_.nrComponents(); }
51 
52  inline void set( int idx, float v, int icomp )
53  { data_.setValue( idx, v, icomp ); }
54  inline float get( int idx, int icomp ) const
55  { return data_.getValue(idx,icomp); }
56  inline float getFirst( int icomp=0 ) const
57  { return isEmpty() ? 0 : get(0,icomp); }
58  inline float getLast( int icomp=0 ) const
59  { return isEmpty() ? 0 : get(size()-1,icomp); }
60 
61  inline int size() const
62  { return data_.size(0); }
63  float getValue(float,int icomp) const;
64 
65  bool isNull(int icomp=-1) const;
66  bool hasUndef(int icomp=-1) const;
67  inline void zero( int icomp=-1 )
68  { data_.zero( icomp ); }
69  void addComponent( int ns=0,
70  const DataCharacteristics& dc
72  bool cleardata=false )
73  { data_.addComponent( ns, dc, cleardata ); }
74  void removeComponent( int icomp )
75  { data_.delComponent( icomp ); }
76  bool reSize(int,bool copydata);
77  void erase() { reSize( 0, false); }
78  void copyDataFrom(const SeisTrc&,int icomp=-1,
79  bool forcefloats=false);
81 
82  const ValueSeriesInterpolator<float>& interpolator() const;
83  void setInterpolator(ValueSeriesInterpolator<float>*);
85 
86  inline float startPos() const
87  { return info_.sampling_.start; }
88  inline float endPos() const
89  { return info_.sampling_.atIndex( size()-1 ); }
90  inline float stepPos() const
91  { return info_.sampling_.step; }
92  inline ZSampling zRange() const
93  { return ZSampling(startPos(),endPos(),stepPos()); }
94  inline float samplePos( int idx ) const
95  { return info_.samplePos(idx); }
96  inline int nearestSample( float pos ) const
97  { return info_.nearestSample(pos); }
98  void setStartPos( float p )
99  { info_.sampling_.start = p; }
100  inline bool dataPresent( float t ) const
101  { return info_.dataPresent(t,size()); }
102  SampleGate sampleGate(const Interval<float>&,bool check) const;
103 
104  SeisTrc* getRelTrc(const ZGate&,float sr=mUdf(float)) const;
107  SeisTrc* getExtendedTo(const ZGate&,bool usetrcvals=true) const;
111 
112  void convertToFPs(bool preserve_data=true);
113 
114  static const char* sKeyExtTrcToSI()
115  { return "Extend Traces To Survey Z Range"; }
116 
117 protected:
118 
122 
123  bool chkForSpecVal(int icomp,bool isnull) const;
124 
125 private:
126 
127  void cleanUp();
128 
129 };
130 
131 
139 {
140 public:
141 
142  SeisTrcValueSeries( const SeisTrc& t, int c )
143  : trc_(const_cast<SeisTrc&>(t))
144  , icomp_(c) {}
145 
146  void setComponent( int idx ) { icomp_ = idx; }
147  float value( od_int64 idx ) const;
148  bool writable() const { return true; }
149  void setValue( od_int64 idx,float v);
150  float* arr();
151  const float* arr() const;
152 
153  bool copytoArray(Array1D<float>&);
154 
155  inline ValueSeries<float>* clone() const;
156 
157 protected:
158 
159  SeisTrc& trc_;
160  int icomp_;
161 };
162 
171 {
172 public:
173 
174  SeisTrcFunction(const SeisTrc& trc, int icomp)
175  : trc_(trc), icomp_(icomp) {}
176 
177  float getValue( float z ) const { return trc_.getValue(z,icomp_); }
178  float getValue( const float* p ) const { return getValue(*p); }
179 
180 protected:
181 
182  const SeisTrc& trc_;
183  const int icomp_;
184 };
185 
187 { return new SeisTrcValueSeries( trc_, icomp_ ); }
virtual ValueSeries< T > * clone() const =0
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:97
void zero(int icomp=-1)
Definition: seistrc.h:67
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
T value(int64_t i) const
Definition: arraynd.h:109
void setStartPos(float p)
Definition: seistrc.h:98
const TraceData & data() const
Definition: seistrc.h:49
Definition: seistrc.h:170
int nrComponents() const
Definition: seistrc.h:50
void erase()
Definition: seistrc.h:77
TraceData & data()
Definition: seistrc.h:48
float samplePos(int idx) const
Definition: seistrc.h:94
const int icomp_
Definition: seistrc.h:183
Definition: seistrc.h:138
SeisTrcInfo info_
Definition: seistrc.h:120
#define od_int64
Definition: plftypes.h:34
int nearestSample(float pos) const
Definition: seistrc.h:96
SeisTrcValueSeries(const SeisTrc &t, int c)
Definition: seistrc.h:142
Mathematical function.
Definition: mathfunc.h:59
bool writable() const
Definition: seistrc.h:148
void removeComponent(int icomp)
Definition: seistrc.h:74
float startPos() const
Definition: seistrc.h:86
const SeisTrcInfo & info() const
Definition: seistrc.h:47
int icomp_
Definition: seistrc.h:160
SeisTrc(int ns=0, const DataCharacteristics &dc=DataCharacteristics())
Definition: seistrc.h:35
Definition: ptrman.h:115
StepInterval< float > ZSampling
Definition: ranges.h:200
byte-level data characteristics of stored data.
Definition: datachar.h:35
SeisTrc & trc_
Definition: seistrc.h:159
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
Interface to a series of values.
Definition: odmemory.h:15
float getValue(const float *p) const
Definition: seistrc.h:178
Definition: valseriesinterpol.h:24
void addComponent(int ns=0, const DataCharacteristics &dc=DataCharacteristics(), bool cleardata=false)
Definition: seistrc.h:69
SeisTrcFunction(const SeisTrc &trc, int icomp)
Definition: seistrc.h:174
float endPos() const
Definition: seistrc.h:88
bool dataPresent(float t) const
Definition: seistrc.h:100
float stepPos() const
Definition: seistrc.h:90
float getLast(int icomp=0) const
Definition: seistrc.h:58
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:24
bool isEmpty() const
Definition: seistrc.h:44
const SeisTrc & trc_
Definition: seistrc.h:182
ZSampling zRange() const
Definition: seistrc.h:92
bool isEmpty(const char *)
float getValue(float z) const
Definition: seistrc.h:177
Seismic trace.
Definition: seistrc.h:31
ValueSeries< float > * clone() const
Definition: seistrc.h:186
int size() const
Definition: seistrc.h:61
PtrMan< ValueSeriesInterpolator< float > > intpol_
Definition: seistrc.h:121
void setValue(int64_t i, T t)
Definition: arraynd.h:111
A set of data buffers and their interpreters.
Definition: tracedata.h:30
SeisTrc(const SeisTrc &t)
Definition: seistrc.h:39
static const char * sKeyExtTrcToSI()
Definition: seistrc.h:114
virtual T * arr()
Definition: valseries.h:48
void setComponent(int idx)
Definition: seistrc.h:146
SeisTrcInfo & info()
Definition: seistrc.h:46
TraceData data_
Definition: seistrc.h:119
float getFirst(int icomp=0) const
Definition: seistrc.h:56

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