OpendTect  6.3
windowfunction.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
8  Date: 2007
9 ________________________________________________________________________
10 
11 -*/
12 
13 
14 #include "algomod.h"
15 #include "factory.h"
16 #include "mathfunc.h"
17 
18 
26 {
27 public:
28  virtual const char* name() const = 0;
29  virtual bool hasVariable() const { return false; }
30  virtual float getVariable() const { return mUdf(float); }
31  virtual bool setVariable(float) { return true; }
32  virtual const char* variableName() const { return 0; }
33  virtual bool isAcceptableVariable(float) const { return true; }
34 
35  static const char* sKeyVariable() { return "Variable"; }
36  static const char* sKeyTaperVal() { return "taperval"; }
37  static bool hasVariable(const BufferString& wintyp);
38 
39  void fillPar(IOPar&) const;
40  bool usePar(const IOPar&);
41 
42 #define mDeclWFStdFns(nm) \
43  static void initClass(); \
44  static const char* sName() { return #nm; }\
45  static WindowFunction* create() { return new nm##Window; } \
46  const char* name() const { return #nm; } \
47  float getValue(float) const; \
48  float getValue( const float* x ) const { return getValue(*x); }
49 
50  static void addAllStdClasses(); // done by Algo/initalgo.cc
51 
52 };
53 
54 
55 #define mDeclWFSimpleClass(nm) \
56 mExpClass(Algo) nm##Window : public WindowFunction \
57 { \
58 public: \
59  mDeclWFStdFns(nm); \
60 };
61 
68 
69 
70 #define mDeclWFClassWithVariable(clss) \
71  clss##Window(); \
72  bool hasVariable() const { return true; } \
73  bool setVariable(float); \
74  bool isAcceptableVariable(float) const; \
75 
76 
81 {
82 public:
83 
84  mDeclWFStdFns(CosTaper)
86 
87  float getVariable() const { return threshold_; }
88  const char* variableName() const
89  { return "Taper length";}
90 
91  static bool isLegacyTaper(const BufferString&);
92  static float getLegacyTaperVariable(const BufferString&);
93 
94 protected:
95 
96  float threshold_;
97  float factor_;
98 };
99 
100 
106 {
107 public:
108 
111 
112  KaiserWindow(double twidth,int nrsamples);
113  bool set(double width,int nrsamples);
114  //Alternate way of setting alpha
115 
116  float getVariable() const { return (float)alpha_;}
117  const char* variableName() const { return "alpha"; }
118 
119  // Variable must be set first
120  double getWidth() const { return width_; }
121  double getError() const;
122  int getLength() const { return ns_; }
123  double getWidth(int nrsamples) const;
124  double getError(int nrsamples) const;
125 
126 protected:
127 
128  double alpha_;
129  double denom_;
130  double width_;
131  int ns_;
132 };
133 
134 
135 mDefineFactory(Algo,WindowFunction,WINFUNCS);
#define mExpClass(module)
Definition: commondefs.h:157
Kaiser Window Function.
Definition: windowfunction.h:105
virtual bool isAcceptableVariable(float) const
Definition: windowfunction.h:33
int getLength() const
Definition: windowfunction.h:122
float factor_
Definition: windowfunction.h:97
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
double denom_
Definition: windowfunction.h:129
double alpha_
Definition: windowfunction.h:128
Mathematical function.
Definition: mathfunc.h:59
virtual bool hasVariable() const
Definition: windowfunction.h:29
int ns_
Definition: windowfunction.h:131
double getWidth() const
Definition: windowfunction.h:120
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
mDefineFactory(Algo, WindowFunction, WINFUNCS)
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
static const char * sKeyTaperVal()
Definition: windowfunction.h:36
double width_
Definition: windowfunction.h:130
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
#define mDeclWFStdFns(nm)
Definition: windowfunction.h:42
Tapered Cosine Window Function.
Definition: windowfunction.h:80
virtual bool setVariable(float)
Definition: windowfunction.h:31
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
virtual const char * variableName() const
Definition: windowfunction.h:32
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
#define mDeclWFSimpleClass(nm)
Definition: windowfunction.h:55
float threshold_
Definition: windowfunction.h:96
const char * variableName() const
Definition: windowfunction.h:88
Base class for window functions. The inheriting classes will give a value between 0 and 1 in the inte...
Definition: windowfunction.h:25
#define mDeclWFClassWithVariable(clss)
Definition: windowfunction.h:70
virtual float getVariable() const
Definition: windowfunction.h:30
static const char * sKeyVariable()
Definition: windowfunction.h:35
const char * variableName() const
Definition: windowfunction.h:117

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