WSF
WsfSensorResult Class Reference

#include <WsfSensorResult.hpp>

Inheritance diagram for WsfSensorResult:
Collaboration diagram for WsfSensorResult:

Public Types

enum  {
  cCONCEALMENT = 0x00010000 , cDOPPLER_LIMITS = 0x00020000 , cVELOCITY_LIMITS = 0x00040000 , cTARGET_DELETED = 0x00080000 ,
  cOTH_LIMITS = 0x00100000 , cEXCLUSION_SOLAR = 0x00200000 , cEXCLUSION_LUNAR = 0x00400000 , cMOON_BLOCKED = 0x00800000 ,
  cDETECTION_STOP = 0x01000000 , cSCRIPT_CONSTRAINT = 0x02000000
}
 Status flag values used in mCheckedStatus and mFailedStatus. More...
Public Types inherited from WsfEM_Interaction
enum  {
  cRCVR_RANGE_LIMITS = 0x00000001 , cRCVR_ALTITUDE_LIMITS = 0x00000002 , cRCVR_ANGLE_LIMITS = 0x00000004 , cRCVR_HORIZON_MASKING = 0x00000008 ,
  cRCVR_TERRAIN_MASKING = 0x00000010 , cXMTR_RANGE_LIMITS = 0x00000020 , cXMTR_ALTITUDE_LIMITS = 0x00000040 , cXMTR_ANGLE_LIMITS = 0x00000080 ,
  cXMTR_HORIZON_MASKING = 0x00000100 , cXMTR_TERRAIN_MASKING = 0x00000200 , cSIGNAL_LEVEL = 0x00000400 , cSTATUS_MASK = 0x0000FFFF
}
enum  Geometry { cXMTR_TO_TARGET , cTARGET_TO_RCVR , cXMTR_TO_RCVR }
using Component = WsfEM_InteractionComponent
using ComponentList = WsfComponentListT<WsfEM_InteractionComponent>

Public Member Functions

 WsfSensorResult ()=default
 ~WsfSensorResult () override=default
bool Detected () const
void PrintStatus (ut::log::MessageStream &aStream) const override
 WsfEM_Interaction interface:
void PrintStatusP (ut::log::MessageStream &aStream) const override
unsigned int BeginOneWayInteraction (WsfEM_Rcvr *aRcvrPtr, WsfPlatform *aTgtPtr) override
unsigned int BeginOneWayInteraction (WsfEM_Xmtr *aXmtrPtr, WsfEM_Rcvr *aRcvrPtr, bool aCheckXmtrLimits, bool aCheckRcvrLimits, bool aCheckMaskingFactor=true) override
unsigned int BeginTwoWayInteraction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr) override
unsigned int BeginTwoWayOTH_Interaction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr, double aReflectionLocWCS[3]) override
unsigned int BeginGenericInteraction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr) override
void ComputeUndefinedGeometry () override
void Reset () override
void Reset (const WsfSensor::Settings &aSettings)
void Reset (const WsfSensorResult &aResult)
const char * GetScriptClassName () const override
Public Member Functions inherited from WsfEM_Interaction
 WsfEM_Interaction ()=default
 ~WsfEM_Interaction () override=default
double ComputeAttenuationFactor (Geometry aGeometry)
 Compute the attenuation loss between two points.
void ComputeMaskingFactor ()
 Compute the masking factor.
void ComputeInfraredSigAzEl ()
void ComputeOpticalSigAzEl ()
void ComputeRadarSigAzEl ()
double ComputeRF_OneWayPower ()
double ComputeRF_TwoWayPower (double aCrossSection)
double ComputeRF_ReceivedPower (double aPowerDensity)
double ComputeRF_TransmittedPower ()
double ComputeTargetDopplerFrequency (bool aFilterOwnshipFromDoppler)
double ComputeTargetDopplerSpeed (bool aFilterOwnshipFromDoppler)
WsfEM_RcvrGetReceiver () const
WsfEM_XmtrGetTransmitter () const
WsfPlatformGetTarget () const
bool MaskedByTerrain ()
 Does the terrain mask any part of the computation?
