Helios++
Helios software for LiDAR simulations
Scanner Class Reference

Class representing a scanner asset. More...

#include <Scanner.h>

Inheritance diagram for Scanner:
Collaboration diagram for Scanner:

Public Member Functions

 Scanner (double beamDiv_rad, glm::dvec3 beamOrigin, Rotation beamOrientation, std::list< int > pulseFreqs, double pulseLength_ns, std::string id, double averagePower, double beamQuality, double efficiency, double receiverDiameter, double atmosphericVisibility, int wavelength, bool writeWaveform=false, bool calcEchowidth=false, bool fullWaveNoise=false, bool platformNoiseDisabled=false)
 Scanner constructor. More...
 
 Scanner (Scanner &scanner)
 
void applySettings (std::shared_ptr< ScannerSettings > settings)
 Apply scanner settings. More...
 
void applySettingsFWF (FWFSettings settings)
 Apply full wave form settings. More...
 
void doSimStep (thread_pool &pool, unsigned int legIndex)
 Perform computations for current simulation step. More...
 
std::string toString ()
 Build a string representation of the scanner. More...
 
void calcRaysNumber ()
 Compute the number of rays depending on beam sample quality.
 
void prepareDiscretization ()
 Prepare wave discretization. More...
 
int calcTimePropagation (std::vector< double > &timeWave, int numBins)
 Compute propagation time, which means obtaining the intensity peak index. More...
 
double calcFootprintArea (double distance)
 Compute the footprint area \(f_{a}\). More...
 
double calcFootprintRadius (double distance)
 Compute the footprint radius \(f_{r}\). More...
 
double calcAtmosphericAttenuation ()
 Compute the atmospheric attenuation to be used as the atmospheric attenuation. More...
 
Rotation calcAbsoluteBeamAttitude ()
 Compute the absolute beam attitude considering the mount relative attitude and the deflector relative attitude. More...
 
long calcCurrentGpsTime ()
 Compute the current GPS time (milliseconds) More...
 
void handleSimStepNoise (glm::dvec3 &absoluteBeamOrigin, Rotation &absoluteBeamAttitude)
 Handle position and attitude noise. More...
 
void handlePulseComputation (thread_pool &pool, unsigned int const legIndex, glm::dvec3 &absoluteBeamOrigin, Rotation &absoluteBeamAttitude, long currentGpsTime)
 Handle pulse computation whatever it is single thread based or thread pool based. More...
 
void handleTrajectoryOutput (long currentGpsTime)
 Handle trajectory output whatever it is to output file, to all trajectories vector or to cycle trajectories vector. More...
 
int getNumRays ()
 Obtain the number of rays. More...
 
void setNumRays (int numRays)
 Set the number of rays. More...
 
int getPulseFreq_Hz ()
 Obtain the pulse frequency. More...
 
void setPulseFreq_Hz (int pulseFreq_Hz)
 Set the pulse frequency. More...
 
double getPulseLength_ns ()
 Get the pulse length. More...
 
void setPulseLength_ns (double pulseLength_ns)
 Set the pulse length. More...
 
bool lastPulseWasHit ()
 Check if last pulse was hit (true) or not (false) More...
 
void setLastPulseWasHit (bool lastPulseWasHit)
 Specify if last pulse was hit (true) or not (false) More...
 
double getBeamDivergence ()
 Obtain beam divergence. More...
 
void setBeamDivergence (double beamDivergence)
 Set beam divergence. More...
 
double getAveragePower ()
 Obtain average power. More...
 
void setAveragePower (double averagePower)
 Set average power. More...
 
double getBeamQuality ()
 Get beam quality. More...
 
void setBeamQuality (double beamQuality)
 Set beam quality. More...
 
double getEfficiency ()
 Obtain device efficiency. More...
 
void setEfficiency (double efficiency)
 Set device efficiency. More...
 
double getReceiverDiameter ()
 Get receiver diamater. More...
 
void setReceiverDiameter (double receiverDiameter)
 Set receiver diameter. More...
 
double getVisibility ()
 Get device visibility. More...
 
void setVisibility (double visibility)
 Set device visibility. More...
 
double getWavelength ()
 Obtain wave length. More...
 
void setWavelength (double wavelength)
 Set wave length. More...
 
double getAtmosphericExtinction ()
 Obtain atmospheric extinction. More...
 
void setAtmosphericExtinction (double atmosphericExtinction)
 Set atmospheric extinction. More...
 
