OpendTect-6_4  6.4
autotracker.h
Go to the documentation of this file.
1 #ifndef autotracker_h
2 #define autotracker_h
3 
4 /*+
5 ________________________________________________________________________
6 
7  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
8  Author: A.H. Bril
9  Date: 23-10-1996
10  RCS: $Id$
11 ________________________________________________________________________
12 
13 -*/
14 
15 #include "mpeenginemod.h"
16 #include "emposid.h"
17 #include "executor.h"
18 #include "sets.h"
19 #include "sortedtable.h"
20 #include "thread.h"
21 #include "trckeyzsampling.h"
22 
23 namespace EM { class EMObject; }
24 namespace Geometry { class Element; }
25 namespace Threads { class WorkManager; }
26 template <class T> class Array2D;
27 class TrcKeyValue;
28 
32 namespace MPE
33 {
34 
35 class SectionTracker;
36 class SectionAdjuster;
37 class SectionExtender;
38 class EMTracker;
39 
46 {
47 friend class TrackerTask;
48 public:
51 
52  void setSeeds(const TypeSet<TrcKey>&);
53  void startFromSeeds();
54  void stop();
55  bool hasTasks() const;
56 
57  SectionTracker* getFreeSectionTracker();
58  void freeSectionTracker(const SectionTracker*);
59 
61 
62 protected:
63  void addTask(const TrcKeyValue&,const TrcKeyValue&,
64  const int seedid);
65 
66  void addTask(const TrcKeyValue&,const TrcKeyValue&);
68  void taskFinished(CallBacker*);
69  void updateCB(CallBacker*);
70  int queueid_;
71 
77  void addUndoEvent();
78 
81 
85 
89 };
90 
91 
92 /*
93 mExpClass(MPEEngine) AutoTracker : public Executor
94 { mODTextTranslationClass(AutoTracker)
95 public:
96  AutoTracker(EMTracker&,const EM::SectionID&);
97  ~AutoTracker();
98 
99  void setNewSeeds(const TypeSet<EM::PosID>&);
100  int nextStep();
101  void setTrackBoundary(const TrcKeyZSampling&);
102  void unsetTrackBoundary();
103  od_int64 nrDone() const { return nrdone_; }
104  od_int64 totalNr() const { return totalnr_; }
105 
106  virtual uiString uiMessage() const;
107 
108 protected:
109  bool addSeed(const EM::PosID&);
110  void manageCBbuffer(bool block);
111  void reCalculateTotalNr();
112  int nrdone_;
113  int totalnr_;
114  int nrflushes_;
115  int flushcntr_;
116  int stepcntallowedvar_;
117  int stepcntapmtthesld_;
118 
119  bool burstalertactive_;
120 
121  const EM::SectionID sectionid_;
122  SortedTable<EM::SubID,char> blacklist_;
123  TypeSet<EM::SubID> currentseeds_;
124  EM::EMObject& emobject_;
125  SectionTracker* sectiontracker_;
126  SectionExtender* extender_;
127  SectionAdjuster* adjuster_;
128  Geometry::Element* geomelem_;
129 
130  Array2D<float>* horizon3dundoinfo_;
131  RowCol horizon3dundoorigin_;
132 
133  uiString execmsg_;
134 };
135 */
136 
137 } // namespace MPE
138 
139 #endif
#define mExpClass(module)
Definition: commondefs.h:160
Definition: trckeyvalue.h:27
To be able to send and/or receive CallBacks, inherit from this class.
Definition: callback.h:272
SequentialTask to adjust the section of an EM object with ID EM::SectionID.
Definition: sectionadjuster.h:35
Threads::Lock getfreestlock_
Definition: autotracker.h:88
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:53
ObjectSet< SectionTracker > sectiontrackers_
Definition: autotracker.h:73
SequentialTask to extend the section of an EM object with ID EM::SectionID.
Definition: sectionextender.h:39
MPE stands for Model, Predict, Edit. Contains tracking and editing functions.
Definition: autotracker.h:32
TypeSet< TrcKey > seeds_
Definition: autotracker.h:79
int queueid_
Definition: autotracker.h:70
Tracks EM objects.
Definition: emtracker.h:40
BoolTypeSet trackerinuse_
Definition: autotracker.h:74
Tracks sections of EM::EMObject with ID EM::SectionID.
Definition: sectiontracker.h:38
Takes work and puts it on a queue for execution either in parallel, singlethread or manual...
Definition: threadwork.h:39
Definition: callback.h:254
Set of pointers to objects.
Definition: commontypes.h:32
interface to threads that should be portable.
Definition: atomic.h:28
EMTracker & tracker_
Definition: autotracker.h:72
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:131
Notifier< HorizonTrackerMgr > finished
Definition: autotracker.h:60
Threads::Atomic< int > tasknr_
Definition: autotracker.h:84
IdxPair used for its row() and col().
Definition: rowcol.h:25
Threads::WorkManager & twm_
Definition: autotracker.h:80
Threads::Atomic< int > nrtodo_
Definition: autotracker.h:83
Threads::Lock addlock_
Definition: autotracker.h:86
Array2D< float > * horizon3dundoinfo_
Definition: autotracker.h:75
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:25
RowCol horizon3dundoorigin_
Definition: autotracker.h:76
Threads::Lock finishlock_
Definition: autotracker.h:87
Threads::Atomic< int > nrdone_
Definition: autotracker.h:82
Definition: arraytesselator.h:21
Executor to auto track.
Definition: autotracker.h:45

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