WSF
WsfEM_Interaction Class Reference

#include <WsfEM_Interaction.hpp>

Inheritance diagram for WsfEM_Interaction:
Collaboration diagram for WsfEM_Interaction:

Classes

struct  LocationData
 Represents the location of a platform or device. More...
struct  RelativeData
struct  BeamData
 Represents the antenna gain lookup. More...

Public Types

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

 WsfEM_Interaction ()=default
 ~WsfEM_Interaction () override=default
virtual unsigned int BeginOneWayInteraction (WsfEM_Rcvr *aRcvrPtr, WsfPlatform *aTgtPtr)
virtual unsigned int BeginOneWayInteraction (WsfEM_Xmtr *aXmtrPtr, WsfEM_Rcvr *aRcvrPtr, bool aCheckXmtrLimits, bool aCheckRcvrLimits, bool aCheckMaskingFactor=true)
virtual unsigned int BeginTwoWayInteraction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr)
virtual unsigned int BeginTwoWayOTH_Interaction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr, double aReflectionLocWCS[3])
virtual unsigned int BeginGenericInteraction (WsfEM_Xmtr *aXmtrPtr, WsfPlatform *aTgtPtr, WsfEM_Rcvr *aRcvrPtr)
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 ()
virtual void ComputeUndefinedGeometry ()
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)
virtual void PrintStatus (ut::log::MessageStream &aMsgStream) const
 PrintStatus adds a "Status" note and formats it properly if the status mFailedStatus is 0.
virtual void PrintStatusP (ut::log::MessageStream &aMsgStream) const
 Adds a list of notes to aMsgStream with the status.
double PrintableAngle (double aAngle) const
 A convenience method to return a printable angle.
virtual void Reset ()
 Reset the interaction data so it can be reused.
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

Static Public Member Functions

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)

Public Attributes

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.

Member Typedef Documentation

◆ Component

◆ ComponentList

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Bit mask values for mCheckedStatus/mFailedStatus. The base class uses bits 0-10 and reserves bit 11-15 for future use. Derived classes MUST start at bit 16 or higher.

Enumerator
cRCVR_RANGE_LIMITS 

Receiver range limits checked/failed.

cRCVR_ALTITUDE_LIMITS 

Receiver altitude limits checked/failed.

cRCVR_ANGLE_LIMITS 

Receiver angle limits checked/failed.

cRCVR_HORIZON_MASKING 

Receiver horizon masking checked/failed.

cRCVR_TERRAIN_MASKING 

Receiver terrain masking checked/failed.

cXMTR_RANGE_LIMITS 

Transmitter range limits checked/failed.

cXMTR_ALTITUDE_LIMITS 

Transmitter altitude limits checked/failed.

cXMTR_ANGLE_LIMITS 

Transmitter angle limits checked/failed.

cXMTR_HORIZON_MASKING 

Transmitter horizon masking checked/failed.

cXMTR_TERRAIN_MASKING 

Transmitter terrain masking checked/failed.

cSIGNAL_LEVEL 

Signal level checked/failed.

cSTATUS_MASK 

Bit mask of all base-class status bits.

◆ Geometry

Enumerator
cXMTR_TO_TARGET 
cTARGET_TO_RCVR 
cXMTR_TO_RCVR 

Constructor & Destructor Documentation

◆ WsfEM_Interaction()

WsfEM_Interaction::WsfEM_Interaction ( )
default

◆ ~WsfEM_Interaction()

Member Function Documentation

◆ AddComponent()

void WsfEM_Interaction::AddComponent ( Component * aComponentPtr)
inline

◆ BeginGenericInteraction()

unsigned int WsfEM_Interaction::BeginGenericInteraction ( WsfEM_Xmtr * aXmtrPtr,
WsfPlatform * aTgtPtr,
WsfEM_Rcvr * aRcvrPtr )
virtual

Initialize a generic interaction. This method can be used when one of the other 'Begin...Interaction' methods is not appropriate. It simply sets the pointers to the transmitter, target and receiver (which are private) in the interaction structure.

Parameters
aXmtrPtr[input] The transmitter (can be zero if there is no transmitter).
aTgtPtr[input] The target (can be zero if there is no target).
aRcvrPtr[input] The receiver (can be zero if there is no receiver).
Returns
0.

Reimplemented in WsfSensorResult.

References CategoryIsSet(), WsfEM_XmtrRcvr::GetPlatform(), mBistatic, and mEarthRadiusScale.

Referenced by WsfEM_ALARM_Attenuation::atmosphere::attenuation(), WsfSensorResult::BeginGenericInteraction(), WsfFalseTargetBlip::ComputeRcvdPower(), WsfFalseTarget::PowerSufficiencyCheck(), and ~WsfEM_Interaction().

◆ BeginOneWayInteraction() [1/2]

unsigned int WsfEM_Interaction::BeginOneWayInteraction ( WsfEM_Rcvr * aRcvrPtr,
WsfPlatform * aTgtPtr )
virtual

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 in WsfSensorResult.

References CategoryIsSet(), ComputeMaskingFactor(), cRCVR_ALTITUDE_LIMITS, cRCVR_ANGLE_LIMITS, cRCVR_HORIZON_MASKING, cRCVR_RANGE_LIMITS, WsfEM_Rcvr::GetDetectionThreshold(), WsfEM_XmtrRcvr::GetEarthRadiusMultiplier(), WsfEM_Antenna::GetLocationLLA(), WsfEM_Antenna::GetLocationWCS(), WsfEM_Rcvr::GetNoisePower(), WsfEM_XmtrRcvr::GetPlatform(), MaskedByHorizon(), mCheckedStatus, mDetectionThreshold, mEarthRadiusScale, mFailedStatus, mRcvrLoc, mRcvrNoisePower, mRcvrToTgt, mTgtLoc, mTgtToRcvr, WsfEM_Antenna::WithinAltitude(), WithinFieldOfView(), and WsfEM_Antenna::WithinRange().

