WSF
WsfEOIR_IRST_SensorMode Class Reference

#include <WsfEOIR_IRST_SensorMode.hpp>

Inheritance diagram for WsfEOIR_IRST_SensorMode:
Collaboration diagram for WsfEOIR_IRST_SensorMode:

Public Types

using Result = WsfSensorResult
using Settings = WsfSensor::Settings
using BandList = WsfOpticalEnvironment::BandList

Public Member Functions

 WsfEOIR_IRST_SensorMode (WsfScenario &aScenario)
 WsfEOIR_IRST_SensorMode (const WsfEOIR_IRST_SensorMode &aSrc)
 ~WsfEOIR_IRST_SensorMode () override=default
WsfEOIR_IRST_SensorModeoperator= (const WsfEOIR_IRST_SensorMode &)=delete
bool Initialize (double aSimTime) override
bool ProcessInput (UtInput &aInput) override
void AttemptToDetectInfrared (double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, Result &aResult)
void AttemptToDetectVisual (double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, Result &aResult)
bool BeginDetectionAttempt (double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, Result &aResult)
bool EndDetectionAttempt (double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, Result &aResult)
WsfEM_AntennaGetAntenna ()
WsfEM_RcvrGetReceiver ()
Public Member Functions inherited from WsfSensorMode
 WsfSensorMode ()
 WsfSensorMode (const WsfSensorMode &aSrc)
WsfSensorModeoperator= (const WsfSensorMode &aRhs)
 ~WsfSensorMode () override
WsfPlatformGetPlatform () const
 Return the pointer to the platform to which the associated sensor is attached.
WsfSensorGetSensor () const
 Return the pointer to the sensor with which this mode is associated.
const WsfScenarioGetScenario () const
WsfSimulationGetSimulation () const
WsfModeClone () const override=0
 Create an exact duplicate of this mode.
bool ProcessInput (UtInput &aInput) override
size_t GetOnSuccessModeIndex () const
size_t GetOnFailureModeIndex () const
int GetMessageLength () const
 Return the logical length (int bits) of report messages that originate from this sensor mode.
int GetMessagePriority () const
 Return the priority of report messages that originate from this sensor mode.
void UpdateTrackPosition (WsfTrack *aTrackPtr, WsfSensorResult &aResult, const double aTgtLocationWCS[3])
WsfSensor::SlewMode GetCueMode () const
virtual size_t GetBeamCount () const
virtual WsfSensorBeamGetBeamEntry (size_t aIndex)
virtual bool AttemptToDetect (double aSimTime, WsfPlatform *aTargetPtr, WsfSensor::Settings &aSettings, WsfSensorResult &aResult)=0
virtual double GetAltFreqSelectDelay () const
virtual void ScheduleAltFreqChange (double aSimTime, int aAltFreqId=-1)
virtual bool IsAltFreqChangeScheduled () const
virtual double GetLastAltFreqSelectTime () const
virtual bool IsFrequencyAgile () const
void Deselect (double aSimTime) override=0
void Select (double aSimTime) override=0
virtual void ApplyMeasurementErrors (WsfSensorResult &aResult)
virtual WSF_DEPRECATED void ComputeMeasurementErrors (WsfSensorResult &aResult, double &aAzError, double &aElError, double &aRangeError, double &aRangeRateError) final
virtual void InitializeTrack (double aSimTime, WsfTrack *&aTrackPtr)
virtual void UpdateSensorCueingLimits ()
virtual void UpdateTrack (double aSimTime, WsfTrack *aTrackPtr, WsfPlatform *aTargetPtr, WsfSensorResult &aResult)
virtual void UpdateTrackReportingFlags (double aSimTime, WsfTrack *aTrackPtr)
virtual bool WithinDetectionRange (double aSimTime, WsfPlatform *aTargetPtr)
double GetMaximumRange () const
 Return the optimistic maximum range of the sensor mode.
int GetMaximumRequestCount () const
 Return the maximum number of cued-search or tracking requests the mode can support.
bool DisablesSearch () const
 Does using this mode prevent this or any other mode from searching?
bool CanSearchWhileTrack () const
 Can this mode continue to search while it is also performing tracking requests.
double GetFrameTime () const
void SetFrameTime (double aFrameTime)
double GetRevisitTime () const
double GetDwellTime () const
double GetRequiredPd () const
double EstablishTrackProbability () const
double MaintainTrackProbability () const
int HitsToEstablishTrack () const
 The number of hits (M) within the window (N) that are required to establish a track.
int EstablishTrackWindow () const
 The window size (N) for establishing a track.
int HitsToMaintainTrack () const
 The number of hits (M) within the window (N) that are required to maintain a track.
