C++ API reference

This is the generated reference for core C++ APIs of Helios++.

class Scanner : public Asset
#include <Scanner.h>

Class representing a scanner asset.

Subclassed by MultiScanner, ScannerWrap, SingleScanner

Public Functions

Scanner(...)
virtual ~Scanner()
void applySettings(...)
inline bool checkMaxTimeElapsed(double currentGpsTime_ns, double startGpsTime_ns) const
Scanner(std::string const id, std::list<int> const &pulseFreqs, bool const writeWaveform = false, bool const writePulse = false, bool const calcEchowidth = false, bool const fullWaveNoise = false, bool const platformNoiseDisabled = false)

Scanner constructor.

See also

Scanner::id

Parameters:

pulseFreqs – List of supported pulse frequencies (hertz)

Scanner(Scanner &scanner)

Copy constructor for the Scanner.

Parameters:

scanner – The scanner to be copied

virtual std::shared_ptr<Scanner> clone() = 0

Make a clone of this scanner.

Returns:

Shared pointer pointing to the clone of this scanner

virtual void prepareSimulation(bool const legacyEnergyModel = 0) = 0

Prepare the scanner to deal with the simulation.

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, Scene &scene)

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

See also

Simulation::parallelizationStrategy

See also

Simulation::taskDropper

See also

Simulation::threadPool

Parameters:
  • dropper – Simulation’s task dropper

  • pool – Simulation’s thread pool

Returns:

Built scanning pulse process

virtual void applySettings(std::shared_ptr<ScannerSettings> settings, size_t const idx) = 0

Apply scanner settings.

See also

ScannerSettings

Parameters:
  • settingsScanner settings to be applied

  • idx – The index of the scanning device to which scanner settings must be applied

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

Non index version of the Scanner::applySettings(std::shared_ptr<ScannerSettings>) method.

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

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

Parameters:

idx – The index of the scanning device which scanning settings must be retrieved

Returns:

Newly created ScannerSettings object with current scanner settings

inline std::shared_ptr<ScannerSettings> retrieveCurrentSettings()

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

virtual void applySettingsFWF(FWFSettings settings, size_t const idx)

Apply full wave form settings.

See also

FWFSettings

Parameters:
  • settings – Full wave form settings to be applied

  • idx – The index of the scanning device which Full WaveForm settings must be updated

inline void applySettingsFWF(FWFSettings settings)

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

virtual void doSimStep(unsigned int legIndex, double const currentGpsTime, Scene &scene) = 0

Perform computations for current simulation step.

Parameters:
  • legIndex – Index of current leg

  • currentGpsTime – GPS time of current pulse

std::string toString()

Build a string representation of the scanner.

Returns:

String representing the scanner

virtual void calcRaysNumber(size_t const idx) = 0

Compute the number of rays depending on beam sample quality for the scanning device.

inline void calcRaysNumber()

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

virtual void prepareDiscretization(size_t const idx) = 0

Prepare wave discretization.

See also

Scanner::numTimeBins

See also

Scanner::time_wave

See also

Scanner::peakIntensityIndex

inline void prepareDiscretization()

Non index version of the Scanner::prepareDiscretization method.

double calcFootprintRadius(double const distance, size_t const idx)

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

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

See also

Scanner::calcFootprintArea

Parameters:

distance – Distance \(d\)

Returns:

Footprint radius \(f_{r}\)

virtual double calcAtmosphericAttenuation(size_t const idx) const = 0

See also

ScanningDevice::calcAtmosphericAttenuation

inline double calcAtmosphericAttenuation() const

Non index version of Scanner::calcAtmosphericAttenuation.

See also

Scanner::calcAtmosphericAttenuation(size_t const)

virtual Rotation calcAbsoluteBeamAttitude(size_t const idx) = 0

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

See also

ScannerHead::getMountRelativeAttitude

See also

AbstractBeamDeflector::getEmitterRelativeAttitude

inline Rotation calcAbsoluteBeamAttitude()

Non index version of the Scanner::calcAbsoluteBeamAttitude function.

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).

See also

ScanningDevice::maxNOR

Parameters:

nor – Current number of return

Returns:

True if the check is passed, false otherwise

inline bool checkMaxNOR(int const nor)

