Helios++
Helios software for LiDAR simulations
Scanner Class Referenceabstract

Class representing a scanner asset. More...

#include <Scanner.h>

Inheritance diagram for Scanner:
Collaboration diagram for Scanner:

Public Member Functions

 Scanner (std::string const id, std::list< int > const &pulseFreqs, bool const writeWaveform=false, bool const calcEchowidth=false, bool const fullWaveNoise=false, bool const platformNoiseDisabled=false)
 Scanner constructor. More...
 
 Scanner (Scanner &scanner)
 Copy constructor for the Scanner. More...
 
virtual std::shared_ptr< Scannerclone ()=0
 Make a clone of this scanner. More...
 
void initializeSequentialGenerators ()
 Initialize randomness generators and noise sources that are necessary for sequential pulse computations.
 
void buildScanningPulseProcess (int const parallelizationStrategy, PulseTaskDropper &dropper, std::shared_ptr< PulseThreadPoolInterface > pool)
 Build the scanning pulse process to be used by the scanner during simulation. More...
 
virtual void applySettings (std::shared_ptr< ScannerSettings > settings, size_t const idx)=0
 Apply scanner settings. More...
 
void applySettings (std::shared_ptr< ScannerSettings > settings)
 Non index version of the Scanner::applySettings(std::shared_ptr<ScannerSettings>) method. More...
 
virtual std::shared_ptr< ScannerSettingsretrieveCurrentSettings (size_t const idx)
 Retrieve current scanner settings and build a new ScannerSettings object with them. More...
 
std::shared_ptr< ScannerSettingsretrieveCurrentSettings ()
 Non index version of the Scanner::retrieveCurrentSettings(size_t const) method. More...
 
virtual void applySettingsFWF (FWFSettings settings, size_t const idx)
 Apply full wave form settings. More...
 
void applySettingsFWF (FWFSettings settings)
 Non index version of the Scanner::applySettingsFWF(FWFSettings, size_t const) method. More...
 
virtual void doSimStep (unsigned int legIndex, double const currentGpsTime)=0
 Perform computations for current simulation step. More...
 
std::string toString ()
 Build a string representation of the scanner. More...
 
virtual void calcRaysNumber (size_t const idx)=0
 Compute the number of rays depending on beam sample quality for the scanning device.
 
void calcRaysNumber ()
 Non index version of the Scanner::calcRaysNumber(size_t const) method. More...
 
virtual void prepareDiscretization (size_t const idx)=0
 Prepare wave discretization. More...
 
void prepareDiscretization ()
 Non index version of the Scanner::prepareDiscretization method. More...
 
virtual double calcFootprintArea (double const distance, size_t const idx) const =0
 Compute the footprint area \(f_{a}\). More...
 
double calcFootprintArea (double const distance) const
 Non index version of the Scanner::calcFootprintArea(double const, size_t const) method. More...
 
double calcFootprintRadius (double const distance, size_t const idx)
 Compute the footprint radius \(f_{r}\). More...
 
double calcFootprintRadius (double const distance)
 Non index version of the Scanner::calcFootprintRadius(double const, size_t const) method. More...
 
virtual double calcTargetArea (double const distance, size_t const idx) const =0
 Calculate the target area. It is the footprint area divided by the number of rays. More...
 
double calcTargetArea (double const distance) const
 Non index version of the Scanner::calcTargetArea(double const, size_t const) method. More...
 
virtual double calcAtmosphericAttenuation (size_t const idx) const =0
 
double calcAtmosphericAttenuation () const
 Non index version of Scanner::calcAtmosphericAttenuation. More...
 
virtual Rotation calcAbsoluteBeamAttitude (size_t const idx)=0
 Compute the absolute beam attitude considering the mount relative attitude and the deflector relative attitude. More...
 
Rotation calcAbsoluteBeamAttitude ()
 Non index version of the Scanner::calcAbsoluteBeamAttitude function. More...
 
virtual bool checkMaxNOR (int const nor, size_t const idx)=0
 Check if given number of return (nor) is inside expected boundaries. If scanner maxNOR is 0 or nor is less than maxNOR, then the check is passed (true is returned). Otherwise, it is not passed (false is returned). More...
 
bool checkMaxNOR (int const nor)
 Non index version of Scanner::checkMaxNOR(int const, size_t const) method. More...
 
virtual void computeSubrays (std::function< void(vector< double > const &_tMinMax, int const circleStep, double const circleStep_rad, Rotation &r1, double const divergenceAngle, NoiseSource< double > &intersectionHandlingNoiseSource, std::map< double, double > &reflections, vector< RaySceneIntersection > &intersects)> handleSubray, vector< double > const &tMinMax, NoiseSource< double > &intersectionHandlingNoiseSource, std::map< double, double > &reflections, vector< RaySceneIntersection > &intersects, size_t const idx)=0
 Perform ray casting to find intersections. More...
 
virtual bool initializeFullWaveform (double const minHitDist_m, double const maxHitDist_m, double &minHitTime_ns, double &maxHitTime_ns, double &nsPerBin, double &distanceThreshold, int &peakIntensityIndex, int &numFullwaveBins, size_t const idx)=0
 Initialize full waveform While the vector is not strictly initialized in this function, necessary variables are computed here. More...
 
virtual double calcIntensity (double const incidenceAngle, double const targetRange, double const targetReflectivity, double const targetSpecularity, double const targetSpecularExponent, double const targetArea, double const radius, size_t const idx) const =0
 Handle to which scanning device request the intensity computation. More...
 
virtual double calcIntensity (double const targetRange, double const radius, double const sigma, size_t const idx) const =0
 Handle to which scanning device request the intensity computation. More...
 
void handleSimStepNoise (glm::dvec3 &absoluteBeamOrigin, Rotation &absoluteBeamAttitude)
 Handle position and attitude noise. More...
 
virtual void onLegComplete ()
 Exposes ScanningPulseProcess:onLegComplete method of the scanning pulse process defining this scanner.
 
void onSimulationFinished ()
 Exposes ScanningPulseProcess::onSimulationFinished method of the scanning pulse process defining this scanner.
 
void handleTrajectoryOutput (double const currentGpsTime)
 Handle trajectory output whatever it is to output file, to all trajectories vector or to cycle trajectories vector. More...
 
void trackOutputPath (std::string const &path)
 Track given output path in a thread safe way. More...
 
virtual int getCurrentPulseNumber (size_t const idx) const =0
 Obtain the current pulse number of the scanning device. More...
 
int getCurrentPulseNumber () const
 Non index version of the Scanner::getCurrentPulseNumber method. More...
 
virtual int getNumRays (size_t const idx) const =0
 Obtain the number of rays of the scanning device. More...
 
int getNumRays () const
 Non index version of the Scanner::getNumRays(size_t const) method. More...
 
virtual void setNumRays (int const numRays, size_t const idx)=0
 Set the number of rays of the scanning device. More...
 
void setNumRays (int const numRays)
 Non index version of the Scanner::setNumRays(int const, size_t const) method. More...
 
int getPulseFreq_Hz () const
 Obtain the pulse frequency. More...
 
void setPulseFreq_Hz (int const pulseFreq_Hz)
 Set the pulse frequency. More...
 
virtual double getPulseLength_ns (size_t const idx) const =0
 Get the pulse length. More...
 
double getPulseLength_ns () const
 No index argument version of the Scanner::getPulseLength_ns method. More...
 
virtual void setPulseLength_ns (double const pulseLength_ns, size_t const idx)=0
 Set the pulse length. More...
 
void setPulseLength_ns (double const pulseLength_ns)
 No index argument version of the Scanner::setPulseLength_ns method. More...
 
virtual bool lastPulseWasHit (size_t const idx) const =0
 Check if last pulse was hit (true) or not (false) for the scanning device. More...
 
bool lastPulseWasHit () const
 Non index version of the Scanner::lastPulseWasHit method. More...
 
virtual void setLastPulseWasHit (bool const lastPulseWasHit, size_t const idx)=0
 Specify if last pulse was hit (true) or not (false) More...
 
void setLastPulseWasHit (bool const lastPulseWasHit)
 Non index version of the Scanner::setLastPulseWasHit method. More...
 
virtual double getBeamDivergence (size_t const idx) const =0
 Obtain beam divergence. More...
 
double getBeamDivergence () const
 No index argument version of the Scanner::getBeamDivergence method. More...
 
virtual void setBeamDivergence (double const beamDivergence, size_t const idx)=0
 Set beam divergence. More...
 
void setBeamDivergence (double const beamDivergence)
 No index argument version of the Scanner::setBeamDivergence method. More...
 
virtual double getAveragePower (size_t const idx) const =0
 Obtain average power. More...
 
double getAveragePower () const
 No index argument version of the Scanner::getAveragePower method. More...
 
virtual void setAveragePower (double const averagePower, size_t const idx)=0
 Set average power. More...
 
void setAveragePower (double const averagePower)
 No index argument version of the Scanner::setAveragePower method. More...
 
virtual double getBeamQuality (size_t const idx) const =0
 Get beam quality. More...
 
double getBeamQuality () const
 No index argument version of the Scanner::getBeamQuality method. More...
 
virtual void setBeamQuality (double const beamQuality, size_t const idx)=0
 Set beam quality. More...
 
void setBeamQuality (double const beamQuality)
 No index argument version of the Scanner::setBeamQuality method. More...
 