double getBeamWaistRadius ()
 Obtain beam waist radius. More...
 
void setBeamWaistRadius (double beamWaistRadius)
 Set beam waist radius. More...
 
double getBt2 ()
 Obtain \(B_{t2}\). More...
 
void setBt2 (double bt2)
 Set \(B_{t2}\). More...
 
double getDr2 ()
 Obtain \(D_{r2}\). More...
 
void setDr2 (double dr2)
 Set \(D_{r2}\). More...
 
bool isActive ()
 Check if scanner is active (true) or not (false) More...
 
void setActive (bool active)
 Set scanner active status. True to make it active, false to make it inactive. More...
 
bool isWriteWaveform ()
 Check if scanner is configured to write wave form (true) or not (false) More...
 
void setWriteWaveform (bool writeWaveform)
 Set scanner write wave form configuration. More...
 
bool isCalcEchowidth ()
 Check if scanner is configured to compute echo width (true) or not (false) More...
 
void setCalcEchowidth (bool calcEchowidth)
 Set scanner echo width configuration. More...
 
bool isFullWaveNoise ()
 Check if scanner is configured to add noise to full wave (true) or not (false) More...
 
void setFullWaveNoise (bool fullWaveNoise)
 Set scanner full wave noise policy. More...
 
bool isPlatformNoiseDisabled ()
 Check if platform noise is disabled (true) or not (false) More...
 
void setPlatformNoiseDisabled (bool platformNoiseDisabled)
 Set platform noise disabled flag. More...
 
bool isFixedIncidenceAngle ()
 Check if incidence angle is fixed (true) or not (false) More...
 
void setFixedIncidenceAngle (bool fixedIncidenceAngle)
 Set fixed incidence angle flag. More...
 
void setTrajectoryFileWriter (std::shared_ptr< SyncFileWriter > tfw)
 Set synchronous file writer for trajectory. More...
 
std::string getDeviceId ()
 Obtain scanner device identifier. More...
 
void setDeviceId (std::string const deviceId)
 Set the scanner device identifier. More...
 
ScannerHeadgetScannerHead ()
 Python wrapper for scanner head access. More...
 
PyBeamDeflectorWrappergetPyBeamDeflector ()
 Python wrapper for beam deflector access. More...
 
PyDetectorWrappergetPyDetectorWrapper ()
 Python wrapper for detector access. More...
 
PyIntegerListgetSupportedPulseFrequencies ()
 Python wrapper for supported pulse frequencies list. More...
 
RotationgetRelativeAttitudeByReference ()
 Python wrapper for head relative emitter attitude access. More...
 
PythonDVec3getRelativePosition ()
 Python wrapper for head relative emitter position. More...
 
PyNoiseSourceWrappergetIntersectionHandlingNoiseSource ()
 Python wrapper for intersection handling noise source. More...
 
PyRandomnessGeneratorWrappergetRandGen1 ()
 Python wrapper for first randomness generator. More...
 
PyRandomnessGeneratorWrappergetRandGen2 ()
 Python wrapper for second randomness generator. More...
 
PyDoubleVectorgetTimeWave ()
 Python wrapper for time wave vector. More...
 
- Public Member Functions inherited from Asset
std::string getLocationString ()
 Obtain asset location string. More...
 

Public Attributes

std::shared_ptr< ScannerHeadscannerHead
 Scanner head composing the scanner. More...
 
std::shared_ptr< AbstractBeamDeflectorbeamDeflector
 Beam deflector composing the scanner. More...
 
std::shared_ptr< Platformplatform
 Platform carrying the scanner. More...
 
std::shared_ptr< AbstractDetectordetector
 Detector composing the scanner. 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 = 0.0
 Time interval between record of trajectory points. When it is exactly 0, then no trajectory points will be recorded.
 
long lastTrajectoryTime
 GPS time (milliseconds) corresponding to last recorded trajectory point.
 
FWFSettings FWF_settings
 Full wave form settings for the scanner. More...
 
int numTimeBins = -1
 Number if bins defining discretization size. More...
 
int peakIntensityIndex = -1
 Index of bin containing the intensity peak. It is computed through calcTimePropagation function. More...
 
std::vector< double > time_wave
 Discretization vector.
 
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.
 
glm::dvec3 cfg_device_headRelativeEmitterPosition = glm::dvec3(0, 0, 0)
 Head relative emitter position.
 
Rotation cfg_device_headRelativeEmitterAttitude
 Head relative emitter attitude. More...
 