Non index version of Scanner::checkMaxNOR(int const, size_t const) method.

virtual void computeSubrays(std::function<void(Rotation const &subrayRotation, int const subrayRadiusStep, NoiseSource<double> &intersectionHandlingNoiseSource, std::map<double, double> &reflections, vector<RaySceneIntersection> &intersects)> handleSubray, NoiseSource<double> &intersectionHandlingNoiseSource, std::map<double, double> &reflections, vector<RaySceneIntersection> &intersects, size_t const idx) = 0

Perform ray casting to find intersections.

See also

FullWaveformPulseRunnable::computeSubrays

See also

FullWaveformPulseRunnable::handleSubray

See also

ScanningDevice::computeSubrays

Parameters:
  • handleSubray[in] The function where computed subrays must be delegated to

  • reflections[out] Where reflections must be stored when a hit is registered

  • intersects[out] Where intersections must be stored when a hit is registered

  • idx[in] The index of the scanning device

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.

See also

FullWaveformPulseRunnable::initializeFullWaveform

See also

FullWaveformPulseRunnable::digestIntersections

See also

ScanningDevice::initializeFullWaveform

Parameters:
  • nsPerBin[out] The size of each bin in nano seconds

  • distanceThreshold[out] Limit distance threshold

  • peakIntensityIndex[out] Index of intensity peak

  • numFullwaveBins[out] How many bins are necessary to discretize the full waveform

  • idx[in] The index of the scanning device

Returns:

True if it is possible to initialize the full waveform, false otherwise.

virtual double calcIntensity(double const incidenceAngle, double const targetRange, Material const &mat, int const subrayRadiusStep, size_t const idx) const = 0

Handle to which scanning device request the intensity computation.

See also

ScanningDevice::calcIntensity

Parameters:

idx – The index of the scanning device that must compute the intensity

virtual double calcIntensity(double const targetRange, double const sigma, int const subrayRadiusStep, size_t const idx) const = 0

Handle to which scanning device request the intensity computation.

See also

ScanningDevice::calcIntensity

Parameters:

idx – The index of the scanning device that must compute the intensity

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

Handle position and attitude noise.

Parameters:
  • absoluteBeamOrigin – Beam origin (position) to add noise to if requested

  • absoluteBeamAttitude – Beam attitude to add noise to if requested

inline virtual void onLegComplete()

Exposes ScanningPulseProcess:onLegComplete method of the scanning pulse process defining this scanner.

inline void flushPendingPulseTasks()

Flush pending pulse tasks in scanning pulse process, if any.

inline void onSimulationFinished()

Exposes ScanningPulseProcess::onSimulationFinished method of the scanning pulse process defining this scanner.

void handleTrajectoryOutput(double const currentGpsTime, Scene &scene)

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

Parameters:

currentGpsTime – Current GPS time (nanoseconds)

void trackOutputPath(std::string const &path)

Track given output path in a thread safe way.

Parameters:

path – Output path to be tracked

inline void setMaxDuration(double v)

Getter, setter and checker for maxDuration_s.

See also

Scanner::maxDuration_s

inline double getMaxDuration() const
inline bool hasMaxDuration() const
virtual ScanningDevice &getScanningDevice(size_t const idx) = 0

Obtain the requested scanning device.

See also

ScanningDevice::getScanningDevice

Parameters:

idx – The index of the scanning device to be obtained.

virtual int getCurrentPulseNumber(size_t const idx) const = 0

Obtain the current pulse number of the scanning device.

See also

ScanningDevice::state_currentPulseNumber

Parameters:

idx – The index of the scanning device which pulse number must be obtained

Returns:

The current pulse number of the scanning device

inline int getCurrentPulseNumber() const

Non index version of the Scanner::getCurrentPulseNumber method.

See also

Scanner::getCurrentPulseNumber(size_t const)

virtual int getNumRays(size_t const idx) const = 0

Obtain the number of rays of the scanning device.

See also

ScanningDevice::numRays

Parameters:

idx – The index of the scanning device which number of rays must be obtained

Returns:

Number of rays of the scanning device

inline int getNumRays() const

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

See also

Scanner::getNumRays(size_t const)

virtual void setNumRays(int const numRays, size_t const idx) = 0

Set the number of rays of the scanning device.

See also

ScanningDevice::numRays