virtual double getEfficiency (size_t const idx) const =0
 Obtain device efficiency. More...
 
double getEfficiency () const
 No index argument version of the Scanner::getEfficiency method. More...
 
virtual void setEfficiency (double const efficiency, size_t const idx=0)=0
 Set device efficiency. More...
 
void setEfficiency (double const efficiency)
 No index argument version of the Scanner::setEfficiency method. More...
 
virtual double getReceiverDiameter (size_t const idx) const =0
 Get receiver diameter. More...
 
double getReceiverDiameter () const
 No index argument version of the Scanner::getReceiverDiameter. More...
 
virtual void setReceiverDiameter (double const receiverDiameter, size_t const idx)=0
 Set receiver diameter. More...
 
void setReceiverDiameter (double const receiverDiameter)
 No index argument version of the Scanner::setReceiverDiameter method. More...
 
virtual double getVisibility (size_t const idx) const =0
 Get device visibility. More...
 
double getVisibility () const
 No index argument version of the Scanner::getVisibility method. More...
 
virtual void setVisibility (double const visibility, size_t const idx)=0
 Set device visibility. More...
 
void setVisibility (double const visibility)
 No index argument version of the Scanner::setVisibility method. More...
 
virtual double getWavelength (size_t const idx) const =0
 Obtain wave length. More...
 
double getWavelength () const
 No index argument version of the Scanner::getWavelength method. More...
 
virtual void setWavelength (double const wavelength, size_t const idx)=0
 Set wave length. More...
 
void setWavelength (double const wavelength)
 No index argument version of the Scanner::setWavelength method. More...
 
virtual double getAtmosphericExtinction (size_t const idx) const =0
 Obtain atmospheric extinction. More...
 
double getAtmosphericExtinction () const
 No index argument version of the Scanner::getAtmosphericExtinction method. More...
 
virtual void setAtmosphericExtinction (double const atmosphericExtinction, size_t const idx)=0
 Set atmospheric extinction. More...
 
void setAtmosphericExtinction (double const atmosphericExtinction)
 No index argument version of the Scanner::setAtmosphericExtinction method. More...
 
virtual double getBeamWaistRadius (size_t const idx) const =0
 Obtain beam waist radius. More...
 
double getBeamWaistRadius () const
 No index argument version of the Scanner::getBeamWaistRadius method. More...
 
virtual void setBeamWaistRadius (double const beamWaistRadius, size_t const idx)=0
 Set beam waist radius. More...
 
void setBeamWaistRadius (double const beamWaistRadius)
 No index argument version of the Scanner::setBeamWaistRadius method. More...
 
virtual glm::dvec3 getHeadRelativeEmitterPosition (size_t const idx=0) const =0
 Obtain the head's relative emitter position. More...
 
virtual void setHeadRelativeEmitterPosition (glm::dvec3 const &pos, size_t const idx=0)=0
 Set the head's relative emitter position. More...
 
virtual glm::dvec3 & getHeadRelativeEmitterPositionByRef (size_t const idx=0)=0
 Obtain the head's relative emitter position by reference (can be written) More...
 
virtual Rotation getHeadRelativeEmitterAttitude (size_t const idx=0) const =0
 Obtain the head's relative emitter attitude. More...
 
virtual void setHeadRelativeEmitterAttitude (Rotation const &attitude, size_t const idx=0)=0
 Obtain the head's relative emitter attitude. More...
 
virtual RotationgetHeadRelativeEmitterAttitudeByRef (size_t const idx=0)=0
 Obtain the head's relative emitter attitude by reference (can be written) More...
 
virtual double getBt2 (size_t const idx) const =0
 Obtain \(B_{t2}\). More...
 
double getBt2 () const
 No index argument version of the Scanner::getBt2 method. More...
 
virtual void setBt2 (double const bt2, size_t const idx)=0
 Set \(B_{t2}\). More...
 
void setBt2 (double const bt2)
 No index argument version of the Scanner::setBt2 method @Scanner::setBt2(double const, size_t const)
 
virtual double getDr2 (size_t const idx) const =0
 Obtain \(D_{r2}\). More...
 
double getDr2 () const
 No index argument version of the Scanner::getDr2 method. More...
 
virtual void setDr2 (double const dr2, size_t const idx)=0
 Set \(D_{r2}\). More...
 
void setDr2 (double const dr2)
 No index argument version of the Scanner::setDr2 method @Scanner::setDr2(double const, size_t const)
 
bool isActive () const
 Check if scanner is active (true) or not (false) More...
 
void setActive (bool const active)
 Set scanner active status. True to make it active, false to make it inactive. More...
 
bool isWriteWaveform () const
 Check if scanner is configured to write wave form (true) or not (false) More...
 
void setWriteWaveform (bool const writeWaveform)
 Set scanner write wave form configuration. More...
 
bool isCalcEchowidth () const
 Check if scanner is configured to compute echo width (true) or not (false) More...
 
void setCalcEchowidth (bool const calcEchowidth)
 Set scanner echo width configuration. More...
 
bool isFullWaveNoise () const
 Check if scanner is configured to add noise to full wave (true) or not (false) More...
 
void setFullWaveNoise (bool const fullWaveNoise)
 Set scanner full wave noise policy. More...
 
bool isPlatformNoiseDisabled ()
 Check if platform noise is disabled (true) or not (false) More...
 
void setPlatformNoiseDisabled (bool const platformNoiseDisabled)
 Set platform noise disabled flag. More...
 
bool isFixedIncidenceAngle () const
 Check if incidence angle is fixed (true) or not (false) More...
 
void setFixedIncidenceAngle (bool const fixedIncidenceAngle)
 Set fixed incidence angle flag. More...
 
std::string getScannerId () const
 Obtain the identifier of the scanner. More...
 
void setScannerId (std::string const &id)
 Set the identifier of the scanner. More...
 
virtual void setDeviceIndex (size_t const newIdx, size_t const oldIdx)=0
 Set the device index (newIdx) of the device at given index (oldIdx). More...
 
virtual std::string getDeviceId (size_t const idx) const =0
 Obtain scanner device identifier. More...
 
std::string getDeviceId () const
 No index argument version of the Scanner::getDeviceId method. More...
 
virtual void setDeviceId (std::string const deviceId, size_t const idx)=0
 Set the scanner device identifier. More...
 
void setDeviceId (std::string const deviceId)
 No index argument version of the Scanner::setDeviceId method. More...
 
virtual size_t getNumDevices () const =0
 Obtain the number of scanning devices composing the scanner.
 
virtual std::shared_ptr< ScannerHeadgetScannerHead (size_t const idx)=0
 Obtain the scanner head of the scanning device. More...
 
std::shared_ptr< ScannerHeadgetScannerHead ()
 Non index version of the Scanner::getScannerHead(size_t const) method. More...
 
virtual void setScannerHead (std::shared_ptr< ScannerHead > scannerHead, size_t const idx)=0
 Set the scanner head of the scanning device. More...
 
void setScannerHead (std::shared_ptr< ScannerHead > scannerHead)
 Non index version of the Scanner::setScannerHead method. More...
 
virtual std::shared_ptr< AbstractBeamDeflectorgetBeamDeflector (size_t const idx)=0
 Obtain the beam deflector of the scanning device. More...
 
std::shared_ptr< AbstractBeamDeflectorgetBeamDeflector ()
 Non index version of the Scanner::getBeamDeflector(size_t const) method. More...
 
virtual void setBeamDeflector (std::shared_ptr< AbstractBeamDeflector > deflector, size_t const idx)=0
 Set the beam deflector of the scanning device. More...
 
void setBeamDeflector (std::shared_ptr< AbstractBeamDeflector > deflector)
 Non index version of the Scanner::setBeamDeflector method. More...
 
virtual std::shared_ptr< AbstractDetectorgetDetector (size_t const idx)=0
 Obtain the abstract detector of the scanning device. More...
 
std::shared_ptr< AbstractDetectorgetDetector ()
 Non index version of the Scanner::getDetector(size_t const) method. More...
 
virtual void setDetector (std::shared_ptr< AbstractDetector > detector, size_t const idx)=0
 Set the abstract detector of the scanning device. More...
 
void setDetector (std::shared_ptr< AbstractDetector > detector)
 Non index version of the Scanner::setDetector method. More...
 
void setAllDetectors (std::shared_ptr< AbstractDetector > detector)
 Set the detector of each scanning device to the given one. More...
 
virtual FWFSettingsgetFWFSettings (size_t const idx)=0
 Obtain the Full WaveForm settings of the scanning device. More...
 
FWFSettingsgetFWFSettings ()
 Non index version of the Scanner::getFWFSettings(size_t const) More...
 
virtual void setFWFSettings (FWFSettings const &fwfSettings, size_t const idx)=0
 Set the Full WaveForm settings of the scanning device. More...
 
void setFWFSettings (FWFSettings const &fwfSettings)
 Non index version of the Scanner::setFWFSettings(FWFSettings &, size_t const) method. More...
 
virtual std::list< int > & getSupportedPulseFreqs_Hz (size_t const idx)=0
 Obtain the list of supported pulse frequencies of the scanning device. More...
 
std::list< int > & getSupportedPulseFreqs_Hz ()
 Non index version of the Scanner::getSupportedPulseFreqs_Hz(size_t const) method. More...
 
virtual void setSupportedPulseFreqs_Hz (std::list< int > &pulseFreqs_Hz, size_t const idx)=0
 Set the list of supported pulse frequencies (in Hertz) for the scanning device. More...
 
