OpendTect  6.6
volprocstep.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: K. Tingdahl
8  Date: October 2006
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "volumeprocessingmod.h"
16 #include "factory.h"
17 #include "survgeom.h"
18 #include "trckeysampling.h"
19 #include "uistrings.h"
20 
21 class Task;
22 class VelocityDesc;
23 class ProgressMeter;
24 class TrcKeyZSampling;
26 
27 
28 namespace VolProc
29 {
30 
31 class Chain;
32 
33 
41 mExpClass(VolumeProcessing) Step
42 {
43 public:
44  typedef int ID;
45  typedef int InputSlotID;
46  typedef int OutputSlotID;
47  static ID cUndefID() { return mUdf(int); }
48  static int cUndefSlotID() { return mUdf(int); }
49 
51  virtual ~Step();
52 
53  ID getID() const { return id_; }
55  const Chain& getChain() const;
56  virtual const char* userName() const;
57  virtual void setUserName(const char* nm);
58 
59  void resetInput();
60  virtual bool needsInput() const = 0;
61  virtual int getNrInputs() const;
62  virtual InputSlotID getInputSlotID(int idx) const;
64  BufferString&) const;
65  virtual bool isInputPrevStep() const { return needsInput(); }
66 
67  virtual int getNrOutputs() const { return 1; }
68  virtual OutputSlotID getOutputSlotID(int idx) const;
71 
72  virtual TrcKeySampling getInputHRg(const TrcKeySampling&) const;
77  Survey::Geometry::ID) const;
81  virtual void setInput(InputSlotID,
82  const RegularSeisDataPack*);
85  const TrcKeySampling&,
86  const StepInterval<int>&);
89 
92 
93  virtual bool canInputAndOutputBeSame() const { return false;}
94  virtual bool needsFullVolume() const { return true; }
95  virtual bool canHandle2D() const { return false; }
96 
97  const RegularSeisDataPack* getOutput() const { return output_; }
98  RegularSeisDataPack* getOutput() { return output_; }
99 
100  virtual const VelocityDesc* getVelDesc() const { return 0; } // old
101 
102  virtual bool areSamplesIndependent() const { return true; }
106  virtual Task* createTask();
108  virtual bool needReportProgress() { return false; }
109 
110  virtual void fillPar(IOPar&) const;
111  virtual bool usePar(const IOPar&);
112 
113  virtual void releaseData();
115  /* Given a target sampling, return the ideal sampling for the
116  input datapack(s) */
117 
118  virtual uiString errMsg() const
119  { return errmsg_; }
120 
121 protected:
122 
123  Step();
124 
125  virtual bool prefersBinIDWise() const { return false;}
126  virtual bool computeBinID(const BinID&,int threadid) { return false;}
127  virtual bool prepareComp(int nrthreads) { return true;}
128 
130 
131  // The memory needed on top of the 'base' memory usage. Can be 0.
133  const StepInterval<int>&) const
134  { return 0; }
135 
138 
142 
144 
145  const StepInterval<float>& getZSampling() const { return zsamp_; }
146  void setHStep( const BinID& bid ) { hstep_ = bid; }
147  void setVStep( int zstep ) { vstep_ = zstep; }
149  void setOutputNrComps(int nr) { nroutcomps_ = nr; }
150 
152  int getNrOutComponents() const { return nroutcomps_; }
153 
154 private:
155 
157 
159  int vstep_ = 0;
161  int nroutcomps_ = 1;
163 
164  void setChain(Chain&);
165 
166  friend class Chain;
167  friend class ChainExecutor;
168  friend class BinIDWiseTask;
169 
171 
173 
174 
175  //For 6.2 only (HiddenParam set):
176 public:
177 
179  mDeprecatedDef virtual od_int64 getProcTimeExtraMemory() const { return 0; }
180 
182  const StepInterval<int>&);
183 protected:
185  bool input) const;
186 
189 
190 private:
192  const TrcKeyZSampling&) const;
194  bool input) const;
195 
196 };
197 
198 } // namespace VolProc
199 
od_uint64
#define od_uint64
Definition: plftypes.h:36
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
VolProc::Step::username_
BufferString username_
Definition: volprocstep.h:139
VolProc::Step::userName
virtual const char * userName() const
VolProc::Step::cUndefID
static ID cUndefID()
Definition: volprocstep.h:47
VolProc
Adapter for a VolProc chain to external attribute calculation.
Definition: seisdatapackwriter.h:24
VolProc::Step::setVStep
void setVStep(int zstep)
Definition: volprocstep.h:147
VolProc::Step::getOutputSlotID
virtual OutputSlotID getOutputSlotID(int idx) const
VolProc::Step::setInpNrComps
void setInpNrComps(InputSlotID, int)
VolProc::Step::getOuputMemSize
virtual mDeprecatedDef od_int64 getOuputMemSize(int) const
factory.h
VolProc::Step::inputs_
ObjectSet< const RegularSeisDataPack > inputs_
Definition: volprocstep.h:136
VolProc::Step::usePar
virtual bool usePar(const IOPar &)
VolProc::Step::getInputZRg
virtual StepInterval< int > getInputZRg(const StepInterval< int > &) const
ObjectSet< const RegularSeisDataPack >
VolProc::Step::nrinpcomps_
TypeSet< int > nrinpcomps_
Definition: volprocstep.h:160
VolProc::Step::getOutput
RegularSeisDataPack * getOutput()
Definition: volprocstep.h:98
VolProc::Step::ID
int ID
Definition: volprocstep.h:44
VolProc::Step::getComponentMemory
od_uint64 getComponentMemory(const TrcKeyZSampling &, bool input) const
od_int64
#define od_int64
Definition: plftypes.h:35
VolProc::Step::prepareComp
virtual bool prepareComp(int nrthreads)
Definition: volprocstep.h:127
VolProc::Step::getZSampling
const StepInterval< float > & getZSampling() const
Definition: volprocstep.h:145
VolProc::Step::setOutput
virtual void setOutput(OutputSlotID, RegularSeisDataPack *, const TrcKeySampling &, const StepInterval< int > &)
VolProc::Step::getInputSampling
TrcKeyZSampling getInputSampling(const TrcKeyZSampling &) const
ProgressMeter
is an interface where processes can report their progress.
Definition: progressmeter.h:21
sKey::Chain
FixedString Chain()
Definition: keystrs.h:44
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
VolProc::Step::needsFullVolume
virtual bool needsFullVolume() const
Definition: volprocstep.h:94
VolProc::Step::getInputHRg
virtual TrcKeySampling getInputHRg(const TrcKeySampling &) const
VolProc::Step::extraMemoryUsage
od_uint64 extraMemoryUsage(OutputSlotID, const TrcKeyZSampling &) const
VolProc::Step::createTaskWithProgMeter
virtual Task * createTaskWithProgMeter(ProgressMeter *)
VolProc::Step::getInputSlotID
virtual InputSlotID getInputSlotID(int idx) const
VolProc::Step::resetInput
void resetInput()
VolProc::Step::validInputSlotID
bool validInputSlotID(InputSlotID) const
VolProc::Step::getNrInputs
virtual int getNrInputs() const
VolProc::Step::errmsg_
uiString errmsg_
Definition: volprocstep.h:141
VolProc::Step::setHStep
void setHStep(const BinID &bid)
Definition: volprocstep.h:146
VolProc::Step::getProcTimeExtraMemory
virtual mDeprecatedDef od_int64 getProcTimeExtraMemory() const
Definition: volprocstep.h:179
VolProc::Chain
A chain of Steps that can be applied to a volume of scalars.
Definition: volprocchain.h:29
VolProc::Step::InputSlotID
int InputSlotID
Definition: volprocstep.h:45
VolProc::Step::zsamp_
StepInterval< float > zsamp_
Definition: volprocstep.h:162
VolProc::Step::validOutputSlotID
bool validOutputSlotID(OutputSlotID) const
VolProc::Step::prefersBinIDWise
virtual bool prefersBinIDWise() const
Definition: volprocstep.h:125
VolProc::Step::hstep_
BinID hstep_
Definition: volprocstep.h:158
VolProc::Step::areSamplesIndependent
virtual bool areSamplesIndependent() const
Definition: volprocstep.h:102
VolProc::Step::mDefineFactoryInClass
mDefineFactoryInClass(Step, factory)
TrcKeyZSampling
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
VolProc::Step::id_
ID id_
Definition: volprocstep.h:140
VolProc::Step::getOutput
const RegularSeisDataPack * getOutput() const
Definition: volprocstep.h:97
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
StepInterval< int >
VelocityDesc
Definition: veldesc.h:38
VolProc::Step::tks_
mDeprecatedDef TrcKeySampling tks_
Definition: volprocstep.h:187
VolProc::Step::needsInput
virtual bool needsInput() const =0
VolProc::Step::outputslotids_
TypeSet< OutputSlotID > outputslotids_
Definition: volprocstep.h:143
Task
Generalization of something (e.g. a computation) that needs to be done in multiple steps.
Definition: task.h:28
uistrings.h
VolProc::Step::getID
ID getID() const
Definition: volprocstep.h:53
VolProc::Step::Step
Step()
VolProc::Step::zrg_
mDeprecatedDef StepInterval< int > zrg_
Definition: volprocstep.h:188
VolProc::Step::releaseData
virtual void releaseData()
VolProc::Step::getOutput
RegularSeisDataPack * getOutput(OutputSlotID)
RegularSeisDataPack
SeisDataPack for 2D and 3D seismic data.
Definition: seisdatapack.h:29
VolProc::Step::getComponentMemory
od_uint64 getComponentMemory(const TrcKeySampling &, bool input) const
VolProc::Step::computeBinID
virtual bool computeBinID(const BinID &, int threadid)
Definition: volprocstep.h:126
VolProc::Step::getNrOutComponents
int getNrOutComponents() const
Definition: volprocstep.h:152
VolProc::Step::canHandle2D
virtual bool canHandle2D() const
Definition: volprocstep.h:95
VolProc::Step::extraMemoryUsage
virtual od_int64 extraMemoryUsage(OutputSlotID, const TrcKeySampling &, const StepInterval< int > &) const
Definition: volprocstep.h:132
VolProc::Step::chain_
Chain * chain_
Definition: volprocstep.h:129
VolProc::ChainExecutor
executes the work for a single VolProc::Chain.
Definition: volprocchainexec.h:27
VolProc::Step
An algorithm/calculation/transformation that takes one scalar volume as input, processes it,...
Definition: volprocstep.h:42
VolProc::Step::getInputSlotName
virtual void getInputSlotName(InputSlotID, BufferString &) const
VolProc::Step::fillPar
virtual void fillPar(IOPar &) const
VolProc::Step::~Step
virtual ~Step()
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
VolProc::Step::getOutputIdx
int getOutputIdx(OutputSlotID) const
VolProc::Step::setChain
void setChain(Chain &)
VolProc::Step::getInputZSamp
StepInterval< float > getInputZSamp(const StepInterval< float > &) const
VolProc::Step::errMsg
virtual uiString errMsg() const
Definition: volprocstep.h:118
VolProc::Step::inputslotids_
TypeSet< InputSlotID > inputslotids_
Definition: volprocstep.h:137
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
VolProc::Step::setOutputNrComps
void setOutputNrComps(int nr)
Definition: volprocstep.h:149
MPE::errmsg_
BufferString errmsg_
Definition: horizontracker.h:118
VolProc::Step::isInputPrevStep
virtual bool isInputPrevStep() const
Definition: volprocstep.h:65
VolProc::Step::getVelDesc
virtual const VelocityDesc * getVelDesc() const
Definition: volprocstep.h:100
VolProc::Step::getInput
const RegularSeisDataPack * getInput(InputSlotID) const
VolProc::Step::getInputZRgWithGeom
virtual StepInterval< int > getInputZRgWithGeom(const StepInterval< int > &, Survey::Geometry::ID) const
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
VolProc::Step::setUserName
virtual void setUserName(const char *nm)
VolProc::Step::getNrOutputs
virtual int getNrOutputs() const
Definition: volprocstep.h:67
Batch::ID
int ID
Definition: batchjobdispatch.h:24
trckeysampling.h
VolProc::Step::getBaseMemoryUsage
static od_uint64 getBaseMemoryUsage(const TrcKeyZSampling &)
VolProc::Step::output_
RegularSeisDataPack * output_
Definition: volprocstep.h:156
mDeprecatedDef
#define mDeprecatedDef
Definition: plfdefs.h:216
survgeom.h
VolProc::Step::OutputSlotID
int OutputSlotID
Definition: volprocstep.h:46
VolProc::Step::getBaseMemoryUsage
static mDeprecatedDef od_int64 getBaseMemoryUsage(const TrcKeySampling &, const StepInterval< int > &)
VolProc::Step::enableOutput
void enableOutput(OutputSlotID)
VolProc::Step::setInput
virtual void setInput(InputSlotID, const RegularSeisDataPack *)
VolProc::Step::cUndefSlotID
static int cUndefSlotID()
Definition: volprocstep.h:48
VolProc::Step::getChain
Chain & getChain()
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
VolProc::Step::getChain
const Chain & getChain() const
VolProc::Step::createTask
virtual Task * createTask()
VolProc::Step::canInputAndOutputBeSame
virtual bool canInputAndOutputBeSame() const
Definition: volprocstep.h:93
VolProc::Step::getOutput
const RegularSeisDataPack * getOutput(OutputSlotID) const
VolProc::Step::getNrInputComponents
int getNrInputComponents(InputSlotID) const
TypeSet< InputSlotID >
VolProc::Step::needReportProgress
virtual bool needReportProgress()
Definition: volprocstep.h:108

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