Parameters:
  • numRays – New number of rays for the scanning device

  • idx – The index of the scanning device which number of rays must be set

inline void setNumRays(int const numRays)

Non index version of the Scanner::setNumRays(int const, size_t const) method.

inline int getPulseFreq_Hz() const

Obtain the pulse frequency.

Returns:

Pulse frequency (hertz)

void setPulseFreq_Hz(int const pulseFreq_Hz)

Set the pulse frequency.

Parameters:

pulseFreq_Hz – New pulse frequency (hertz)

virtual double getPulseLength_ns(size_t const idx) const = 0

Get the pulse length.

See also

ScanningDevice::cfg_device_pulseLength_ns

Parameters:

idx – The index of the scanning device which pulse length must be obtained (by default 0, it is the first one)

Returns:

Pulse length (nanoseconds)

inline double getPulseLength_ns() const

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

See also

Scanner::getPulseLength_ns(size_t const)

virtual void setPulseLength_ns(double const pulseLength_ns, size_t const idx) = 0

Set the pulse length.

See also

ScanningDevice::cfg_device_pulseLength_ns

Parameters:
  • pulseLength_ns – New pulse length (nanoseconds)

  • idx – The index of the scanning device which pulse length must be set (by default 1, it is the first one)

inline void setPulseLength_ns(double const pulseLength_ns)

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

virtual bool lastPulseWasHit(size_t const idx) const = 0

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

See also

ScanningDevice::state_lastPulseWasHit

See also

ScanningDevice::lastPulseWasHit

Parameters:

idx – The 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.

inline bool lastPulseWasHit() const

Non index version of the Scanner::lastPulseWasHit method.

See also

Scanner::lastPulseWasHit method

virtual void setLastPulseWasHit(bool const lastPulseWasHit, size_t const idx) = 0

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

See also

Scanner::state_lastPulseWasHit

Parameters:

lastPulseWasHit – New last pulse hit specification

inline void setLastPulseWasHit(bool const lastPulseWasHit)

Non index version of the Scanner::setLastPulseWasHit method.

virtual double getBeamDivergence(size_t const idx) const = 0

Obtain beam divergence.

See also

ScanningDevice::beamDivergence_rad

Parameters:

idx – The index of the scanning device which beam divergence must be obtained (by default 0, it is the first one)

Returns:

Beam divergence (radians)

inline double getBeamDivergence() const

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

See also

Scanner::getBeamDivergence(size_t const)

virtual void setBeamDivergence(double const beamDivergence, size_t const idx) = 0

Set beam divergence.

See also

ScanningDevice::beamDivergence_rad

Parameters:
  • beamDivergence – New beam divergence (radians)

  • idx – The index of the scanning device which beam divergence must be set (by default 0, it is the first one)

inline void setBeamDivergence(double const beamDivergence)

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

virtual double getAveragePower(size_t const idx) const = 0

Obtain average power.

See also

ScanningDevice::averagePower_w

Parameters:

idx – The index of the scanning device which average power must be obtained (by default 0, it is the first one)

Returns:

Average power (watts)

inline double getAveragePower() const

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

See also

Scanner::getAveragePower(size_t const)

virtual void setAveragePower(double const averagePower, size_t const idx) = 0

Set average power.

See also

ScanningDevice::averagePower_w

Parameters:
  • averagePower – New average power (watts)

  • idx – The index of the scanning device which average power must be set (by default 0, it is the first one)

inline void setAveragePower(double const averagePower)

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

virtual double getBeamQuality(size_t const idx) const = 0

Get beam quality.

See also

ScanningDevice::beamQuality

Parameters:

idx – The index of the scanning device which beam quality must be obtained (by default 0, it is the first one)

Returns:

Beam quality

inline double getBeamQuality() const

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

See also

Scanner::getBeamQuality(size_t const)

virtual void setBeamQuality(double const beamQuality, size_t const idx) = 0

Set beam quality.

See also

ScanningDevice::beamQuality

Parameters:
  • beamQuality – New beam quality

  • idx – The index of the scanning device which beam quality must be obtained (by default 0, it is the first one)

inline void setBeamQuality(double const beamQuality)

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

virtual double getEfficiency(size_t const idx) const = 0

Obtain device efficiency.