void setSupportedPulseFreqs_Hz (std::list< int > &pulseFreqs_Hz)
 Non index version of the Scanner::setSupportedPulseFreqs_Hz(std::list<int> &, size_t const) More...
 
virtual int getMaxNOR (size_t const idx) const =0
 Obtain the maximum number of returns per pulse for the scanning device (0 means no maximum at all). More...
 
int getMaxNOR () const
 Non index version of Scanner::getMaxNOR(size_t const) More...
 
virtual void setMaxNOR (int const maxNOR, size_t const idx)=0
 Set the maximum number of returns per pulse for the scanning device (0 means no maximum at all). More...
 
void setMaxNOR (int const maxNOR)
 Non index version of Scanner::setMaxNOR(int const, size_t const) More...
 
virtual int getNumTimeBins (size_t const idx) const =0
 Obtain the number of bins defining the size of the time discretization for the scanning device. More...
 
int getNumTimeBins () const
 Non index version of the Scanner::getNumTimeBins(size_t const) method. More...
 
virtual void setNumTimeBins (int const numTimeBins, size_t const idx)=0
 Set the number of bins defining the size of the time discretization for the scanning device. More...
 
void setNumTimeBins (int const numTimeBins)
 Non index version of the Scanner::setNumTimeBins(int const, size_t const) method. More...
 
virtual int getPeakIntensityIndex (size_t const idx) const =0
 Obtain the index of the bin containing the intensity peak for the scanning device. More...
 
int getPeakIntensityIndex () const
 Non index version of the Scanner::getPeakIntensityIndex(size_t const) method. More...
 
virtual void setPeakIntensityIndex (int const pii, size_t const idx)=0
 Set the index of the bin containing the intensity peak for the scanning device. More...
 
void setPeakIntensityIndex (int const pii)
 Non index version of the Scanner::setPeakIntensityIndex(int const, size_t const) method. More...
 
virtual std::vector< double > & getTimeWave (size_t const idx)=0
 Obtain the time discretization vector of the scanning device. More...
 
std::vector< double > & getTimeWave ()
 Non index version of the Scanner::getTimeWave(size_t const) method. More...
 
virtual void setTimeWave (std::vector< double > &timewave, size_t const idx)=0
 Set the time discretization vector of the scanning device. More...
 
void setTimeWave (std::vector< double > &timewave)
 Non index version of the Scanner::setTimeWave(std::vector<double> &, size_t const) method. More...
 
virtual void setTimeWave (std::vector< double > &&timewave, size_t const idx)=0
 Rvalue version of the Scanner::setTimeWave(std::vector<double> &, size_t const) method. More...
 
void setTimeWave (std::vector< double > &&timewave)
 Non index version of the Scanner::setTimeWave(std::vector<double> &&, size_t const) method. More...
 
- Public Member Functions inherited from Asset
std::string getLocationString ()
 Obtain asset location string. More...
 
virtual bool isEgg () const
 Check whether the asset is an EggAsset or not. More...
 

Public Attributes

std::shared_ptr< FMSFacadefms
 Main facade to file management system.
 
std::shared_ptr< Platformplatform
 Platform carrying the scanner. More...
 
std::shared_ptr< std::vector< std::string > > allOutputPaths = nullptr
 Historical vector of all output paths where scanner measurements were written. More...
 
std::shared_ptr< std::vector< Measurement > > allMeasurements = nullptr
 Historical vector of all measurements performed by the scanner. More...
 
std::shared_ptr< std::vector< Trajectory > > allTrajectories = nullptr
 Historical vector of all trajectory points recorded by the scanner. More...
 
std::shared_ptr< std::mutex > allMeasurementsMutex = nullptr
 Mutex to handle concurrent access to historical vector of all measurements and historical vector of all trajectory points. More...
 
std::shared_ptr< std::vector< Measurement > > cycleMeasurements = nullptr
 Vector of measurements performed by the scanner at current cycle. More...
 
std::shared_ptr< std::vector< Trajectory > > cycleTrajectories = nullptr
 Vector of trajectory points recorded by the scanner. More...
 
std::shared_ptr< std::mutex > cycleMeasurementsMutex = nullptr
 Mutex to handle concurrent access to vector of measurements and vector of trajectory points by cycle. More...
 
double trajectoryTimeInterval_ns = 0.0
 Time interval between record of trajectory points. When it is exactly 0, then no trajectory points will be recorded. More...
 
double lastTrajectoryTime
 GPS time (nanoseconds) corresponding to last recorded trajectory point.
 
std::shared_ptr< RandomnessGenerator< double > > randGen1 = nullptr
 First randomness generator for single thread mode.
 
std::shared_ptr< RandomnessGenerator< double > > randGen2 = nullptr
 Second randomness generator for single thread mode.
 
std::shared_ptr< UniformNoiseSource< double > > intersectionHandlingNoiseSource = nullptr
 Uniform noise source for single thread mode.
 
- Public Attributes inherited from Asset
std::string id = ""
 Asset identifier.
 
std::string name = "Unnamed Asset"
 Asset name.
 
std::string sourceFilePath = ""
 Path to asset file.
 

Protected Member Functions

virtual void _clone (Scanner &sc) const
 Assist the clone method by means of handling cloning of attributes from this scanner to the new one (sc) More...
 

Protected Attributes

std::string id = "SCANNER-ID"
 The scanner's identifier.
 
bool writeWaveform = false
 Flag specifying if write waveform (true) or not (false)
 
bool calcEchowidth = false
 Flag specifying if calculate echo width (true) or not (false)
 
bool fullWaveNoise = false
 Flag specifying if compute full wave noise (true) or not (false)
 
bool platformNoiseDisabled = false
 Flag specifying if disable platform noise (true) or not (false)
 
bool fixedIncidenceAngle = false
 Flag specifying if use fixed incidence angle (true) or not (false)
 
int cfg_setting_pulseFreq_Hz = 0
 Pulse frequency (hertz)
 
bool state_isActive = true
 Flag specifying if scanner is active (true) or not (false) More...
 
std::unique_ptr< ScanningPulseProcessspp = nullptr
 The scanning pulse process used by the scanner. More...
 

Detailed Description

Class representing a scanner asset.

Constructor & Destructor Documentation

◆ Scanner() [1/2]

Scanner::Scanner ( std::string const  id,
std::list< int > const &  pulseFreqs,
bool const  writeWaveform = false,
bool const  calcEchowidth = false,
bool const  fullWaveNoise = false,
bool const  platformNoiseDisabled = false 
)

Scanner constructor.

Parameters
pulseFreqsList of supported pulse frequencies (hertz)
See also
Scanner::id
Scanner::writeWaveform
Scanner::calcEchowidth
Scanner::fullWaveNoise
Scanner::platformNoiseDisabled

◆ Scanner() [2/2]

Scanner::Scanner ( Scanner scanner)

Copy constructor for the Scanner.

Parameters
scannerThe scanner to be copied

Member Function Documentation

◆ _clone()

void Scanner::_clone ( Scanner sc) const
protectedvirtual

Assist the clone method by means of handling cloning of attributes from this scanner to the new one (sc)

Parameters
scThe scanner which attributes must be assigned as clones of the caller scanner (this)

Reimplemented in SingleScanner, and MultiScanner.

◆ applySettings() [1/2]

void Scanner::applySettings ( std::shared_ptr< ScannerSettings settings)
inline

◆ applySettings() [2/2]

virtual void Scanner::applySettings ( std::shared_ptr< ScannerSettings settings,
size_t const  idx 
)
pure virtual

Apply scanner settings.

Parameters
settingsScanner settings to be applied
idxThe index of the scanning device to which scanner settings must be applied
See also
ScannerSettings

Implemented in SingleScanner, and MultiScanner.

◆ applySettingsFWF() [1/2]

void Scanner::applySettingsFWF ( FWFSettings  settings)
inline

◆ applySettingsFWF() [2/2]

void Scanner::applySettingsFWF ( FWFSettings  settings,
size_t const  idx 
)
virtual

Apply full wave form settings.

Parameters
settingsFull wave form settings to be applied
idxThe index of the scanning device which Full WaveForm settings must be updated
See also
FWFSettings

◆ buildScanningPulseProcess()

void Scanner::buildScanningPulseProcess ( int const  parallelizationStrategy,
PulseTaskDropper dropper,
std::shared_ptr< PulseThreadPoolInterface pool 
)

Build the scanning pulse process to be used by the scanner during simulation.

Parameters
dropperSimulation's task dropper
poolSimulation's thread pool
Returns
Built scanning pulse process
See also
Simulation::parallelizationStrategy
Simulation::taskDropper
Simulation::threadPool

◆ calcAbsoluteBeamAttitude() [1/2]

Rotation Scanner::calcAbsoluteBeamAttitude ( )
inline

◆ calcAbsoluteBeamAttitude() [2/2]

virtual Rotation Scanner::calcAbsoluteBeamAttitude ( size_t const  idx)
pure virtual

Compute the absolute beam attitude considering the mount relative attitude and the deflector relative attitude.

See also
ScannerHead::getMountRelativeAttitude
AbstractBeamDeflector::getEmitterRelativeAttitude

Implemented in SingleScanner, and MultiScanner.

◆ calcAtmosphericAttenuation() [1/2]

double Scanner::calcAtmosphericAttenuation ( ) const
inline

