IFullwave.hpp
1 #pragma once
2 
3 #include <opals/IModuleBase.hpp>
4 #include <opals/Path.hpp>
5 #include <opals/Vector.hpp>
6 #include <opals/FullwaveAlgorithm.hpp>
7 #include <opals/Array.hpp>
8 
9 #if defined(_MSC_VER) && !defined(OPALS_NO_AUTOLINK)
10  #if defined _DEBUG && !defined OPALS_NO_DEBUG
11  #pragma comment(lib, "opalsFullwave_d.lib")
12  #else
13  #pragma comment(lib, "opalsFullwave.lib")
14  #endif
15 #endif
16 
17 namespace opals {
18 
19  namespace opts
20  {
21  /// Options of \ref ModuleFullwave
22  namespace Fullwave
23  {
24  /// Options of \ref ModuleFullwave
25  using Options =
26  IGroup< Names::_, false,
35  >;
36  }
37  }
38 
39  /// Performs decomposition of the full waveform signal and provides 3D coordinates (scanner system) and additional attributes for each return.
40  /** The module provides echo extraction from raw full waveform data.
41  Together with the 3D coordinates of these echoes, additional attributes
42  such as amplitude and echo width are derived.
43 
44  As there are scanners allowing for multiple laser pulses in air (multiple-time around, MTA)
45  an MTA zone can be provided (parameter mtaZone, 1-..) or detected and adapted automatically (0).
46 
47  The output is stored in the scanner's own coordinate system (SOCS).
48  For proper georeferencing, opalsDirectGeoref is intended to be used after fullwave echo extraction. */
49  /// \see \ref ModuleFullwave
50  class OPALS_API IFullwave : virtual public IModuleBase
51  {
52 
53  public:
54  static IFullwave* New();
55  static IFullwave* New( IControlObject &controlObject );
56  static IFullwave* New( const IModuleBase &parent );
57  static IFullwave* New( const IModuleBase &parent, IControlObject &controlObject );
58 
59  virtual ~IFullwave() {}
60 
61  /// \name Access to module-specific options.
62  ///@{
64  virtual Options& opts() = 0;
65  virtual const Options& opts() const = 0;
66  ///@}
67 
68  };
69 
70 };
Performs decomposition of the full waveform signal and provides 3D coordinates (scanner system) and a...
Definition: IFullwave.hpp:50
Leaf that holds a read-only value.
Definition: IOption.hpp:63
Contains the public interface of OPALS.
Definition: AbsValueOrQuantile.hpp:8
Abstract base class of all opals modules.
Definition: IModuleBase.hpp:13
Interface for retrieving status and progress information from a module run.
Definition: c++_api/inc/opals/IControlObject.hpp:30
IGroup< Names::_, false, ILeaf< Names::inFile, false, Path >, ILeaf< Names::outFile, false, Path >, ILeaf< Names::oFormat, false, String >, ILeaf< Names::fullWaveAlg, false, FullwaveAlgorithm >, ILeaf< Names::detectThrLow, false, int >, ILeaf< Names::mtaZone, false, int >, ILeaf< Names::timeRange, false, Array< double, 2 > >, ILeaf< Names::filter, false, String > > Options
Options of Module Fullwave.
Definition: IFullwave.hpp:35
A group of options.
Definition: IOption.hpp:108