See also

ScanningDevice::efficiency

Parameters:

idx – The index of the scanning device which efficiency must be obtained (by default 0, it is the first one)

Returns:

Device efficiency

inline double getEfficiency() const

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

See also

Scanner::getEfficiency(size_t const)

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

Set device efficiency.

See also

ScanningDevice::efficiency

Parameters:
  • efficiency – New device efficiency

  • idx – The index of the scanning device which efficiency must be set (by default 0, it is the first one)

inline void setEfficiency(double const efficiency)

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

virtual double getReceiverDiameter(size_t const idx) const = 0

Get receiver diameter.

See also

ScanningDevice::receiverDiameter_m

Parameters:

idx – The index of the scanning device which efficiency must be obtained (by default 0, it is the first one)

Returns:

Receiver diameter

inline double getReceiverDiameter() const

No index argument version of the Scanner::getReceiverDiameter.

See also

Scanner::getReceiverDiameter(size_t const)

virtual void setReceiverDiameter(double const receiverDiameter, size_t const idx) = 0

Set receiver diameter.

See also

ScanningDevice::receiverDiameter_m

Parameters:
  • receiverDiameter – New receiver diameter

  • idx – The index of the scanning device which efficiency must be set (by default 0, it is the first one)

inline void setReceiverDiameter(double const receiverDiameter)

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

virtual double getVisibility(size_t const idx) const = 0

Get device visibility.

See also

ScanningDevice::visibility_km

Parameters:

idx – The index of the scanning device which visibility must be obtained (by default 0, it is the first one)

Returns:

Device visibility (kilometers)

inline double getVisibility() const

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

See also

Scanner::getVisibility(size_t const)

virtual void setVisibility(double const visibility, size_t const idx) = 0

Set device visibility.

See also

ScanningDevice::visibility_km

Parameters:
  • visibility – New device visibility (kilometers)

  • idx – The index of the scanning device which visibility must be set (by default 0, it is the first one)

inline void setVisibility(double const visibility)

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

virtual double getWavelength(size_t const idx) const = 0

Obtain wave length.

See also

ScanningDevice::wavelength_m

Parameters:

idx – The index of the scanning device which wavelength must be obtained (by default 0, it is the first one)

Returns:

Wave length (meters)

inline double getWavelength() const

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

See also

Scanner::getWavelength(size_t const)

virtual void setWavelength(double const wavelength, size_t const idx) = 0

Set wave length.

See also

ScanningDevice::wavelength_m

Parameters:
  • wavelength – New wave length (meters)

  • idx – The index of the scanning device which wavelength must be set (by default 0, it is the first one)

inline void setWavelength(double const wavelength)

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

virtual double getAtmosphericExtinction(size_t const idx) const = 0

Obtain atmospheric extinction.

See also

ScanningDevice::atmosphericExtinction

Parameters:

idx – The index of the scanning device which atmospheric extinction must be obtained (by default 0, it is the first one)

Returns:

Atmospheric extinction

inline double getAtmosphericExtinction() const

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

Returns:

Scanner::getAtmosphericExtinction(size_t const)

virtual void setAtmosphericExtinction(double const atmosphericExtinction, size_t const idx) = 0

Set atmospheric extinction.

See also

ScanningDevice::atmosphericExtinction

Parameters:
  • atmosphericExtinction – New atmospheric extinction

  • idx – The index of the scanning device which atmospheric extinction must be set (by default 0, it is the first one)

inline void setAtmosphericExtinction(double const atmosphericExtinction)

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

virtual double getBeamWaistRadius(size_t const idx) const = 0

Obtain beam waist radius.

See also

ScanningDevice::beamWaistRadius

Parameters:

idx – The index of the scanning device which beam waist radius must be obtained (by default 0, it is the first one)

Returns:

Beam waist radius

inline double getBeamWaistRadius() const

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

See also

Scanner::getBeamWaistRadius(size_t const)

virtual void setBeamWaistRadius(double const beamWaistRadius, size_t const idx) = 0

Set beam waist radius.

See also

ScanningDevice::beamWaistRadius

Parameters:
  • beamWaistRadius – New beam waist radius

  • idx – The index of the scanning device which beam waist radius must be set (by default 0, it is the first one)