Referenced by WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfSensorResult::BeginOneWayInteraction(), WsfSensorResult::BeginOneWayInteraction(), BeginTwoWayInteraction(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfESM_Sensor::ESM_Mode::ComputeInterferenceEffect(), WsfEW_RadiusEffect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateGainFactors(), and ~WsfEM_Interaction().

◆ BeginOneWayInteraction() [2/2]

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

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 in WsfSensorResult.

References CategoryIsSet(), WsfEM_Antenna::ComputeAspect(), ComputeMaskingFactor(), cRCVR_ALTITUDE_LIMITS, cRCVR_ANGLE_LIMITS, cRCVR_HORIZON_MASKING, cRCVR_RANGE_LIMITS, cXMTR_ALTITUDE_LIMITS, cXMTR_ANGLE_LIMITS, cXMTR_RANGE_LIMITS, WsfEM_Rcvr::GetDetectionThreshold(), WsfEM_Antenna::GetLocationLLA(), WsfEM_Antenna::GetLocationWCS(), WsfEM_Rcvr::GetNoisePower(), WsfEM_XmtrRcvr::GetPlatform(), MaskedByHorizon(), mCheckedStatus, mDetectionThreshold, mEarthRadiusScale, mFailedStatus, mRcvrLoc, mRcvrNoisePower, mRcvrToXmtr, mXmtrLoc, mXmtrToRcvr, WsfEM_Antenna::WithinAltitude(), WithinFieldOfView(), and WsfEM_Antenna::WithinRange().

◆ BeginTwoWayInteraction()

unsigned int WsfEM_Interaction::BeginTwoWayInteraction ( WsfEM_Xmtr * aXmtrPtr,
WsfPlatform * aTgtPtr,
WsfEM_Rcvr * aRcvrPtr )
virtual

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 in WsfSensorResult.

References BeginOneWayInteraction(), CategoryIsSet(), ComputeMaskingFactor(), cRCVR_ALTITUDE_LIMITS, cRCVR_ANGLE_LIMITS, cRCVR_HORIZON_MASKING, cRCVR_RANGE_LIMITS, cXMTR_ALTITUDE_LIMITS, cXMTR_ANGLE_LIMITS, cXMTR_HORIZON_MASKING, cXMTR_RANGE_LIMITS, WsfEM_Rcvr::GetDetectionThreshold(), WsfEM_Antenna::GetLocationLLA(), WsfEM_Antenna::GetLocationWCS(), WsfEM_Rcvr::GetNoisePower(), WsfEM_XmtrRcvr::GetPlatform(), MaskedByHorizon(), mBistatic, mCheckedStatus, mDetectionThreshold, mEarthRadiusScale, mFailedStatus, mRcvrLoc, mRcvrNoisePower, mRcvrToTgt, mTgtLoc, mTgtToRcvr, mTgtToXmtr, mXmtrLoc, mXmtrToTgt, WsfEM_Antenna::WithinAltitude(), WithinFieldOfView(), and WsfEM_Antenna::WithinRange().

Referenced by WsfSensorResult::BeginTwoWayInteraction(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfEW_SLB_Effect::UpdateEffects(), and ~WsfEM_Interaction().

◆ BeginTwoWayOTH_Interaction()

◆ CategoryIsSet()

◆ ComputeAttenuationFactor()

◆ ComputeInfraredSigAzEl()

void WsfEM_Interaction::ComputeInfraredSigAzEl ( )

Compute the azimuth and elevation to be used for infrared signature determination.

This updates mInfraredSigAz and mInfraredSigEl.

References mInfraredSigAz, mInfraredSigEl, and mTgtToRcvr.

Referenced by WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), and ~WsfEM_Interaction().

◆ ComputeMaskingFactor()

◆ ComputeOpticalSigAzEl()

void WsfEM_Interaction::ComputeOpticalSigAzEl ( )

◆ ComputeRadarSigAzEl()

void WsfEM_Interaction::ComputeRadarSigAzEl ( )

Compute the azimuth and elevation to be used for radar signature determination.

This updates mRadarSigAz and mRadarSigEl.

References mBistatic, mRadarSigAz, mRadarSigEl, mTgtToRcvr, and mTgtToXmtr.

Referenced by WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SLB_Effect::UpdateEffects(), and ~WsfEM_Interaction().

◆ ComputeRF_OneWayPower()

double WsfEM_Interaction::ComputeRF_OneWayPower ( )

◆ ComputeRF_ReceivedPower()

double WsfEM_Interaction::ComputeRF_ReceivedPower ( double aPowerDensityAtAntenna)

Given the power density at the antenna, compute the power at the output of the receiver.

This routine is useful if the caller wants to perform their own signal propagation.

Parameters
aPowerDensityAtAntenna[input] The power density (Watts/m^2) at the antenna.
Returns
The power at the output to the receiver. It also stores the result in mRcvdPower.
Note
This method does not apply polarization effects because the polarization of the signal from the transmitter may have changed due to reflection. The application of these effects is left to the caller.
This method does not apply bandwidth effects because the bandwidth of the signal from the transmitter may have changed due to reflection. The application of these effects is left to the caller.

References mRcvdPower, and mRcvrBeam.

Referenced by ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), and ~WsfEM_Interaction().