std::list< int > cfg_device_supportedPulseFreqs_Hz
 Pulse frequencies (hertz) supoported by the scanner.
 
- Public Attributes inherited from Asset
std::string id = ""
 Asset identifier.
 
std::string name = "Unnamed Asset"
 Asset name.
 
std::string sourceFilePath = ""
 Path to asset file.
 

Private Attributes

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)
 
int numRays = 0
 Number of rays computed by the calcRaysNumber function. More...
 
bool fixedIncidenceAngle = false
 Flag specifying if use fixed incidence angle (true) or not (false)
 
double cfg_device_beamDivergence_rad = 0
 Beam divergence (radians)
 
double cfg_device_pulseLength_ns = 0
 Pulse length (nanoseconds)
 
int cfg_setting_pulseFreq_Hz = 0
 Pulse frequency (hertz)
 
std::string cfg_device_id = ""
 Device identifier.
 
double cfg_device_averagePower_w
 Average power (watts)
 
double cfg_device_beamQuality
 Beam quality.
 
double cfg_device_efficiency
 Device efficiency.
 
double cfg_device_receiverDiameter_m
 Receiver diamater (meters)
 
double cfg_device_visibility_km
 Visibility (kilometers)
 
double cfg_device_wavelength_m
 Wave length (meters)
 
double atmosphericExtinction
 Atmospheric extinction.
 
double beamWaistRadius
 Beam waist radius.
 
int state_currentPulseNumber = 0
 Current pulse number.
 
bool state_lastPulseWasHit = false
 Flag specifying if last pulse was hit (true) or not (false)
 
bool state_isActive = true
 Flag specifying if scanner is active (true) or not (false) More...
 
double cached_Dr2
 \(D_{r2}\) understood as the square of receiver diameter More...
 
double cached_Bt2
 \(B_{t2}\) understood as the square of beam divergence More...
 
std::shared_ptr< SyncFileWritertfw = nullptr
 Synchronous file writer.
 

Detailed Description

Class representing a scanner asset.

Constructor & Destructor Documentation

◆ Scanner()

Scanner::Scanner ( double  beamDiv_rad,
glm::dvec3  beamOrigin,
Rotation  beamOrientation,
std::list< int >  pulseFreqs,
double  pulseLength_ns,
std::string  id,
double  averagePower,
double  beamQuality,
double  efficiency,
double  receiverDiameter,
double  atmosphericVisibility,
int  wavelength,
bool  writeWaveform = false,
bool  calcEchowidth = false,
bool  fullWaveNoise = false,
bool  platformNoiseDisabled = false 
)

Scanner constructor.

See also
Scanner::cfg_device_beamDivergence_rad
Parameters
beamOriginBeam origin used to set head relative emitter position
beamOrientationBeam orientation used to set head relative emitter attitude
pulseFreqsList of supported pulse frequencies (hertz)
See also
Scanner::cfg_device_supportedPulseFreqs_Hz
Scanner::cfg_device_pulseLength_ns
Scanner::cfg_device_id
Scanner::cfg_device_averagePower_w
Scanner::cfg_device_beamQuality
Scanner::cfg_device_efficiency
Scanner::cfg_device_receiverDiameter_m
Parameters
atmosphericVisibilityAtmospheric visibility understood as the scanner visibility (kilometers)
wavelengthWavelength used to set scanner wave length after dividing by \(10^{9}\)
See also
Scanner::writeWaveform
Scanner::calcEchowidth
Scanner::fullWaveNoise
Scanner::platformNoiseDisabled

Member Function Documentation

◆ applySettings()

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

Apply scanner settings.

Parameters
settingsScanner settings to be applied
See also
ScannerSettings

◆ applySettingsFWF()

void Scanner::applySettingsFWF ( FWFSettings  settings)

Apply full wave form settings.

Parameters
settingsFull wave form settings to be applied
See also
FWFSettings

◆ calcAbsoluteBeamAttitude()

Rotation Scanner::calcAbsoluteBeamAttitude ( )

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

See also
ScannerHead::getMountRelativeAttitude
AbstractBeamDeflector::getEmitterRelativeAttitude

◆ calcAtmosphericAttenuation()

double Scanner::calcAtmosphericAttenuation ( )

Compute the atmospheric attenuation to be used as the atmospheric attenuation.

Returns
Atmospheric attenuation
See also
Scanner::atmosphericExtinction

◆ calcCurrentGpsTime()