inline void setBeamWaistRadius(double const beamWaistRadius)

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

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

Obtain the head’s relative emitter position.

See also

ScanningDevice::headRelativeEmitterPosition

Parameters:

idx – The 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

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

Set the head’s relative emitter position.

See also

ScanningDevice::headRelativeEmitterPosition

Parameters:
  • pos – The new position for the head’s relative emitter

  • idx – The index of the scanning device which head’s relative emitter position must be set (by default 0, it is the first one)

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

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

See also

ScanningDevice::headRelativeEmitterPosition

Parameters:

idx – The 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

virtual Rotation getHeadRelativeEmitterAttitude(size_t const idx = 0) const = 0

Obtain the head’s relative emitter attitude.

See also

ScanningDevice::headRelativeEmitterAttitude

Parameters:

idx – The 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

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

Set the head’s relative emitter attitude.

Parameters:
  • attitude – The new attitude for the head’s relative emitter

  • idx – The index of the scanning device which head’s relative emitter attitude must be set (by default 0, it is the first one)

virtual Rotation &getHeadRelativeEmitterAttitudeByRef(size_t const idx = 0) = 0

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

See also

ScanningDevice::headRelativeEmitterAttitude

Parameters:

idx – The 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

virtual double getBt2(size_t const idx) const = 0

Obtain \(B_{t2}\).

See also

ScanningDevice::cached_Bt2

Parameters:

idx – The 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}\)

inline double getBt2() const

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

See also

Scanner::getBt2(size_t const)

virtual void setBt2(double const bt2, size_t const idx) = 0

Set \(B_{t2}\).

See also

ScanningDevice::cached_Bt2

Parameters:
  • bt2 – New \(B_{t2}\)

  • idx – The index of the scanning device which cached Bt2 (square of beam divergence) must be set (by default 0, it is the first one)

inline void setBt2(double const bt2)

No index argument version of the Scanner::setBt2 method @ScannersetBt2(double const, size_t const)

virtual double getDr2(size_t const idx) const = 0

Obtain \(D_{r2}\).

See also

ScanningDevice::cached_Dr2

Parameters:

idx – The 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}\)

inline double getDr2() const

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

See also

Scanner::getDr2(size_t const)

virtual void setDr2(double const dr2, size_t const idx) = 0

Set \(D_{r2}\).

See also

ScanningDevice::cached_Dr2

Parameters:
  • dr2 – New \(D_{t2}\)

  • idx – The index of the scanning device which cached Dr2 (square of receiver diameter) must be obtained (by default 0, it is the first one)

inline void setDr2(double const dr2)

No index argument version of the Scanner::setDr2 method @ScannersetDr2(double const, size_t const)

inline bool isActive() const

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

Returns:

True if scanner is active, false otherwise

inline void setActive(bool const active)

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

Parameters:

active – New scanner active status

inline bool isWriteWaveform() const

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

inline void setWriteWaveform(bool const writeWaveform)

Set scanner write wave form configuration.

Parameters:

writeWaveform – True to make scanner write wave form, false otherwise

inline bool isWritePulse() const

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

Returns:

True if scanner is configured to write pulses, false otherwise

inline void setWritePulse(bool const writePulse)

Set scanner write pulse configuration.

Parameters:

writePulse – True to make scanner write pulse, false otherwise

inline bool isCalcEchowidth() const

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

inline void setCalcEchowidth(bool const calcEchowidth)

Set scanner echo width configuration.

Parameters:

calcEchowidth – True to make scanner compute echo width, false otherwise

inline bool isFullWaveNoise() const

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

inline void setFullWaveNoise(bool const fullWaveNoise)

Set scanner full wave noise policy.

Parameters:

fullWaveNoise – True to make scanner add noise to the full wave, false otherwise

inline bool isPlatformNoiseDisabled()

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

Returns:

True if platform noise is disabled, false otherwise

inline void setPlatformNoiseDisabled(bool const platformNoiseDisabled)

Set platform noise disabled flag.

Parameters:

platformNoiseDisabled – True to disable platform noise, false to enable it

inline bool isFixedIncidenceAngle() const

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

Returns:

True if incidence angle is fixed, false otherwise

inline void setFixedIncidenceAngle(bool const fixedIncidenceAngle)

Set fixed incidence angle flag.