◆ ComputeRF_TransmittedPower()

double WsfEM_Interaction::ComputeRF_TransmittedPower ( )

Compute the power radiated from a transmitter in the direction of the target.

This routine is useful if the caller wants to perform their own signal propagation from the transmitter to the target.

Returns
The radiated power in the directory of the target (Watts). It also stores the the result in mXmtdPower.

References mXmtdPower, and mXmtrBeam.

Referenced by ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), and ~WsfEM_Interaction().

◆ ComputeRF_TwoWayPower()

double WsfEM_Interaction::ComputeRF_TwoWayPower ( double aTargetCrossSection)

◆ ComputeTargetDopplerFrequency()

double WsfEM_Interaction::ComputeTargetDopplerFrequency ( bool aFilterOwnshipFromDoppler)

Compute the Target Doppler frequency for this interaction.

Parameters
aFilterOwnshipFromDoppler[input] Flag to indicate if ownship Doppler is filtered.
Returns
The true Doppler frequency of the target (may be negative).

References ComputeUndefinedGeometry(), mRcvrLoc, mTgtLoc, and mXmtrToTgt.

Referenced by WsfRadarMTD_SignalProcessor::Execute(), WsfRadarMTI_SignalProcessor::Execute(), WsfRadarPD_SignalProcessor::Execute(), and ~WsfEM_Interaction().

◆ ComputeTargetDopplerSpeed()

double WsfEM_Interaction::ComputeTargetDopplerSpeed ( bool aFilterOwnshipFromDoppler)

Get the Doppler speed of the target relative to the receiver. This computes the relative speed of the target along the range vector from the receiver to the target.

Parameters
aFilterOwnshipFromDoppler[input] Flag to indicate if ownship Doppler is filtered.
Returns
The Doppler speed of the target relative to the receiver. The value is negative if the target is closing and positive when receding.

References mRcvrLoc, and mTgtLoc.

Referenced by WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), wsf::SimpleDopplerSignalProcessor::Execute(), and ~WsfEM_Interaction().

◆ ComputeUndefinedGeometry()

void WsfEM_Interaction::ComputeUndefinedGeometry ( )
virtual

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 in WsfSensorResult.

References cRCVR_ANGLE_LIMITS, cRCVR_HORIZON_MASKING, cRCVR_RANGE_LIMITS, cXMTR_ANGLE_LIMITS, cXMTR_HORIZON_MASKING, cXMTR_RANGE_LIMITS, mBistatic, mCheckedStatus, mFailedStatus, mRcvrLoc, mRcvrToTgt, mRcvrToXmtr, mTgtLoc, mTgtToRcvr, mTgtToXmtr, mXmtrLoc, mXmtrToRcvr, mXmtrToTgt, and WithinFieldOfView().

Referenced by WsfPassiveSensor::PassiveBeam::AttemptToDetect(), wsf::comm::ComponentHW_LASER::CanSendTo(), WsfFalseTargetBlip::ComputeEquivalentRCS(), ComputeTargetDopplerFrequency(), WsfSensorResult::ComputeUndefinedGeometry(), WsfFalseTarget::PowerSufficiencyCheck(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), PrintGeometry(), WsfEW_RadiusEffect::UpdateEffects(), and ~WsfEM_Interaction().

◆ GetComponents()

const ComponentList & WsfEM_Interaction::GetComponents ( ) const
inline

◆ GetReceiver()

WsfEM_Rcvr * WsfEM_Interaction::GetReceiver ( ) const
inline

Return the pointer to the receiver.

Returns
The pointer to the receiver.

