OpendTect  6.6
expdeconv.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: Kristofer Tingdahl
8  Date: 07-10-1999
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 DeConvolve wavelet=
13 
14 Performs a deconvolution in fourier domain with the specified wavelet.
15 
16 Input:
17 0 Real data
18 1 Imag data
19 
20 Output:
21 0 Real data
22 1 Imag data
23 
24 @$*/
25 
26 #include "attribcalc.h"
27 #include "task.h"
28 #include "position.h"
29 #include <limits.h>
30 #include "seistrc.h"
31 #include <complex>
32 #include "arrayndimpl.h"
33 #include "fft.h"
34 #include "attribparamimpl.h"
35 
36 #include <arrayndalgo.h>
37 
38 
39 mClass(AttribExp) DeConvolveAttrib : public AttribCalc
40 {
41 public:
43  TimeGateAttribParameter, gate,
44  TimeGateAttribParameter( "samplegate",
46  TimeGate(-64,64),
47  TimeGate(-mUndefValue, mUndefValue)),
48  BinIDAttribParameter, pos1,
49  BinIDAttribParameter( "pos1",
51  BinID(0,1),
52  Interval<int>(-100,100),
53  Interval<int>(-100,100)),
54  BinIDAttribParameter, neighbourhood,
55  BinIDAttribParameter( "neighbourhood",
57  BinID(1,1),
58  Interval<int>(1,10),
59  Interval<int>(1,10)),
60  EnumAttribParameter, window,
61  EnumAttribParameter( "window",
62  ArrayNDWindow::WindowTypeNames,
64  0),
65  BoolAttribParameter, steering,
66  BoolAttribParameter( "steering",
68  true),);
69 
70 
71  DeConvolveAttrib( Parameters* );
73 
74  bool init();
75 
76  const Interval<float>* reqInterval( int, int ) const {return &gate;}
77  const BinID* reqStepout( int i, int ) const
78  { return i ? 0 : &neighbourhood; }
79 
80  int nrAttribs() const { return 2; }
81 
82  const char* attribName(int val) const
83  {
84  switch (val)
85  {
86  case 0: return "1";
87  case 1: return "2";
88  }
89 
90  return 0;
91  }
92 
94  { return Seis::UnknowData; }
95 
96  const char* definitionStr() const { return desc; }
97  void setCommonInfo( const AttribProcessCommonInfo& ni )
98  { common = &ni; }
99 
100 
101 protected:
103  bool steering;
106 
107  FFT fft;
108  FFT ifft;
109  int fftsz;
112  float inpstep;
113  float df;
114 
116  const AttribProcessCommonInfo* common;
117 
118  mClass(AttribExp) Task : public AttribCalc::Task
119  {
120  public:
122  {
123  public:
124  Input( const DeConvolveAttrib& calculator_ )
125  : calculator ( calculator_ )
126  , trcs( 0 )
127  , inldiptrc( 0 )
128  , crldiptrc( 0 )
129  {}
130 
132 
133  bool set( const BinID&,
135  const TypeSet<int>&,
136  const TypeSet<float*>& );
137 
139  { return new DeConvolveAttrib::Task::Input(*this); }
140 
144 
148 
150  };
151 
152  Task( const DeConvolveAttrib& calculator_ );
153  Task( const Task& );
154  // Not impl. Only to give error if someone uses it
155 
156  ~Task();
157 
158  void set( float t1_, int nrtimes_, float step_,
159  const AttribCalc::Task::Input* inp,
160  const TypeSet<float*>& outp_)
161  {
162  t1 = t1_;
163  nrtimes = nrtimes_;
164  step = step_;
165  input = inp;
166  out0 = outp_[0];
167  out1 = outp_[1];
168  }
169 
170  AttribCalc::Task* clone() const;
171 
172  int getFastestSz() const { return 25; }
173 
174  int nextStep();
175 
177  { return new DeConvolveAttrib::Task::Input( calculator ); }
178 
179  protected:
180  float* out0;
181  float* out1;
182 
190  };
191 
194 };
195 
DeConvolveAttrib::~DeConvolveAttrib
~DeConvolveAttrib()
arrayndalgo.h
sKey::Input
FixedString Input()
Definition: keystrs.h:81
task.h
DeConvolveAttrib::Task::out1
float * out1
Definition: expdeconv.h:181
DeConvolveAttrib::Task::Input::inldipattrib
int inldipattrib
Definition: expdeconv.h:146
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Seis::DataType
DataType
Definition: seistype.h:53
DeConvolveAttrib::Task::spectrum0
Array1D< float_complex > * spectrum0
Definition: expdeconv.h:185
DeConvolveAttrib::inpstep
float inpstep
Definition: expdeconv.h:112
ArrayNDWindow::WindowType
WindowType
Definition: arrayndalgo.h:351
DeConvolveAttrib::Task::Task
Task(const Task &)
SeisTrc
Seismic trace.
Definition: seistrc.h:34
DeConvolveAttrib::attribName
const char * attribName(int val) const
Definition: expdeconv.h:82
DeConvolveAttrib::nrAttribs
int nrAttribs() const
Definition: expdeconv.h:80
DeConvolveAttrib::neighbourhood
BinID neighbourhood
Definition: expdeconv.h:104
DeConvolveAttrib::fft
FFT fft
Definition: expdeconv.h:107
DeConvolveAttrib::Task::clone
AttribCalc::Task * clone() const
Array1D< float_complex >
DeConvolveAttrib::Task::Input::trcs
Array2DImpl< SeisTrc * > * trcs
Definition: expdeconv.h:141
DeConvolveAttrib::Task::out0
float * out0
Definition: expdeconv.h:180
arrayndimpl.h
DeConvolveAttrib::Task::Input::inldiptrc
SeisTrc * inldiptrc
Definition: expdeconv.h:142
DeConvolveAttrib::common
const AttribProcessCommonInfo * common
Definition: expdeconv.h:116
DeConvolveAttrib::Task::Input::set
bool set(const BinID &, const ObjectSet< AttribProvider > &, const TypeSet< int > &, const TypeSet< float * > &)
DeConvolveAttrib::window
ArrayNDWindow * window
Definition: expdeconv.h:111
DeConvolveAttrib::reqInterval
const Interval< float > * reqInterval(int, int) const
Definition: expdeconv.h:76
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
DeConvolveAttrib::Task::spectrumoutput
Array1D< float_complex > * spectrumoutput
Definition: expdeconv.h:188
DeConvolveAttrib::Task::calculator
const DeConvolveAttrib & calculator
Definition: expdeconv.h:183
DeConvolveAttrib::Task::Input::~Input
~Input()
DeConvolveAttrib::Task::Input::clone
AttribCalc::Task::Input * clone() const
Definition: expdeconv.h:138
DeConvolveAttrib
Definition: expdeconv.h:40
DeConvolveAttrib::setCommonInfo
void setCommonInfo(const AttribProcessCommonInfo &ni)
Definition: expdeconv.h:97
ArrayNDWindow
Tapers the N-dimentional ArrayND with a windowFunction.
Definition: arrayndalgo.h:349
DeConvolveAttrib::Task::getInput
AttribCalc::Task::Input * getInput() const
Definition: expdeconv.h:176
DeConvolveAttrib::steering
bool steering
Definition: expdeconv.h:103
mClass
#define mClass(module)
Definition: commondefs.h:181
DeConvolveAttrib::df
float df
Definition: expdeconv.h:113
DeConvolveAttrib::Task::Input::crldipattrib
int crldipattrib
Definition: expdeconv.h:147
DeConvolveAttrib::Task::traceoutput
Array1D< float_complex > * traceoutput
Definition: expdeconv.h:189
DeConvolveAttrib::Task::Task
Task(const DeConvolveAttrib &calculator_)
DeConvolveAttrib::ifft
FFT ifft
Definition: expdeconv.h:108
DeConvolveAttrib::Task::nextStep
int nextStep()
DeConvolveAttrib::Task::Input::Input
Input(const DeConvolveAttrib &calculator_)
Definition: expdeconv.h:124
DeConvolveAttrib::Task
Definition: expdeconv.h:119
DeConvolveAttrib::dataType
Seis::DataType dataType(int, const TypeSet< Seis::DataType > &) const
Definition: expdeconv.h:93
position.h
DeConvolveAttrib::fftsz
int fftsz
Definition: expdeconv.h:109
DeConvolveAttrib::Task::Input
Definition: expdeconv.h:122
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
DeConvolveAttrib::reqStepout
const BinID * reqStepout(int i, int) const
Definition: expdeconv.h:77
DeConvolveAttrib::definitionStr
const char * definitionStr() const
Definition: expdeconv.h:96
DeConvolveAttrib::Task::Input::crldiptrc
SeisTrc * crldiptrc
Definition: expdeconv.h:143
Array2DImpl< SeisTrc * >
seistrc.h
DeConvolveAttrib::init
bool init()
DeConvolveAttrib::DeConvolveAttrib
DeConvolveAttrib(Parameters *)
DeConvolveAttrib::Task::tracesegments
Array2D< Array1D< float_complex > * > * tracesegments
Definition: expdeconv.h:184
DeConvolveAttrib::Task::spectrum1
Array1D< float_complex > * spectrum1
Definition: expdeconv.h:186
Seis::UnknowData
@ UnknowData
Definition: seistype.h:54
DeConvolveAttrib::Task::spectrumaverage
Array1D< float_complex > * spectrumaverage
Definition: expdeconv.h:187
DeConvolveAttrib::desc
BufferString desc
Definition: expdeconv.h:115
DeConvolveAttrib::Task::getFastestSz
int getFastestSz() const
Definition: expdeconv.h:172
MPE::step_
RowCol step_
Definition: horizontracker.h:140
DeConvolveAttrib::Task::Input::dataattrib
int dataattrib
Definition: expdeconv.h:145
DeConvolveAttrib::Task::set
void set(float t1_, int nrtimes_, float step_, const AttribCalc::Task::Input *inp, const TypeSet< float * > &outp_)
Definition: expdeconv.h:158
DeConvolveAttrib::mAttrib5Param
mAttrib5Param(DeConvolveAttrib,"DeConvolve", TimeGateAttribParameter, gate, TimeGateAttribParameter("samplegate", AttribParameter::Required, TimeGate(-64, 64), TimeGate(-mUndefValue, mUndefValue)), BinIDAttribParameter, pos1, BinIDAttribParameter("pos1", AttribParameter::Required, BinID(0, 1), Interval< int >(-100, 100), Interval< int >(-100, 100)), BinIDAttribParameter, neighbourhood, BinIDAttribParameter("neighbourhood", AttribParameter::Required, BinID(1, 1), Interval< int >(1, 10), Interval< int >(1, 10)), EnumAttribParameter, window, EnumAttribParameter("window", ArrayNDWindow::WindowTypeNames, AttribParameter::Required, 0), BoolAttribParameter, steering, BoolAttribParameter("steering", AttribParameter::Default, true),)
Table::Required
@ Required
Definition: tabledef.h:27
DeConvolveAttrib::pos1
BinID pos1
Definition: expdeconv.h:105
Interval< int >
sKey::Default
FixedString Default()
Definition: keystrs.h:59
Array2D
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
DeConvolveAttrib::Task::~Task
~Task()
DeConvolveAttrib::windowtype
ArrayNDWindow::WindowType windowtype
Definition: expdeconv.h:110
DeConvolveAttrib::Task::Input::calculator
const DeConvolveAttrib & calculator
Definition: expdeconv.h:149
TypeSet< Seis::DataType >
DeConvolveAttrib::gate
Interval< float > gate
Definition: expdeconv.h:102

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