virtual void Print (ut::log::MessageStream &aMsgStream)
 Print the interaction data to standard output.
virtual void PrintGeometry (ut::log::MessageStream &aMsgStream)
double PrintableAngle (double aAngle) const
 A convenience method to return a printable angle.
const char * GetScriptClassName () const override
void SetReceiverBeamPosition ()
void SetReceiverBeamPosition (const BeamData &aBeamData)
void SetTransmitterBeamPosition ()
void SetTransmitterBeamPosition (const BeamData &aBeamData)
bool WithinFieldOfView (WsfEM_Antenna *aAntennaPtr, LocationData &aSrcLoc, LocationData &aTgtLoc, RelativeData &aSrcToTgt, RelativeData &aTgtToSrc, bool aIgnoreLimits=false)
void SetCategory (WsfStringId aCategory)
bool CategoryIsSet () const
void AddComponent (Component *aComponentPtr)
const ComponentListGetComponents () const

Public Attributes

size_t mModeIndex {0}
size_t mXmtrIndex {0}
 The transmitter index.
size_t mRcvrIndex {0}
 The receiver index.
size_t mBeamIndex {0}
WsfMeasurement mMeasurement
double mPd {0.0}
double mRequiredPd {0.0}
Public Attributes inherited from WsfEM_Interaction
unsigned int mCheckedStatus {0}
unsigned int mFailedStatus {0}
bool mBistatic {false}
LocationData mXmtrLoc
LocationData mRcvrLoc
LocationData mTgtLoc
RelativeData mRcvrToTgt
RelativeData mTgtToRcvr
RelativeData mXmtrToTgt
RelativeData mTgtToXmtr
RelativeData mXmtrToRcvr
RelativeData mRcvrToXmtr
BeamData mRcvrBeam
 Antenna gain lookup data for the receiver.
BeamData mXmtrBeam
 Antenna gain lookup data for the transmitter.
double mMaskingFactor {1.0}
double mInfraredSig {-1.0}
double mInfraredSigAz {0.0}
double mInfraredSigEl {0.0}
double mRadarSig {-1.0}
double mRadarSigAz {0.0}
double mRadarSigEl {0.0}
double mOpticalSig {-1.0}
double mOpticalSigAz {0.0}
double mOpticalSigEl {0.0}
double mOpticalReflectivity {-1.0}
double mXmtdPower {0.0}
double mPowerDensityAtTarget {0.0}
double mRcvdPower {0.0}
double mRcvrNoisePower {0.0}
double mClutterPower {0.0}
double mInterferencePower {0.0}
double mInterferenceFactor {0.0}
double mSignalToNoise {0.0}
double mPropagationFactor {0.0}
double mAbsorptionFactor {0.0}
double mBackgroundRadiantIntensity {0.0}
double mContrastRadiantIntensity {0.0}
double mDetectionThreshold {0.0}
double mPixelCount {0.0}
double mEarthRadiusScale {0.0}
WsfStringId mCategoryId {nullptr}
 If non-zero, the name of ID of the category to be used for zone-based attenuation.
double mZoneAttenuationValue {0.0}
 The computed zone-based attenuation factor.

Additional Inherited Members

Static Public Member Functions inherited from WsfEM_Interaction
static bool MaskedByHorizon (const WsfEM_Xmtr *aXmtrPtr, const WsfEM_Rcvr *aRcvrPtr)
static bool MaskedByHorizon (const WsfEM_XmtrRcvr *aXmtrRcvrPtr, WsfPlatform *aPlatformPtr, double aEarthRadiusScale)
static bool MaskedByHorizon (const WsfEM_XmtrRcvr *aXmtrRcvrPtr, WsfPlatform *aPlatformPtr, double aReflectionPointWCS[3], double aEarthRadiusScale)

Detailed Description

Result class is supplied to the AttemptToDetect method. On output it contains detailed data about the detection attempt. Not every sensor will update every member. Each member documents under what conditions it is valid. It is the responsibility of the caller to ensure that the member they are using contains valid data.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Status flag values used in mCheckedStatus and mFailedStatus.

