Helios++
Helios software for LiDAR simulations
FullWaveformPulseDetector.h
1 #pragma once
2 
3 #include <boost/asio/thread_pool.hpp>
4 #include <boost/asio/post.hpp>
5 
6 #include "AbstractDetector.h"
7 
15  // *** ATTRIBUTES *** //
16  // ******************** //
21  std::shared_ptr<SyncFileWriter> fw_sfw;
22 
23 public:
24  // *** CONSTRUCTION / DESTRUCTION *** //
25  // ************************************ //
32  std::shared_ptr<Scanner> scanner,
33  double accuracy_m,
34  double range_min
35  ) : AbstractDetector(scanner, accuracy_m, range_min) {}
36  std::shared_ptr<AbstractDetector> clone() override;
37  void _clone(std::shared_ptr<AbstractDetector> ad) override;
38 
39  // *** M E T H O D S *** //
40  // *********************** //
44  void shutdown() override;
45  void writeFullWave(
46  std::vector<double> & fullwave,
47  int fullwave_index,
48  double min_time,
49  double max_time,
50  glm::dvec3& beamOrigin,
51  glm::dvec3& beamDir,
52  long gpstime
53  );
57  void applySettings(std::shared_ptr<ScannerSettings> & settings) override;
61  void simulatePulse(
62  thread_pool & pool,
63  glm::dvec3 absoluteBeamOrigin,
64  Rotation absoluteBeamAttitude,
65  int state_currentPulseNumber,
66  long currentGpsTime
67  ) override;
68 
69  // *** GETTERS and SETTERS *** //
70  // ***************************** //
78  void setOutputFilePath(
79  std::string path,
80  std::string fname="fullwave.txt",
81  bool computeWaveform=true
82  );
83 };
std::shared_ptr< SyncFileWriter > fw_sfw
Synchronous file writer used to handle output.
Definition: FullWaveformPulseDetector.h:21
void shutdown() override
Definition: FullWaveformPulseDetector.cpp:93
Concrete implementation of abstract detector to compute full waveform pulses.
Definition: FullWaveformPulseDetector.h:14
Definition: Rotation.h:80
FullWaveformPulseDetector(std::shared_ptr< Scanner > scanner, double accuracy_m, double range_min)
Base constructor for full waveform pulse detector.
Definition: FullWaveformPulseDetector.h:31
void simulatePulse(thread_pool &pool, glm::dvec3 absoluteBeamOrigin, Rotation absoluteBeamAttitude, int state_currentPulseNumber, long currentGpsTime) override
Definition: FullWaveformPulseDetector.cpp:68
Base abstract class for detectors.
Definition: AbstractDetector.h:20
Class representing a thread pool to deal with multi threading tasks.
Definition: ThreadPool.h:14
void applySettings(std::shared_ptr< ScannerSettings > &settings) override
Definition: FullWaveformPulseDetector.cpp:34
std::shared_ptr< Scanner > scanner
Scanner which the detector belongs to.
Definition: AbstractDetector.h:27
void setOutputFilePath(std::string path, std::string fname="fullwave.txt", bool computeWaveform=true)
Set the path to output file.
Definition: FullWaveformPulseDetector.cpp:38