Referenced by wsf::RadarSensorErrorModel::ApplyMeasurementErrors(), wsf::StandardSensorErrorModel::ApplyMeasurementErrors(), WsfJamStrobeDetector::ApplyMeasurementErrors(), WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfCTD_SensorComponent::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), wsf::comm::medium::ModeUnguided::CalculateTransferRate(), WsfEM_Attenuation::ComputeAttenuationFactor(), WsfTabularAttenuation::ComputeAttenuationFactor(), WsfOpticalEnvironment::ComputeBackgroundRadiance(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfEM_SurfaceClutter::ComputeClutterPower(), WsfEM_SurfaceClutterTable::ComputeClutterPower(), WsfPassiveDetector::ComputeDetectability(), WsfAcousticSensor::AcousticMode::ComputeDopplerTerm(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfAcousticSensor::AcousticMode::ComputeIncidenceAngle(), WsfEM_ALARM_Propagation::ComputePropagationFactor(), WsfEM_FastMultipath::ComputePropagationFactor(), WsfEM_GroundWavePropagation::ComputePropagationFactor(), WsfFalseTargetBlip::ComputeRcvdPower(), WsfRF_Jammer::ComputeSingleJammerEffect(), WsfFalseTargetBlip::ComputeSNR(), WsfRF_Jammer::ComputeTotalJammerEffects(), WsfSensorResult::ComputeUndefinedGeometry(), WsfRadarMTD_SignalProcessor::Execute(), WsfEM_Attenuation::GetRangeElevationAltitude(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), wsf::SurfaceWaveRadarSensorErrorModel::GetSphericalErrorStdDev(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), PrintGeometry(), WsfEW_Effects::Process(), WsfEW_Effect::ProcessUnmitigatedEffect(), WsfCTD_SensorComponent::TrackerAllowTracking(), WsfEW_AgilityEffect::UpdateEffects(), WsfEW_Effect::UpdateEffects(), WsfEW_PulseEffect::UpdateEffects(), WsfEW_RadiusEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfEW_TrackEffect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateGainFactors(), WsfDefaultFusion::UpdateLocalResultFromNonLocalResult(), WsfJamStrobeDetector::UpdateTrack(), WsfSensorMode::UpdateTrack(), and WsfSensorMode::UpdateTrackPosition().

◆ GetScriptClassName()

const char * WsfEM_Interaction::GetScriptClassName ( ) const
inlineoverride

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

◆ GetTarget()

WsfPlatform * WsfEM_Interaction::GetTarget ( ) const
inline

◆ GetTransmitter()

WsfEM_Xmtr * WsfEM_Interaction::GetTransmitter ( ) const
inline

Return the pointer to the transmitter.

Returns
The pointer to the transmitter or 0 if the interaction does not involve a transmitter.

Referenced by WsfOTH_RadarSensor::OTH_Mode::AttemptToDetect(), WsfRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfEM_GroundWavePropagation::BasicTransmissionLoss(), WsfPassiveSensor::PassiveMode::CanDetect(), WsfRF_Repeater::CheckDetectAndUpdate(), WsfEM_Attenuation::ComputeAttenuationFactor(), WsfEM_ITU_Attenuation::ComputeAttenuationFactor(), WsfTabularAttenuation::ComputeAttenuationFactor(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfEM_SurfaceClutter::ComputeClutterPower(), WsfPassiveDetector::ComputeDetectability(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfPassiveSensor::PassiveMode::PassiveErrorModel::ComputeMeasurementErrors(), WsfEM_Noise::ComputeNoise(), WsfEM_ALARM_Propagation::ComputePropagationFactor(), WsfEM_FastMultipath::ComputePropagationFactor(), WsfEM_GroundWavePropagation::ComputePropagationFactor(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), WsfRadarMTD_SignalProcessor::Execute(), WsfRadarMTI_AdjSignalProcessor::Execute(), WsfRadarMTI_SignalProcessor::Execute(), WsfRadarPD_SignalProcessor::Execute(), WsfRadarSTC_SignalProcessor::Execute(), WsfEM_Attenuation::GetRangeElevationAltitude(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), wsf::SurfaceWaveRadarSensorErrorModel::GetSphericalErrorStdDev(), WsfEventPipeInterface::Pack(), WsfOTH_RadarSensor::PerformScheduledDetections(), WsfRadarSensor::PerformScheduledDetections(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), PrintGeometry(), WsfEW_Effects::Process(), WsfEW_Effect::ProcessMitigatedEffect(), WsfEW_Effect::ProcessUnmitigatedEffect(), WsfJTIDS_Terminal::ReceiveActions(), wsf::comm::medium::Unguided::TransmitMessage(), WsfEW_AgilityEffect::UpdateEffects(), WsfEW_CoverPulseEffect::UpdateEffects(), WsfEW_Effect::UpdateEffects(), WsfEW_PowerEffect::UpdateEffects(), WsfEW_PulseEffect::UpdateEffects(), WsfEW_PulseSuppressEffect::UpdateEffects(), WsfEW_RadiusEffect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfEW_TrackEffect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateGainFactors(), and WsfPassiveSensor::PassiveMode::UpdateTrack().

◆ MaskedByHorizon() [1/3]

bool WsfEM_Interaction::MaskedByHorizon ( const WsfEM_Xmtr * aXmtrPtr,
const WsfEM_Rcvr * aRcvrPtr )
static

Determine if the horizon obscures the view between a transmitter and receiver.

Parameters
aXmtrPtr[input] The transmitter.
aRcvrPtr[input] The receiver.
Returns
'true' if the horizon obscures the view between the objects.

References WsfEM_XmtrRcvr::GetAntenna(), WsfEM_XmtrRcvr::GetEarthRadiusMultiplier(), WsfEM_Antenna::GetLocationLLA(), WsfEM_XmtrRcvr::GetPlatform(), WsfPlatform::GetTerrainHeight(), and WsfEM_Util::MaskedByHorizon().

Referenced by WsfGeometricSensor::GeometricMode::AttemptToDetect(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), and BeginTwoWayOTH_Interaction().

◆ MaskedByHorizon() [2/3]

bool WsfEM_Interaction::MaskedByHorizon ( const WsfEM_XmtrRcvr * aXmtrRcvrPtr,
WsfPlatform * aPlatformPtr,
double aEarthRadiusScale )
static

Determine if the horizon obscures the view between a transmitter and receiver.

Parameters
aXmtrRcvrPtr[input] Pointer to the transmitter/receiver object.
aPlatformPtr[input] Pointer to the target platform.
aEarthRadiusScale[input] The Earth radius scale factor.
Returns
'true' if the horizon obscures the view between the objects.

References WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetLocationLLA(), WsfEM_XmtrRcvr::GetPlatform(), WsfPlatform::GetTerrainHeight(), and WsfEM_Util::MaskedByHorizon().

◆ MaskedByHorizon() [3/3]

bool WsfEM_Interaction::MaskedByHorizon ( const WsfEM_XmtrRcvr * aXmtrRcvrPtr,
WsfPlatform * aPlatformPtr,
double aReflectionPointWCS[3],
double aEarthRadiusScale )
static

◆ MaskedByTerrain()

◆ Print()

void WsfEM_Interaction::Print ( ut::log::MessageStream & aMsgStream)
virtual

◆ PrintableAngle()

double WsfEM_Interaction::PrintableAngle ( double aAngle) const

A convenience method to return a printable angle.

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

◆ PrintGeometry()

void WsfEM_Interaction::PrintGeometry ( ut::log::MessageStream & aMsgStream)
virtual

Print the geometry portions of the output provided by Print(). This method is provided so models that want to provide a custom debug print method can still produce the standard geometry printing provided Print().

References ComputeUndefinedGeometry(), GetReceiver(), GetTarget(), GetTransmitter(), mBistatic, mRcvrBeam, mRcvrLoc, mRcvrToTgt, mRcvrToXmtr, mTgtLoc, mTgtToRcvr, mTgtToXmtr, mXmtrBeam, mXmtrLoc, mXmtrToRcvr, and mXmtrToTgt.

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

◆ PrintStatus()

void WsfEM_Interaction::PrintStatus ( ut::log::MessageStream & aMsgStream) const
virtual

PrintStatus adds a "Status" note and formats it properly if the status mFailedStatus is 0.

Reimplemented in WsfSensorResult.

References mFailedStatus, and PrintStatusP().

Referenced by Print(), and WsfSensorResult::PrintStatus().

◆ PrintStatusP()

void WsfEM_Interaction::PrintStatusP ( ut::log::MessageStream & aMsgStream) const
virtual

Adds a list of notes to aMsgStream with the status.

Print the failed portions of debug print data provided by Print(). This method is provided so models that want to provide a custom debug print method can still produce the standard geometry printing provided Print().

Reimplemented in WsfSensorResult.

References cRCVR_ALTITUDE_LIMITS, cRCVR_ANGLE_LIMITS, cRCVR_HORIZON_MASKING, cRCVR_RANGE_LIMITS, cRCVR_TERRAIN_MASKING, cSIGNAL_LEVEL, cXMTR_ALTITUDE_LIMITS, cXMTR_ANGLE_LIMITS, cXMTR_HORIZON_MASKING, cXMTR_RANGE_LIMITS, cXMTR_TERRAIN_MASKING, and mFailedStatus.

Referenced by PrintStatus(), and WsfSensorResult::PrintStatusP().

◆ Reset()

◆ SetCategory()

◆ SetReceiverBeamPosition() [1/2]

◆ SetReceiverBeamPosition() [2/2]

void WsfEM_Interaction::SetReceiverBeamPosition ( const BeamData & aBeamData)

Set the receiver beam position to a defined position.

This is typically used in interference interactions to copy a beam position from another interaction into the interaction that is being used to compute the interference effect.

Parameters
aBeamData[input] The transformation matrix that defines the beam position on the receiver.
Note
This can be called only after a successful Begin...Interaction() and with valid aBeamData (i.e. aBeamData.mGain > 0.0).

References WsfEM_Interaction::BeamData::mEBS_Az, WsfEM_Interaction::BeamData::mEBS_El, WsfEM_Interaction::BeamData::mGain, mRcvrBeam, and WsfEM_Interaction::BeamData::mWCS_ToBeamTransform.

◆ SetTransmitterBeamPosition() [1/2]

◆ SetTransmitterBeamPosition() [2/2]

void WsfEM_Interaction::SetTransmitterBeamPosition ( const BeamData & aBeamData)

Set the transmitter beam position to a defined position.

This is typically used in passive-type interactions to copy the beam position from the transmitter in another interaction (such as a radar or interference interaction) to the transmitter beam position in the current interaction.

Parameters
aBeamData[input] The transformation matrix that defines the beam position on the receiver.
Note
This can be called only after a successful Begin...Interaction() and with valid aBeamData (i.e. aBeamData.mGain > 0.0).

References WsfEM_Interaction::BeamData::mEBS_Az, WsfEM_Interaction::BeamData::mEBS_El, WsfEM_Interaction::BeamData::mGain, WsfEM_Interaction::BeamData::mWCS_ToBeamTransform, and mXmtrBeam.

◆ WithinFieldOfView()

bool WsfEM_Interaction::WithinFieldOfView ( WsfEM_Antenna * aSrcPtr,
LocationData & aSrcLoc,
LocationData & aTgtLoc,
RelativeData & aSrcToTgt,
RelativeData & aTgtToSrc,
bool aIgnoreLimits = false )

Determine if a target is within the field of view.

This routine does several things:

  • Computes the true aspect angles of the target with respect to the source.
  • Computes the apparent aspect angles of the target with respect to the source.
  • Checks to see if the apparent target position is within the field-of-view of the source.
  • Computes the true aspect unit vector of the source with respect to the target.
  • Computes the apparent aspect unit vector of the source with respect to the target.

The latter two are performed only if it is determined that the target is in the field-of-view of the source or if the 'aIgnoreLimits=true' is specified. The need for this kludge is driven by the need to reduce re-computation of values.

Parameters
aSrcPtr[input] Pointer to the source antenna.
aSrcLoc[input] Source location data (WCS and LLA must be valid)
aTgtLoc[input] Target location data (WCS and LLA must be valid)
aSrcToTgtSource-to-target relative data. [input] mTrueUnitVec WCS must be valid. [output] Unit vectors and angles computed.
aTgtToSrcTarget-to-source relative data. This unit vectors will be computed only if the target is within the field-of-view of the source or if aIgnoreLimits == true. The caller is always required to compute the angles from the unit vectors because the target orientation is not known and it would require two routines to handle a targets of type WsfPlatform and WsfEM_Antenna.
aIgnoreLimits[input] If 'true' then the check of the field of view limits is not performed. This is used to simply force the computation of the aTgtToSrc values. This is needed by passive sensors and Interference because the angles are needed but the limits should not be checked.

References WsfEM_Util::ComputeApparentPosition(), WsfEM_Antenna::ComputeAspect(), WsfEM_Interaction::LocationData::mAlt, WsfEM_Interaction::RelativeData::mAz, mEarthRadiusScale, WsfEM_Interaction::RelativeData::mEl, WsfEM_Interaction::LocationData::mLocWCS, WsfEM_Interaction::RelativeData::mTrueAz, WsfEM_Interaction::RelativeData::mTrueEl, WsfEM_Interaction::RelativeData::mTrueUnitVecWCS, WsfEM_Interaction::RelativeData::mUnitVecWCS, and WsfEM_Antenna::WithinFieldOfView().

Referenced by WsfGeometricSensor::GeometricMode::AttemptToDetect(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), and ComputeUndefinedGeometry().

Member Data Documentation

◆ mAbsorptionFactor

double WsfEM_Interaction::mAbsorptionFactor {0.0}

The atmospheric absorption factor (0-1). Typically called the atmospheric attenuation or transmittance, this represents the fraction of the transmitted signal that is NOT blocked by the atmosphere. A value of 1 indicates the atmosphere did not absorb (attenuate) the signal while a a value of 0 indicates the atmosphere absorbed ALL the signal.

Note
This value is invalid unless > 0.0.

Referenced by WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), WsfEventPipeInterface::Pack(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), and Reset().

◆ mBackgroundRadiantIntensity

double WsfEM_Interaction::mBackgroundRadiantIntensity {0.0}

◆ mBistatic

◆ mCategoryId

WsfStringId WsfEM_Interaction::mCategoryId {nullptr}

If non-zero, the name of ID of the category to be used for zone-based attenuation.

Referenced by CategoryIsSet(), Reset(), and SetCategory().

◆ mCheckedStatus

unsigned int WsfEM_Interaction::mCheckedStatus {0}

A bit mask indicating which limits have been checked. If this value is zero then no limits have been checked, and the interaction should be considered 'failed'.

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Mode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfRadarSensor::RadarMode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), WsfEOIR_IRST_SensorMode::BeginDetectionAttempt(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), MapPlotVariables::CheckSucceeded(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), ComputeUndefinedGeometry(), WsfSensorResult::Detected(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), HorizontalMapFunction::EvaluatePoint(), wsf::SimpleDopplerSignalProcessor::Execute(), MaskedByTerrain(), WsfEventPipeInterface::Pack(), WsfOTH_RadarSensor::PerformScheduledDetections(), WsfRadarSensor::PerformScheduledDetections(), WsfSensor::PerformScheduledDetections(), WsfDefaultSensorTracker::ProcessSensorDetectionChanged(), WsfEOIR_Sensor::ProcessSensorDetectionChanged(), WsfJTIDS_Terminal::ReceiveActions(), Reset(), WsfSensor::ScriptAllowDetection(), WsfCompositeSensor::SensorDetectionChanged(), WsfDisPlatform::SensorDetectionChanged(), and wsf::comm::medium::Unguided::TransmitMessage().

◆ mClutterPower

◆ mContrastRadiantIntensity

double WsfEM_Interaction::mContrastRadiantIntensity {0.0}

Infrared contrast radiant intensity (watts/steradian)

Note
This value is invalid unless mSignalToNoise > 0.0.

Referenced by WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), Print(), wsf::event::utils::PrintEM_Interaction(), and wsf::event::utilsCSV::PrintEM_Interaction().

◆ mDetectionThreshold

double WsfEM_Interaction::mDetectionThreshold {0.0}

The nominal detection threshold. The signal-to-noise ratio above which a detection is nominally declared. Note that even though the signal-to-noise may exceed this value, a detection may not be declared because of probabilistic effects.

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), WsfPassiveDetector::ComputeDetectability(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfEventPipeInterface::Pack(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), Reset(), WsfFalseTargetBlip::UpdateBlipData(), and WsfEW_RepeaterEffect::UpdateGainFactors().

◆ mEarthRadiusScale

◆ mFailedStatus

unsigned int WsfEM_Interaction::mFailedStatus {0}

A bit mask indicating which limit check failed. This is valid only if 'mCheckedStatus' is non-zero (i.e: one can't have a failure if one hasn't checked anything.)

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Beam::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Mode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::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::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), WsfEOIR_IRST_SensorMode::BeginDetectionAttempt(), BeginOneWayInteraction(), BeginOneWayInteraction(), BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), MapPlotVariables::CheckSucceeded(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfEM_ALARM_Propagation::ComputePropagationFactor(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), ComputeUndefinedGeometry(), WsfSensorResult::Detected(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), HorizontalMapFunction::EvaluatePoint(), wsf::SimpleDopplerSignalProcessor::Execute(), MaskedByTerrain(), WsfEventPipeInterface::Pack(), WsfOTH_RadarSensor::PerformScheduledDetections(), WsfRadarSensor::PerformScheduledDetections(), WsfSensor::PerformScheduledDetections(), WsfExclusionSensorComponent::PostAttemptToDetect(), WsfMoonLOS_SensorComponent::PostAttemptToDetect(), WsfSolarElevationAtTargetSensorComponent::PostAttemptToDetect(), WsfSolarIlluminationComponent::PostAttemptToDetect(), WsfEW_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), wsf::event::utils::PrintSensorResult(), wsf::event::utilsCSV::PrintSensorResult(), PrintStatus(), WsfSensorResult::PrintStatus(), PrintStatusP(), WsfSensorResult::PrintStatusP(), WsfDefaultSensorTracker::ProcessSensorDetectionChanged(), WsfEOIR_Sensor::ProcessSensorDetectionChanged(), Reset(), WsfCompositeSensor::SensorDetectionChanged(), WsfDisPlatform::SensorDetectionChanged(), wsf::comm::ComponentHW_Subsurface::SetSubmarineRadioValues(), WsfFalseTargetBlip::UpdateBlipData(), WsfEW_PulseSuppressEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), and WsfEW_SLC_Effect::UpdateEffects().