Non index version of Scanner::calcAtmosphericAttenuation.

See also
Scanner::calcAtmosphericAttenuation(size_t const)

◆ calcAtmosphericAttenuation() [2/2]

virtual double Scanner::calcAtmosphericAttenuation ( size_t const  idx) const
pure virtual

◆ calcFootprintArea() [1/2]

double Scanner::calcFootprintArea ( double const  distance) const
inline

Non index version of the Scanner::calcFootprintArea(double const, size_t const) method.

See also
Scanner::calcFootprintArea(double const, size_t const)

◆ calcFootprintArea() [2/2]

virtual double Scanner::calcFootprintArea ( double const  distance,
size_t const  idx 
) const
pure virtual

Compute the footprint area \(f_{a}\).

\[ f_{a} = \frac{{\pi}d^{2}B_{t2}}{4} \]

Parameters
distanceDistance \(d\)
Returns
Footprint area \(f_{a}\)
See also
Scanner::cached_Bt2

Implemented in SingleScanner, and MultiScanner.

◆ calcFootprintRadius() [1/2]

double Scanner::calcFootprintRadius ( double const  distance)
inline

◆ calcFootprintRadius() [2/2]

double Scanner::calcFootprintRadius ( double const  distance,
size_t const  idx 
)

Compute the footprint radius \(f_{r}\).

\[ f_{r} = \sqrt{\frac{f_{a}}{\pi}} \]

Parameters
distanceDistance \(d\)
Returns
Footprint radius \(f_{r}\)
See also
Scanner::calcFootprintArea

◆ calcIntensity() [1/2]

virtual double Scanner::calcIntensity ( double const  incidenceAngle,
double const  targetRange,
double const  targetReflectivity,
double const  targetSpecularity,
double const  targetSpecularExponent,
double const  targetArea,
double const  radius,
size_t const  idx 
) const
pure virtual

Handle to which scanning device request the intensity computation.

Parameters
idxThe index of the scanning device that must compute the intensity
See also
ScanningDevice::calcIntensity

Implemented in SingleScanner, and MultiScanner.

◆ calcIntensity() [2/2]

virtual double Scanner::calcIntensity ( double const  targetRange,
double const  radius,
double const  sigma,
size_t const  idx 
) const
pure virtual

Handle to which scanning device request the intensity computation.

Parameters
idxThe index of the scanning device that must compute the intensity
See also
ScanningDevice::calcIntensity

Implemented in SingleScanner, and MultiScanner.

◆ calcRaysNumber()

void Scanner::calcRaysNumber ( )
inline

◆ calcTargetArea() [1/2]

double Scanner::calcTargetArea ( double const  distance) const
inline

Non index version of the Scanner::calcTargetArea(double const, size_t const) method.

See also
Scanner::calcTargetArea(double const, size_t const)

◆ calcTargetArea() [2/2]

virtual double Scanner::calcTargetArea ( double const  distance,
size_t const  idx 
) const
pure virtual

Calculate the target area. It is the footprint area divided by the number of rays.

See also
Scanner::calcFootprintArea
Scanner::getNumRays

Implemented in SingleScanner, and MultiScanner.

◆ checkMaxNOR() [1/2]

bool Scanner::checkMaxNOR ( int const  nor)
inline

◆ checkMaxNOR() [2/2]

virtual bool Scanner::checkMaxNOR ( int const  nor,
size_t const  idx 
)
pure virtual

Check if given number of return (nor) is inside expected boundaries. If scanner maxNOR is 0 or nor is less than maxNOR, then the check is passed (true is returned). Otherwise, it is not passed (false is returned).

Parameters
norCurrent number of return
Returns
True if the check is passed, false otherwise
See also
ScanningDevice::maxNOR

Implemented in SingleScanner, and MultiScanner.

◆ clone()

virtual std::shared_ptr<Scanner> Scanner::clone ( )
pure virtual

Make a clone of this scanner.

Returns
Shared pointer pointing to the clone of this scanner

Implemented in SingleScanner, and MultiScanner.

◆ computeSubrays()

virtual void Scanner::computeSubrays ( std::function< void(vector< double > const &_tMinMax, int const circleStep, double const circleStep_rad, Rotation &r1, double const divergenceAngle, NoiseSource< double > &intersectionHandlingNoiseSource, std::map< double, double > &reflections, vector< RaySceneIntersection > &intersects)>  handleSubray,
vector< double > const &  tMinMax,
NoiseSource< double > &  intersectionHandlingNoiseSource,
std::map< double, double > &  reflections,
vector< RaySceneIntersection > &  intersects,
size_t const  idx 
)
pure virtual

Perform ray casting to find intersections.

Parameters
[in]handleSubrayThe function where computed subrays must be delegated to
[in]tMinMaxMinimum and maximum time to intersection with respect to the axis aligned bounding box that bounds the scene
[out]reflectionsWhere reflections must be stored when a hit is registered
[out]intersectsWhere intersections must be stored when a hit is registered
[in]idxThe index of the scanning device
See also
FullWaveformPulseRunnable::computeSubrays
FullWaveformPulseRunnable::handleSubray
ScanningDevice::computeSubrays

Implemented in SingleScanner, and MultiScanner.

◆ doSimStep()

virtual void Scanner::doSimStep ( unsigned int  legIndex,
double const  currentGpsTime 
)
pure virtual

Perform computations for current simulation step.

Parameters
legIndexIndex of current leg
currentGpsTimeGPS time of current pulse

Implemented in SingleScanner, and MultiScanner.

◆ getAtmosphericExtinction() [1/2]

double Scanner::getAtmosphericExtinction ( ) const
inline

No index argument version of the Scanner::getAtmosphericExtinction method.

Returns
Scanner::getAtmosphericExtinction(size_t const)

◆ getAtmosphericExtinction() [2/2]

virtual double Scanner::getAtmosphericExtinction ( size_t const  idx) const
pure virtual

Obtain atmospheric extinction.

Parameters
idxThe index of the scanning device which atmospheric extinction must be obtained (by default 0, it is the first one)
Returns
Atmospheric extinction
See also
ScanningDevice::atmosphericExtinction

Implemented in SingleScanner, and MultiScanner.

◆ getAveragePower() [1/2]

double Scanner::getAveragePower ( ) const
inline

No index argument version of the Scanner::getAveragePower method.

See also
Scanner::getAveragePower(size_t const)

◆ getAveragePower() [2/2]

virtual double Scanner::getAveragePower ( size_t const  idx) const
pure virtual

Obtain average power.

Parameters
idxThe index of the scanning device which average power must be obtained (by default 0, it is the first one)
Returns
Average power (watts)
See also
ScanningDevice::averagePower_w

Implemented in SingleScanner, and MultiScanner.

◆ getBeamDeflector() [1/2]

std::shared_ptr<AbstractBeamDeflector> Scanner::getBeamDeflector ( )
inline

◆ getBeamDeflector() [2/2]

virtual std::shared_ptr<AbstractBeamDeflector> Scanner::getBeamDeflector ( size_t const  idx)
pure virtual

Obtain the beam deflector of the scanning device.

Parameters
idxThe index of the scanning device which beam deflector must be obtained
Returns
The beam deflector of the scanning device
See also
AbstractBeamDeflector

Implemented in SingleScanner, and MultiScanner.

◆ getBeamDivergence() [1/2]

double Scanner::getBeamDivergence ( ) const
inline

No index argument version of the Scanner::getBeamDivergence method.

See also
Scanner::getBeamDivergence(size_t const)

◆ getBeamDivergence() [2/2]

virtual double Scanner::getBeamDivergence ( size_t const  idx) const
pure virtual

Obtain beam divergence.

Parameters
idxThe index of the scanning device which beam divergence must be obtained (by default 0, it is the first one)
Returns
Beam divergence (radians)
See also
ScanningDevice::beamDivergence_rad

Implemented in SingleScanner, and MultiScanner.

◆ getBeamQuality() [1/2]

double Scanner::getBeamQuality ( ) const
inline

No index argument version of the Scanner::getBeamQuality method.

See also
Scanner::getBeamQuality(size_t const)

◆ getBeamQuality() [2/2]

virtual double Scanner::getBeamQuality ( size_t const  idx) const
pure virtual

Get beam quality.

Parameters
idxThe index of the scanning device which beam quality must be obtained (by default 0, it is the first one)
Returns
Beam quality
See also
ScanningDevice::beamQuality

Implemented in SingleScanner, and MultiScanner.

◆ getBeamWaistRadius() [1/2]

double Scanner::getBeamWaistRadius ( ) const
inline

No index argument version of the Scanner::getBeamWaistRadius method.

See also
Scanner::getBeamWaistRadius(size_t const)

◆ getBeamWaistRadius() [2/2]

virtual double Scanner::getBeamWaistRadius ( size_t const  idx) const
pure virtual

Obtain beam waist radius.

Parameters
idxThe index of the scanning device which beam waist radius must be obtained (by default 0, it is the first one)
Returns
Beam waist radius
See also
ScanningDevice::beamWaistRadius

Implemented in SingleScanner, and MultiScanner.

◆ getBt2() [1/2]

double Scanner::getBt2 ( ) const
inline

No index argument version of the Scanner::getBt2 method.

See also
Scanner::getBt2(size_t const)

◆ getBt2() [2/2]

virtual double Scanner::getBt2 ( size_t const  idx) const
pure virtual

Obtain \(B_{t2}\).

