Helios++
Helios software for LiDAR simulations
FWFSettings.h
1 #pragma once
2 
3 #include "Asset.h"
4 
5 #include <string>
6 #include <sstream>
7 #include <ostream>
8 
12 class FWFSettings : public Asset {
13 
14 public:
15  // *** ATTRIBUTES *** //
16  // ******************** //
20  double binSize_ns = 0.25;
24  double minEchoWidth = 2.5;
28  double peakEnergy = 500.0;
32  double apertureDiameter = 0.15;
36  double scannerEfficiency = 0.9;
40  double atmosphericVisibility = 0.9;
44  double scannerWaveLength = 1550.0;
48  double beamDivergence_rad = 0.0003;
52  double pulseLength_ns = 4.0;
60  double winSize_ns = pulseLength_ns / 4.0;
64  double maxFullwaveRange_ns = 0.0;
65 
66  // *** CONSTRUCTION / DESTRUCTION *** //
67  // ************************************ //
72 
73  // *** TO STRING *** //
74  // ******************* //
79  virtual inline std::string toString() const{
80  std::stringstream ss;
81  ss << "FWFSettings \"" << id << "\":\n"
82  << "binSize_ns = " << binSize_ns << "\n"
83  << "minEchoWidth = " << minEchoWidth << "\n"
84  << "peakEnergy = " << peakEnergy << "\n"
85  << "apertureDiameter = " << apertureDiameter << "\n"
86  << "scannerEfficiency = " << scannerEfficiency << "\n"
87  << "atmosphericVisibility = " << atmosphericVisibility << "\n"
88  << "scannerWaveLength = " << scannerWaveLength << "\n"
89  << "beamDivergence_rad = " << beamDivergence_rad << "\n"
90  << "pulseLength_ns = " << pulseLength_ns << "\n"
91  << "beamSampleQuality = " << beamSampleQuality << "\n"
92  << "winSize_ns = " << winSize_ns << "\n"
93  << "maxFullwaveRange_ns = " << maxFullwaveRange_ns << "\n"
94  ;
95  return ss.str();
96  }
100  friend std::ostream& operator<< (
101  std::ostream &out,
102  const FWFSettings &settings
103  ){
104  out << settings.toString();
105  return out;
106  }
107 };
Base class for all assets.
Definition: Asset.h:10
Full Waveform settings.
Definition: FWFSettings.h:12
double scannerEfficiency
Scanner efficiency.
Definition: FWFSettings.h:36
double binSize_ns
Bin size for discretization (nanoseconds)
Definition: FWFSettings.h:20
double scannerWaveLength
Scanner wave length.
Definition: FWFSettings.h:44
double atmosphericVisibility
Atmospheric visibility.
Definition: FWFSettings.h:40
int beamSampleQuality
Beam sample quality.
Definition: FWFSettings.h:56
double winSize_ns
Window size to iterate over discretization (nanoseconds)
Definition: FWFSettings.h:60
double beamDivergence_rad
Beam divergence (radians)
Definition: FWFSettings.h:48
double apertureDiameter
Aperture diameter.
Definition: FWFSettings.h:32
friend std::ostream & operator<<(std::ostream &out, const FWFSettings &settings)
Overload of << operator for output streams.
Definition: FWFSettings.h:100
double maxFullwaveRange_ns
Max full wave range (nanoseconds)
Definition: FWFSettings.h:64
virtual std::string toString() const
Obtain the string representation of the scanner settings.
Definition: FWFSettings.h:79
double minEchoWidth
Minimum echo width.
Definition: FWFSettings.h:24
double pulseLength_ns
Pulse length (nanoseconds)
Definition: FWFSettings.h:52
double peakEnergy
Peak energy.
Definition: FWFSettings.h:28
FWFSettings()
Default constructor for full waveform settings.
Definition: FWFSettings.h:71