◆ mInfraredSig

double WsfEM_Interaction::mInfraredSig {-1.0}

Infrared signature (radiant intensity) (watts/steradian)

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEventPipeInterface::Pack(), Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), and Reset().

◆ mInfraredSigAz

double WsfEM_Interaction::mInfraredSigAz {0.0}

Azimuth used for infrared signature determination (radians).

Note
This is valid only if mInfraredSig > 0.

Referenced by WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), ComputeInfraredSigAzEl(), WsfEventPipeInterface::Pack(), Print(), wsf::event::utils::PrintEM_Interaction(), and wsf::event::utilsCSV::PrintEM_Interaction().

◆ mInfraredSigEl

double WsfEM_Interaction::mInfraredSigEl {0.0}

Elevation used for infrared signature determination (radians).

Note
This is valid only if mInfraredSig > 0.

Referenced by WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), ComputeInfraredSigAzEl(), WsfEventPipeInterface::Pack(), Print(), wsf::event::utils::PrintEM_Interaction(), and wsf::event::utilsCSV::PrintEM_Interaction().

◆ mInterferenceFactor

double WsfEM_Interaction::mInterferenceFactor {0.0}

The interference effect factor [0..1] A value of 0 indicates there was no effects-based interference. A value of 1 indicates the signal was total blocked by effects-based interference. The default value is 0.0 (no interference).