Parameters:

fixedIncidenceAngle – True to enable fixed incidence angle, false to disable it

inline std::string getScannerId() const

Obtain the identifier of the scanner.

See also

Scanner::id

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

Set the identifier of the scanner.

See also

Scanner::id

Parameters:

id – The new identifier for the scanner

virtual void setDeviceIndex(size_t const newIdx, size_t const oldIdx) = 0

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:
  • newIdx – New index for the device

  • oldIdx – Old index of the device to be updated

virtual std::string getDeviceId(size_t const idx) const = 0

Obtain scanner device identifier.

See also

ScanningDevice::id

Returns:

Scanner device identifier

inline std::string getDeviceId() const

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

See also

Scanner::getDeviceId(size_t const)

virtual void setDeviceId(std::string const deviceId, size_t const idx) = 0

Set the scanner device identifier.

See also

ScanningDevice::id

Parameters:

deviceId – New scanner device identifier

inline void setDeviceId(std::string const deviceId)

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

virtual size_t getNumDevices() const = 0

Obtain the number of scanning devices composing the scanner.

virtual std::shared_ptr<ScannerHead> getScannerHead(size_t const idx) = 0

Obtain the scanner head of the scanning device.

See also

ScannerHead

Parameters:

idx – The index of the scanning device which scanner head must be obtained

Returns:

The scanner head of the scanning device

inline std::shared_ptr<ScannerHead> getScannerHead()

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

virtual void setScannerHead(std::shared_ptr<ScannerHead> scannerHead, size_t const idx) = 0

Set the scanner head of the scanning device.

Parameters:
  • scannerHead – The scanner head to be assigned to the scanning device

  • idx – The index of the scanning device which scanner head must be set

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

Non index version of the Scanner::setScannerHead method.

See also

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

virtual std::shared_ptr<AbstractBeamDeflector> getBeamDeflector(size_t const idx) = 0

Obtain the beam deflector of the scanning device.

See also

AbstractBeamDeflector

Parameters:

idx – The index of the scanning device which beam deflector must be obtained

Returns:

The beam deflector of the scanning device

inline std::shared_ptr<AbstractBeamDeflector> getBeamDeflector()

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

virtual void setBeamDeflector(std::shared_ptr<AbstractBeamDeflector> deflector, size_t const idx) = 0

Set the beam deflector of the scanning device.

Parameters:
  • deflector – New beam deflector for the scanning device

  • idx – The index of the scanning device which beam deflector must be set

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

Non index version of the Scanner::setBeamDeflector method.

virtual std::shared_ptr<AbstractDetector> getDetector(size_t const idx) = 0

Obtain the abstract detector of the scanning device.

See also

AbstractDetector

Parameters:

idx – The index of the scanning device which abstract detector must be obtained

Returns:

The abstract detector of the scanning device

inline std::shared_ptr<AbstractDetector> getDetector()

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

virtual void setDetector(std::shared_ptr<AbstractDetector> detector, size_t const idx) = 0

Set the abstract detector of the scanning device.

See also

AbstractDetector

Parameters:

idx – The index of the scanning device which abstract detector must be set

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

Non index version of the Scanner::setDetector method.

See also

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

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

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

Parameters:

detector – The new detector for each scanning device

virtual FWFSettings &getFWFSettings(size_t const idx) = 0

Obtain the Full WaveForm settings of the scanning device.

See also

FWFSettings

Parameters:

idx – The index of the scanning device which full waveform settings must be obtained

Returns:

The full waveform settings of the scanning device

inline FWFSettings &getFWFSettings()

Non index version of the Scanner::getFWFSettings(size_t const)

virtual void setFWFSettings(FWFSettings const &fwfSettings, size_t const idx) = 0

Set the Full WaveForm settings of the scanning device.

See also

FWFSettings

Parameters:

idx – The index of the scanning device which full waveform settings must be set

inline void setFWFSettings(FWFSettings const &fwfSettings)

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

virtual std::list<int> &getSupportedPulseFreqs_Hz(size_t const idx) = 0

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

Parameters:

idx – The index of the scanning device which supported pulse frequencies must be obtained

Returns:

The list of supported pulse frequencies of the scanning device

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

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

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.