Enumerator
cCONCEALMENT 

Concealment checked/failed.

cDOPPLER_LIMITS 

Doppler limits checked/failed.

cVELOCITY_LIMITS 

Velocity limits checked/failed.

cTARGET_DELETED 

Target deleted.

cOTH_LIMITS 

OTH Bounce Constraints.

cEXCLUSION_SOLAR 

Solar exclusion is blocking sensor.

cEXCLUSION_LUNAR 

Lunar exclusion is blocking sensor.

cMOON_BLOCKED 

Moon is blocking the sensor from target.

cDETECTION_STOP 

Sensor stops detecting.

cSCRIPT_CONSTRAINT 

Externally defined script check.

Constructor & Destructor Documentation

◆ WsfSensorResult()

WsfSensorResult::WsfSensorResult ( )
default

◆ ~WsfSensorResult()

WsfSensorResult::~WsfSensorResult ( )
overridedefault

References Detected(), and WsfSensorResult().

Member Function Documentation

◆ BeginGenericInteraction()

unsigned int WsfSensorResult::BeginGenericInteraction ( WsfEM_Xmtr * aXmtrPtr,
WsfPlatform * aTgtPtr,
WsfEM_Rcvr * aRcvrPtr )
overridevirtual

◆ BeginOneWayInteraction() [1/2]

unsigned int WsfSensorResult::BeginOneWayInteraction ( WsfEM_Rcvr * aRcvrPtr,
WsfPlatform * aTgtPtr )
overridevirtual

Initialize an interaction between a receiver and a target platform.

This form is typically used where a passive sensor is attempting to detect a platform.

Parameters
aRcvrPtr[input] The receiver.
aTgtPtr[input] The target platform.
Returns
0 if the target is within the geometric limitations of the receiver and not masked by the Earth's horizon.

Reimplemented from WsfEM_Interaction.

References WsfEM_Interaction::BeginOneWayInteraction(), WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetLocationWCS(), mMeasurement, and WsfEM_Interaction::mRcvrToTgt.

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::BeginDetectionAttempt(), and WsfEOIR_Sensor::ProcessSensorDetectionChanged().

◆ BeginOneWayInteraction() [2/2]

unsigned int WsfSensorResult::BeginOneWayInteraction ( WsfEM_Xmtr * aXmtrPtr,
WsfEM_Rcvr * aRcvrPtr,
bool aCheckXmtrLimits,
bool aCheckRcvrLimits,
bool aCheckMaskingFactor = true )
overridevirtual

Initialize an interaction between a transmitter and a receiver.

This is typically used in one of the following situations:

  • A passive sensing device.
  • A communications transmission.
Parameters
aXmtrPtr[input] The transmitter.
aRcvrPtr[input] The receiver.
aCheckXmtrLimits[input] 'true' if transmitter geometric limits should be checked. This should be 'true' for comm and interference interactions and 'false' for Passive-type interactions.
aCheckRcvrLimits[input] 'true' if receiver geometric limits should be checked. This should be 'true' for comm, passive-type interactions and 'false' for interference-type interactions.
aCheckMaskingFactor[input] 'true' if the masking 'factor', which we don't want for a bistatic calculation between the transmitter and receiver. This function is void of a target, so it should have never called masking factor. But other users expect it, so it stays.
Returns
0 if the transmitter and receiver are within each others geometric limits and are not masked by the Earth's horizon.

Reimplemented from WsfEM_Interaction.

References WsfEM_Interaction::BeginOneWayInteraction(), WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetLocationWCS(), mMeasurement, and WsfEM_Interaction::mRcvrToXmtr.

◆ BeginTwoWayInteraction()

unsigned int WsfSensorResult::BeginTwoWayInteraction ( WsfEM_Xmtr * aXmtrPtr,
WsfPlatform * aTgtPtr,
WsfEM_Rcvr * aRcvrPtr )
overridevirtual

Initialize an interaction between a transmitter, a target and a receiver.

This is typically used to model a radar system (or something that sends out a signal and looks at the reflection from a target).