Parameters
idxThe index of the scanning device which cached Bt2 (square of beam divergence) must be obtained (by default 0, it is the first one)
Returns
\(B_{t2}\)
See also
ScanningDevice::cached_Bt2

Implemented in SingleScanner, and MultiScanner.

◆ getCurrentPulseNumber() [1/2]

int Scanner::getCurrentPulseNumber ( ) const
inline

Non index version of the Scanner::getCurrentPulseNumber method.

See also
Scanner::getCurrentPulseNumber(size_t const)

◆ getCurrentPulseNumber() [2/2]

virtual int Scanner::getCurrentPulseNumber ( size_t const  idx) const
pure virtual

Obtain the current pulse number of the scanning device.

Parameters
idxThe index of the scanning device which pulse number must be obtained
Returns
The current pulse number of the scanning device
See also
ScanningDevice::state_currentPulseNumber

Implemented in SingleScanner, and MultiScanner.

◆ getDetector() [1/2]

std::shared_ptr<AbstractDetector> Scanner::getDetector ( )
inline

◆ getDetector() [2/2]

virtual std::shared_ptr<AbstractDetector> Scanner::getDetector ( size_t const  idx)
pure virtual

Obtain the abstract detector of the scanning device.

Parameters
idxThe index of the scanning device which abstract detector must be obtained
Returns
The abstract detector of the scanning device
See also
AbstractDetector

Implemented in SingleScanner, and MultiScanner.

◆ getDeviceId() [1/2]

std::string Scanner::getDeviceId ( ) const
inline

No index argument version of the Scanner::getDeviceId method.

See also
Scanner::getDeviceId(size_t const)

◆ getDeviceId() [2/2]

virtual std::string Scanner::getDeviceId ( size_t const  idx) const
pure virtual

Obtain scanner device identifier.

Returns
Scanner device identifier
See also
ScanningDevice::id

Implemented in SingleScanner, and MultiScanner.

◆ getDr2() [1/2]

double Scanner::getDr2 ( ) const
inline

No index argument version of the Scanner::getDr2 method.

See also
Scanner::getDr2(size_t const)

◆ getDr2() [2/2]

virtual double Scanner::getDr2 ( size_t const  idx) const
pure virtual

Obtain \(D_{r2}\).

Parameters
idxThe index of the scanning device which cached Dr2 (square of receiver diameter) must be obtained (by default 0, it is the first one)
Returns
\(D_{r2}\)
See also
ScanningDevice::cached_Dr2

Implemented in SingleScanner, and MultiScanner.

◆ getEfficiency() [1/2]

double Scanner::getEfficiency ( ) const
inline

No index argument version of the Scanner::getEfficiency method.

See also
Scanner::getEfficiency(size_t const)

◆ getEfficiency() [2/2]

virtual double Scanner::getEfficiency ( size_t const  idx) const
pure virtual

Obtain device efficiency.

Parameters
idxThe index of the scanning device which efficiency must be obtained (by default 0, it is the first one)
Returns
Device efficiency
See also
ScanningDevice::efficiency

Implemented in SingleScanner, and MultiScanner.

◆ getFWFSettings() [1/2]

FWFSettings& Scanner::getFWFSettings ( )
inline

◆ getFWFSettings() [2/2]

virtual FWFSettings& Scanner::getFWFSettings ( size_t const  idx)
pure virtual

Obtain the Full WaveForm settings of the scanning device.

Parameters
idxThe index of the scanning device which full waveform settings must be obtained
Returns
The full waveform settings of the scanning device
See also
FWFSettings

Implemented in SingleScanner, and MultiScanner.

◆ getHeadRelativeEmitterAttitude()

virtual Rotation Scanner::getHeadRelativeEmitterAttitude ( size_t const  idx = 0) const
pure virtual

Obtain the head's relative emitter attitude.

Parameters
idxThe index of the scanning device which head's relative emitter attitude must be obtained (by default 0, it is the first one)
Returns
The head's relative emitter attitude
See also
ScanningDevice::headRelativeEmitterAttitude

Implemented in SingleScanner, and MultiScanner.

◆ getHeadRelativeEmitterAttitudeByRef()

virtual Rotation& Scanner::getHeadRelativeEmitterAttitudeByRef ( size_t const  idx = 0)
pure virtual

Obtain the head's relative emitter attitude by reference (can be written)

Parameters
idxThe index of the scanning device which head's relative emitter attitude must be obtained (by default 0, it is the first one)
Returns
The head's relative emitter attitude by reference
See also
ScanningDevice::headRelativeEmitterAttitude

Implemented in SingleScanner, and MultiScanner.

◆ getHeadRelativeEmitterPosition()

virtual glm::dvec3 Scanner::getHeadRelativeEmitterPosition ( size_t const  idx = 0) const
pure virtual

Obtain the head's relative emitter position.

Parameters
idxThe index of the scanning device which head's relative emitter position must be obtained (by default 0, it is the first one)
Returns
The head's relative emitter position
See also
ScanningDevice::headRelativeEmitterPosition

Implemented in SingleScanner, and MultiScanner.

◆ getHeadRelativeEmitterPositionByRef()

virtual glm::dvec3& Scanner::getHeadRelativeEmitterPositionByRef ( size_t const  idx = 0)
pure virtual

Obtain the head's relative emitter position by reference (can be written)

Parameters
idxThe index of the scanning device which head's relative emitter position must be obtained (by default 0, it is the first one)
Returns
The head's relative emitter position by reference
See also
ScanningDevice::headRelativeEmitterPosition

Implemented in SingleScanner, and MultiScanner.

◆ getMaxNOR() [1/2]

int Scanner::getMaxNOR ( ) const
inline

Non index version of Scanner::getMaxNOR(size_t const)

See also
Scanner::getMaxNOR(size_t const)

◆ getMaxNOR() [2/2]

virtual int Scanner::getMaxNOR ( size_t const  idx) const
pure virtual

Obtain the maximum number of returns per pulse for the scanning device (0 means no maximum at all).

Parameters
idxThe index of the scanning device which max NOR must be obtained
Returns
The maximum number of returns per pulse for the scanning device

Implemented in SingleScanner, and MultiScanner.

◆ getNumRays() [1/2]

int Scanner::getNumRays ( ) const
inline

Non index version of the Scanner::getNumRays(size_t const) method.

See also
Scanner::getNumRays(size_t const)

◆ getNumRays() [2/2]

virtual int Scanner::getNumRays ( size_t const  idx) const
pure virtual

Obtain the number of rays of the scanning device.

Parameters
idxThe index of the scanning device which number of rays must be obtained
Returns
Number of rays of the scanning device
See also
ScanningDevice::numRays

Implemented in SingleScanner, and MultiScanner.

◆ getNumTimeBins() [1/2]

int Scanner::getNumTimeBins ( ) const
inline

Non index version of the Scanner::getNumTimeBins(size_t const) method.

See also
Scanner::getNumTimeBins(size_t const)

◆ getNumTimeBins() [2/2]

virtual int Scanner::getNumTimeBins ( size_t const  idx) const
pure virtual

Obtain the number of bins defining the size of the time discretization for the scanning device.

Parameters
idxIndex of the scanning device which number of time bins must be obtained
Returns
The number of time bins for the scanning device

Implemented in SingleScanner, and MultiScanner.

◆ getPeakIntensityIndex() [1/2]

int Scanner::getPeakIntensityIndex ( ) const
inline

Non index version of the Scanner::getPeakIntensityIndex(size_t const) method.

See also
Scanner::getPeakIntensityIndex(size_t const)

◆ getPeakIntensityIndex() [2/2]

virtual int Scanner::getPeakIntensityIndex ( size_t const  idx) const
pure virtual

Obtain the index of the bin containing the intensity peak for the scanning device.

Parameters
idxThe index of the scanning device which peak intensity index must be obtained
Returns
The peak intensity index of the scanning device

Implemented in SingleScanner, and MultiScanner.

◆ getPulseFreq_Hz()

int Scanner::getPulseFreq_Hz ( ) const
inline

Obtain the pulse frequency.

Returns
Pulse frequency (hertz)
See also
Scanner::cfg_setting_pulseFreq_Hz

◆ getPulseLength_ns() [1/2]

double Scanner::getPulseLength_ns ( ) const
inline

No index argument version of the Scanner::getPulseLength_ns method.

See also
Scanner::getPulseLength_ns(size_t const)

◆ getPulseLength_ns() [2/2]

virtual double Scanner::getPulseLength_ns ( size_t const  idx) const
pure virtual

Get the pulse length.

Parameters
idxThe index of the scanning device which pulse length must be obtained (by default 0, it is the first one)
Returns
Pulse length (nanoseconds)
See also
ScanningDevice::cfg_device_pulseLength_ns

Implemented in SingleScanner, and MultiScanner.

◆ getReceiverDiameter() [1/2]

double Scanner::getReceiverDiameter ( ) const
inline

No index argument version of the Scanner::getReceiverDiameter.

See also
Scanner::getReceiverDiameter(size_t const)

◆ getReceiverDiameter() [2/2]

virtual double Scanner::getReceiverDiameter ( size_t const  idx) const
pure virtual

Get receiver diameter.

Parameters
idxThe index of the scanning device which efficiency must be obtained (by default 0, it is the first one)
Returns
Receiver diameter
See also
ScanningDevice::receiverDiameter_m

Implemented in SingleScanner, and MultiScanner.