int MaintainTrackWindow () const
 The window size (N) for maintaining a track.
unsigned int EstablishTrackMask () const
unsigned int MaintainTrackMask () const
double GetTrackQuality () const
unsigned int GetReportingFlags () const
 Accessors for the reporting flags.
bool ReportsLocation () const
bool ReportsVelocity () const
bool ReportsRange () const
bool ReportsBearing () const
bool ReportsElevation () const
bool ReportsRangeRate () const
bool ReportsSide () const
bool ReportsType () const
bool ReportsIFF_Status () const
bool ReportsSignalToNoise () const
bool ReportsFrequency () const
bool ReportsPulseWidth () const
bool ReportsPulseRepititionInterval () const
const wsf::SensorErrorModelBaseGetErrorModel () const
wsf::SensorErrorModelBaseGetErrorModel ()
void SetErrorModel (std::unique_ptr< wsf::SensorErrorModelBase > aErrorModelPtr)
virtual WSF_DEPRECATED double GetAzErrorStdDev () final
virtual WSF_DEPRECATED double GetElErrorStdDev () final
virtual WSF_DEPRECATED double GetRangeErrorStdDev () final
virtual WSF_DEPRECATED double GetRangeRateErrorStdDev () final
virtual WSF_DEPRECATED void SetAzErrorStdDev (double aAzErrorStdDev) final
virtual WSF_DEPRECATED void SetElErrorStdDev (double aElErrorStdDev) final
virtual WSF_DEPRECATED void SetRangeErrorStdDev (double aRangeErrorStdDev) final
virtual WSF_DEPRECATED void SetRangeRateErrorStdDev (double aRangeRateErrorStdDev) final
Public Member Functions inherited from WsfMode
 WsfMode ()
 ~WsfMode () override=default
size_t GetModeIndex () const
 Return the index of this mode within its associated mode list.
bool IsSelected () const
 Returns 'true' if the mode is selected.
Public Member Functions inherited from WsfNamed
 WsfNamed ()
 WsfNamed (WsfStringId aName)
 WsfNamed (const WsfNamed &)=default
WsfNamedoperator= (const WsfNamed &)=default
virtual ~WsfNamed ()=default
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Protected Member Functions

double ComputeInstallationEffects (Result &aResult)
double ComputeProbabilityOfDetection (double aSignal, double aNoise, double aThreshold)
void SetVisualBandDefault (bool aVisualBand)
bool InitializeReporting ()
virtual void SelectAlternateFrequency (double aSimTime, int aAltFreqId=-1)
void SetCapabilities (unsigned int aFlags)
void SetReportingFlags (unsigned int aFlags)

Protected Attributes

WsfEM_Antenna mAntenna
WsfEM_Rcvr mRcvr
WsfOpticalEnvironment mEnvironment
BandList mOpticalBands
WsfEM_Types::OpticalBand mOpticalBand
 Optical spectrum band (visual, or one of the IR bands).
WsfEM_Types::InfraredBand mInfraredBand
 Band for infrared spectrum (only valid if IR band selected).
bool mDetectNegativeContrast
 true if negative contrast is the same as positive contrast
bool mUseSimpleVisualDetector
 If true, use the simple legacy visual detector.
double mDetectorGain
double mIntegrationGain
double mNoiseEquivalentIrradiance
double mDetectionThreshold
 Noise Equivalent Irradiance (NEI) (W/m^2).
WsfSensormSensorPtr
 Pointer to the sensor with which the mode is associated.
WsfPlatformmPlatformPtr
 Pointer to the platform with which the sensor is associated.
double mMaximumRange
double mAzCueRate
double mElCueRate
double mMinAzCue
double mMaxAzCue
double mMinElCue
double mMaxElCue
WsfSensor::SlewMode mCueMode
int mMaximumRequestCount
bool mCanSearchWhileTrack
bool mDisablesSearch
double mFrameTime
double mRevisitTime
double mDwellTime
double mRequiredPd
double mEstablishTrackProbability
 When the M/N establish track criteria is met, this is the probability that a track will be established.
double mMaintainTrackProbability
int mHitsToEstablishTrack
 The number of hits (M) within the window (N) that are required to establish a track.
int mEstablishTrackWindow
 The window size (N) for establishing a track.
unsigned int mEstablishTrackMask
int mHitsToMaintainTrack
 The number of hits (M) within the window (N) that are required to maintain a track.
int mMaintainTrackWindow
 The window size (N) for maintaining a track.
unsigned int mMaintainTrackMask
double mTrackQuality
 Base line track quality (0..1].
double mAzErrorStdDev
double mElErrorStdDev
double mRangeErrorStdDev
double mRangeRateErrorStdDev
 Range rate error standard deviation.