Parameters
aXmtrPtr[input] The transmitter.
aTgtPtr[input] The target.
aRcvrPtr[input] The receiver.
Returns
0 if the target is within the geometric limits of the transmitter and receiver and not masked by the Earth's horizon.

Reimplemented from WsfEM_Interaction.

References WsfEM_Interaction::BeginTwoWayInteraction(), WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetLocationWCS(), mMeasurement, and WsfEM_Interaction::mRcvrToTgt.

Referenced by WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), and WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect().

◆ BeginTwoWayOTH_Interaction()

unsigned int WsfSensorResult::BeginTwoWayOTH_Interaction ( WsfEM_Xmtr * aXmtrPtr,
WsfPlatform * aTgtPtr,
WsfEM_Rcvr * aRcvrPtr,
double aReflectionLocWCS[3] )
overridevirtual

◆ ComputeUndefinedGeometry()

void WsfSensorResult::ComputeUndefinedGeometry ( )
overridevirtual

A convenience method to fill any un-computed geometry data. This is used internally and by event output for preparing geometry data for display.

Using this method allows interactions to be aborted early in processing (such as concealment or Doppler) prior to calling Begin...WayInteraction(). Eliminating the Begin...WayInteraction call can save a lot of time, but it also means that the geometry data has not be computed and stored in the interaction object. By calling this from a display routine, it will ensure the necessary values are computed without incurring the overhead of ALWAYS computing them even when an interaction has been aborted early.

Reimplemented from WsfEM_Interaction.

References WsfEM_Interaction::ComputeUndefinedGeometry(), WsfEM_Interaction::GetReceiver(), WsfEM_Interaction::GetTarget(), WsfEM_Interaction::mRcvrToTgt, and WsfEM_Interaction::mRcvrToXmtr.

Referenced by WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfSAR_Sensor::SAR_Mode::ComputeCNR(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), WsfOTH_RadarSensor::PerformScheduledDetections(), and WsfRadarSensor::PerformScheduledDetections().

◆ Detected()

◆ GetScriptClassName()

const char * WsfSensorResult::GetScriptClassName ( ) const
override

Get the name of the script class associated with this class. This is necessary for proper downcasts in the scripting language.

◆ PrintStatus()

void WsfSensorResult::PrintStatus ( ut::log::MessageStream & aStream) const
overridevirtual

WsfEM_Interaction interface:

Print the status data. Called by the base class Print() method and sensor-specific printing implementations.

Reimplemented from WsfEM_Interaction.

References WsfEM_Interaction::mFailedStatus, mPd, mRequiredPd, and WsfEM_Interaction::PrintStatus().

Referenced by WsfLADAR_Sensor::LADAR_Result::Print().

◆ PrintStatusP()

void WsfSensorResult::PrintStatusP ( ut::log::MessageStream & aStream) const
overridevirtual

◆ Reset() [1/3]

void WsfSensorResult::Reset ( )
overridevirtual

Reset the detection data for a new detection chance.

This only resets those values that are absolutely necessary. Values whose validity can be determined by looking at other values are NOT reset.

Reimplemented from WsfEM_Interaction.

References mBeamIndex, mMeasurement, mModeIndex, mPd, mRequiredPd, and WsfEM_Interaction::Reset().

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfNullSensor::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Beam::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Mode::AttemptToDetect(), WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfRadarSensor::RadarBeam::AttemptToDetect(), WsfRadarSensor::RadarMode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfTRIMSIM_Processor::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfEOIR_IRST_SensorMode::BeginDetectionAttempt(), WsfPassiveSensor::PassiveMode::CanDetect(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), WsfOTH_RadarSensor::PerformScheduledDetections(), WsfRadarSensor::PerformScheduledDetections(), WsfSensor::PerformScheduledDetections(), WsfLocalSensorResult::Reset(), Reset(), and Reset().

◆ Reset() [2/3]

void WsfSensorResult::Reset ( const WsfSensor::Settings & aSettings)

Reset the detection data for a new detection chance. This is the typical form.

Parameters
aSettingsThe Settings object for the detection chance.

References WsfSensor::Settings::mModeIndex, mModeIndex, WsfSensor::Settings::mRequiredPd, mRequiredPd, and Reset().