long Scanner::calcCurrentGpsTime ( )

Compute the current GPS time (milliseconds)

Returns
Current GPS time (milliseconds)

◆ calcFootprintArea()

double Scanner::calcFootprintArea ( double  distance)

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

◆ calcFootprintRadius()

double Scanner::calcFootprintRadius ( double  distance)

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

◆ calcTimePropagation()

int Scanner::calcTimePropagation ( std::vector< double > &  timeWave,
int  numBins 
)

Compute propagation time, which means obtaining the intensity peak index.

See also
Scanner::numTimeBins
Scanner::time_wave
Scanner::peakIntensityIndex
Returns
Index of intensity peak

◆ doSimStep()

void Scanner::doSimStep ( thread_pool pool,
unsigned int  legIndex 
)

Perform computations for current simulation step.

Parameters
poolThread pool used to handle concurrent computations
legIndexIndex of current leg

◆ getAtmosphericExtinction()

double Scanner::getAtmosphericExtinction ( )
inline

Obtain atmospheric extinction.

Returns
Atmospheric extinction
See also
Scanner::atmosphericExtinction

◆ getAveragePower()

double Scanner::getAveragePower ( )
inline

Obtain average power.

Returns
Average power (watts)
See also
Scanner::cfg_device_averagePower_w

◆ getBeamDivergence()

double Scanner::getBeamDivergence ( )
inline

Obtain beam divergence.

Returns
Beam divergence (radians)
See also
Scanner::cfg_device_beamDivergence_rad

◆ getBeamQuality()

double Scanner::getBeamQuality ( )
inline

Get beam quality.

Returns
Beam quality
See also
Scanner::cfg_device_beamQuality

◆ getBeamWaistRadius()

double Scanner::getBeamWaistRadius ( )
inline

Obtain beam waist radius.

Returns
Beam waist radius
See also
Scanner::beamWaistRadius

◆ getBt2()

double Scanner::getBt2 ( )
inline

Obtain \(B_{t2}\).

Returns
\(B_{t2}\)
See also
Scanner::cached_Bt2

◆ getDeviceId()

std::string Scanner::getDeviceId ( )
inline

Obtain scanner device identifier.

Returns
Scanner device identifier
See also
Scanner::cfg_device_id

◆ getDr2()

double Scanner::getDr2 ( )
inline

Obtain \(D_{r2}\).

Returns
\(D_{r2}\)
See also
Scanner::cached_Dr2

◆ getEfficiency()

double Scanner::getEfficiency ( )
inline

Obtain device efficiency.

Returns
Device efficiency
See also
Scanner::cfg_device_efficiency

◆ getIntersectionHandlingNoiseSource()

PyNoiseSourceWrapper* Scanner::getIntersectionHandlingNoiseSource ( )
inline

Python wrapper for intersection handling noise source.

Returns
Wrapped intersection handling noise source
See also
Scanner::intersectionHandlingNoiseSource

◆ getNumRays()

int Scanner::getNumRays ( )
inline

Obtain the number of rays.

Returns
Number of rays
See also
Scanner::numRays

◆ getPulseFreq_Hz()

int Scanner::getPulseFreq_Hz ( )
inline

Obtain the pulse frequency.

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

◆ getPulseLength_ns()

double Scanner::getPulseLength_ns ( )
inline

Get the pulse length.

Returns
Pulse length (nanoseconds)
See also
Scanner::cfg_device_pulseLength_ns

◆ getPyBeamDeflector()

PyBeamDeflectorWrapper* Scanner::getPyBeamDeflector ( )
inline

Python wrapper for beam deflector access.

Returns
Wrapped beam deflector
See also
Scanner::beamDeflector

◆ getPyDetectorWrapper()

PyDetectorWrapper * Scanner::getPyDetectorWrapper ( )

Python wrapper for detector access.

Returns
Wrapped detector
See also
Scanner::detector

◆ getRandGen1()

PyRandomnessGeneratorWrapper* Scanner::getRandGen1 ( )
inline

Python wrapper for first randomness generator.

Returns
Wrapped first randomness generator
See also
Scanner::randGen1

◆ getRandGen2()

PyRandomnessGeneratorWrapper* Scanner::getRandGen2 ( )
inline

Python wrapper for second randomness generator.

Returns
Wrapped second randomness generator
See also
Scanner::randGen2

◆ getReceiverDiameter()

double Scanner::getReceiverDiameter ( )
inline

Get receiver diamater.