ut::CloneablePtr< wsf::SensorErrorModelBasemErrorModelPtr {nullptr}
 The model that calculates and applies errors to sensor detection results.
WsfStringId mOnSuccessModeName
size_t mOnSuccessModeIndex
WsfStringId mOnFailureModeName
size_t mOnFailureModeIndex
int mMessageLength
 The length of messages originating from this sensor mode.
int mMessagePriority
 The priority of messages originating from this sensor mode.
WsfSpatialDomain mReportsSpatialDomain
ReportingFlags mReportingFlags
ReportingFlags mCapabilitiesFlags

Deprecated input for the old simple attenuation model

Signal-To-Noise required for detection

double mAtmosphericAttenuation
UtAtmosphere mAtmosphere
 Attenuation (1/m).
bool mComputeOldInstallationEffects
 Atmosphere model.

Additional Inherited Members

static const unsigned int cNONE = 0
 The following are flags/masks meant to be combined and used in the SetCapabilities method.
static const unsigned int cLOCATION = 1
static const unsigned int cVELOCITY = 2
static const unsigned int cRANGE = 4
static const unsigned int cBEARING = 8
static const unsigned int cELEVATION = 16
static const unsigned int cRANGE_RATE = 32
static const unsigned int cSIDE = 64
static const unsigned int cTYPE = 128
static const unsigned int cIFF_STATUS = 256
static const unsigned int cSIGNAL_TO_NOISE = 512
static const unsigned int cFREQUENCY = 1024
static const unsigned int cPULSEWIDTH = 2048
static const unsigned int cPULSE_REPITITION_INTERVAL = 4096
static const unsigned int cSTATE_COVARIANCE = 8192
static const unsigned int cOTHER = 16384
static const unsigned int cALL = 0xFFFFFFFF
 Catch-all for anything other than the above.

Detailed Description

A base class for the common processing of WsfEOIR_Sensor and WsfIRST_Sensor.

WsfEOIR_Sensor and WsfIRST_Sensor employ the same physical detection methodologies. Formerly each duplicated the associated code, but now it has be merged into a common base.

Member Typedef Documentation

◆ BandList

◆ Result

◆ Settings

Constructor & Destructor Documentation

◆ WsfEOIR_IRST_SensorMode() [1/2]

◆ WsfEOIR_IRST_SensorMode() [2/2]

◆ ~WsfEOIR_IRST_SensorMode()

WsfEOIR_IRST_SensorMode::~WsfEOIR_IRST_SensorMode ( )
overridedefault

Member Function Documentation

◆ AttemptToDetectInfrared()

◆ AttemptToDetectVisual()

◆ BeginDetectionAttempt()

bool WsfEOIR_IRST_SensorMode::BeginDetectionAttempt ( double aSimTime,
WsfPlatform * aTargetPtr,
Settings & aSettings,
Result & aResult )

◆ ComputeInstallationEffects()

double WsfEOIR_IRST_SensorMode::ComputeInstallationEffects ( Result & aResult)
protected

Compute the effects on reception due to the sensors installation on the vehicle.

Returns
A multiplication factor for the effective target irradiance.
Note
This method is deprecated. It allows the user to define an antenna_pattern that defines the loss. The preferred method is to use 'masking_pattern'.

References mAntenna, WsfEM_Interaction::BeamData::mAz, WsfEM_Interaction::BeamData::mEBS_Az, WsfEM_Interaction::BeamData::mEBS_El, WsfEM_Interaction::BeamData::mEl, WsfEM_Interaction::BeamData::mGain, mRcvr, WsfEM_Interaction::mRcvrBeam, WsfEM_Interaction::mRcvrToTgt, and WsfEM_Interaction::RelativeData::mUnitVecWCS.

Referenced by AttemptToDetectInfrared(), and AttemptToDetectVisual().

◆ ComputeProbabilityOfDetection()

double WsfEOIR_IRST_SensorMode::ComputeProbabilityOfDetection ( double aSignal,
double aNoise,
double aThreshold )
protected

Compute the probability of detection.

Parameters
aSignal[input] The effective target irradiance (CEI)
aNoise[input] The noise equivalent irradiance (NEI)
aThreshold[input] The signal-to-noise ratio required to generate a Pd = 0.5.
Returns
The probability of detection in the range [0, 1]

Referenced by AttemptToDetectInfrared(), and AttemptToDetectVisual().

◆ EndDetectionAttempt()

bool WsfEOIR_IRST_SensorMode::EndDetectionAttempt ( double aSimTime,
WsfPlatform * aTargetPtr,
Settings & aSettings,
Result & aResult )