◆ Reset() [3/3]

void WsfSensorResult::Reset ( const WsfSensorResult & aResult)

Reset the detection data for a new detection chance. This is an alternative form which first initializes the object and then copies common data from an already initialized Result object. This is typically used when a sensor needs to make multiple internal detection chances in a single user invoked detection chance (such as multi-beam, etc.)

Parameters
aResultAn existing Result from which to copy common data.

References mModeIndex, mRequiredPd, Reset(), and WsfSensorResult().

Member Data Documentation

◆ mBeamIndex

◆ mMeasurement

WsfMeasurement WsfSensorResult::mMeasurement

Measured information, which may include any of the following:

  • The reported spherical location (range, az, el) of the detected object, including measurement errors and filtering.
  • The standard deviations in range, az, and el of the spherical location of the detected object.
  • The range rate and range rate error.
  • The reported side Id.
  • The reported type Id.
  • The reported WCS location.
  • The reported WCS velocity.
  • The transform from WCS to measurement coordinate system.

Referenced by wsf::AbsoluteSensorErrorModel::ApplyMeasurementErrors(), wsf::RadarSensorErrorModel::ApplyMeasurementErrors(), wsf::StandardSensorErrorModel::ApplyMeasurementErrors(), wsf::SurfaceWaveRadarSensorErrorModel::ApplyMeasurementErrors(), WsfEOIR_Sensor::EOIR_ErrorModel::ApplyMeasurementErrors(), WsfJamStrobeDetector::ApplyMeasurementErrors(), WsfPassiveSensor::PassiveMode::PassiveErrorModel::ApplyMeasurementErrors(), WsfSAR_Sensor::SAR_Mode::SAR_ErrorModel::ApplyMeasurementErrors(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), BeginGenericInteraction(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), WsfPassiveSensor::PassiveMode::PassiveErrorModel::ComputeMeasurementErrors(), WsfSAR_Sensor::SAR_Mode::SAR_ErrorModel::ComputeMeasurementErrors(), WsfBeamDirector::WsfBeamDirectorMode::CreateTrackFromResult(), wsf::SimpleDopplerSignalProcessor::Execute(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), wsf::StandardSensorErrorModel::GetSphericalErrorStdDev(), wsf::SurfaceWaveRadarSensorErrorModel::GetSphericalErrorStdDev(), Reset(), WsfDefaultSensorTracker::TargetDetected(), WsfDefaultSensorTracker::TargetUndetected(), WsfEW_SensorComponent::TrackerUpdateTrack(), WsfEOIR_Sensor::Update(), WsfDefaultFusion::UpdateLocalResultFromNonLocalResult(), WsfTargetTypeReporting::UpdateReportedTargetType(), WsfJamStrobeDetector::UpdateTrack(), WsfSensorMode::UpdateTrack(), WsfTRIMSIM_SensorComponent::UpdateTrack(), and WsfSensorMode::UpdateTrackPosition().

◆ mModeIndex

◆ mPd

double WsfSensorResult::mPd {0.0}

The probability of detection. For a binary detector the value will be 1.0 if the signal exceeds the detection threshold and 0.0 if it did not.

Note
By itself, this field should NOT be used for determining if the detection succeeded. Only the boolean return value from AttemptToDetect() should be used as the determining factor. If this value is computed then it will be non-zero even if something other later check causes the detection attempt to fail (such as terrain masking).

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfTRIMSIM_Processor::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), WsfPassiveDetector::ComputeDetectability(), WsfLADAR_Sensor::LADAR_Mode::ComputeProbabilityOfDetection(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), Detected(), wsf::event::utils::PrintSensorResult(), wsf::event::utilsCSV::PrintSensorResult(), PrintStatus(), Reset(), and WsfEOIR_Sensor::Update().

◆ mRcvrIndex

size_t WsfSensorResult::mRcvrIndex {0}

The receiver index.

◆ mRequiredPd

◆ mXmtrIndex

size_t WsfSensorResult::mXmtrIndex {0}

The transmitter index.


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved