OpendTect  6.6
prestackprocessor.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: April 2005
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "prestackprocessingmod.h"
16 #include "bufstringset.h"
17 #include "datapack.h"
18 #include "factory.h"
19 #include "keystrs.h"
20 #include "paralleltask.h"
21 #include "position.h"
22 #include "sets.h"
23 #include "trckeysampling.h"
24 
25 namespace PreStack
26 {
27 
28 class Gather;
29 
35 mExpClass(PreStackProcessing) Processor : public ParallelTask
36 {
37 public:
39 
40  virtual bool reset(bool force=true);
41 
42  virtual const BinID& getInputStepout() const;
43  virtual bool wantsInput(const BinID& relbid) const;
44  void setInput(const BinID& relbid,DataPack::ID);
45 
46  const BinID& getOutputStepout() const;
47  virtual bool setOutputInterest(const BinID& relbid,bool);
48  bool getOutputInterest(const BinID& relbid) const;
49  DataPack::ID getOutput(const BinID& relbid) const;
50 
51  virtual bool prepareWork();
52  virtual uiString errMsg() const
53  { return uiString::emptyString(); }
54 
55  virtual void fillPar(IOPar&) const = 0;
56  virtual bool usePar(const IOPar&) = 0;
57  virtual bool doWork(od_int64 start,od_int64 stop,int)= 0;
62  int nrOffsets() const;
63  virtual od_int64 nrIterations() const { return nrOffsets(); }
72  virtual ~Processor();
73  virtual bool usesPreStackInput() const { return true; }
74  virtual void adjustPossibleCompArea(TrcKeySampling&){return;}
75  virtual void retainCurBID( const BinID& ) {};
76  virtual bool mustHaveUserInput() { return true; }
77 
78 protected:
79  Processor( const char* nm );
80  virtual Gather* createOutputArray(const Gather& input) const;
81  static int getRelBidOffset(const BinID& relbid,
82  const BinID& stepout);
84 
88 
90 };
91 
92 
139 mExpClass(PreStackProcessing) ProcessManager : public CallBacker
141 public:
142  ProcessManager();
144 
145  //Setup
146  int nrProcessors() const;
148  const Processor* getProcessor(int) const;
149  bool needsPreStackInput() const;
150 
151 
153  void removeProcessor(int);
154  void swapProcessors(int,int);
155  int indexOf(const Processor*) const;
156 
158 
159  void notifyChange() { setupChange.trigger(); }
161 
162  //Runtime
163  bool reset(bool force=true);
165  bool prepareWork();
168  virtual bool wantsInput(const BinID& relbid) const;
170  void setInput(const BinID& relbid,DataPack::ID);
171 
172  bool process();
173 
175 
176  void fillPar(IOPar&) const;
177  bool usePar(const IOPar&);
178 
179  uiString errMsg() const { return errmsg_; }
180 
181  //Keys for od_process_prestack
182  static const char* sKeyLineKey() { return sKey::LineKey(); }
183  static const char* sKeySetup(){ return "Processing Setup"; }
184  static const char* sKeyCDPRange(){ return "CDP Range"; }
185  static const char* sKeyInputData() { return "Input"; }
186  static const char* sKeyOutputData(){ return "Output"; }
187 
188 
189 protected:
190 
191  static const char* sKeyNrProcessors() { return "Nr processors"; }
192 
195 };
196 
197 
198 #define mPSProcAddStepoutStep( array, arrtype, oldstepout, newstepout ) \
199 { \
200  arrtype arrcopy( array ); \
201  array.erase(); \
202 \
203  for ( int idx=-newstepout.inl(); idx<=newstepout.inl(); idx++ ) \
204  { \
205  for ( int idy=-newstepout.crl(); idy<=newstepout.crl(); idy++ ) \
206  { \
207  const BinID curpos( idx, idy ); \
208 \
209  if ( idy<-oldstepout.crl() || idy>oldstepout.crl() || \
210  idx<-oldstepout.inl() || idx>oldstepout.inl() ) \
211  { \
212  array += 0; \
213  } \
214  else \
215  { \
216  const int oldoffset=getRelBidOffset(curpos,oldstepout);\
217  array += arrcopy[oldoffset]; \
218  } \
219  } \
220  } \
221 }
222 
223 } // namespace PreStack
224 
PreStack::ProcessManager::indexOf
int indexOf(const Processor *) const
PreStack::ProcessManager::setInput
void setInput(const BinID &relbid, DataPack::ID)
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
PreStack::ProcessManager::removeProcessor
void removeProcessor(int)
PreStack::ProcessManager::sKeyNrProcessors
static const char * sKeyNrProcessors()
Definition: prestackprocessor.h:191
PreStack::ProcessManager::errmsg_
uiString errmsg_
Definition: prestackprocessor.h:194
PreStack::ProcessManager::wantsInput
virtual bool wantsInput(const BinID &relbid) const
Only after prepareWork.
PreStack::Processor::mDefineFactoryInClass
mDefineFactoryInClass(Processor, factory)
PreStack::Processor::doWork
virtual bool doWork(od_int64 start, od_int64 stop, int)=0
PreStack::Processor::reset
virtual bool reset(bool force=true)
factory.h
PreStack::Gather
PreStack gather.
Definition: prestackgather.h:36
keystrs.h
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
PreStack::ProcessManager::sKeyInputData
static const char * sKeyInputData()
Definition: prestackprocessor.h:185
PreStack::ProcessManager::errMsg
uiString errMsg() const
Definition: prestackprocessor.h:179
PreStack::Processor::outputstepout_
BinID outputstepout_
Definition: prestackprocessor.h:85
PreStack::ProcessManager::reset
bool reset(bool force=true)
Call when you are about to process new data.
od_int64
#define od_int64
Definition: plftypes.h:35
PreStack::Processor::errMsg
virtual uiString errMsg() const
Definition: prestackprocessor.h:52
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
PreStack::ProcessManager::getOutput
DataPack::ID getOutput() const
PreStack::Processor::nrOffsets
int nrOffsets() const
PreStack::ProcessManager::getProcessor
const Processor * getProcessor(int) const
PreStack::Processor::setInput
void setInput(const BinID &relbid, DataPack::ID)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
PreStack::ProcessManager::nrProcessors
int nrProcessors() const
PreStack::Processor
Processes PreStack data at one cdp location. The algorithm is implemented in subclasses,...
Definition: prestackprocessor.h:36
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
PreStack::Processor::Processor
Processor(const char *nm)
PreStack::ProcessManager::prepareWork
bool prepareWork()
PreStack::Processor::nrIterations
virtual od_int64 nrIterations() const
Definition: prestackprocessor.h:63
PreStack::Processor::mustHaveUserInput
virtual bool mustHaveUserInput()
Definition: prestackprocessor.h:76
PreStack::ProcessManager::processors_
ObjectSet< Processor > processors_
Definition: prestackprocessor.h:193
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
PreStack::ProcessManager::removeAllProcessors
void removeAllProcessors()
PreStack::ProcessManager::~ProcessManager
mODTextTranslationClass(ProcessManager) public ~ProcessManager()
PreStack::ProcessManager::usePar
bool usePar(const IOPar &)
PreStack::Processor::outputinterest_
BoolTypeSet outputinterest_
Definition: prestackprocessor.h:87
PreStack::ProcessManager::sKeyOutputData
static const char * sKeyOutputData()
Definition: prestackprocessor.h:186
PreStack::ProcessManager
Orgainizes a number of PreStack::Processors into a chain which can be processed.
Definition: prestackprocessor.h:140
sKey::LineKey
FixedString LineKey()
Definition: keystrs.h:90
PreStack::ProcessManager::sKeyCDPRange
static const char * sKeyCDPRange()
Definition: prestackprocessor.h:184
PreStack::Processor::getOutput
DataPack::ID getOutput(const BinID &relbid) const
PreStack::Processor::fillPar
virtual void fillPar(IOPar &) const =0
PreStack::Processor::createOutputArray
virtual Gather * createOutputArray(const Gather &input) const
PreStack::ProcessManager::process
bool process()
PreStack::Processor::adjustPossibleCompArea
virtual void adjustPossibleCompArea(TrcKeySampling &)
Definition: prestackprocessor.h:74
PreStack::ProcessManager::needsPreStackInput
bool needsPreStackInput() const
PreStack::Processor::getInputStepout
virtual const BinID & getInputStepout() const
Notifier
Class to help setup a callback handling.
Definition: notify.h:126
PreStack::Processor::getOutputStepout
const BinID & getOutputStepout() const
PreStack::ProcessManager::sKeyLineKey
static const char * sKeyLineKey()
Definition: prestackprocessor.h:182
datapack.h
position.h
PreStack
Definition: synthseis.h:35
PreStack::Processor::getOutputInterest
bool getOutputInterest(const BinID &relbid) const
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
PreStack::Processor::~Processor
virtual ~Processor()
PreStack::ProcessManager::notifyChange
void notifyChange()
Definition: prestackprocessor.h:159
PreStack::ProcessManager::addProcessor
void addProcessor(Processor *)
bufstringset.h
DataPack::ID
int ID
Definition: datapack.h:37
PreStack::Processor::freeArray
static void freeArray(ObjectSet< Gather > &)
PreStack::ProcessManager::fillPar
void fillPar(IOPar &) const
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiString::emptyString
static const uiString & emptyString()
Definition: uistring.h:300
PreStack::ProcessManager::swapProcessors
void swapProcessors(int, int)
PreStack::Processor::getRelBidOffset
static int getRelBidOffset(const BinID &relbid, const BinID &stepout)
PreStack::Processor::usesPreStackInput
virtual bool usesPreStackInput() const
Definition: prestackprocessor.h:73
MPE::errmsg_
BufferString errmsg_
Definition: horizontracker.h:118
PreStack::Processor::retainCurBID
virtual void retainCurBID(const BinID &)
Definition: prestackprocessor.h:75
PreStack::ProcessManager::sKeySetup
static const char * sKeySetup()
Definition: prestackprocessor.h:183
trckeysampling.h
PreStack::Processor::usePar
virtual bool usePar(const IOPar &)=0
PreStack::ProcessManager::getInputStepout
BinID getInputStepout() const
Only after prepareWork.
PreStack::Processor::inputs_
ObjectSet< Gather > inputs_
Definition: prestackprocessor.h:89
PreStack::ProcessManager::setupChange
Notifier< ProcessManager > setupChange
Definition: prestackprocessor.h:160
sets.h
PreStack::ProcessManager::getProcessor
Processor * getProcessor(int)
PreStack::Processor::setOutputInterest
virtual bool setOutputInterest(const BinID &relbid, bool)
paralleltask.h
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
PreStack::Processor::prepareWork
virtual bool prepareWork()
PreStack::Processor::outputs_
ObjectSet< Gather > outputs_
Definition: prestackprocessor.h:86
PreStack::Processor::wantsInput
virtual bool wantsInput(const BinID &relbid) const
TypeSet< BoolTypeSetType >

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