Referenced by WsfEW_SensorComponent::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_CommComponent::AttemptToReceive(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), and Reset().

◆ mInterferencePower

◆ mMaskingFactor

double WsfEM_Interaction::mMaskingFactor {1.0}

The masking factor. A factor in the range [0..1] that accounts for blockage or attenuation by structure. A value of 1 indicates there no blockage or attenuation by structure while a value of zero indicates blockage or attenuation.

Note
This includes the effects of both the transmitter and receiver sides.

Referenced by WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), ComputeMaskingFactor(), ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), WsfEventPipeInterface::Pack(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), and Reset().

◆ mOpticalReflectivity

double WsfEM_Interaction::mOpticalReflectivity {-1.0}

Optical reflectivity Factor (non-dimensional (0 .. 1]).

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfEventPipeInterface::Pack(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), and Reset().

◆ mOpticalSig

◆ mOpticalSigAz

◆ mOpticalSigEl

◆ mPixelCount

double WsfEM_Interaction::mPixelCount {0.0}

The approximate number of pixels the target occupies in the image. (For imaging sensors only)

Note
If the value is zero then it hasn't been determined.

Referenced by WsfEOIR_Sensor::EOIR_Mode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfEventPipeInterface::Pack(), Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), Reset(), and WsfEOIR_Sensor::Update().

