OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "seismod.h"
15 #include "seisinfo.h"
16 #include "tracedata.h"
17 #include "datachar.h"
18 #include "valseries.h"
19 #include "mathfunc.h"
20 #include "valseriesinterpol.h"
21 
22 template <class T> class ValueSeriesInterpolator;
23 template <class T> class Array1D;
24 
34 {
35 public:
36 
37  SeisTrc( int ns=0, const DataCharacteristics& dc
39  : intpol_(0)
40  { data_.addComponent(ns,dc); }
41  SeisTrc( const SeisTrc& t )
42  : intpol_(0)
43  { *this = t; }
45  SeisTrc& operator =(const SeisTrc& t);
46  inline bool isEmpty() const { return data_.isEmpty(); }
47 
48  SeisTrcInfo& info() { return info_; }
49  const SeisTrcInfo& info() const { return info_; }
50  TraceData& data() { return data_; }
51  const TraceData& data() const { return data_; }
52  int nrComponents() const { return data_.nrComponents(); }
53 
54  inline void set( int idx, float v, int icomp )
55  { data_.setValue( idx, v, icomp ); }
56  inline float get( int idx, int icomp ) const
57  { return data_.getValue(idx,icomp); }
58  inline float getFirst( int icomp=0 ) const
59  { return isEmpty() ? 0 : get(0,icomp); }
60  inline float getLast( int icomp=0 ) const
61  { return isEmpty() ? 0 : get(size()-1,icomp); }
62 
63  inline int size() const
64  { return data_.size(0); }
65  float getValue(float,int icomp) const;
66 
67  bool isNull(int icomp=-1) const;
68  bool hasUndef(int icomp=-1) const;
69  inline void zero( int icomp=-1 )
70  { data_.zero( icomp ); }
71  void setAll(float,int icomp=-1);
74  bool reSize(int,bool copydata);
75  void copyDataFrom(const SeisTrc&,int icomp=-1,
76  bool forcefloats=false);
78 
79  static const float snapdist;
80 
86 
87  inline float startPos() const
88  { return info_.sampling.start; }
89  inline float endPos() const
90  { return info_.sampling.atIndex( size()-1 ); }
91  inline StepInterval<float> zRange() const
92  { return StepInterval<float>(startPos(),endPos(),
93  info_.sampling.step ); }
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 
154 
155  inline ValueSeries<float>* clone() const;
156 
157 protected:
158 
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_ ); }
188 
ValueSeries< float >
SeisTrc::zero
void zero(int icomp=-1)
Definition: seistrc.h:69
TraceData
A set of data buffers and their interpreters.
Definition: tracedata.h:32
SeisTrcValueSeries::arr
const float * arr() const
SeisTrc::getFirst
float getFirst(int icomp=0) const
Definition: seistrc.h:58
tracedata.h
SeisTrc::chkForSpecVal
bool chkForSpecVal(int icomp, bool isnull) const
SeisTrcInfo
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:27
SeisTrc::startPos
float startPos() const
Definition: seistrc.h:87
datachar.h
SeisTrc::data_
TraceData data_
Definition: seistrc.h:119
DataCharacteristics::Auto
@ Auto
Definition: datachar.h:87
SeisTrcValueSeries::setComponent
void setComponent(int idx)
Definition: seistrc.h:146
SeisTrc::setNrComponents
void setNrComponents(int, DataCharacteristics::UserType dt=DataCharacteristics::Auto)
valseries.h
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
SeisTrcValueSeries
Definition: seistrc.h:139
od_int64
#define od_int64
Definition: plftypes.h:35
SeisTrcFunction::icomp_
const int icomp_
Definition: seistrc.h:183
SeisTrc::setAll
void setAll(float, int icomp=-1)
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
SeisTrc::setStartPos
void setStartPos(float p)
Definition: seistrc.h:98
SeisTrcFunction::getValue
float getValue(float z) const
Definition: seistrc.h:177
SeisTrc
Seismic trace.
Definition: seistrc.h:34
SeisTrc::zRange
StepInterval< float > zRange() const
Definition: seistrc.h:91
SeisTrcFunction
Definition: seistrc.h:171
SeisTrcValueSeries::arr
float * arr()
SeisTrc::set
void set(int idx, float v, int icomp)
Definition: seistrc.h:54
SeisTrc::cleanUp
void cleanUp()
Array1D
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:111
MathFunction< float, float >
SeisTrc::isEmpty
bool isEmpty() const
Definition: seistrc.h:46
isEmpty
bool isEmpty(const NLAModel *mdl)
SeisTrc::reSize
bool reSize(int, bool copydata)
SeisTrc::SeisTrc
SeisTrc(int ns=0, const DataCharacteristics &dc=DataCharacteristics())
Definition: seistrc.h:37
StepInterval< float >
SeisTrcValueSeries::SeisTrcValueSeries
SeisTrcValueSeries(const SeisTrc &t, int c)
Definition: seistrc.h:142
SeisTrc::info
SeisTrcInfo & info()
Definition: seistrc.h:48
SeisTrcValueSeries::clone
ValueSeries< float > * clone() const
Definition: seistrc.h:186
SeisTrc::hasUndef
bool hasUndef(int icomp=-1) const
SeisTrc::SeisTrc
SeisTrc(const SeisTrc &t)
Definition: seistrc.h:41
SeisTrc::dataPresent
bool dataPresent(float t) const
Definition: seistrc.h:100
SeisTrc::data
TraceData & data()
Definition: seistrc.h:50
DataCharacteristics::UserType
UserType
Definition: datachar.h:87
SeisTrc::get
float get(int idx, int icomp) const
Definition: seistrc.h:56
SeisTrc::info_
SeisTrcInfo info_
Definition: seistrc.h:120
SeisTrc::info
const SeisTrcInfo & info() const
Definition: seistrc.h:49
SeisTrcValueSeries::icomp_
int icomp_
Definition: seistrc.h:160
ValueSeries::clone
virtual ValueSeries< T > * clone() const =0
SeisTrc::nrComponents
int nrComponents() const
Definition: seistrc.h:52
PtrMan
Definition: ptrman.h:121
SeisTrc::convertToFPs
void convertToFPs(bool preserve_data=true)
SeisTrc::getValue
float getValue(float, int icomp) const
SeisTrc::endPos
float endPos() const
Definition: seistrc.h:89
SeisTrcValueSeries::writable
bool writable() const
Definition: seistrc.h:148
SeisTrc::intpol_
PtrMan< ValueSeriesInterpolator< float > > intpol_
Definition: seistrc.h:121
SeisTrcFunction::getValue
float getValue(const float *p) const
Definition: seistrc.h:178
ValueSeriesInterpolator
Definition: valseriesinterpol.h:25
mathfunc.h
SeisTrc::getExtendedTo
SeisTrc * getExtendedTo(const ZGate &, bool usetrcvals=true) const
SeisTrc::size
int size() const
Definition: seistrc.h:63
SeisTrc::getRelTrc
SeisTrc * getRelTrc(const ZGate &, float sr=mUdf(float)) const
SeisTrc::samplePos
float samplePos(int idx) const
Definition: seistrc.h:94
SeisTrc::interpolator
const ValueSeriesInterpolator< float > & interpolator() const
SeisTrcValueSeries::value
float value(od_int64 idx) const
SeisTrc::~SeisTrc
~SeisTrc()
SeisTrc::copyDataFrom
void copyDataFrom(const SeisTrc &, int icomp=-1, bool forcefloats=false)
icomp -1 (default) is all components
SeisTrc::snapdist
static const float snapdist
Definition: seistrc.h:79
SeisTrc::sKeyExtTrcToSI
static const char * sKeyExtTrcToSI()
Definition: seistrc.h:114
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
valseriesinterpol.h
SeisTrcValueSeries::copytoArray
bool copytoArray(Array1D< float > &)
SeisTrc::sampleGate
SampleGate sampleGate(const Interval< float > &, bool check) const
SeisTrc::isNull
bool isNull(int icomp=-1) const
seisinfo.h
SeisTrc::data
const TraceData & data() const
Definition: seistrc.h:51
SeisTrcValueSeries::setValue
void setValue(od_int64 idx, float v)
SeisTrc::nearestSample
int nearestSample(float pos) const
Definition: seistrc.h:96
SeisTrcFunction::trc_
const SeisTrc & trc_
Definition: seistrc.h:182
SeisTrc::setInterpolator
void setInterpolator(ValueSeriesInterpolator< float > *)
becomes mine
Interval< int >
Array1D::get
virtual T get(int) const =0
SeisTrc::getLast
float getLast(int icomp=0) const
Definition: seistrc.h:60
SeisTrcFunction::SeisTrcFunction
SeisTrcFunction(const SeisTrc &trc, int icomp)
Definition: seistrc.h:174
DataCharacteristics
byte-level data characteristics of stored data.
Definition: datachar.h:37
SeisTrcValueSeries::trc_
SeisTrc & trc_
Definition: seistrc.h:159

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