Returns
Receiver diamater
See also
Scanner::cfg_device_receiverDiameter_m

◆ getRelativeAttitudeByReference()

Rotation& Scanner::getRelativeAttitudeByReference ( )
inline

Python wrapper for head relative emitter attitude access.

Returns
Reference to head relative emitter attitude
See also
Scanner::cfg_device_headRelativeEmitterAttitude

◆ getRelativePosition()

PythonDVec3* Scanner::getRelativePosition ( )
inline

Python wrapper for head relative emitter position.

Returns
Wrapped head relative emitter position
See also
Scanner::cfg_device_headRelativeEmitterPosition

◆ getScannerHead()

ScannerHead& Scanner::getScannerHead ( )
inline

Python wrapper for scanner head access.

Returns
Reference to scanner head
See also
Scanner::scannerHead

◆ getSupportedPulseFrequencies()

PyIntegerList* Scanner::getSupportedPulseFrequencies ( )
inline

Python wrapper for supported pulse frequencies list.

Returns
Wrapped list of supported pulse frequencies
See also
Scanner::cfg_device_supportedPulseFreqs_Hz

◆ getTimeWave()

PyDoubleVector* Scanner::getTimeWave ( )
inline

Python wrapper for time wave vector.

Returns
Wrapped time wave vector
See also
Scanner::time_wave

◆ getVisibility()

double Scanner::getVisibility ( )
inline

Get device visibility.

Returns
Device visibility (kilometers)
See also
Scanner::cfg_device_visibility_km

◆ getWavelength()

double Scanner::getWavelength ( )
inline

Obtain wave length.

Returns
Wave length (meters)
See also
Scanner::cfg_device_wavelength_m

◆ handlePulseComputation()

void Scanner::handlePulseComputation ( thread_pool pool,
unsigned int const  legIndex,
glm::dvec3 &  absoluteBeamOrigin,
Rotation absoluteBeamAttitude,
long  currentGpsTime 
)

Handle pulse computation whatever it is single thread based or thread pool based.

Parameters
poolThread pool to be used to handle multi threading pulse computation
legIndexIndex of current leg
absoluteBeamOriginAbsolute position of beam origin
absoluteBeamAttitudeBeam attitude
currentGpsTimeCurrent GPS time (milliseconds)

◆ 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 ( long  currentGpsTime)

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

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

◆ isActive()

bool Scanner::isActive ( )
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 ( )
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 ( )
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 ( )
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 ( )
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()

bool Scanner::lastPulseWasHit ( )
inline

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

Returns
True if last pulse was hit, false otherwise
See also
Scanner::state_lastPulseWasHit

◆ prepareDiscretization()

void Scanner::prepareDiscretization ( )

◆ setActive()