◆ mPowerDensityAtTarget

double WsfEM_Interaction::mPowerDensityAtTarget {0.0}

Power density at the target (Watts/meter^2) This is the power density at the target body (for a two-way interaction) or at the face of the receiver antenna (one-way interaction).

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by wsf::comm::ComponentHW_Subsurface::CanSendTo(), ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), WsfEventPipeInterface::Pack(), and Reset().

◆ mPropagationFactor

double WsfEM_Interaction::mPropagationFactor {0.0}

The pattern propagation factor. This is typically called 'F40' and represents the gains and losses due to things like multipath interference.

Note
This value is invalid unless > 0.0.

Referenced by WsfEM_ALARM_Clutter::ComputeClutterPower(), ComputeRF_OneWayPower(), ComputeRF_TwoWayPower(), RadarLookupTableFunction::Execute(), WsfEventPipeInterface::Pack(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), and Reset().

◆ mRadarSig

◆ mRadarSigAz

◆ mRadarSigEl

double WsfEM_Interaction::mRadarSigEl {0.0}

◆ mRcvdPower

double WsfEM_Interaction::mRcvdPower {0.0}

Received power (watts). The received power at the input to the detector.

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by WsfLADAR_Sensor::LADAR_Mode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfOTH_RadarSensor::OTH_Beam::ComputeMTI_Effects(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfFalseTargetBlip::ComputeRcvdPower(), ComputeRF_OneWayPower(), ComputeRF_ReceivedPower(), ComputeRF_TwoWayPower(), WsfRF_Jammer::ComputeSingleJammerEffect(), WsfFalseTargetBlip::ComputeSNR(), WsfRF_Jammer::ComputeTotalJammerEffects(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), RadarLookupTableFunction::Execute(), WsfRadarMTD_SignalProcessor::Execute(), WsfRadarMTI_AdjSignalProcessor::Execute(), WsfRadarMTI_SignalProcessor::Execute(), WsfRadarPD_SignalProcessor::Execute(), WsfRadarSTC_SignalProcessor::Execute(), WsfDisPlatform::MessageReceived(), WsfEventPipeInterface::Pack(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), Reset(), WsfEW_CoverPulseEffect::UpdateEffects(), WsfEW_PowerEffect::UpdateEffects(), WsfEW_TrackEffect::UpdateEffects(), and WsfEW_RepeaterEffect::UpdateGainFactors().

◆ mRcvrBeam

◆ mRcvrLoc

◆ mRcvrNoisePower

◆ mRcvrToTgt

RelativeData WsfEM_Interaction::mRcvrToTgt

Receiver-to-target relative data.

Note
This is valid only if the interaction involves a target platform.

Referenced by WsfFalseTargetScreener::AllowTargetTrack(), wsf::AbsoluteSensorErrorModel::ApplyMeasurementErrors(), wsf::RadarSensorErrorModel::ApplyMeasurementErrors(), wsf::StandardSensorErrorModel::ApplyMeasurementErrors(), wsf::SurfaceWaveRadarSensorErrorModel::ApplyMeasurementErrors(), WsfEOIR_Sensor::EOIR_ErrorModel::ApplyMeasurementErrors(), WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfBeamDirector::WsfBeamDirectorMode::AttemptToDetect(), WsfEOIR_Sensor::EOIR_Mode::AttemptToDetect(), WsfGeometricSensor::GeometricMode::AttemptToDetect(), WsfOpticalSensor::OpticalMode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), WsfEOIR_IRST_SensorMode::AttemptToDetectVisual(), BeginOneWayInteraction(), WsfSensorResult::BeginOneWayInteraction(), BeginTwoWayInteraction(), WsfSensorResult::BeginTwoWayInteraction(), BeginTwoWayOTH_Interaction(), WsfSensorResult::BeginTwoWayOTH_Interaction(), WsfOpticalEnvironment::ComputeBackgroundRadiance(), WsfEM_SurfaceClutterTable::ComputeClutterPower(), WsfEOIR_IRST_SensorMode::ComputeInstallationEffects(), ComputeMaskingFactor(), WsfOTH_RadarSensor::OTH_Beam::ComputeMTI_Effects(), WsfEM_FastMultipath::ComputePropagationFactor(), ComputeRF_TwoWayPower(), ComputeUndefinedGeometry(), WsfSensorResult::ComputeUndefinedGeometry(), WsfBeamDirector::WsfBeamDirectorMode::CreateImageFromResult(), HorizontalCoverageFunction::Execute(), WsfRadarMTD_SignalProcessor::Execute(), WsfRadarMTI_SignalProcessor::Execute(), WsfRadarSTC_SignalProcessor::Execute(), WsfEM_Attenuation::GetRangeElevationAltitude(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), wsf::StandardSensorErrorModel::GetSphericalErrorStdDev(), WsfEventPipeInterface::Pack(), WsfCTD_SensorComponent::PostAttemptToDetect(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), PrintGeometry(), Reset(), SetReceiverBeamPosition(), WsfEOIR_Sensor::Update(), WsfFalseTargetBlip::UpdateBlipData(), WsfEW_RadiusEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfSensorMode::UpdateTrack(), and WsfTRIMSIM_SensorComponent::UpdateTrack().

