OpendTect  6.6
seisparallelreader.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: K. Tingdahl
7  Date: July 2010
8  RCS: $Id$
9 ________________________________________________________________________
10 
11 */
12 
13 #include "seismod.h"
14 
15 #include "datachar.h"
16 #include "executor.h"
17 #include "fixedstring.h"
18 #include "paralleltask.h"
19 #include "sets.h"
20 #include "trckeyzsampling.h"
21 #include "uistring.h"
22 #include "valseriesinterpol.h"
23 
24 class BinDataDesc;
25 class BinIDValueSet;
26 class IOObj;
28 class Scaler;
29 class SeisTrc;
30 class SeisTrcBuf;
31 class SeisTrcReader;
32 class TraceData;
33 
34 template <class T> class Array2D;
35 template <class T> class Array3D;
36 template <class T> class DataInterpreter;
37 namespace PosInfo { class CubeData; class CubeDataIterator; }
38 
39 
40 namespace Seis
41 {
42 
43 class ObjectSummary;
44 class SelData;
45 
54 public:
55  ParallelReader(const IOObj&,const TrcKeyZSampling&);
61  const TypeSet<int>& components);
68 
69  void setComponents( const TypeSet<int>& compnrs )
70  { components_ = compnrs; }
76 
79 
80 protected:
81  od_int64 nrIterations() const { return totalnr_; }
82 
84 
85  bool doPrepare(int nrthreads);
87  bool doFinish(bool);
88 
89 
91 
93 
97  PosInfo::CubeData* trcssampling_ = nullptr;
98 
101 
104 
105 private:
106 
108 };
109 
110 
115 public:
117  const TrcKeyZSampling* =0,
118  const TypeSet<int>* comps=0);
123 
126  bool init();
127 
128  RegularSeisDataPack* getDataPack(); // The caller now owns the datapack
129 
132 
133 protected:
135  bool doPrepare(int nrthreads);
137  bool doFinish(bool);
138 
149 
151 };
152 
153 
166 public:
168  const TrcKeyZSampling* =0,
169  const TypeSet<int>* components=0);
174 
175  void setComponents( const TypeSet<int>& compnrs )
176  { components_ = compnrs; }
180  void setComponentScaler(const Scaler&,int compidx);
185 
194 
195  uiString uiMessage() const { return msg_; }
197  od_int64 nrDone() const { return nrdone_; }
198  od_int64 totalNr() const { return totalnr_; }
199 
200  bool init();
201 
202 protected:
203 
205  virtual int nextStep();
206  virtual bool goImpl(od_ostream*,bool,bool,int);
207 
208 private:
209 
210  void adjustDPDescToScalers(const BinDataDesc& trcdesc);
211  bool getTrcsPosForRead(int& desirednrpos,
212  TypeSet<TrcKey>&) const;
214 
216  bool is2d_;
231 
232  int queueid_;
233 
240 };
241 
242 
249 public:
250  RawTrcsSequence(const ObjectSummary&,int nrpos);
253 
254  RawTrcsSequence& operator =(const RawTrcsSequence&);
255 
256  bool isOK() const;
257  bool isPS() const;
259 
261  int nrPositions() const;
262  float get(int idx,int pos,int comp) const;
263  float getValue(float,int pos,int comp) const;
264 
265  void set(int idx,float val,int pos,int comp);
266  void setPositions(const TypeSet<TrcKey>&); //Becomes mine
267  void setTrcScaler(int pos,const Scaler*);
268  const Scaler* getTrcScaler(int pos) const;
269  void copyFrom(const SeisTrc&,int* ipos=0);
270  void copyFrom(const SeisTrcBuf&) {}
271 
272  //No checks
273  const unsigned char* getData(int ipos,int icomp,int is=0) const;
274  unsigned char* getData(int ipos,int icomp,int is=0);
275  const TrcKey& getPosition(int ipos) const;
276 
277 private:
278 
280 
284  const int nrpos_;
285 
287 
288 public:
289 
290  // Special users only
291 
292  TraceData& getTraceData( int pos ) { return *(data_[pos]); }
293 
294 };
295 
296 
306 {
307 public:
309  int pos, int comp);
311 
313 
314  inline void setPosition( int pos ) { ipos_ = pos; }
315  inline void setComponent( int idx ) { icomp_ = idx; }
316  void setValue(od_int64,float);
317  float* arr();
318 
319  float value(od_int64) const;
320  bool writable() const { return true; }
321  const float* arr() const;
322 
323 private:
324 
326  int ipos_;
327  int icomp_;
328 };
329 
330 } // namespace Seis
Seis::SequentialReader::trcssampling_
PosInfo::CubeData * trcssampling_
Definition: seisparallelreader.h:223
Seis::RawTrcsSequenceValueSeries::setPosition
void setPosition(int pos)
Definition: seisparallelreader.h:314
ValueSeries< float >
Seis::ParallelReader::doWork
bool doWork(od_int64, od_int64, int)
Seis::SequentialReader::setDataChar
void setDataChar(DataCharacteristics::UserType)
Seis::SequentialReader::mODTextTranslationClass
mODTextTranslationClass(SequentialReader)
Seis::RawTrcsSequenceValueSeries
Definition: seisparallelreader.h:306
Seis::ParallelReader::bidvals_
BinIDValueSet * bidvals_
Definition: seisparallelreader.h:92
PosInfo::CubeData
Position info for an entire 3D cube. The LineData's are not sorted.
Definition: posinfo.h:95
TraceData
A set of data buffers and their interpreters.
Definition: tracedata.h:32
Seis::ParallelReader::doPrepare
bool doPrepare(int nrthreads)
Seis::SequentialReader::nextStep
virtual int nextStep()
Seis::ParallelReader::nrIterations
od_int64 nrIterations() const
Definition: seisparallelreader.h:81
Seis::RawTrcsSequence::intpol_
PtrMan< ValueSeriesInterpolator< float > > intpol_
Definition: seisparallelreader.h:286
Seis::RawTrcsSequence::copyFrom
void copyFrom(const SeisTrcBuf &)
Definition: seisparallelreader.h:270
Seis::RawTrcsSequence::RawTrcsSequence
RawTrcsSequence(const RawTrcsSequence &)
datachar.h
Seis::SequentialReader::seissummary_
ObjectSummary * seissummary_
Definition: seisparallelreader.h:230
Seis::ParallelReader2D::msg_
uiString msg_
Definition: seisparallelreader.h:148
Seis::SequentialReader::trcsiterator3d_
PosInfo::CubeDataIterator * trcsiterator3d_
Definition: seisparallelreader.h:224
Seis::RawTrcsSequence::tks_
const TypeSet< TrcKey > * tks_
Definition: seisparallelreader.h:283
uistring.h
Seis::SequentialReader::goImpl
virtual bool goImpl(od_ostream *, bool, bool, int)
SeisTrcReader
reads from a seismic data store.
Definition: seisread.h:50
Seis::SequentialReader::uiMessage
uiString uiMessage() const
will be message() again in 7.x
Definition: seisparallelreader.h:195
Seis::RawTrcsSequence::isPS
bool isPS() const
Seis::ParallelReader::setDataPack
void setDataPack(RegularSeisDataPack *)
Seis::ParallelReader2D::~ParallelReader2D
mODTextTranslationClass(ParallelReader2D) public ~ParallelReader2D()
ObjectSet< TrcKeySampling >
Seis::SequentialReader::uiNrDoneText
uiString uiNrDoneText() const
will be nrDoneText() in 7.x
BinIDValueSet
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:23
Seis::ParallelReader2D::init
bool init()
Seis::SequentialReader::rdr_
SeisTrcReader & rdr_
Definition: seisparallelreader.h:217
Seis::SequentialReader::setComponents
void setComponents(const TypeSet< int > &compnrs)
Definition: seisparallelreader.h:175
Seis::SequentialReader::components_
TypeSet< int > components_
Definition: seisparallelreader.h:221
Seis::ParallelReader::setComponents
void setComponents(const TypeSet< int > &compnrs)
Definition: seisparallelreader.h:69
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
Seis::ParallelReader2D::components_
TypeSet< int > components_
Definition: seisparallelreader.h:140
Seis::RawTrcsSequenceValueSeries::arr
const float * arr() const
od_int64
#define od_int64
Definition: plftypes.h:35
fixedstring.h
Seis::ParallelReader2D::dpclaimed_
bool dpclaimed_
Definition: seisparallelreader.h:150
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Seis::ParallelReader::errmsg_
uiString errmsg_
Definition: seisparallelreader.h:102
SeisTrc
Seismic trace.
Definition: seistrc.h:34
Seis::ParallelReader::uiNrDoneText
uiString uiNrDoneText() const
will be nrDoneText() in 7.x
Seis::SequentialReader::initialized_
bool initialized_
Definition: seisparallelreader.h:237
Seis::SequentialReader::adjustDPDescToScalers
void adjustDPDescToScalers(const BinDataDesc &trcdesc)
Seis::ParallelReader::seisrdroutcompmgr_
TypeSet< int > seisrdroutcompmgr_
Definition: seisparallelreader.h:103
Seis::SequentialReader
Definition: seisparallelreader.h:165
Seis::RawTrcsSequenceValueSeries::ipos_
int ipos_
Definition: seisparallelreader.h:326
Seis::RawTrcsSequence::getData
unsigned char * getData(int ipos, int icomp, int is=0)
Seis::SequentialReader::setComponentScaler
void setComponentScaler(const Scaler &, int compidx)
Seis::ParallelReader2D::tkzs_
TrcKeyZSampling tkzs_
Definition: seisparallelreader.h:142
Seis::ParallelReader::setOutputComponents
mDeprecatedDef bool setOutputComponents(const TypeSet< int > &)
Seis::RawTrcsSequenceValueSeries::arr
float * arr()
Seis::RawTrcsSequence::getZRange
const StepInterval< float > & getZRange() const
Seis::RawTrcsSequence::nrpos_
const int nrpos_
Definition: seisparallelreader.h:284
Seis::ParallelReader2D::ioobj_
IOObj * ioobj_
Definition: seisparallelreader.h:144
Seis::RawTrcsSequence::getValue
float getValue(float, int pos, int comp) const
Seis::SequentialReader::msg_
uiString msg_
Definition: seisparallelreader.h:236
Seis::ParallelReader::dp_
RegularSeisDataPack * dp_
Definition: seisparallelreader.h:94
DataInterpreter
Byte-level data interpreter.
Definition: cbvswriter.h:21
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
SeisTrcBuf
set of seismic traces.
Definition: seisbuf.h:31
Seis::RawTrcsSequenceValueSeries::~RawTrcsSequenceValueSeries
~RawTrcsSequenceValueSeries()
Seis::ParallelReader2D::doPrepare
bool doPrepare(int nrthreads)
TrcKeyZSampling
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
Seis::SequentialReader::getDataPack
RegularSeisDataPack * getDataPack()
Seis::SequentialReader::is2d_
bool is2d_
Definition: seisparallelreader.h:216
Seis::SequentialReader::scaler_
Scaler * scaler_
Definition: seisparallelreader.h:229
Seis::RawTrcsSequence::isOK
bool isOK() const
Seis::RawTrcsSequence::RawTrcsSequence
RawTrcsSequence(const ObjectSummary &, int nrpos)
Seis::RawTrcsSequence::getTrcScaler
const Scaler * getTrcScaler(int pos) const
Seis::RawTrcsSequence::get
float get(int idx, int pos, int comp) const
Seis::SequentialReader::dp_
RegularSeisDataPack * dp_
Definition: seisparallelreader.h:218
Array3D
Array3D ( Subclass of ArrayND ) is a three dimensional array.
Definition: arraynd.h:162
Seis::SequentialReader::needresampling_
bool needresampling_
Definition: seisparallelreader.h:227
StepInterval< float >
PosInfo::CubeDataIterator
Iterates through CubeData.
Definition: posinfo.h:221
Seis::SequentialReader::queueid_
int queueid_
Definition: seisparallelreader.h:232
Scaler
Scaling of floating point numbers.
Definition: scaler.h:33
Seis::SequentialReader::SequentialReader
SequentialReader(const IOObj &, const TrcKeyZSampling *=0, const TypeSet< int > *components=0)
trckeyzsampling.h
Seis::SequentialReader::dc_
DataCharacteristics dc_
Definition: seisparallelreader.h:228
Seis::RawTrcsSequenceValueSeries::clone
ValueSeries< float > * clone() const
DataCharacteristics::UserType
UserType
Definition: datachar.h:87
Seis::SequentialReader::setOutputComponents
bool setOutputComponents()
Seis::RawTrcsSequence::getData
const unsigned char * getData(int ipos, int icomp, int is=0) const
Seis::RawTrcsSequence::copyFrom
void copyFrom(const SeisTrc &, int *ipos=0)
Seis::SequentialReader::tkzs_
TrcKeyZSampling tkzs_
Definition: seisparallelreader.h:219
Executor
Specification to enable chunkwise execution of a process.
Definition: executor.h:39
PtrMan
Definition: ptrman.h:121
Seis::ParallelReader::totalnr_
od_int64 totalnr_
Definition: seisparallelreader.h:100
Seis::ParallelReader2D::uiNrDoneText
uiString uiNrDoneText() const
will be nrDoneText() in 7.x
IOObj
Definition: ioobj.h:58
RegularSeisDataPack
SeisDataPack for 2D and 3D seismic data.
Definition: seisdatapack.h:29
Seis::SequentialReader::setOutputComponents
mDeprecatedDef bool setOutputComponents(const TypeSet< int > &)
Seis::RawTrcsSequence::interpolator
const ValueSeriesInterpolator< float > & interpolator() const
BinDataDesc
Description of binary data.
Definition: bindatadesc.h:43
Seis::ParallelReader::uiMessage
uiString uiMessage() const
will be message() again in 7.x
executor.h
Seis::RawTrcsSequence::info_
const ObjectSummary & info_
Definition: seisparallelreader.h:282
Seis::SequentialReader::setDataPack
bool setDataPack(RegularSeisDataPack &, od_ostream *strm=0)
Seis::ParallelReader2D::getDataPack
RegularSeisDataPack * getDataPack()
Seis::ParallelReader::~ParallelReader
~ParallelReader()
Seis::SequentialReader::getTrcsPosForRead
bool getTrcsPosForRead(int &desirednrpos, TypeSet< TrcKey > &) const
ValueSeriesInterpolator< float >
Seis::SequentialReader::samedatachar_
bool samedatachar_
Definition: seisparallelreader.h:225
Seis::RawTrcsSequence::set
void set(int idx, float val, int pos, int comp)
Seis::ParallelReader::components_
TypeSet< int > components_
Definition: seisparallelreader.h:90
Seis::RawTrcsSequenceValueSeries::value
float value(od_int64) const
Seis::RawTrcsSequence::getDataChar
const DataCharacteristics getDataChar() const
Seis::RawTrcsSequence::data_
ObjectSet< TraceData > data_
Definition: seisparallelreader.h:281
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
Seis::ParallelReader2D::setDataChar
void setDataChar(DataCharacteristics::UserType)
Seis::RawTrcsSequenceValueSeries::icomp_
int icomp_
Definition: seisparallelreader.h:327
Seis::SequentialReader::nrDone
od_int64 nrDone() const
Definition: seisparallelreader.h:197
Seis::SequentialReader::outcomponents_
TypeSet< int > outcomponents_
Definition: seisparallelreader.h:238
TrcKey
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:28
Seis::ParallelReader::ParallelReader
mODTextTranslationClass(ParallelReader) public ParallelReader(const IOObj &, BinIDValueSet &, const TypeSet< int > &components)
Seis::SequentialReader::refnrs_
TypeSet< float > refnrs_
Definition: seisparallelreader.h:220
Seis::SequentialReader::totalnr_
od_int64 totalnr_
Definition: seisparallelreader.h:234
Seis::ParallelReader2D::doWork
bool doWork(od_int64, od_int64, int)
Seis::ParallelReader::getDataPack
RegularSeisDataPack * getDataPack()
Seis::SequentialReader::~SequentialReader
~SequentialReader()
Seis::RawTrcsSequence::mODTextTranslationClass
mODTextTranslationClass(Seis::RawTrcsSequence)
Seis::RawTrcsSequenceValueSeries::RawTrcsSequenceValueSeries
RawTrcsSequenceValueSeries(const RawTrcsSequence &, int pos, int comp)
Seis::ParallelReader2D::dc_
DataCharacteristics dc_
Definition: seisparallelreader.h:145
Seis::ParallelReader2D::geomid_
Pos::GeomID geomid_
Definition: seisparallelreader.h:143
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
Seis::ParallelReader::tks_
ObjectSet< TrcKeySampling > tks_
Definition: seisparallelreader.h:96
PosInfo
Position info, often segmented.
Definition: posinfo.h:40
Seis::RawTrcsSequence::getTraceData
TraceData & getTraceData(int pos)
Definition: seisparallelreader.h:292
Seis::SequentialReader::init
bool init()
Seis::RawTrcsSequenceValueSeries::setValue
void setValue(od_int64, float)
Seis::SequentialReader::submitUdfWriterTasks
void submitUdfWriterTasks()
Seis::ParallelReader::setOutputComponents
bool setOutputComponents()
Seis::RawTrcsSequence::~RawTrcsSequence
~RawTrcsSequence()
Seis::ParallelReader2D::uiMessage
uiString uiMessage() const
will be message() again in 7.x
Seis::ParallelReader2D::dp_
RegularSeisDataPack * dp_
Definition: seisparallelreader.h:139
Seis::RawTrcsSequenceValueSeries::writable
bool writable() const
Definition: seisparallelreader.h:320
valseriesinterpol.h
Seis::ParallelReader2D
Definition: seisparallelreader.h:114
Seis::RawTrcsSequence::nrPositions
int nrPositions() const
Seis::ParallelReader2D::nrIterations
od_int64 nrIterations() const
Seis::SequentialReader::compscalers_
ObjectSet< Scaler > compscalers_
Definition: seisparallelreader.h:239
Seis::RawTrcsSequenceValueSeries::seq_
RawTrcsSequence & seq_
Definition: seisparallelreader.h:325
Seis::ParallelReader2D::totalnr_
od_int64 totalnr_
Definition: seisparallelreader.h:147
Seis::RawTrcsSequence::getPosition
const TrcKey & getPosition(int ipos) const
Seis::SequentialReader::totalNr
od_int64 totalNr() const
Definition: seisparallelreader.h:198
Seis::ParallelReader::doFinish
bool doFinish(bool)
Seis::RawTrcsSequence
Buffer to a set of entire traces ( header + component data ) Can contain traces for several positions...
Definition: seisparallelreader.h:248
Seis::SequentialReader::ioobj_
IOObj * ioobj_
Definition: seisparallelreader.h:215
Seis::ParallelReader
Definition: seisparallelreader.h:53
Seis::ParallelReader::tkzs_
TrcKeyZSampling tkzs_
Definition: seisparallelreader.h:95
Seis::ParallelReader2D::trcnrs_
TypeSet< int > trcnrs_
Definition: seisparallelreader.h:141
Seis::RawTrcsSequence::setPositions
void setPositions(const TypeSet< TrcKey > &)
mDeprecatedDef
#define mDeprecatedDef
Definition: plfdefs.h:216
Seis::ParallelReader2D::scaler_
Scaler * scaler_
Definition: seisparallelreader.h:146
sets.h
Interval< int >
Seis::ParallelReader::ioobj_
IOObj * ioobj_
Definition: seisparallelreader.h:99
Seis::ParallelReader::submitUdfWriterTasks
void submitUdfWriterTasks()
Seis::ObjectSummary
Definition: seisioobjinfo.h:38
od_ostream
OD class for stream write common access to the user log file, or std::cout in other than od_main.
Definition: od_ostream.h:26
paralleltask.h
Seis::SequentialReader::dpzsamp_
StepInterval< float > dpzsamp_
Definition: seisparallelreader.h:226
Seis::SequentialReader::setScaler
void setScaler(Scaler *)
Seis::SequentialReader::samprg_
Interval< int > samprg_
Definition: seisparallelreader.h:222
Seis::RawTrcsSequenceValueSeries::setComponent
void setComponent(int idx)
Definition: seisparallelreader.h:315
Seis::ParallelReader2D::setScaler
void setScaler(Scaler *)
Array2D
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
Seis::SequentialReader::nrdone_
od_int64 nrdone_
Definition: seisparallelreader.h:235
Seis::ParallelReader2D::doFinish
bool doFinish(bool)
DataCharacteristics
byte-level data characteristics of stored data.
Definition: datachar.h:37
Seis::RawTrcsSequence::setTrcScaler
void setTrcScaler(int pos, const Scaler *)
Pos::GeomID
Index_Type GeomID
Definition: commontypes.h:87
TypeSet< int >

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