void Scanner::setActive ( bool  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

◆ setAtmosphericExtinction()

void Scanner::setAtmosphericExtinction ( double  atmosphericExtinction)
inline

Set atmospheric extinction.

Parameters
atmosphericExtinctionNew atmospheric extinction
See also
Scanner::atmosphericExtinction

◆ setAveragePower()

void Scanner::setAveragePower ( double  averagePower)
inline

Set average power.

Parameters
averagePowerNew average power (watts)
See also
Scanner::cfg_device_averagePower_w

◆ setBeamDivergence()

void Scanner::setBeamDivergence ( double  beamDivergence)
inline

Set beam divergence.

Parameters
beamDivergenceNew beam divergence (radians)
See also
Scanner::cfg_device_beamDivergence_rad

◆ setBeamQuality()

void Scanner::setBeamQuality ( double  beamQuality)
inline

Set beam quality.

Parameters
beamQualityNew beam quality
See also
Scanner::cfg_device_beamQuality

◆ setBeamWaistRadius()

void Scanner::setBeamWaistRadius ( double  beamWaistRadius)
inline

Set beam waist radius.

Parameters
beamWaistRadiusNew beam waist radius
See also
Scanner::beamWaistRadius

◆ setBt2()

void Scanner::setBt2 ( double  bt2)
inline

Set \(B_{t2}\).

Parameters
bt2New \(B_{t2}\)
See also
Scanner::cached_Bt2

◆ setCalcEchowidth()

void Scanner::setCalcEchowidth ( bool  calcEchowidth)
inline

Set scanner echo width configuration.

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

◆ setDeviceId()

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

Set the scanner device identifier.

Parameters
deviceIdNew scanner device identifier
See also
Scanner::cfg_device_id

◆ setDr2()

void Scanner::setDr2 ( double  dr2)
inline

Set \(D_{r2}\).

Parameters
dr2New \(D_{t2}\)
See also
Scanner::cached_Dr2

◆ setEfficiency()

void Scanner::setEfficiency ( double  efficiency)
inline

Set device efficiency.

Parameters
efficiencyNew device efficiency
See also
Scanner::cfg_device_efficiency

◆ setFixedIncidenceAngle()

void Scanner::setFixedIncidenceAngle ( bool  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  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

◆ setLastPulseWasHit()

void Scanner::setLastPulseWasHit ( bool  lastPulseWasHit)

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

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

◆ setNumRays()

void Scanner::setNumRays ( int  numRays)
inline

Set the number of rays.

Parameters
numRaysNew number of rays
See also
Scanner::numRays

◆ setPlatformNoiseDisabled()

void Scanner::setPlatformNoiseDisabled ( bool  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  pulseFreq_Hz)

Set the pulse frequency.

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

◆ setPulseLength_ns()

void Scanner::setPulseLength_ns ( double  pulseLength_ns)
inline

Set the pulse length.

Parameters
pulseLength_nsNew pulse length (nanoseconds)
See also
Scanner::cfg_device_pulseLength_ns

◆ setReceiverDiameter()

void Scanner::setReceiverDiameter ( double  receiverDiameter)
inline

Set receiver diameter.

Parameters
receiverDiameterNew receiver diameter
See also
Scanner::cfg_device_receiverDiameter_m

◆ setTrajectoryFileWriter()

void Scanner::setTrajectoryFileWriter ( std::shared_ptr< SyncFileWriter tfw)
inline

Set synchronous file writer for trajectory.

Parameters
tfwSynchronous file writer to be used to write trajectory
See also
Scanner::tfw

◆ setVisibility()

void Scanner::setVisibility ( double  visibility)
inline

Set device visibility.

Parameters
visibilityNew device visibility (kilometers)
See also
Scanner::cfg_device_visibility_km

◆ setWavelength()

void Scanner::setWavelength ( double  wavelength)
inline

Set wave length.

Parameters
wavelengthNew wave length (meters)
See also
Scanner::cfg_device_wavelength_m

◆ setWriteWaveform()

void Scanner::setWriteWaveform ( bool  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

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

◆ 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

◆ beamDeflector

std::shared_ptr<AbstractBeamDeflector> Scanner::beamDeflector

Beam deflector composing the scanner.

See also
AbstractBeamDeflector

◆ cached_Bt2

double Scanner::cached_Bt2
private

\(B_{t2}\) understood as the square of beam divergence

\[ B_{t2} = \textrm{beamDivergence}^{2} \]

See also
Scanner::cfg_device_beamDivergence_rad

◆ cached_Dr2

double Scanner::cached_Dr2
private

\(D_{r2}\) understood as the square of receiver diameter

\[ D_{r2} = \textrm{receiverDiamater}^{2} \]

See also
Scanner::cfg_device_receiverDiameter_m

◆ cfg_device_headRelativeEmitterAttitude

Rotation Scanner::cfg_device_headRelativeEmitterAttitude
Initial value:

Head relative emitter attitude.

◆ 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

◆ detector

std::shared_ptr<AbstractDetector> Scanner::detector

Detector composing the scanner.

See also
AbstractDetector

◆ FWF_settings

FWFSettings Scanner::FWF_settings

Full wave form settings for the scanner.

See also
FWFSettings

◆ numRays

int Scanner::numRays = 0
private

Number of rays computed by the calcRaysNumber function.

See also
Scanner::calcRaysNumber

◆ numTimeBins

int Scanner::numTimeBins = -1

Number if bins defining discretization size.

The number of bins is computed considering full wave settings:

\[ \textrm{numTimeBins} = \frac{\textrm{pulseLength}}{binSize} \]

◆ peakIntensityIndex

int Scanner::peakIntensityIndex = -1

Index of bin containing the intensity peak. It is computed through calcTimePropagation function.

See also
Scanner::calcTimePropagation(vector<double> &, int)

◆ platform

std::shared_ptr<Platform> Scanner::platform

Platform carrying the scanner.

See also
Platform

◆ scannerHead

std::shared_ptr<ScannerHead> Scanner::scannerHead

Scanner head composing the scanner.

See also
ScannerHead

◆ state_isActive

bool Scanner::state_isActive = true
private

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

When a scanner is not active, it is not sensing


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