◆ mRcvrToXmtr

◆ mSignalToNoise

double WsfEM_Interaction::mSignalToNoise {0.0}

Absolute signal to noise ratio (not dB). This should probably be called signal-to-interference ratio, where the interference is the sum of the receiver noise, clutter power and other interfering effects.

Note
If the value is less than or equal to zero then it hasn't been determined.

Referenced by WsfFalseTargetScreener::AllowTargetTrack(), WsfAcousticSensor::AcousticMode::AttemptToDetect(), WsfCompositeSensor::CompositeMode::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Beam::AttemptToDetect(), WsfOTH_RadarSensor::OTH_Mode::AttemptToDetect(), WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfRadarSensor::RadarBeam::AttemptToDetect(), WsfRadarSensor::RadarMode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::AttemptToDetect(), WsfSOSM_Sensor::SOSM_Mode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfEOIR_IRST_SensorMode::AttemptToDetectInfrared(), wsf::comm::medium::ModeUnguided::CalculateTransferRate(), WsfPassiveSensor::PassiveMode::CanDetect(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_LASER::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfPassiveDetector::ComputeDetectability(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfLADAR_Sensor::LADAR_Mode::ComputeProbabilityOfDetection(), WsfFalseTargetBlip::ComputeSNR(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), wsf::SurfaceWaveRadarSensorErrorModel::GetSphericalErrorStdDev(), WsfEventPipeInterface::Pack(), WsfCTD_SensorComponent::PostAttemptToDetect(), Print(), WsfLADAR_Sensor::LADAR_Result::Print(), wsf::event::utils::PrintEM_Interaction(), wsf::event::utilsCSV::PrintEM_Interaction(), Reset(), WsfEOIR_Sensor::Update(), WsfFalseTargetBlip::UpdateBlipData(), WsfCoherentSensorProcessor::UpdateTrack(), and WsfSensorMode::UpdateTrack().

◆ mTgtLoc

◆ mTgtToRcvr

◆ mTgtToXmtr

RelativeData WsfEM_Interaction::mTgtToXmtr

◆ mXmtdPower

double WsfEM_Interaction::mXmtdPower {0.0}

◆ mXmtrBeam

◆ mXmtrLoc

◆ mXmtrToRcvr

◆ mXmtrToTgt

◆ mZoneAttenuationValue


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