Parameters:
  • pulseFreqs_Hz – Supported pulse frequencies for the scanning device

  • idx – The index of the scanning device which supported pulse frequencies must be set

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

Non index version of the Scanner::setSupportedPulseFreqs_Hz(std::list<int> &, size_t const)

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).

Parameters:

idx – The index of the scanning device which max NOR must be obtained

Returns:

The maximum number of returns per pulse for the scanning device

inline int getMaxNOR() const

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

See also

Scanner::getMaxNOR(size_t const)

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).

See also

ScanningDevice::maxNOR

Parameters:
  • maxNOR – New max NOR for the scanning device

  • idx – Index of the scanning device which max NOR must be set

inline void setMaxNOR(int const maxNOR)

Non index version of Scanner::setMaxNOR(int const, size_t const)

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.

Parameters:

idx – Index of the scanning device which number of time bins must be obtained

Returns:

The number of time bins for the scanning device

inline int getNumTimeBins() const

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

See also

Scanner::getNumTimeBins(size_t const)

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.

Parameters:
  • numTimeBins – The number of time bins for the scanning device

  • idx – The index of the scanning device which number of time bins must be set

inline void setNumTimeBins(int const numTimeBins)

Non index version of the Scanner::setNumTimeBins(int const, size_t const) method.

virtual int getPeakIntensityIndex(size_t const idx) const = 0

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

Parameters:

idx – The index of the scanning device which peak intensity index must be obtained

Returns:

The peak intensity index of the scanning device

inline int getPeakIntensityIndex() const

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

See also

Scanner::getPeakIntensityIndex(size_t const)

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.

Parameters:
  • pii – The new peak intensity index for the scanning device

  • idx – The index of the scanning device which peak intensity index must be set

inline void setPeakIntensityIndex(int const pii)

Non index version of the Scanner::setPeakIntensityIndex(int const, size_t const) method.

virtual std::vector<double> &getTimeWave(size_t const idx) = 0

Obtain the time discretization vector of the scanning device.

Parameters:

idx – The index of the scanning device which time discretization vector must be obtained

Returns:

The time discretization vector of the scanning device

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

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

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

Set the time discretization vector of the scanning device.

Parameters:
  • timewave – The new time discretization vector for the scanning device

  • idx – The index of scanning device which time discretization vector must be updated

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

Non index version of the Scanner::setTimeWave(std::vector<double> &, size_t const) method.

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.

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

Non index version of the Scanner::setTimeWave(std::vector<double> &&, size_t const) method.

virtual double getReceivedEnergyMin(size_t const idx) const = 0

Obtain the minimum received energy threshold of the scanning device.

Parameters:

idx – The index of the scanning device which minimum received energy threshold must be obtained.

Returns:

The minimum received energy threshold of the scanning device.

inline double getReceivedEnergyMin() const

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

See also

Scanner::getReceivedEnergyMin(size_t const)

virtual void setReceivedEnergyMin(double const receivedEnergyMin_W, size_t const idx) = 0

Set the minimum threshold for the received energy of the scanning device.

Parameters:
  • receivedEnergyMin_W – The new minimum threshold for the received energy of the scanning device.

  • idx – The index of the scanning device which time discretization vector must be updated.

inline void setReceivedEnergyMin(double const receivedEnergyMin_W)

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

Public Members

std::unique_ptr<ScanningPulseProcess> spp = nullptr

The scanning pulse process used by the scanner.

See also

ScanningPulseProcess

std::shared_ptr<helios::filems::FMSFacade> fms

Main facade to file management system.

std::shared_ptr<Platform> platform

Platform carrying the scanner.

See also

Platform

std::shared_ptr<std::vector<std::string>> 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

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

Historical vector of all measurements performed by the scanner.

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

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

Historical vector of all trajectory points recorded by the scanner.

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

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.

See also

Scanner::alTrajectories

double 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

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.

Protected 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)

Parameters:

sc – The scanner which attributes must be assigned as clones of the caller scanner (this)

Protected Attributes

std::string id = "SCANNER-ID"

The scanner’s identifier.

bool writeWaveform = false

Flag specifying if write waveform (true) or not (false)

bool writePulse = false

Flag specifying if write pulse (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)

When a scanner is not active, it is not sensing

double maxDuration_s = 0.0
namespace helios
namespace filems