◆ getScannerHead() [1/2]

std::shared_ptr<ScannerHead> Scanner::getScannerHead ( )
inline

◆ getScannerHead() [2/2]

virtual std::shared_ptr<ScannerHead> Scanner::getScannerHead ( size_t const  idx)
pure virtual

Obtain the scanner head of the scanning device.

Parameters
idxThe index of the scanning device which scanner head must be obtained
Returns
The scanner head of the scanning device
See also
ScannerHead

Implemented in SingleScanner, and MultiScanner.

◆ getScannerId()

std::string Scanner::getScannerId ( ) const
inline

Obtain the identifier of the scanner.

See also
Scanner::id

◆ getSupportedPulseFreqs_Hz() [1/2]

std::list<int>& Scanner::getSupportedPulseFreqs_Hz ( )
inline

◆ getSupportedPulseFreqs_Hz() [2/2]

virtual std::list<int>& Scanner::getSupportedPulseFreqs_Hz ( size_t const  idx)
pure virtual

Obtain the list of supported pulse frequencies of the scanning device.

Parameters
idxThe index of the scanning device which supported pulse frequencies must be obtained
Returns
The list of supported pulse frequencies of the scanning device

Implemented in SingleScanner, and MultiScanner.

◆ getTimeWave() [1/2]

std::vector<double>& Scanner::getTimeWave ( )
inline

◆ getTimeWave() [2/2]

virtual std::vector<double>& Scanner::getTimeWave ( size_t const  idx)
pure virtual

Obtain the time discretization vector of the scanning device.

Parameters
idxThe index of the scanning device which time discretization vector must be obtained
Returns
The time discretization vector of the scanning device

Implemented in SingleScanner, and MultiScanner.

◆ getVisibility() [1/2]

double Scanner::getVisibility ( ) const
inline

No index argument version of the Scanner::getVisibility method.

See also
Scanner::getVisibility(size_t const)

◆ getVisibility() [2/2]

virtual double Scanner::getVisibility ( size_t const  idx) const
pure virtual

Get device visibility.

Parameters
idxThe index of the scanning device which visibility must be obtained (by default 0, it is the first one)
Returns
Device visibility (kilometers)
See also
ScanningDevice::visibility_km

Implemented in SingleScanner, and MultiScanner.

◆ getWavelength() [1/2]

double Scanner::getWavelength ( ) const
inline

No index argument version of the Scanner::getWavelength method.

See also
Scanner::getWavelength(size_t const)

◆ getWavelength() [2/2]

virtual double Scanner::getWavelength ( size_t const  idx) const
pure virtual

Obtain wave length.

Parameters
idxThe index of the scanning device which wavelength must be obtained (by default 0, it is the first one)
Returns
Wave length (meters)
See also
ScanningDevice::wavelength_m

Implemented in SingleScanner, and MultiScanner.

◆ handleSimStepNoise()

void Scanner::handleSimStepNoise ( glm::dvec3 &  absoluteBeamOrigin,
Rotation absoluteBeamAttitude 
)

Handle position and attitude noise.

Parameters
absoluteBeamOriginBeam origin (position) to add noise to if requested
absoluteBeamAttitudeBeam attitude to add noise to if requested

◆ handleTrajectoryOutput()

void Scanner::handleTrajectoryOutput ( double const  currentGpsTime)

Handle trajectory output whatever it is to output file, to all trajectories vector or to cycle trajectories vector.

Parameters
currentGpsTimeCurrent GPS time (nanoseconds)
See also
Scanner::allTrajectories
Scanner::cycleTrajectories

◆ initializeFullWaveform()

virtual bool Scanner::initializeFullWaveform ( double const  minHitDist_m,
double const  maxHitDist_m,
double &  minHitTime_ns,
double &  maxHitTime_ns,
double &  nsPerBin,
double &  distanceThreshold,
int &  peakIntensityIndex,
int &  numFullwaveBins,
size_t const  idx 
)
pure virtual

Initialize full waveform While the vector is not strictly initialized in this function, necessary variables are computed here.

Parameters
[out]nsPerBinThe size of each bin in nano seconds
[out]distanceThresholdLimit distance threshold
[out]peakIntensityIndexIndex of intensity peak
[out]numFullwaveBinsHow many bins are necessary to discretize the full waveform
[in]idxThe index of the scanning device
Returns
True if it is possible to initialize the full waveform, false otherwise.
See also
FullWaveformPulseRunnable::initializeFullWaveform
FullWaveformPulseRunnable::digestIntersections
ScanningDevice::initializeFullWaveform

Implemented in SingleScanner, and MultiScanner.

◆ isActive()

bool Scanner::isActive ( ) const
inline

Check if scanner is active (true) or not (false)

Returns
True if scanner is active, false otherwise
See also
Scanner::state_isActive

◆ isCalcEchowidth()

bool Scanner::isCalcEchowidth ( ) const
inline

Check if scanner is configured to compute echo width (true) or not (false)

Returns
True if scanner is configured to compute echo width, false otherwise
See also
Scanner::calcEchowidth

◆ isFixedIncidenceAngle()

bool Scanner::isFixedIncidenceAngle ( ) const
inline

Check if incidence angle is fixed (true) or not (false)

Returns
True if incidence angle is fixed, false otherwise
See also
Scanner::fixedIncidenceAngle

◆ isFullWaveNoise()

bool Scanner::isFullWaveNoise ( ) const
inline

Check if scanner is configured to add noise to full wave (true) or not (false)

Returns
True if scanner is configured to add noise to full wave, false otherwise
See also
Scanner::fullWaveNoise

◆ isPlatformNoiseDisabled()

bool Scanner::isPlatformNoiseDisabled ( )
inline

Check if platform noise is disabled (true) or not (false)

Returns
True if platform noise is disabled, false otherwise
See also
Scanner::platformNoiseDisabled

◆ isWriteWaveform()

bool Scanner::isWriteWaveform ( ) const
inline

Check if scanner is configured to write wave form (true) or not (false)

Returns
True if scanner is configured to write wave form, false otherwise
See also
Scanner::writeWaveform

◆ lastPulseWasHit() [1/2]

bool Scanner::lastPulseWasHit ( ) const
inline

Non index version of the Scanner::lastPulseWasHit method.

See also
Scanner::lastPulseWasHit method

◆ lastPulseWasHit() [2/2]

virtual bool Scanner::lastPulseWasHit ( size_t const  idx) const
pure virtual

Check if last pulse was hit (true) or not (false) for the scanning device.

Parameters
idxThe index of the scanning device which last pulse must be checked.
Returns
True if the last pulse of the scanning device was hit, false otherwise.
See also
ScanningDevice::state_lastPulseWasHit
ScanningDevice::lastPulseWasHit

Implemented in SingleScanner, and MultiScanner.

◆ prepareDiscretization() [1/2]

void Scanner::prepareDiscretization ( )
inline

◆ prepareDiscretization() [2/2]

virtual void Scanner::prepareDiscretization ( size_t const  idx)
pure virtual

Prepare wave discretization.

See also
Scanner::numTimeBins
Scanner::time_wave
Scanner::peakIntensityIndex

Implemented in SingleScanner, and MultiScanner.

◆ retrieveCurrentSettings() [1/2]

std::shared_ptr<ScannerSettings> Scanner::retrieveCurrentSettings ( )
inline

◆ retrieveCurrentSettings() [2/2]

std::shared_ptr< ScannerSettings > Scanner::retrieveCurrentSettings ( size_t const  idx)
virtual

Retrieve current scanner settings and build a new ScannerSettings object with them.

Parameters
idxThe index of the scanning device which scanning settings must be retrieved
Returns
Newly created ScannerSettings object with current scanner settings

◆ setActive()

void Scanner::setActive ( bool const  active)
inline

Set scanner active status. True to make it active, false to make it inactive.

Parameters
activeNew scanner active status
See also
Scanner::state_isActive

◆ setAllDetectors()

void Scanner::setAllDetectors ( std::shared_ptr< AbstractDetector detector)
inline

Set the detector of each scanning device to the given one.

Parameters
detectorThe new detector for each scanning device

◆ setAtmosphericExtinction() [1/2]

void Scanner::setAtmosphericExtinction ( double const  atmosphericExtinction)
inline

◆ setAtmosphericExtinction() [2/2]

virtual void Scanner::setAtmosphericExtinction ( double const  atmosphericExtinction,
size_t const  idx 
)
pure virtual

Set atmospheric extinction.

Parameters
atmosphericExtinctionNew atmospheric extinction
idxThe index of the scanning device which atmospheric extinction must be setted (by default 0, it is the first one)
See also
ScanningDevice::atmosphericExtinction

Implemented in SingleScanner, and MultiScanner.

◆ setAveragePower() [1/2]

void Scanner::setAveragePower ( double const  averagePower)
inline

No index argument version of the Scanner::setAveragePower method.

See also
Scanner::setAveragePower(double const, size_t const)

◆ setAveragePower() [2/2]

virtual void Scanner::setAveragePower ( double const  averagePower,
size_t const  idx 
)
pure virtual

Set average power.

Parameters
averagePowerNew average power (watts)
idxThe index of the scanning device which average power must be setted (by default 0, it is the first one)
See also
ScanningDevice::averagePower_w

Implemented in SingleScanner, and MultiScanner.

◆ setBeamDeflector() [1/2]

