OpendTect  6.3
valseriestracker.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: A.H.Bril
8  Date: Dec 2006
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "algomod.h"
14 #include "valseriesevent.h"
15 
16 template <class T> class ValueSeries;
17 
18 
25 {
26 public:
27  ValSeriesTracker();
28  virtual ~ValSeriesTracker() {}
29  virtual const char* type() = 0;
30 
31  virtual bool isOK() const;
34  virtual void setSource(const ValueSeries<float>*,int sz,float depth);
35  virtual void setTarget(const ValueSeries<float>*,int sz,
36  float initialdepth);
37 
38  virtual bool track() = 0;
41  virtual float targetValue() const { return targetvalue_; }
42  virtual float targetDepth() const { return targetdepth_; }
43  virtual float quality() const { return 1; }
44 
45  virtual void fillPar(IOPar& par) const {}
46  virtual bool usePar(const IOPar& par) { return true; }
47 
48 protected:
49 
51  float sourcedepth_;
54  float targetdepth_;
56  float targetvalue_;
57 };
58 
59 
65 {
66 public:
67  EventTracker();
68 
69  const char* type() { return sType(); }
70  static const char* sType() { return "EventTracker"; }
71 
72  enum CompareMethod { None, SeedTrace, AdjacentParent };
74 
75  void setCompareMethod(CompareMethod);
76  CompareMethod getCompareMethod() const;
77 
78  static const char** sEventNames();
79  static const VSEvent::Type* cEventTypes();
80  static int getEventTypeIdx(VSEvent::Type);
81 
82  virtual bool isOK() const;
83 
84  void setSeed(const ValueSeries<float>*,int sz,
85  float depth);
86 
87  void setRangeStep(float step) { rangestep_ = step; }
88  float getRangeStep() const { return rangestep_; }
89  void setPermittedRange(const Interval<float>& rg);
90  //<!Is divided by rangestep to get nrof samples
91  const Interval<float>& permittedRange() const;
92  void setTrackEvent(VSEvent::Type ev);
110  VSEvent::Type trackEvent() const;
111  void allowAmplitudeSignChange(bool);
115  bool isAmplitudeSignChangeAllowed() const;
116  bool snap(const Interval<float>& amplrg);
117  bool snap(float threshold);
123  void useSimilarity(bool yn);
124  bool usesSimilarity() const;
125  void normalizeSimilarityValues(bool yn);
126  bool normalizesSimilarityValues() const;
127 
128  void setUseAbsThreshold(bool abs);
136  bool useAbsThreshold() const;
137 
138  void setAmplitudeThreshold(float th);
140  float amplitudeThreshold() const;
141 
142  void setAmplitudeThresholds(const TypeSet<float>&);
143  TypeSet<float>& getAmplitudeThresholds();
144 
145  void setAllowedVariance(float v);
147  float allowedVariance() const;
148 
149  void setAllowedVariances(const TypeSet<float>& avs);
150  TypeSet<float>& getAllowedVariances();
151 
152  void setSimilarityWindow(const Interval<float>& rg);
153  const Interval<float>& similarityWindow() const;
154  void setSimilarityThreshold(float th);
155  float similarityThreshold() const;
156 
157  void setSnapToEvent(bool);
158  bool snapToEvent() const;
159 
160  bool track();
161  float quality() const { return quality_; }
162 
163  void fillPar(IOPar& par) const;
164  bool usePar(const IOPar& par);
165 
166 protected:
167 
170  const Interval<float>& zrg,
171  const Interval<float>& amplrg,float& avgampl,
172  bool& hasloopskips,float& troughampl) const;
173  bool findMaxSimilarity(int nrtests,int step,int nrgracetests,
174  float& res,float& maxsim,
175  bool& flatstart) const;
176  bool isTargetValueAllowed() const;
177 
183  float allowedvar_;
187  float rangestep_;
192  bool dosnap_;
193  float quality_;
195 
197  float seeddepth_;
199 
200  static const char* sKeyPermittedRange();
201  static const char* sKeyValueThreshold();
202  static const char* sKeyValueThresholds();
203  static const char* sKeyAllowedVariance();
204  static const char* sKeyAllowedVariances();
205  static const char* sKeyUseAbsThreshold();
206  static const char* sKeySimWindow();
207  static const char* sKeySimThreshold();
208  static const char* sKeyNormSimi();
209  static const char* sKeyTrackByValue();
210  static const char* sKeyTrackEvent();
211  static const char* sKeyCompareMethod();
212  static const char* sKeyAttribID();
213  static const char* sKeySnapToEvent();
214  static const char* sKeyAllowSignChg();
215 
216 };
#define mExpClass(module)
Definition: commondefs.h:157
TypeSet< float > allowedvars_
Definition: valseriestracker.h:184
Definition: valseriestracker.h:72
bool dosnap_
Definition: valseriestracker.h:192
bool usesimilarity_
Definition: valseriestracker.h:189
Interval< float > similaritywin_
Definition: valseriestracker.h:186
float seeddepth_
Definition: valseriestracker.h:197
virtual bool usePar(const IOPar &par)
Definition: valseriestracker.h:46
float getRangeStep() const
Definition: valseriestracker.h:88
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
float targetvalue_
Definition: valseriestracker.h:56
float allowedvar_
Definition: valseriestracker.h:183
const char * type()
Definition: valseriestracker.h:69
virtual void fillPar(IOPar &par) const
Definition: valseriestracker.h:45
static const char * sType()
Definition: valseriestracker.h:70
const ValueSeries< float > * targetvs_
Definition: valseriestracker.h:53
Base class for a tracker that tracks something (e.g. min, max, a certain value)++ from one ValueSerie...
Definition: valseriestracker.h:24
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:188
FixedString None()
Definition: keystrs.h:90
float sourcedepth_
Definition: valseriestracker.h:51
float findExtreme(const FloatMathFunction &, bool minima, float x1, float x2, float tol=1e-5)
float ampthreshold_
Definition: valseriestracker.h:181
virtual bool isOK() const
Definition: valseries.h:36
bool normalizesimi_
Definition: valseriestracker.h:190
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
virtual float quality() const
Definition: valseriestracker.h:43
Event in value series.
Definition: valseriesevent.h:38
const ValueSeries< float > * sourcevs_
Definition: valseriestracker.h:50
Interface to a series of values.
Definition: odmemory.h:15
virtual float targetDepth() const
Definition: valseriestracker.h:42
Event finder in gate.
Definition: valseriesevent.h:63
virtual ~ValSeriesTracker()
Definition: valseriestracker.h:28
Tracker that tracks Min/Max & Zero crossings between valueseries.
Definition: valseriestracker.h:64
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
float quality() const
Definition: valseriestracker.h:161
bool allowamplsignchg_
Definition: valseriestracker.h:194
TypeSet< float > ampthresholds_
Definition: valseriestracker.h:182
int seedsize_
Definition: valseriestracker.h:198
bool useabsthreshold_
Definition: valseriestracker.h:185
CompareMethod comparemethod_
Definition: valseriestracker.h:180
float targetdepth_
Definition: valseriestracker.h:54
const ValueSeries< float > * seedvs_
Definition: valseriestracker.h:196
float compareampl_
Definition: valseriestracker.h:191
float quality_
Definition: valseriestracker.h:193
CompareMethod
Definition: valseriestracker.h:72
int targetsize_
Definition: valseriestracker.h:55
float rangestep_
Definition: valseriestracker.h:187
void setRangeStep(float step)
Definition: valseriestracker.h:87
Type
Definition: valseriesevent.h:24
VSEvent::Type evtype_
Definition: valseriestracker.h:178
int sourcesize_
Definition: valseriestracker.h:52
Interval< float > permrange_
Definition: valseriestracker.h:179
virtual float targetValue() const
Definition: valseriestracker.h:41
float similaritythreshold_
Definition: valseriestracker.h:188

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