Perform common processing to start a detection attempt.

This is called by AttemptToDetect to perform the common actions at the end of a detection attempt.

Returns
true if the target was detected and false if not.

References WsfSensorMode::GetSensor(), WsfEM_Interaction::MaskedByTerrain(), WsfSensor::NotifySensorDetectionAttempted(), WsfSensorComponent::PostAttemptToDetect(), WsfEM_Interaction::Print(), and WsfSensor::ScriptAllowDetection().

Referenced by WsfEOIR_Sensor::EOIR_Mode::AttemptToDetect(), WsfIRST_Sensor::IRST_Mode::AttemptToDetect(), and operator=().

◆ GetAntenna()

WsfEM_Antenna & WsfEOIR_IRST_SensorMode::GetAntenna ( )
inline

◆ GetReceiver()

WsfEM_Rcvr & WsfEOIR_IRST_SensorMode::GetReceiver ( )
inline

References mRcvr.

Referenced by WsfEOIR_Sensor::Update().

◆ Initialize()

◆ operator=()

◆ ProcessInput()

◆ SetVisualBandDefault()

void WsfEOIR_IRST_SensorMode::SetVisualBandDefault ( bool aVisualBand)
inlineprotected

Declare if 'band visual' is the default, or if an entry is required. WsfEOIR_Sensor defaults to using visual mode while WsfIRST_Sensor requires and band.

References WsfEM_Types::cIRBAND_COUNT, WsfEM_Types::cOPT_IR_COUNT, WsfEM_Types::cOPT_VISUAL, mInfraredBand, mOpticalBand, and mUseSimpleVisualDetector.

Referenced by WsfEOIR_Sensor::EOIR_Mode::EOIR_Mode(), and WsfIRST_Sensor::IRST_Mode::IRST_Mode().

Member Data Documentation

◆ mAntenna

◆ mAtmosphere

UtAtmosphere WsfEOIR_IRST_SensorMode::mAtmosphere
protected

◆ mAtmosphericAttenuation

double WsfEOIR_IRST_SensorMode::mAtmosphericAttenuation
protected

◆ mComputeOldInstallationEffects

bool WsfEOIR_IRST_SensorMode::mComputeOldInstallationEffects
protected

Atmosphere model.

'true' if the old (deprecated) method of computing installation effects should be used. This will be set to 'true' if the receiver has an antenna_pattern. The preferred method is to use a 'masking_pattern'.

Referenced by AttemptToDetectInfrared(), AttemptToDetectVisual(), Initialize(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mDetectionThreshold

double WsfEOIR_IRST_SensorMode::mDetectionThreshold
protected

Noise Equivalent Irradiance (NEI) (W/m^2).

Referenced by AttemptToDetectInfrared(), Initialize(), ProcessInput(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mDetectNegativeContrast

bool WsfEOIR_IRST_SensorMode::mDetectNegativeContrast
protected

true if negative contrast is the same as positive contrast

Referenced by AttemptToDetectInfrared(), ProcessInput(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mDetectorGain

double WsfEOIR_IRST_SensorMode::mDetectorGain
protected

◆ mEnvironment

WsfOpticalEnvironment WsfEOIR_IRST_SensorMode::mEnvironment
protected

◆ mInfraredBand

WsfEM_Types::InfraredBand WsfEOIR_IRST_SensorMode::mInfraredBand
protected

Band for infrared spectrum (only valid if IR band selected).

Referenced by AttemptToDetectInfrared(), ProcessInput(), SetVisualBandDefault(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mIntegrationGain

double WsfEOIR_IRST_SensorMode::mIntegrationGain
protected

◆ mNoiseEquivalentIrradiance

double WsfEOIR_IRST_SensorMode::mNoiseEquivalentIrradiance
protected

◆ mOpticalBand

WsfEM_Types::OpticalBand WsfEOIR_IRST_SensorMode::mOpticalBand
protected

Optical spectrum band (visual, or one of the IR bands).

Referenced by Initialize(), ProcessInput(), SetVisualBandDefault(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mOpticalBands

BandList WsfEOIR_IRST_SensorMode::mOpticalBands
protected

The list of all bands for multi-band detection. If multiple bands are specified, mOpticalBand and mInfraredBand are both still valid, but only for the first band specified (for compatibility)

Referenced by AttemptToDetectInfrared(), AttemptToDetectVisual(), ProcessInput(), WsfEOIR_IRST_SensorMode(), and WsfEOIR_IRST_SensorMode().

◆ mRcvr

◆ mUseSimpleVisualDetector

bool WsfEOIR_IRST_SensorMode::mUseSimpleVisualDetector
protected

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