void Scanner::setBeamDeflector ( std::shared_ptr< AbstractBeamDeflector deflector)
inline

Non index version of the Scanner::setBeamDeflector method.

See also
Scanner::setBeamDeflector

◆ setBeamDeflector() [2/2]

virtual void Scanner::setBeamDeflector ( std::shared_ptr< AbstractBeamDeflector deflector,
size_t const  idx 
)
pure virtual

Set the beam deflector of the scanning device.

Parameters
deflectorNew beam deflector for the scanning device
idxThe index of the scanning device which beam deflector must be setted

Implemented in SingleScanner, and MultiScanner.

◆ setBeamDivergence() [1/2]

void Scanner::setBeamDivergence ( double const  beamDivergence)
inline

◆ setBeamDivergence() [2/2]

virtual void Scanner::setBeamDivergence ( double const  beamDivergence,
size_t const  idx 
)
pure virtual

Set beam divergence.

Parameters
beamDivergenceNew beam divergence (radians)
idxThe index of the scanning device which beam divergence must be setted (by default 0, it is the first one)
See also
ScanningDevice::beamDivergence_rad

Implemented in SingleScanner, and MultiScanner.

◆ setBeamQuality() [1/2]

void Scanner::setBeamQuality ( double const  beamQuality)
inline

No index argument version of the Scanner::setBeamQuality method.

See also
Scanner::setBeamQuality(double const, size_t const)

◆ setBeamQuality() [2/2]

virtual void Scanner::setBeamQuality ( double const  beamQuality,
size_t const  idx 
)
pure virtual

Set beam quality.

Parameters
beamQualityNew beam quality
idxThe index of the scanning device which beam quality must be obtained (by default 0, it is the first one)
See also
ScanningDevice::beamQuality

Implemented in SingleScanner, and MultiScanner.

◆ setBeamWaistRadius() [1/2]

void Scanner::setBeamWaistRadius ( double const  beamWaistRadius)
inline

◆ setBeamWaistRadius() [2/2]

virtual void Scanner::setBeamWaistRadius ( double const  beamWaistRadius,
size_t const  idx 
)
pure virtual

Set beam waist radius.

Parameters
beamWaistRadiusNew beam waist radius
idxThe index of the scanning device which beam waist radius must be setted (by default 0, it is the first one)
See also
ScanningDevice::beamWaistRadius

Implemented in SingleScanner, and MultiScanner.

◆ setBt2()

virtual void Scanner::setBt2 ( double const  bt2,
size_t const  idx 
)
pure virtual

Set \(B_{t2}\).

Parameters
bt2New \(B_{t2}\)
idxThe index of the scanning device which cached Bt2 (square of beam divergence) must be setted (by default 0, it is the first one)
See also
ScanningDevice::cached_Bt2

Implemented in SingleScanner, and MultiScanner.

◆ setCalcEchowidth()

void Scanner::setCalcEchowidth ( bool const  calcEchowidth)
inline

Set scanner echo width configuration.

Parameters
calcEchowidthTrue to make scanner compute echo width, false otherwise
See also
Scanner::calcEchowidth

◆ setDetector() [1/2]

void Scanner::setDetector ( std::shared_ptr< AbstractDetector detector)
inline

Non index version of the Scanner::setDetector method.

See also
Scanner::setDetector(shared_ptr<AbstractDetector>, size_t const)

◆ setDetector() [2/2]

virtual void Scanner::setDetector ( std::shared_ptr< AbstractDetector detector,
size_t const  idx 
)
pure virtual

Set the abstract detector of the scanning device.

Parameters
idxThe index of the scanning device which abstract detector must be setted
See also
AbstractDetector

Implemented in SingleScanner, and MultiScanner.

◆ setDeviceId() [1/2]

void Scanner::setDeviceId ( std::string const  deviceId)
inline

No index argument version of the Scanner::setDeviceId method.

See also
Scanner::setDeviceId(std::string const, size_t const)

◆ setDeviceId() [2/2]

virtual void Scanner::setDeviceId ( std::string const  deviceId,
size_t const  idx 
)
pure virtual

Set the scanner device identifier.

Parameters
deviceIdNew scanner device identifier
See also
ScanningDevice::id

Implemented in SingleScanner, and MultiScanner.

◆ setDeviceIndex()

virtual void Scanner::setDeviceIndex ( size_t const  newIdx,
size_t const  oldIdx 
)
pure virtual

Set the device index (newIdx) of the device at given index (oldIdx).

NOTE this function is not safe. It usage must be avoided unless you really know what you are doing.

Parameters
newIdxNew index for the device
oldIdxOld index of the device to be updated

Implemented in SingleScanner, and MultiScanner.

◆ setDr2()

virtual void Scanner::setDr2 ( double const  dr2,
size_t const  idx 
)
pure virtual

Set \(D_{r2}\).

Parameters
dr2New \(D_{t2}\)
idxThe index of the scanning device which cached Dr2 (square of receiver diameter) must be obtained (by default 0, it is the first one)
See also
ScanningDevice::cached_Dr2

Implemented in SingleScanner, and MultiScanner.

◆ setEfficiency() [1/2]

void Scanner::setEfficiency ( double const  efficiency)
inline

No index argument version of the Scanner::setEfficiency method.

See also
Scanner::setEfficiency(double const, size_t const)

◆ setEfficiency() [2/2]

virtual void Scanner::setEfficiency ( double const  efficiency,
size_t const  idx = 0 
)
pure virtual

Set device efficiency.

Parameters
efficiencyNew device efficiency
idxThe index of the scanning device which efficiency must be setted (by default 0, it is the first one)
See also
ScanningDevice::efficiency

Implemented in SingleScanner, and MultiScanner.

◆ setFixedIncidenceAngle()

void Scanner::setFixedIncidenceAngle ( bool const  fixedIncidenceAngle)
inline

Set fixed incidence angle flag.

Parameters
fixedIncidenceAngleTrue to enable fixed incidence angle, false to disable it
See also
Scanner::fixedIncidenceAngle

◆ setFullWaveNoise()

void Scanner::setFullWaveNoise ( bool const  fullWaveNoise)
inline

Set scanner full wave noise policy.

Parameters
fullWaveNoiseTrue to make scanner add noise to the full wave, false otherwise
See also
Scanner::fullWaveNoise

◆ setFWFSettings() [1/2]

void Scanner::setFWFSettings ( FWFSettings const &  fwfSettings)
inline

Non index version of the Scanner::setFWFSettings(FWFSettings &, size_t const) method.

See also
Scanner::setFWFSettings(FWFSettings const &, size_t const)

◆ setFWFSettings() [2/2]

virtual void Scanner::setFWFSettings ( FWFSettings const &  fwfSettings,
size_t const  idx 
)
pure virtual

Set the Full WaveForm settings of the scanning device.

Parameters
idxThe index of the scanning device which full waveform settings must be setted
See also
FWFSettings

Implemented in SingleScanner, and MultiScanner.

◆ setHeadRelativeEmitterAttitude()

virtual void Scanner::setHeadRelativeEmitterAttitude ( Rotation const &  attitude,
size_t const  idx = 0 
)
pure virtual

Obtain the head's relative emitter attitude.

Parameters
attitudeThe new attitude for the head's relative emitter
idxThe index of the scanning device which head's relative emitter attitude must be setted (by default 0, it is the first one)

Implemented in SingleScanner, and MultiScanner.

◆ setHeadRelativeEmitterPosition()

virtual void Scanner::setHeadRelativeEmitterPosition ( glm::dvec3 const &  pos,
size_t const  idx = 0 
)
pure virtual

Set the head's relative emitter position.

Parameters
posThe new position for the head's relative emitter
idxThe index of the scanning device which head's relative emitter position must be setted (by default 0, it is the first one)
See also
ScanningDevice::headRelativeEmitterPosition

Implemented in SingleScanner, and MultiScanner.

◆ setLastPulseWasHit() [1/2]

void Scanner::setLastPulseWasHit ( bool const  lastPulseWasHit)
inline

◆ setLastPulseWasHit() [2/2]

virtual void Scanner::setLastPulseWasHit ( bool const  lastPulseWasHit,
size_t const  idx 
)
pure virtual

Specify if last pulse was hit (true) or not (false)

Parameters
lastPulseWasHitNew last pulse hit specification
See also
Scanner::state_lastPulseWasHit

Implemented in SingleScanner, and MultiScanner.

◆ setMaxNOR() [1/2]

void Scanner::setMaxNOR ( int const  maxNOR)
inline

◆ setMaxNOR() [2/2]

virtual void Scanner::setMaxNOR ( int const  maxNOR,
size_t const  idx 
)
pure virtual

Set the maximum number of returns per pulse for the scanning device (0 means no maximum at all).

Parameters
maxNORNew max NOR for the scanning device
idxIndex of the scanning device which max NOR must be setted
See also
ScanningDevice::maxNOR

Implemented in SingleScanner, and MultiScanner.

◆ setNumRays() [1/2]

void Scanner::setNumRays ( int const  numRays)
inline

◆ setNumRays() [2/2]

virtual void Scanner::setNumRays ( int const  numRays,
size_t const  idx 
)
pure virtual

Set the number of rays of the scanning device.

Parameters
numRaysNew number of rays for the scanning device
idxThe index of the scanning device which number of rays must be setted
See also
ScanningDevice::numRays

Implemented in SingleScanner, and MultiScanner.

◆ setNumTimeBins() [1/2]

