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

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