6 #include <ScannerHead.h>
7 #include <AbstractBeamDeflector.h>
9 #include <scanner/ScanningPulseProcess.h>
10 #include <scanner/detector/PulseTaskDropper.h>
11 #include <scanner/detector/PulseThreadPoolInterface.h>
12 #include <FWFSettings.h>
14 #include <maths/Directions.h>
15 #include <maths/Rotation.h>
16 #include <UniformNoiseSource.h>
17 #include <RandomnessGenerator.h>
18 #include <scanner/Trajectory.h>
19 #include <scanner/Measurement.h>
20 namespace helios {
namespace filems {
class FMSFacade; }}
35 std::string
id =
"SCANNER-ID";
76 std::unique_ptr<ScanningPulseProcess>
spp =
nullptr;
83 std::shared_ptr<FMSFacade>
fms;
162 std::shared_ptr<RandomnessGenerator<double>>
randGen1 =
nullptr;
166 std::shared_ptr<RandomnessGenerator<double>>
randGen2 =
nullptr;
170 std::shared_ptr<UniformNoiseSource<double>>
186 std::string
const id,
187 std::list<int>
const &pulseFreqs,
206 virtual std::shared_ptr<Scanner>
clone() = 0;
235 int const parallelizationStrategy,
237 std::shared_ptr<PulseThreadPoolInterface> pool
247 std::shared_ptr<ScannerSettings> settings,
size_t const idx
295 unsigned int legIndex,
296 double const currentGpsTime
338 double const distance,
size_t const idx
373 double const distance,
size_t const idx
441 vector<double>
const &_tMinMax,
442 int const circleStep,
443 double const circleStep_rad,
445 double const divergenceAngle,
447 std::map<double, double> &reflections,
448 vector<RaySceneIntersection> &intersects
450 vector<double>
const &tMinMax,
452 std::map<double, double> &reflections,
453 vector<RaySceneIntersection> &intersects,
474 double const minHitDist_m,
475 double const maxHitDist_m,
476 double &minHitTime_ns,
477 double &maxHitTime_ns,
479 double &distanceThreshold,
480 int &peakIntensityIndex,
481 int &numFullwaveBins,
492 double const incidenceAngle,
493 double const targetRange,
494 double const targetReflectivity,
495 double const targetSpecularity,
496 double const targetSpecularExponent,
497 double const targetArea,
508 double const targetRange,
524 glm::dvec3 & absoluteBeamOrigin,
588 virtual void setNumRays(
int const numRays,
size_t const idx) = 0;
631 double const pulseLength_ns,
size_t const idx
694 double const beamDivergence,
size_t const idx
725 double const averagePower,
size_t const idx
755 double const beamQuality,
size_t const idx
813 double const receiverDiameter,
size_t const idx
902 double const atmosphericExtinction,
935 double const beamWaistRadius,
size_t const idx
962 glm::dvec3
const &pos,
size_t const idx=0
990 Rotation const &attitude,
size_t const idx=0
1011 virtual double getBt2(
size_t const idx)
const = 0;
1024 virtual void setBt2(
double const bt2,
size_t const idx) = 0;
1038 virtual double getDr2(
size_t const idx)
const = 0;
1051 virtual void setDr2(
double const dr2,
size_t const idx) = 0;
1070 inline void setActive(
bool const active) {this->state_isActive = active;}
1191 virtual void setDeviceId(std::string
const deviceId,
size_t const idx)=0;
1226 std::shared_ptr<ScannerHead> scannerHead,
size_t const idx
1258 std::shared_ptr<AbstractBeamDeflector> deflector,
size_t const idx
1265 std::shared_ptr<AbstractBeamDeflector> deflector
1274 virtual std::shared_ptr<AbstractDetector>
getDetector(
size_t const idx)=0;
1289 std::shared_ptr<AbstractDetector> detector,
1359 std::list<int> &pulseFreqs_Hz,
size_t const idx
1388 virtual void setMaxNOR(
int const maxNOR,
size_t const idx) = 0;
1473 std::vector<double> &timewave,
size_t const idx
1488 std::vector<double> &&timewave,
size_t const idx
1498 #ifdef DATA_ANALYTICS
Base abstract class for detectors.
Definition: AbstractDetector.h:20
Base class for all assets.
Definition: Asset.h:10
Full Waveform settings.
Definition: FWFSettings.h:12
Class implementing a task dropper to deal with pulse tasks.
Definition: PulseTaskDropper.h:27
Definition: Rotation.h:80
Class representing a scanner asset.
Definition: Scanner.h:28
void applySettingsFWF(FWFSettings settings)
Non index version of the Scanner::applySettingsFWF(FWFSettings, size_t const) method.
Definition: Scanner.h:287
int getPeakIntensityIndex() const
Non index version of the Scanner::getPeakIntensityIndex(size_t const) method.
Definition: Scanner.h:1436
void calcRaysNumber()
Non index version of the Scanner::calcRaysNumber(size_t const) method.
Definition: Scanner.h:313
virtual void setAtmosphericExtinction(double const atmosphericExtinction, size_t const idx)=0
Set atmospheric extinction.
virtual double getWavelength(size_t const idx) const =0
Obtain wave length.
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.
int getCurrentPulseNumber() const
Non index version of the Scanner::getCurrentPulseNumber method.
Definition: Scanner.h:566
virtual std::shared_ptr< AbstractBeamDeflector > getBeamDeflector(size_t const idx)=0
Obtain the beam deflector of the scanning device.
void setAtmosphericExtinction(double const atmosphericExtinction)
No index argument version of the Scanner::setAtmosphericExtinction method.
Definition: Scanner.h:910
double calcTargetArea(double const distance) const
Non index version of the Scanner::calcTargetArea(double const, size_t const) method.
Definition: Scanner.h:380
std::shared_ptr< std::vector< Trajectory > > cycleTrajectories
Vector of trajectory points recorded by the scanner.
Definition: Scanner.h:131
virtual void _clone(Scanner &sc) const
Assist the clone method by means of handling cloning of attributes from this scanner to the new one (...
Definition: Scanner.cpp:102
void setCalcEchowidth(bool const calcEchowidth)
Set scanner echo width configuration.
Definition: Scanner.h:1102
virtual double getVisibility(size_t const idx) const =0
Get device visibility.
void setAveragePower(double const averagePower)
No index argument version of the Scanner::setAveragePower method.
Definition: Scanner.h:731
bool lastPulseWasHit() const
Non index version of the Scanner::lastPulseWasHit method.
Definition: Scanner.h:656
double getDr2() const
No index argument version of the Scanner::getDr2 method.
Definition: Scanner.h:1043
virtual void setHeadRelativeEmitterPosition(glm::dvec3 const &pos, size_t const idx=0)=0
Set the head's relative emitter position.
void setWavelength(double const wavelength)
No index argument version of the Scanner::setWavelength method.
Definition: Scanner.h:876
void setPulseLength_ns(double const pulseLength_ns)
No index argument version of the Scanner::setPulseLength_ns method.
Definition: Scanner.h:638
void setMaxNOR(int const maxNOR)
Non index version of Scanner::setMaxNOR(int const, size_t const)
Definition: Scanner.h:1393
double calcFootprintArea(double const distance) const
Non index version of the Scanner::calcFootprintArea(double const, size_t const) method.
Definition: Scanner.h:345
virtual void setBt2(double const bt2, size_t const idx)=0
Set .
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.
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.
void setPlatformNoiseDisabled(bool const platformNoiseDisabled)
Set platform noise disabled flag.
Definition: Scanner.h:1134
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.
Definition: Scanner.cpp:394
void setDetector(std::shared_ptr< AbstractDetector > detector)
Non index version of the Scanner::setDetector method.
Definition: Scanner.h:1296
Rotation calcAbsoluteBeamAttitude()
Non index version of the Scanner::calcAbsoluteBeamAttitude function.
Definition: Scanner.h:404
virtual double getAveragePower(size_t const idx) const =0
Obtain average power.
void setActive(bool const active)
Set scanner active status. True to make it active, false to make it inactive.
Definition: Scanner.h:1070
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.
double getWavelength() const
No index argument version of the Scanner::getWavelength method.
Definition: Scanner.h:863
virtual glm::dvec3 & getHeadRelativeEmitterPositionByRef(size_t const idx=0)=0
Obtain the head's relative emitter position by reference (can be written)
std::shared_ptr< RandomnessGenerator< double > > randGen1
First randomness generator for single thread mode.
Definition: Scanner.h:162
bool fullWaveNoise
Flag specifying if compute full wave noise (true) or not (false)
Definition: Scanner.h:47
virtual std::list< int > & getSupportedPulseFreqs_Hz(size_t const idx)=0
Obtain the list of supported pulse frequencies of the scanning device.
void setScannerHead(std::shared_ptr< ScannerHead > scannerHead)
Non index version of the Scanner::setScannerHead method.
Definition: Scanner.h:1232
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).
virtual void setFWFSettings(FWFSettings const &fwfSettings, size_t const idx)=0
Set the Full WaveForm settings of the scanning device.
double getVisibility() const
No index argument version of the Scanner::getVisibility method.
Definition: Scanner.h:835
void setLastPulseWasHit(bool const lastPulseWasHit)
Non index version of the Scanner::setLastPulseWasHit method.
Definition: Scanner.h:669
int getMaxNOR() const
Non index version of Scanner::getMaxNOR(size_t const)
Definition: Scanner.h:1380
int cfg_setting_pulseFreq_Hz
Pulse frequency (hertz)
Definition: Scanner.h:61
void setDeviceId(std::string const deviceId)
No index argument version of the Scanner::setDeviceId method.
Definition: Scanner.h:1196
double getBt2() const
No index argument version of the Scanner::getBt2 method.
Definition: Scanner.h:1016
std::shared_ptr< ScannerHead > getScannerHead()
Non index version of the Scanner::getScannerHead(size_t const) method.
Definition: Scanner.h:1216
int getNumTimeBins() const
Non index version of the Scanner::getNumTimeBins(size_t const) method.
Definition: Scanner.h:1407
void setNumRays(int const numRays)
Non index version of the Scanner::setNumRays(int const, size_t const) method.
Definition: Scanner.h:594
bool fixedIncidenceAngle
Flag specifying if use fixed incidence angle (true) or not (false)
Definition: Scanner.h:56
virtual int getPeakIntensityIndex(size_t const idx) const =0
Obtain the index of the bin containing the intensity peak for the scanning device.
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.
void setScannerId(std::string const &id)
Set the identifier of the scanner.
Definition: Scanner.h:1163
bool isFullWaveNoise() const
Check if scanner is configured to add noise to full wave (true) or not (false)
Definition: Scanner.h:1112
std::string id
The scanner's identifier.
Definition: Scanner.h:35
virtual double getDr2(size_t const idx) const =0
Obtain .
bool checkMaxNOR(int const nor)
Non index version of Scanner::checkMaxNOR(int const, size_t const) method.
Definition: Scanner.h:423
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.
virtual void setDeviceIndex(size_t const newIdx, size_t const oldIdx)=0
Set the device index (newIdx) of the device at given index (oldIdx).
double getReceiverDiameter() const
No index argument version of the Scanner::getReceiverDiameter.
Definition: Scanner.h:804
double getBeamWaistRadius() const
No index argument version of the Scanner::getBeamWaistRadius method.
Definition: Scanner.h:926
virtual void setDetector(std::shared_ptr< AbstractDetector > detector, size_t const idx)=0
Set the abstract detector of the scanning device.
double getAtmosphericExtinction() const
No index argument version of the Scanner::getAtmosphericExtinction method.
Definition: Scanner.h:892
bool state_isActive
Flag specifying if scanner is active (true) or not (false)
Definition: Scanner.h:69
virtual void setBeamDeflector(std::shared_ptr< AbstractBeamDeflector > deflector, size_t const idx)=0
Set the beam deflector of the scanning device.
bool platformNoiseDisabled
Flag specifying if disable platform noise (true) or not (false)
Definition: Scanner.h:51
virtual void doSimStep(unsigned int legIndex, double const currentGpsTime)=0
Perform computations for current simulation step.
std::shared_ptr< RandomnessGenerator< double > > randGen2
Second randomness generator for single thread mode.
Definition: Scanner.h:166
bool isActive() const
Check if scanner is active (true) or not (false)
Definition: Scanner.h:1063
virtual FWFSettings & getFWFSettings(size_t const idx)=0
Obtain the Full WaveForm settings of the scanning device.
void applySettings(std::shared_ptr< ScannerSettings > settings)
Non index version of the Scanner::applySettings(std::shared_ptr<ScannerSettings>) method.
Definition: Scanner.h:254
virtual void setTimeWave(std::vector< double > &timewave, size_t const idx)=0
Set the time discretization vector of the scanning device.
void handleTrajectoryOutput(double const currentGpsTime)
Handle trajectory output whatever it is to output file, to all trajectories vector or to cycle trajec...
Definition: Scanner.cpp:324
virtual std::shared_ptr< AbstractDetector > getDetector(size_t const idx)=0
Obtain the abstract detector of the scanning device.
virtual void setPulseLength_ns(double const pulseLength_ns, size_t const idx)=0
Set the pulse length.
std::shared_ptr< std::vector< Measurement > > cycleMeasurements
Vector of measurements performed by the scanner at current cycle.
Definition: Scanner.h:124
virtual glm::dvec3 getHeadRelativeEmitterPosition(size_t const idx=0) const =0
Obtain the head's relative emitter position.
virtual void setNumRays(int const numRays, size_t const idx)=0
Set the number of rays of the scanning device.
virtual std::string getDeviceId(size_t const idx) const =0
Obtain scanner device identifier.
std::shared_ptr< AbstractDetector > getDetector()
Non index version of the Scanner::getDetector(size_t const) method.
Definition: Scanner.h:1280
void setSupportedPulseFreqs_Hz(std::list< int > &pulseFreqs_Hz)
Non index version of the Scanner::setSupportedPulseFreqs_Hz(std::list<int> &, size_t const)
Definition: Scanner.h:1366
void setBt2(double const bt2)
No index argument version of the Scanner::setBt2 method @Scanner::setBt2(double const,...
Definition: Scanner.h:1029
std::shared_ptr< AbstractBeamDeflector > getBeamDeflector()
Non index version of the Scanner::getBeamDeflector(size_t const) method.
Definition: Scanner.h:1249
std::shared_ptr< std::vector< std::string > > allOutputPaths
Historical vector of all output paths where scanner measurements were written.
Definition: Scanner.h:96
void onSimulationFinished()
Exposes ScanningPulseProcess::onSimulationFinished method of the scanning pulse process defining this...
Definition: Scanner.h:536
std::shared_ptr< std::vector< Trajectory > > allTrajectories
Historical vector of all trajectory points recorded by the scanner.
Definition: Scanner.h:110
virtual std::vector< double > & getTimeWave(size_t const idx)=0
Obtain the time discretization vector of the scanning device.
double calcFootprintRadius(double const distance, size_t const idx)
Compute the footprint radius .
Definition: Scanner.cpp:247
virtual double getBeamQuality(size_t const idx) const =0
Get beam quality.
virtual double getReceiverDiameter(size_t const idx) const =0
Get receiver diameter.
void setPulseFreq_Hz(int const pulseFreq_Hz)
Set the pulse frequency.
Definition: Scanner.cpp:253
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.
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.
virtual Rotation & getHeadRelativeEmitterAttitudeByRef(size_t const idx=0)=0
Obtain the head's relative emitter attitude by reference (can be written)
virtual double getBt2(size_t const idx) const =0
Obtain .
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.
Definition: Scanner.cpp:22
void setFixedIncidenceAngle(bool const fixedIncidenceAngle)
Set fixed incidence angle flag.
Definition: Scanner.h:1150
virtual void setDr2(double const dr2, size_t const idx)=0
Set .
void setTimeWave(std::vector< double > &&timewave)
Non index version of the Scanner::setTimeWave(std::vector<double> &&, size_t const) method.
Definition: Scanner.h:1495
virtual void applySettingsFWF(FWFSettings settings, size_t const idx)
Apply full wave form settings.
Definition: Scanner.cpp:226
FWFSettings & getFWFSettings()
Non index version of the Scanner::getFWFSettings(size_t const)
Definition: Scanner.h:1319
std::shared_ptr< ScannerSettings > retrieveCurrentSettings()
Non index version of the Scanner::retrieveCurrentSettings(size_t const) method.
Definition: Scanner.h:272
bool isPlatformNoiseDisabled()
Check if platform noise is disabled (true) or not (false)
Definition: Scanner.h:1127
double getBeamQuality() const
No index argument version of the Scanner::getBeamQuality method.
Definition: Scanner.h:746
std::shared_ptr< std::mutex > allMeasurementsMutex
Mutex to handle concurrent access to historical vector of all measurements and historical vector of a...
Definition: Scanner.h:118
void setEfficiency(double const efficiency)
No index argument version of the Scanner::setEfficiency method.
Definition: Scanner.h:789
void handleSimStepNoise(glm::dvec3 &absoluteBeamOrigin, Rotation &absoluteBeamAttitude)
Handle position and attitude noise.
Definition: Scanner.cpp:287
virtual void setBeamDivergence(double const beamDivergence, size_t const idx)=0
Set beam divergence.
virtual void setScannerHead(std::shared_ptr< ScannerHead > scannerHead, size_t const idx)=0
Set the scanner head of the scanning device.
virtual void setLastPulseWasHit(bool const lastPulseWasHit, size_t const idx)=0
Specify if last pulse was hit (true) or not (false)
virtual void setDeviceId(std::string const deviceId, size_t const idx)=0
Set the scanner device identifier.
void setBeamWaistRadius(double const beamWaistRadius)
No index argument version of the Scanner::setBeamWaistRadius method.
Definition: Scanner.h:942
virtual double getBeamWaistRadius(size_t const idx) const =0
Obtain beam waist radius.
void prepareDiscretization()
Non index version of the Scanner::prepareDiscretization method.
Definition: Scanner.h:325
void setFWFSettings(FWFSettings const &fwfSettings)
Non index version of the Scanner::setFWFSettings(FWFSettings &, size_t const) method.
Definition: Scanner.h:1334
virtual double getEfficiency(size_t const idx) const =0
Obtain device efficiency.
virtual void setBeamQuality(double const beamQuality, size_t const idx)=0
Set beam quality.
int getNumRays() const
Non index version of the Scanner::getNumRays(size_t const) method.
Definition: Scanner.h:580
void trackOutputPath(std::string const &path)
Track given output path in a thread safe way.
Definition: Scanner.cpp:369
std::string getScannerId() const
Obtain the identifier of the scanner.
Definition: Scanner.h:1157
virtual void setHeadRelativeEmitterAttitude(Rotation const &attitude, size_t const idx=0)=0
Obtain the head's relative emitter attitude.
void setVisibility(double const visibility)
No index argument version of the Scanner::setVisibility method.
Definition: Scanner.h:848
std::shared_ptr< std::vector< Measurement > > allMeasurements
Historical vector of all measurements performed by the scanner.
Definition: Scanner.h:103
void setDr2(double const dr2)
No index argument version of the Scanner::setDr2 method @Scanner::setDr2(double const,...
Definition: Scanner.h:1056
virtual Rotation calcAbsoluteBeamAttitude(size_t const idx)=0
Compute the absolute beam attitude considering the mount relative attitude and the deflector relative...
virtual void setBeamWaistRadius(double const beamWaistRadius, size_t const idx)=0
Set beam waist radius.
double calcAtmosphericAttenuation() const
Non index version of Scanner::calcAtmosphericAttenuation.
Definition: Scanner.h:390
virtual void setEfficiency(double const efficiency, size_t const idx=0)=0
Set device efficiency.
void setBeamDivergence(double const beamDivergence)
No index argument version of the Scanner::setBeamDivergence method.
Definition: Scanner.h:701
bool writeWaveform
Flag specifying if write waveform (true) or not (false)
Definition: Scanner.h:39
std::shared_ptr< UniformNoiseSource< double > > intersectionHandlingNoiseSource
Uniform noise source for single thread mode.
Definition: Scanner.h:171
virtual std::shared_ptr< Scanner > clone()=0
Make a clone of this scanner.
virtual size_t getNumDevices() const =0
Obtain the number of scanning devices composing the scanner.
double trajectoryTimeInterval_ns
Time interval between record of trajectory points. When it is exactly 0, then no trajectory points wi...
Definition: Scanner.h:151
virtual void applySettings(std::shared_ptr< ScannerSettings > settings, size_t const idx)=0
Apply scanner settings.
virtual bool lastPulseWasHit(size_t const idx) const =0
Check if last pulse was hit (true) or not (false) for the scanning device.
void setTimeWave(std::vector< double > &timewave)
Non index version of the Scanner::setTimeWave(std::vector<double> &, size_t const) method.
Definition: Scanner.h:1480
bool isCalcEchowidth() const
Check if scanner is configured to compute echo width (true) or not (false)
Definition: Scanner.h:1095
void setBeamQuality(double const beamQuality)
No index argument version of the Scanner::setBeamQuality method.
Definition: Scanner.h:761
std::vector< double > & getTimeWave()
Non index version of the Scanner::getTimeWave(size_t const) method.
Definition: Scanner.h:1464
std::shared_ptr< FMSFacade > fms
Main facade to file management system.
Definition: Scanner.h:83
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.
void setFullWaveNoise(bool const fullWaveNoise)
Set scanner full wave noise policy.
Definition: Scanner.h:1119
virtual double getBeamDivergence(size_t const idx) const =0
Obtain beam divergence.
virtual void setAveragePower(double const averagePower, size_t const idx)=0
Set average power.
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).
virtual void setWavelength(double const wavelength, size_t const idx)=0
Set wave length.
virtual double getAtmosphericExtinction(size_t const idx) const =0
Obtain atmospheric extinction.
double getBeamDivergence() const
No index argument version of the Scanner::getBeamDivergence method.
Definition: Scanner.h:685
std::shared_ptr< Platform > platform
Platform carrying the scanner.
Definition: Scanner.h:88
bool calcEchowidth
Flag specifying if calculate echo width (true) or not (false)
Definition: Scanner.h:43
virtual void prepareDiscretization(size_t const idx)=0
Prepare wave discretization.
double lastTrajectoryTime
GPS time (nanoseconds) corresponding to last recorded trajectory point.
Definition: Scanner.h:156
virtual void setReceiverDiameter(double const receiverDiameter, size_t const idx)=0
Set receiver diameter.
void setNumTimeBins(int const numTimeBins)
Non index version of the Scanner::setNumTimeBins(int const, size_t const) method.
Definition: Scanner.h:1421
void setPeakIntensityIndex(int const pii)
Non index version of the Scanner::setPeakIntensityIndex(int const, size_t const) method.
Definition: Scanner.h:1450
void initializeSequentialGenerators()
Initialize randomness generators and noise sources that are necessary for sequential pulse computatio...
Definition: Scanner.cpp:376
void setAllDetectors(std::shared_ptr< AbstractDetector > detector)
Set the detector of each scanning device to the given one.
Definition: Scanner.h:1302
void setBeamDeflector(std::shared_ptr< AbstractBeamDeflector > deflector)
Non index version of the Scanner::setBeamDeflector method.
Definition: Scanner.h:1264
bool isWriteWaveform() const
Check if scanner is configured to write wave form (true) or not (false)
Definition: Scanner.h:1079
virtual double getPulseLength_ns(size_t const idx) const =0
Get the pulse length.
std::unique_ptr< ScanningPulseProcess > spp
The scanning pulse process used by the scanner.
Definition: Scanner.h:76
void setReceiverDiameter(double const receiverDiameter)
No index argument version of the Scanner::setReceiverDiameter method.
Definition: Scanner.h:820
virtual std::shared_ptr< ScannerHead > getScannerHead(size_t const idx)=0
Obtain the scanner head of the scanning device.
virtual void onLegComplete()
Exposes ScanningPulseProcess:onLegComplete method of the scanning pulse process defining this scanner...
Definition: Scanner.h:531
double calcFootprintRadius(double const distance)
Non index version of the Scanner::calcFootprintRadius(double const, size_t const) method.
Definition: Scanner.h:364
bool isFixedIncidenceAngle() const
Check if incidence angle is fixed (true) or not (false)
Definition: Scanner.h:1142
void setWriteWaveform(bool const writeWaveform)
Set scanner write wave form configuration.
Definition: Scanner.h:1086
std::string toString()
Build a string representation of the scanner.
Definition: Scanner.cpp:232
std::list< int > & getSupportedPulseFreqs_Hz()
Non index version of the Scanner::getSupportedPulseFreqs_Hz(size_t const) method.
Definition: Scanner.h:1349
double getAveragePower() const
No index argument version of the Scanner::getAveragePower method.
Definition: Scanner.h:716
double getEfficiency() const
No index argument version of the Scanner::getEfficiency method.
Definition: Scanner.h:776
virtual double calcFootprintArea(double const distance, size_t const idx) const =0
Compute the footprint area .
std::string getDeviceId() const
No index argument version of the Scanner::getDeviceId method.
Definition: Scanner.h:1185
int getPulseFreq_Hz() const
Obtain the pulse frequency.
Definition: Scanner.h:601
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,...
virtual int getNumRays(size_t const idx) const =0
Obtain the number of rays of the scanning device.
virtual Rotation getHeadRelativeEmitterAttitude(size_t const idx=0) const =0
Obtain the head's relative emitter attitude.
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...
virtual void calcRaysNumber(size_t const idx)=0
Compute the number of rays depending on beam sample quality for the scanning device.
double getPulseLength_ns() const
No index argument version of the Scanner::getPulseLength_ns method.
Definition: Scanner.h:622
virtual double calcAtmosphericAttenuation(size_t const idx) const =0
virtual int getCurrentPulseNumber(size_t const idx) const =0
Obtain the current pulse number of the scanning device.
std::shared_ptr< std::mutex > cycleMeasurementsMutex
Mutex to handle concurrent access to vector of measurements and vector of trajectory points by cycle.
Definition: Scanner.h:139
virtual void setVisibility(double const visibility, size_t const idx)=0
Set device visibility.
Class defining the scanning pulse process interface.
Definition: ScanningPulseProcess.h:18
The main facade for file management system.
Definition: FMSFacade.h:19