void Scanner::setNumTimeBins ( int const  numTimeBins)
inline

◆ setNumTimeBins() [2/2]

virtual void Scanner::setNumTimeBins ( int const  numTimeBins,
size_t const  idx 
)
pure virtual

Set the number of bins defining the size of the time discretization for the scanning device.

Parameters
numTimeBinsThe number of time bins for the scanning device
idxThe index of the scanning device which number of time bins must be setted

Implemented in SingleScanner, and MultiScanner.

◆ setPeakIntensityIndex() [1/2]

void Scanner::setPeakIntensityIndex ( int const  pii)
inline

◆ setPeakIntensityIndex() [2/2]

virtual void Scanner::setPeakIntensityIndex ( int const  pii,
size_t const  idx 
)
pure virtual

Set the index of the bin containing the intensity peak for the scanning device.

Parameters
piiThe new peak intensity index for the scanning device
idxThe index of the scanning device which peak intensity index must be setted

Implemented in SingleScanner, and MultiScanner.

◆ setPlatformNoiseDisabled()

void Scanner::setPlatformNoiseDisabled ( bool const  platformNoiseDisabled)
inline

Set platform noise disabled flag.

Parameters
platformNoiseDisabledTrue to disable platform noise, false to enable it
See also
Scanner::platformNoiseDisabled

◆ setPulseFreq_Hz()

void Scanner::setPulseFreq_Hz ( int const  pulseFreq_Hz)

Set the pulse frequency.

Parameters
pulseFreq_HzNew pulse frequency (hertz)
See also
Scanner::cfg_setting_pulseFreq_Hz

◆ setPulseLength_ns() [1/2]

void Scanner::setPulseLength_ns ( double const  pulseLength_ns)
inline

◆ setPulseLength_ns() [2/2]

virtual void Scanner::setPulseLength_ns ( double const  pulseLength_ns,
size_t const  idx 
)
pure virtual

Set the pulse length.

Parameters
pulseLength_nsNew pulse length (nanoseconds)
idxThe index of the scanning device which pulse length must be setted (by default 1, it is the first one)
See also
ScanningDevice::cfg_device_pulseLength_ns

Implemented in SingleScanner, and MultiScanner.

◆ setReceiverDiameter() [1/2]

void Scanner::setReceiverDiameter ( double const  receiverDiameter)
inline

◆ setReceiverDiameter() [2/2]

virtual void Scanner::setReceiverDiameter ( double const  receiverDiameter,
size_t const  idx 
)
pure virtual

Set receiver diameter.

Parameters
receiverDiameterNew receiver diameter
idxThe index of the scanning device which efficiency must be setted (by default 0, it is the first one)
See also
ScanningDevice::receiverDiameter_m

Implemented in SingleScanner, and MultiScanner.

◆ setScannerHead() [1/2]

void Scanner::setScannerHead ( std::shared_ptr< ScannerHead scannerHead)
inline

Non index version of the Scanner::setScannerHead method.

See also
Scanner::setScannerHead(shared_ptr<ScannerHead>, size_t const)

◆ setScannerHead() [2/2]

virtual void Scanner::setScannerHead ( std::shared_ptr< ScannerHead scannerHead,
size_t const  idx 
)
pure virtual

Set the scanner head of the scanning device.

Parameters
scannerHeadThe scanner head to be assigned to the scanning device
idxThe index of the scanning device which scanner head must be setted

Implemented in SingleScanner, and MultiScanner.

◆ setScannerId()

void Scanner::setScannerId ( std::string const &  id)
inline

Set the identifier of the scanner.

Parameters
idThe new identifier for the scanner
See also
Scanner::id

◆ setSupportedPulseFreqs_Hz() [1/2]

void Scanner::setSupportedPulseFreqs_Hz ( std::list< int > &  pulseFreqs_Hz)
inline

◆ setSupportedPulseFreqs_Hz() [2/2]

virtual void Scanner::setSupportedPulseFreqs_Hz ( std::list< int > &  pulseFreqs_Hz,
size_t const  idx 
)
pure virtual

Set the list of supported pulse frequencies (in Hertz) for the scanning device.

Parameters
pulseFreqs_HzSupported pulse frequencies for the scanning device
idxThe index of the scanning device which supported pulse frequencies must be setted

Implemented in SingleScanner, and MultiScanner.

◆ setTimeWave() [1/4]

void Scanner::setTimeWave ( std::vector< double > &&  timewave)
inline

◆ setTimeWave() [2/4]

virtual void Scanner::setTimeWave ( std::vector< double > &&  timewave,
size_t const  idx 
)
pure virtual

◆ setTimeWave() [3/4]

void Scanner::setTimeWave ( std::vector< double > &  timewave)
inline

◆ setTimeWave() [4/4]

virtual void Scanner::setTimeWave ( std::vector< double > &  timewave,
size_t const  idx 
)
pure virtual

Set the time discretization vector of the scanning device.

Parameters
timewaveThe new time discretization vector for the scanning device
idxThe index of scanning device which time discretization vector must be updated

Implemented in SingleScanner, and MultiScanner.

◆ setVisibility() [1/2]

void Scanner::setVisibility ( double const  visibility)
inline

No index argument version of the Scanner::setVisibility method.

See also
Scanner::setVisibility(double const, size_t const)

◆ setVisibility() [2/2]

virtual void Scanner::setVisibility ( double const  visibility,
size_t const  idx 
)
pure virtual

Set device visibility.

Parameters
visibilityNew device visibility (kilometers)
idxThe index of the scanning device which visibility must be setted (by default 0, it is the first one)
See also
ScanningDevice::visibility_km

Implemented in SingleScanner, and MultiScanner.

◆ setWavelength() [1/2]

void Scanner::setWavelength ( double const  wavelength)
inline

No index argument version of the Scanner::setWavelength method.

See also
Scanner::setWavelength(double const, size_t const)

◆ setWavelength() [2/2]

virtual void Scanner::setWavelength ( double const  wavelength,
size_t const  idx 
)
pure virtual

Set wave length.

Parameters
wavelengthNew wave length (meters)
idxThe index of the scanning device which wavelength must be setted (by default 0, it is the first one)
See also
ScanningDevice::wavelength_m

Implemented in SingleScanner, and MultiScanner.

◆ setWriteWaveform()

void Scanner::setWriteWaveform ( bool const  writeWaveform)
inline

Set scanner write wave form configuration.

Parameters
writeWaveformTrue to make scanner write wave form, false otherwise
See also
Scanner::writeWaveform

◆ toString()

string Scanner::toString ( )

Build a string representation of the scanner.

Returns
String representing the scanner

◆ trackOutputPath()

void Scanner::trackOutputPath ( std::string const &  path)

Track given output path in a thread safe way.

Parameters
pathOutput path to be tracked
See also
Scanner::allOutputPaths

Member Data Documentation

◆ allMeasurements

std::shared_ptr<std::vector<Measurement> > Scanner::allMeasurements = nullptr

Historical vector of all measurements performed by the scanner.

It can be nullptr when no historical tracking of all measurements is requested

◆ allMeasurementsMutex

std::shared_ptr<std::mutex> Scanner::allMeasurementsMutex = nullptr

Mutex to handle concurrent access to historical vector of all measurements and historical vector of all trajectory points.

See also
Scanner::allMeasurements
Scanner::alTrajectories

◆ allOutputPaths

std::shared_ptr<std::vector<std::string> > Scanner::allOutputPaths = nullptr

Historical vector of all output paths where scanner measurements were written.

It can be nullptr when no historical tracking of all output paths is requested

◆ allTrajectories

std::shared_ptr<std::vector<Trajectory> > Scanner::allTrajectories = nullptr

Historical vector of all trajectory points recorded by the scanner.

It can be nullptr when no historical tracking of trajectory is requested

◆ cycleMeasurements

std::shared_ptr<std::vector<Measurement> > Scanner::cycleMeasurements = nullptr

Vector of measurements performed by the scanner at current cycle.

It can be nullptr when no tracking of measurements by cycle is requested

◆ cycleMeasurementsMutex

std::shared_ptr<std::mutex> Scanner::cycleMeasurementsMutex = nullptr

Mutex to handle concurrent access to vector of measurements and vector of trajectory points by cycle.

See also
Scanner::cycleMeasurements
Scanner::cycleTrajectories

◆ cycleTrajectories

std::shared_ptr<std::vector<Trajectory> > Scanner::cycleTrajectories = nullptr

Vector of trajectory points recorded by the scanner.

It can be nullptr when no tracking of trajectory points by cycle is requested

◆ platform

std::shared_ptr<Platform> Scanner::platform

Platform carrying the scanner.

See also
Platform

◆ spp

std::unique_ptr<ScanningPulseProcess> Scanner::spp = nullptr
protected

The scanning pulse process used by the scanner.

See also
ScanningPulseProcess

◆ state_isActive

bool Scanner::state_isActive = true
protected

Flag specifying if scanner is active (true) or not (false)

When a scanner is not active, it is not sensing

◆ trajectoryTimeInterval_ns

double Scanner::trajectoryTimeInterval_ns = 0.0

Time interval between record of trajectory points. When it is exactly 0, then no trajectory points will be recorded.

NOTICE that it is given in nanoseconds, while the trajectoryTimeInterval in the ScannerSettings class is given in seconds, as the user argument itself

See also
ScannerSettings::trajectoryTimeInterval

The documentation for this class was generated from the following files: