WSF
WsfTrackManager Class Reference

#include <WsfTrackManager.hpp>

Inheritance diagram for WsfTrackManager:
Collaboration diagram for WsfTrackManager:

Public Member Functions

 WsfTrackManager ()=default
 WsfTrackManager (const WsfScenario &aScenario)
 Constructor.
 WsfTrackManager (const WsfTrackManager &aSrc)
 Copy constructor.
 ~WsfTrackManager () override
Public Member Functions inherited from WsfSimpleComponentT< WsfPlatformComponent >
 WsfSimpleComponentT ()=default
 Empty constructor for serialization.
 WsfSimpleComponentT (int aRole, WsfStringId aName)
 WsfSimpleComponentT (int aRole)
 WsfSimpleComponentT (WsfStringId aName)
 WsfSimpleComponentT (const WsfSimpleComponentT &aSrc)
WsfSimpleComponentToperator= (const WsfSimpleComponentT &aRhs)
 ~WsfSimpleComponentT () override=default
WsfStringId GetComponentName () const override
const int * GetComponentRoles () const override
Public Member Functions inherited from WsfComponentT< WsfPlatform >
 WsfComponentT ()
 WsfComponentT (const WsfComponentT &) noexcept
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual bool PreInitialize (double aSimTime)
virtual void PreInput ()
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)

Static Public Member Functions

static std::unique_ptr< UtScriptClass > CreateScriptClass (const std::string &aClassName, UtScriptTypes *aScriptTypesPtr)

Callback lists.

Other objects may register callbacks that are to be invoked during track state changes.

enum  TrackStatusIndication {
  cNONE , cCREATED , cUPDATED , cDROPPED ,
  cCANDIDATE_TRACK_PROMOTED , cRAW_TRACK_DROPPED , cRAW_TRACK_RECEIVED , cCURRENT_TARGET_CHANGED ,
  cCORRELATED , cDECORRELATED
}
enum  AuxDataFusionRule { cADF_PRIVATE , cADF_ONLY_LOCAL , cADF_PREFER_LOCAL }
UtCallbackListN< void(double, const WsfLocalTrack *)> CandidateTrackPromoted
UtCallbackListN< void(double, const WsfLocalTrack *)> CurrentTargetChanged
UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrackId &)> LocalTrackCorrelation
UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrackId &)> LocalTrackDecorrelation
UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrack *)> LocalTrackInitiated
UtCallbackListN< void(double, const WsfLocalTrack *)> LocalTrackDropped
UtCallbackListN< void(double, const WsfLocalTrack *, const WsfTrack *)> LocalTrackUpdated
UtCallbackListN< void(double, const WsfTrack *)> RawTrackDropped
UtCallbackListN< void(double, const WsfTrack *)> RawTrackReceived
UtCallbackListN< void(double, WsfTrackManager *)> TrackManagerChanged
bool UpdateAuxData (double aSimTime, WsfLocalTrack &aLocalTrack, const WsfTrack &aNonLocalTrack)
WsfSimulationGetSimulation () const
WsfLocalTrackInitiateTrackP (double aSimTime, const WsfTrack &aTrack)
void AssessTrackQuality (double aSimTime, WsfTrack *aTrackPtr)
WsfLocalTrackCorrelateTrack (double aSimTime, const WsfTrack &aNonLocalTrack)
void FuseTrack (double aSimTime, const WsfTrack &aNonLocalTrack, WsfLocalTrack &aLocalTrackPtr)
WsfLocalTrackAddMeasurement (double aSimTime, const WsfTrack &aMeasurement)
 For tracks that are raw products of sensors, perform filtering based on the filter strategy.
WsfLocalTrackGetPrototypeTrack () const
const WsfScenarioGetScenario () const

Fusion methods:

static WsfLocalTrackFindCorrelatedTrack (const WsfTrackId &aRawTrackId, WsfLocalTrackList &aLocalTrackList)
virtual void StartFrame ()
virtual void EndFrame ()
virtual WsfLocalTrackAddTrackReport (double aSimTime, const WsfTrack &aTrackUpdate)
virtual WsfTrackAddRawTrackReport (double aSimTime, const WsfTrack &aRawTrack)
virtual void DropTrack (double aSimTime, const WsfTrackId &aRawTrackId)
std::unique_ptr< WsfLocalTrackRemoveTrack (const WsfTrackId &aTrackId)
virtual WsfLocalTrackFindCorrelatedTrack (const WsfTrackId &aRawTrackId)

Component infrastructure methods

WsfComponentCloneComponent () const override
void * QueryInterface (int aRole) override
int GetComponentInitializationOrder () const override
void ComponentParentChanged (WsfPlatform *aPlatformPtr) override
virtual WsfTrackManagerClone () const
bool ProcessInput (UtInput &aInput) override
bool Initialize (double aSimTime) override
bool Initialize2 (double aSimTime) override
virtual bool Initialize (double aSimTime, WsfPlatform *aPlatformPtr)
WsfPlatformGetPlatform () const
 Return the platform with which this track manager is associated.
WsfCorrelationStrategyGetCorrelationStrategy ()
 Return the correlation strategy used by this track manager.
const WsfCorrelationStrategyGetCorrelationStrategy () const
WsfFusionStrategyGetFusionStrategy ()
 Return the fusion strategy used by this track manager.
const WsfFusionStrategyGetFusionStrategy () const
void SetCorrelationStrategy (WsfStringId aTypeName)
 Sets the correlation strategy used by this track manager.
void SetFusionStrategy (WsfStringId aTypeName)
 Sets the fusion strategy used by this track manager.
void SetDropUncorrelatedTracks (bool aDropUncorrelatedTracks)
void SetDebug (bool aDebug)
 Set whether this instance will print diagnostic message to standard output.
bool DebugEnabled () const
 Return whether debug is enabled for this instance.
void SetInitiateLocalTracks (bool aInitiateLocalTracks)
bool LocalTracksInitiated () const
 Accessor to determine if local tracks are initiated (true by default).

External track purging.

virtual void PurgeInactiveTracks (double aSimTime, double aInactivityTimeLimit)
virtual void PurgeInactiveRawTracks (double aSimTime, double aInactivityTimeLimit, double aStaticInactivityTimeLimit)
virtual void PurgeLocalTrackHistory (double aSimTime, double aKeepTimeInterval)
void SetWillPurgeInactiveTracks (bool aWillPurgeInactiveTracks)
bool WillPurgeInactiveTracks () const
 Will some external process perform period purging of inactive tracks.

Track interlock methods.

These are used by external controllers (e.g.: WsfTaskManager) to prevent a track from being purged at an inopportune time.

virtual void LockTrack (double aSimTime, const WsfTrackId &aLocalTrackId)
virtual void LockTrack (double aSimTime, WsfLocalTrack *aLocalTrackPtr)
virtual void UnlockTrack (double aSimTime, const WsfTrackId &aLocalTrackId)
virtual void UnlockTrack (double aSimTime, WsfLocalTrack *aLocalTrackPtr)

'Pre-brief' track methods.

virtual WsfLocalTrackAddTrack (double aSimTime, const WsfTrack &aTrack)
void AddInitialTrack (const WsfTrack &aTrack)
virtual WsfLocalTrackInitiateTrack (double aSimTime, const WsfTrack &aRawTrack)
WsfLocalTrackInitiateTrackSilent (double aSimTime, const WsfTrack &aRawTrack)
WsfLocalTrackInitiateAndCorrelateTrack (double aSimTime, const WsfTrack &aRawTrack)
 Deprecated; use InitiateTrackSilent instead.

Methods that access the track lists directly:

unsigned int GetTrackCount () const
WsfLocalTrackGetTrackEntry (unsigned int aEntryIndex)
unsigned int GetRawTrackCount ()
WsfTrackGetRawTrackEntry (unsigned int aEntryIndex)
WsfLocalTrackFindTrack (const WsfTrackId &aLocalTrackId)
WsfTrackFindRawTrack (const WsfTrackId &aRawTrackId)
WsfLocalTrackListGetTrackList ()
WsfTrackListGetRawTrackList ()
WsfLocalTrackListGetLocalTrackList ()
WsfLocalTrackListGetFilteredRawTrackList ()
const WsfLocalTrackListGetFilteredRawTrackList () const
 Return the filtered sensor track list (const version).
WsfTrackGetRawTrack (const WsfLocalTrack *aLocalTrackPtr, unsigned int aRawTrackEntry)
bool HasFilter ()

'current target' methods.

const WsfTrackGetCurrentTarget ()
const WsfTrackId GetCurrentTargetTrackId () const
 Get the track ID for the current target of interest.
WsfTrackId SetCurrentTarget (double aSimTime, const WsfTrack &aTrack)
void ClearCurrentTarget ()

Track status notification methods.

External processors that implement track management functions (i.e.: directly maintain the local and raw track lists contained in the object) can call these methods to perform the standard notification processes would otherwise occur if this class were performing track maintenance.

void NotifyOfCandidateTrackPromoted (double aSimTime, const WsfLocalTrack *aLocalTrackPtr)
void NotifyOfCurrentTargetChanged (double aSimTime, const WsfLocalTrack *aRawTrackPtr)
void NotifyOfLocalTrackCorrelation (double aSimTime, const WsfLocalTrack *aTrackPtr, const WsfTrackId &aRawTrackId)
void NotifyOfLocalTrackDecorrelation (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrackId &aRawTrackId)
void NotifyOfLocalTrackDropped (double aLocalSimTime, const WsfLocalTrack *aTrackPtr)
void NotifyOfLocalTrackInitiated (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr)
void NotifyOfLocalTrackUpdated (double aSimTime, const WsfLocalTrack *aLocalTrackPtr, const WsfTrack *aRawTrackPtr)
void NotifyOfRawTrackDropped (double aSimTime, const WsfTrack *aTrack)
void NotifyOfRawTrackReceived (double aSimTime, const WsfTrack *aRawTrackPtr)
void NotifyOfTrackManagerChanged (double aSimTime, WsfTrackManager *aNewManagerPtr)

Additional Inherited Members

Public Types inherited from WsfComponentT< WsfPlatform >
typedef WsfPlatform ParentType
 This is needed to support the WsfComponentList template.
int mRoles [2]

Detailed Description

The Track Manager maintains a 'local' track list.

The track manager is used to maintain a list of 'local tracks' (as defined by WsfLocalTrack). The caller provides 'track reports' or 'raw tracks' (as defined by WsfTrack) which are then either fused with existing local tracks or used to start a new local track. This type of object is also known as a "tracker."

The standard implementation of WsfTrackManager provides perfect correlation and a default track fusion. In order to provide an alternate capability, one should define alternate correlation and fusion strategies through sub-classing of WsfCorrelationStrategy and WsfFusionStrategy (see associated class documentation for further details). These strategies are then specified through the user input keywords "correlation_method" and "fusion_method" (see the WSF User Input Guide for details).

The local track contains a list of correlated track ids. Also the non-local or "raw" tracks themselves can be accessed through the raw track list, if desired (see WsfTrackManager::GetRawTrackList).

There are two mechanisms for purging local tracks from the track list

  • The default method is to automatically drop the local track when all of its constituent raw tracks have been dropped.
  • Invoke the method SetDropUncorrelatedTracks(true) and periodically invoke the method PurgeInactiveTracks or use some custom method for purging obsolete tracks.

Member Enumeration Documentation

◆ AuxDataFusionRule

Enumerator
cADF_PRIVATE 
cADF_ONLY_LOCAL 
cADF_PREFER_LOCAL 

◆ TrackStatusIndication

Common track status indications.

Note
: These MUST remain in this order because they appear in WsfTrackNotifyMessage and are accessible to users via the script interface.
Enumerator
cNONE 

There is no change, or the code is invalid.

cCREATED 

A local track has been created.

cUPDATED 

A local track has been updated.

cDROPPED 

A local track has been dropped.

cCANDIDATE_TRACK_PROMOTED 

A "candidate" local track has been promoted to a full local track.

cRAW_TRACK_DROPPED 

A raw track has been dropped.

cRAW_TRACK_RECEIVED 

An unprocessed raw track was received.

cCURRENT_TARGET_CHANGED 

The current target has changed.

cCORRELATED 

A local track has been correlated.

cDECORRELATED 

A local track has been decorrelated.

Constructor & Destructor Documentation

◆ WsfTrackManager() [1/3]

WsfTrackManager::WsfTrackManager ( )
default

◆ WsfTrackManager() [2/3]

◆ WsfTrackManager() [3/3]

◆ ~WsfTrackManager()

WsfTrackManager::~WsfTrackManager ( )
override

Member Function Documentation

◆ AddInitialTrack()

void WsfTrackManager::AddInitialTrack ( const WsfTrack & aTrack)

Add track to the 'initial' track list. An initial track is one that is created prior to actually initializing the platform that contains the track manager. Examples are 'hand-off' tracks and initial tracks defined in input files. The tracks are just put into a 'parking place' until initialization, at which point they will be formally added to the track list.

Parameters
aTrackThe track to be added to the initial track list.

References WsfTrack::Clone().

Referenced by WsfPlatform::ProcessInput(), ProcessInput(), and SetCurrentTarget().

◆ AddMeasurement()

WsfLocalTrack * WsfTrackManager::AddMeasurement ( double aSimTime,
const WsfTrack & aMeasurement )
protected

◆ AddRawTrackReport()

WsfTrack * WsfTrackManager::AddRawTrackReport ( double aSimTime,
const WsfTrack & aRawTrack )
virtual

Add a raw track report (default is add or replace).

Parameters
aSimTimeThe current simulation time.
aRawTrackThe raw track to be added or replaced.
Returns
A pointer to the track that was added. This is usually just the input raw track, but in this implementation, is an existing track if the saved copy is more recent than the one being added. This may be zero if the track report represented stale data

References AssessTrackQuality(), WsfTrack::Clone(), WsfObject::GetName(), GetPlatform(), GetSimulation(), WsfTrack::GetTargetName(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateCount(), WsfTrack::GetUpdateTime(), WsfAuxDataEnabled::HasAuxData(), and trackPtr.

Referenced by AddTrackReport().

◆ AddTrack()

WsfLocalTrack * WsfTrackManager::AddTrack ( double aSimTime,
const WsfTrack & aTrack )
virtual

Add a track to the track manager's local track list. The input raw track will not be fused or purged, and it will not be stored in the raw track list.

Parameters
aSimTimeThe time at which the track is added.
aTrackThe input raw track to add to the local track list.
Returns
A pointer to the added track.

References GetSimulation(), WsfAuxDataEnabled::HasAuxData(), NotifyOfLocalTrackInitiated(), and trackPtr.

Referenced by AddTrackReport(), and Initialize2().

◆ AddTrackReport()

WsfLocalTrack * WsfTrackManager::AddTrackReport ( double aSimTime,
const WsfTrack & aTrackUpdate )
virtual

Add a track report. This report will be fused with any corresponding local tracks. If the track manager is running unframed, the merged track will be returned immediately; otherwise, 0 will be returned, and a call to FindCorrelatedTrack(...) will be required after EndFrame() is called. The input raw track will be added to the raw track list if not present; otherwise, it will be used to update the existing raw track.

Parameters
aSimTimeThe current simulation time.
aTrackUpdateThe raw track report to fuse into the local track list and add/replace in the raw track list.
Returns
The local track into which the track report was fused. Note that this may be zero if the track was old or not immediately correlated.

References AddMeasurement(), AddRawTrackReport(), AddTrack(), WsfTrack::Clone(), CorrelateTrack(), WsfTrack::cUNFILTERED_SENSOR, FindCorrelatedTrack(), FuseTrack(), WsfTrack::GetHistory(), WsfObject::GetName(), GetPlatform(), WsfTrack::GetTargetName(), WsfTrack::GetTrackId(), WsfTrack::GetTrackType(), InitiateTrack(), WsfTrack::IsFusible(), WsfLocalTrack::IsMirrorTrack(), NotifyOfLocalTrackUpdated(), NotifyOfRawTrackReceived(), WsfLocalTrack::ReplacementUpdate(), and UpdateAuxData().

Referenced by AddMeasurement(), WsfFusionCenter::AdjustTrackQuantities(), Initialize2(), WsfWeaponTrackProcessor::ProcessTrackUpdate(), SetCurrentTarget(), WsfFusionCenter::UpdateFalseTargetTracks(), WsfFusionCenter::UpdateRealTargetTracks(), and UT_DEFINE_SCRIPT_METHOD().

◆ AssessTrackQuality()

void WsfTrackManager::AssessTrackQuality ( double aSimTime,
WsfTrack * aTrackPtr )
protected

Assign a track quality to the raw track. This is done on inbound raw tracks as they are moved to the raw track list. Note that this does nothing to measurements. They have whatever quality they have. This is mostly to prevent off-board tracks from preventing local track contributions

References WsfTrack::cFILTERED_SENSOR, WsfTrack::cSTATIC_IMAGE, WsfTrack::cUNFILTERED_SENSOR, WsfTrack::GetQuality(), WsfTrack::GetTrackQuality(), WsfTrack::GetTrackType(), and WsfTrack::SetTrackQuality().

Referenced by AddRawTrackReport().

◆ ClearCurrentTarget()

void WsfTrackManager::ClearCurrentTarget ( )
inline

Indicate the current target is no longer a target.

Note
This does not purge the track from the track list. It simply indicates that the current target is no longer a target.

Referenced by WsfCuedLaserWeapon::CeaseFire(), and WsfWeaponTrackProcessor::ProcessTrackDrop().

◆ Clone()

virtual WsfTrackManager * WsfTrackManager::Clone ( ) const
inlinevirtual

Create a copy, or clone, of "this" object.

Returns
A pointer to the cloned object.

References WsfTrackManager().

Referenced by CloneComponent(), and WsfTrackManager().

◆ CloneComponent()

WsfComponent * WsfTrackManager::CloneComponent ( ) const
inlineoverridevirtual

Clones a component. May return null if component does not support clone.

Implements WsfComponent.

References Clone().

◆ ComponentParentChanged()

void WsfTrackManager::ComponentParentChanged ( WsfPlatform * aParentPtr)
inlineoverridevirtual

The parent to which the component is attached has been updated. This virtual method is called whenever the components parent attachment has been changed. This is provided so derived class receives notification of the change.

Parameters
aParentPtrPointer to the new parent. The new parent may be null if the attachment was severed.

Reimplemented from WsfComponentT< WsfPlatform >.

◆ CorrelateTrack()

WsfLocalTrack * WsfTrackManager::CorrelateTrack ( double aSimTime,
const WsfTrack & aNonLocalTrack )
protected

Invoke the correlation strategy to determine if a local track correlation exists for a given non-local or 'raw' track. Perform any housekeeping to ensure a consistent track list.

Parameters
aSimTimeThe current simulation time.
aNonLocalTrackThe non-local or 'raw' track to correlate against.
Returns
The corresponding local track, or 0 if the search fails.

References WsfLocalTrack::Correlate(), FindCorrelatedTrack(), and WsfTrack::GetTrackId().

Referenced by AddTrackReport().

◆ CreateScriptClass()

std::unique_ptr< UtScriptClass > WsfTrackManager::CreateScriptClass ( const std::string & aClassName,
UtScriptTypes * aScriptTypesPtr )
static

Create the 'class' object for the script system. This is invoked once by WsfScriptManager to create the 'class' object that defines the interface to instances of this class from the script system.

Referenced by WsfScriptManager::RegisterTypes().

◆ DebugEnabled()

bool WsfTrackManager::DebugEnabled ( ) const
inline

Return whether debug is enabled for this instance.

◆ DropTrack()

void WsfTrackManager::DropTrack ( double aSimTime,
const WsfTrackId & aRawTrackId )
virtual

Notify the track manager that a raw track has been dropped. This fact will be reflected in the track id list of the corresponding local track.

Parameters
aSimTimeThe simulation time at which the track was dropped.
aRawTrackIdThe track id of the raw track that was dropped.

References FindCorrelatedTrack().

Referenced by WsfFusionCenter::AdjustTrackQuantities(), and PurgeInactiveRawTracks().

◆ EndFrame()

void WsfTrackManager::EndFrame ( )
virtual

For a framed input, signal end-of-frame.

Note
For framed input, this method should be called prior to calls to FindCorrelatedTrack.

◆ FindCorrelatedTrack() [1/2]

WsfLocalTrack * WsfTrackManager::FindCorrelatedTrack ( const WsfTrackId & aRawTrackId)
virtual

Given a non-local (raw) track id, find a local track that has been correlated with it.

Parameters
aRawTrackIdThe non-local (raw) track id to use in correlating with local tracks.
Returns
The local track, 0 if not found.

References FindTrack(), WsfObject::GetName(), GetPlatform(), WsfTrackId::IsNull(), and trackPtr.

Referenced by AddTrackReport(), WsfMTT_Correlation::CorrelateImpl(), WsfPerfectCorrelation::CorrelateImpl(), WsfTruthCorrelation::CorrelateImpl(), CorrelateTrack(), DropTrack(), WsfBMUtils::FindCorrelatedTrack(), WsfWeaponTrackProcessor::ProcessTrackUpdate(), SetCurrentTarget(), WsfFusionCenter::UpdateFalseTargetTracks(), and WsfFusionCenter::UpdateRealTargetTracks().

◆ FindCorrelatedTrack() [2/2]

WsfLocalTrack * WsfTrackManager::FindCorrelatedTrack ( const WsfTrackId & aRawTrackId,
WsfLocalTrackList & aLocalTrackList )
static

Given a non-local (raw) track id, find a local track that has been correlated with it.

Parameters
aRawTrackIdThe non-local (raw) track id to use in correlating with local tracks.
aLocalTrackListA local track list to use in finding the correlated track.
Returns
The local track, 0 if not found.

References WsfTrackListT< T >::GetTrackCount(), WsfTrackListT< T >::GetTrackEntry(), WsfLocalTrack::IsCorrelatedWith(), and trackPtr.

◆ FindRawTrack()

WsfTrack * WsfTrackManager::FindRawTrack ( const WsfTrackId & aRawTrackId)
inline

Find the requested track report. This version will return a pointer to the track so it can be modified.

Parameters
aRawTrackIdThe track ID of the track report to be located.
Returns
Pointer to track or 0 if the requested track could not be found.

Referenced by WsfUplinkProcessor::AddTrackUplink(), WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfMTT_Correlation::CorrelateImpl(), WsfBMUtils::GetOriginalTracks(), WsfBMUtils::GetTrackSensorType(), WsfWMAIEngagementMod::Drag::isFinished(), WsfUplinkProcessor::LocalTrackCorrelation(), WsfWeaponTaskManager::UplinkStart(), and UT_DEFINE_SCRIPT_METHOD().

◆ FindTrack()

◆ FuseTrack()

void WsfTrackManager::FuseTrack ( double aSimTime,
const WsfTrack & aNonLocalTrack,
WsfLocalTrack & aCorrelatedTrack )
protected

Attempt to fuse a non-local track with a local track.

Parameters
aSimTimeThe current simulation time.
aNonLocalTrackThe non-local (raw) track to use for fusion with local tracks.
aCorrelatedTrackThe local track with which the non-local track was correlated.

References WsfObject::GetName(), GetPlatform(), WsfTrack::GetTrackId(), WsfTrack::IsCandidate(), WsfTrack::IsStale(), NotifyOfCandidateTrackPromoted(), NotifyOfLocalTrackUpdated(), WsfTrack::SetIsCandidate(), and WsfTrack::SetStale().

Referenced by AddTrackReport().

◆ GetComponentInitializationOrder()

int WsfTrackManager::GetComponentInitializationOrder ( ) const
inlineoverridevirtual

Forces a specific initialization order. Components are initialized in increasing initialization order value.

Reimplemented from WsfComponent.

References cWSF_INITIALIZE_ORDER_TRACK_MANAGER.

◆ GetCorrelationStrategy() [1/2]

WsfCorrelationStrategy & WsfTrackManager::GetCorrelationStrategy ( )
inline

◆ GetCorrelationStrategy() [2/2]

const WsfCorrelationStrategy & WsfTrackManager::GetCorrelationStrategy ( ) const
inline

◆ GetCurrentTarget()

◆ GetCurrentTargetTrackId()

const WsfTrackId WsfTrackManager::GetCurrentTargetTrackId ( ) const
inline

Get the track ID for the current target of interest.

Referenced by WsfWeaponEngagement::UpdateIntendedTarget().

◆ GetFilteredRawTrackList() [1/2]

WsfLocalTrackList & WsfTrackManager::GetFilteredRawTrackList ( )
inline

Return the filtered sensor track list.

Note
Use this method with caution. Direct use of the sensor track list may have unexpected results.

Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks().

◆ GetFilteredRawTrackList() [2/2]

const WsfLocalTrackList & WsfTrackManager::GetFilteredRawTrackList ( ) const
inline

Return the filtered sensor track list (const version).

◆ GetFusionStrategy() [1/2]

WsfFusionStrategy & WsfTrackManager::GetFusionStrategy ( )
inline

Return the fusion strategy used by this track manager.

Referenced by WsfXIO_PlatformInfoService::SendTrackManagerState(), and WsfFusionStrategy::UpdateNonKinematicData().

◆ GetFusionStrategy() [2/2]

const WsfFusionStrategy & WsfTrackManager::GetFusionStrategy ( ) const
inline

◆ GetLocalTrackList()

WsfLocalTrackList & WsfTrackManager::GetLocalTrackList ( )
inline

Return the sensor local track list.

Note
Use this method with caution. Direct use of the sensor track list may have unexpected results.

Referenced by WsfSA_Processor::PlatformInTrackListMWS(), and WsfSA_Processor::UpdateTrackData().

◆ GetPlatform()

◆ GetPrototypeTrack()

WsfLocalTrack * WsfTrackManager::GetPrototypeTrack ( ) const
inlineprotected

◆ GetRawTrack()

WsfTrack * WsfTrackManager::GetRawTrack ( const WsfLocalTrack * aLocalTrackPtr,
unsigned int aRawTrackEntry )

Get the raw track corresponding with the given local track entry.

Parameters
aLocalTrackPtrThe local track to use as the basis of the raw track search.
aRawTrackEntryThe entry containing the track id to search on.
Returns
The corresponding raw track, or 0 if the search fails.

References WsfLocalTrack::GetRawTrackIds(), and trackPtr.

Referenced by WsfDefaultFusion::ReviewIFF(), and WsfDefaultFusion::ReviewTrackQuality().

◆ GetRawTrackCount()

unsigned int WsfTrackManager::GetRawTrackCount ( )
inline

Get the number of tracks in the raw track list. This method, along with GetRawTrackEntry() can be used to iterate through the track list.

Returns
The number of entries in the track list.

◆ GetRawTrackEntry()

WsfTrack * WsfTrackManager::GetRawTrackEntry ( unsigned int aEntryIndex)
inline

Get a raw track from the raw track list by its entry index (offset) into the list. This version returns a pointer to a track so the track can be modified.

Parameters
aEntryIndexIndex of the desired entry. The index must be in the range 0 <= aEntryIndex < GetTrackCount()

◆ GetRawTrackList()

WsfTrackList & WsfTrackManager::GetRawTrackList ( )
inline

Return the sensor raw track list.

Note
Use this method with caution. Direct use of the sensor track list may have unexpected results.

Referenced by WsfPlatform::GetMasterRawTrackList(), WsfBatchTrackReporting::ReportRawTracks(), and UT_DEFINE_SCRIPT_METHOD().

◆ GetScenario()

const WsfScenario & WsfTrackManager::GetScenario ( ) const
inlineprotected

◆ GetSimulation()

◆ GetTrackCount()

unsigned int WsfTrackManager::GetTrackCount ( ) const
inline

Get the number of tracks in the track list. This method, along with GetTrackEntry() can be used to iterate through the track list.

Returns
The number of entries in the track list.

Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfFusionCenter::PrintFuserState(), PurgeInactiveRawTracks(), PurgeInactiveTracks(), PurgeLocalTrackHistory(), WsfBatchTrackReporting::ReportFusedTracks(), and WsfUplinkProcessor::StartUplinking().

◆ GetTrackEntry()

WsfLocalTrack * WsfTrackManager::GetTrackEntry ( unsigned int aEntryIndex)
inline

Get a track from the track list by its entry index (offset) into the list. This version returns a pointer to a track so the track can be modified.

Parameters
aEntryIndexIndex of the desired entry. The index must be in the range 0 <= aEntryIndex < GetTrackCount().

Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks(), WsfBatchTrackReporting::ReportFusedTracks(), and WsfUplinkProcessor::StartUplinking().

◆ GetTrackList()

WsfLocalTrackList & WsfTrackManager::GetTrackList ( )
inline

◆ HasFilter()

bool WsfTrackManager::HasFilter ( )
inline

◆ Initialize() [1/2]

bool WsfTrackManager::Initialize ( double aSimTime)
overridevirtual

Initialize the object.

Parameters
aSimTimeThe current simulation time.
Returns
'true' if successful or 'false' if some sort of error occurred.

Reimplemented from WsfComponent.

References success.

Referenced by Initialize().

◆ Initialize() [2/2]

bool WsfTrackManager::Initialize ( double aSimTime,
WsfPlatform * aPlatformPtr )
virtual

Non-master track manager initialization. Some objects create their own private track managers rather that use the one on the platform. This form is used in those cases.

Parameters
aSimTimeThe current simulation time.
aPlatformPtrThe platform which owns the object creating this track manager.
Returns
true if successful or false if not.
Note
In this case the component/track manager does not reside on the platform component list.

References Initialize(), Initialize2(), and WsfComponentT< WsfPlatform >::SetComponentParent().

◆ Initialize2()

bool WsfTrackManager::Initialize2 ( double aSimTime)
overridevirtual

Phase 2 Initialization. This is called by WsfPlatform::Initialize() after phase 1 initialization has been performed for all platform components. The functions in this method must be performed in phase 2 because they require knowledge of the platform location, which is not known until after phase 1.

Parameters
aSimTimeThe current simulation time.
Returns
'true' if successful or 'false' if some sort of error occurred.

Reimplemented from WsfComponent.

References AddTrack(), AddTrackReport(), WsfObject::GetName(), GetPlatform(), GetSimulation(), WsfTrack::GetTrackId(), success, and trackPtr.

Referenced by Initialize().

◆ InitiateAndCorrelateTrack()

WsfLocalTrack * WsfTrackManager::InitiateAndCorrelateTrack ( double aSimTime,
const WsfTrack & aRawTrack )
inline

Deprecated; use InitiateTrackSilent instead.

References InitiateTrackSilent().

Referenced by WsfClusterCorrelation::ClusterRawTracksIntoLocalTracks().

◆ InitiateTrack()

WsfLocalTrack * WsfTrackManager::InitiateTrack ( double aSimTime,
const WsfTrack & aNonLocalTrack )
virtual

Create a new local track based on the given non-local, 'raw' track, then inform local and global observers of this new track's creation. Add a track as a correlated entry in the track list.

Parameters
aSimTimeThe current simulation time.
aNonLocalTrackThe input raw track to add to the local track list.
Returns
A pointer to the added track.
Note
This method has a fundamentally different intent from the method, AddTrack(const WsfTrack& aTrack). Whereas the AddTrack method inserts a "pre-briefed" track that cannot be purged or fused, this method inserts a new local track based on the input raw track.

References WsfTrack::GetTrackId(), InitiateTrackP(), and NotifyOfLocalTrackInitiated().

Referenced by AddTrackReport().

◆ InitiateTrackP()

WsfLocalTrack * WsfTrackManager::InitiateTrackP ( double aSimTime,
const WsfTrack & aNonLocalTrack )
protected

protected Create a new local track based on the given non-local, 'raw' track. Add a track as a correlated entry in the track list.

Parameters
aSimTimeThe current simulation time.
aNonLocalTrackThe input raw track to add to the local track list.
Returns
A pointer to the added track.
Note
This is the common code for both InitiateTrack and InitiateTrackSilent.

References WsfTrack::cPROCESSED, WsfObject::GetName(), WsfTrackId::GetOwningPlatformId(), GetPlatform(), GetSimulation(), WsfTrack::GetTrackId(), WsfTrack::GetUpdateTime(), and UpdateAuxData().

Referenced by InitiateTrack(), and InitiateTrackSilent().

◆ InitiateTrackSilent()

WsfLocalTrack * WsfTrackManager::InitiateTrackSilent ( double aSimTime,
const WsfTrack & aNonLocalTrack )

Initiate a track and perform local track correlation, but do not inform any observers.

Parameters
aSimTimeThe current simulation time.
aNonLocalTrackThe track whose data are used to initiate the local track.

References WsfTrack::GetTrackId(), InitiateTrackP(), and trackPtr.

Referenced by WsfMTT_Correlation::CorrelateImpl(), and InitiateAndCorrelateTrack().

◆ LocalTracksInitiated()

bool WsfTrackManager::LocalTracksInitiated ( ) const
inline

Accessor to determine if local tracks are initiated (true by default).

◆ LockTrack() [1/2]

void WsfTrackManager::LockTrack ( double aSimTime,
const WsfTrackId & aLocalTrackId )
virtual

Lock a track to prevent it from being purged by the track manager.

Parameters
aSimTimeThe current simulation time.
aLocalTrackIdThe track ID of the local track to be locked.

References FindTrack(), LockTrack(), and trackPtr.

Referenced by LockTrack().

◆ LockTrack() [2/2]

void WsfTrackManager::LockTrack ( double aSimTime,
WsfLocalTrack * aLocalTrackPtr )
virtual

Lock a track to prevent it from being purged by the track manager. Use this form if you already have a pointer to the local track to be locked. It is faster because it doesn't have to locate the track in the track list.

Parameters
aSimTimeThe current simulation time.
aLocalTrackPtrThe local track to be locked.

References WsfLocalTrack::GetTrackManager(), and WsfLocalTrack::IncrementUseCount().

◆ NotifyOfCandidateTrackPromoted()

void WsfTrackManager::NotifyOfCandidateTrackPromoted ( double aSimTime,
const WsfLocalTrack * aLocalTrackPtr )

References CandidateTrackPromoted.

Referenced by AddMeasurement(), and FuseTrack().

◆ NotifyOfCurrentTargetChanged()

void WsfTrackManager::NotifyOfCurrentTargetChanged ( double aSimTime,
const WsfLocalTrack * aRawTrackPtr )

References CurrentTargetChanged.

Referenced by SetCurrentTarget().

◆ NotifyOfLocalTrackCorrelation()

void WsfTrackManager::NotifyOfLocalTrackCorrelation ( double aSimTime,
const WsfLocalTrack * aTrackPtr,
const WsfTrackId & aRawTrackId )

◆ NotifyOfLocalTrackDecorrelation()

void WsfTrackManager::NotifyOfLocalTrackDecorrelation ( double aSimTime,
const WsfLocalTrack * aLocalTrackPtr,
const WsfTrackId & aRawTrackId )

◆ NotifyOfLocalTrackDropped()

void WsfTrackManager::NotifyOfLocalTrackDropped ( double aLocalSimTime,
const WsfLocalTrack * aTrackPtr )

◆ NotifyOfLocalTrackInitiated()

◆ NotifyOfLocalTrackUpdated()

void WsfTrackManager::NotifyOfLocalTrackUpdated ( double aSimTime,
const WsfLocalTrack * aLocalTrackPtr,
const WsfTrack * aRawTrackPtr )

◆ NotifyOfRawTrackDropped()

void WsfTrackManager::NotifyOfRawTrackDropped ( double aSimTime,
const WsfTrack * aTrack )

References RawTrackDropped.

◆ NotifyOfRawTrackReceived()

void WsfTrackManager::NotifyOfRawTrackReceived ( double aSimTime,
const WsfTrack * aRawTrackPtr )

References RawTrackReceived.

Referenced by AddTrackReport().

◆ NotifyOfTrackManagerChanged()

void WsfTrackManager::NotifyOfTrackManagerChanged ( double aSimTime,
WsfTrackManager * aNewManagerPtr )

◆ ProcessInput()

bool WsfTrackManager::ProcessInput ( UtInput & aInput)
overridevirtual

Process input from a generic source. Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.

Reimplemented from WsfComponent.

References AddInitialTrack(), WsfCorrelationStrategyTypes::Create(), WsfFusionStrategyTypes::Create(), WsfCorrelationStrategyTypes::Get(), WsfFilterTypes::Get(), WsfFusionStrategyTypes::Get(), WsfTrack::LoadTrackInstance(), and trackPtr.

◆ PurgeInactiveRawTracks()

void WsfTrackManager::PurgeInactiveRawTracks ( double aSimTime,
double aInactivityTimeLimit,
double aStaticInactivityTimeLimit )
virtual

Purge inactive raw tracks. This method purges inactive raw tracks. A raw track is declared inactive after when it hasn't been updated within the time interval prescribed by the parameter 'aInactivityTimeLimit'.

Parameters
aSimTimeThe current simulation time.
aInactivityTimeLimitThe maximum amount of time that a track may go without having a track update before it is declared inactive.
aStaticInactivityTimeLimitThe maximum amount of time that a static track will be retained. (i.e.: a track that is initially created, but then will probably never receive an update - e.g.: a spot SAR image).

References WsfTrack::cSTATIC_IMAGE, DropTrack(), GetTrackCount(), and trackPtr.

◆ PurgeInactiveTracks()

void WsfTrackManager::PurgeInactiveTracks ( double aSimTime,
double aInactivityTimeLimit )
virtual

Purge inactive tracks. This method purges inactive local tracks. A track is declared inactive after when it hasn't been updated within the time interval prescribed by the parameter 'aInactivityTimeLimit'.

Parameters
aSimTimeThe current simulation time.
aInactivityTimeLimitThe maximum amount of time that a track may go without having a track update before it is declared inactive.
Note
Observers are notified of any local track drops that are the result of purging.

References WsfObject::GetName(), GetPlatform(), GetTrackCount(), NotifyOfLocalTrackDropped(), and trackPtr.

◆ PurgeLocalTrackHistory()

void WsfTrackManager::PurgeLocalTrackHistory ( double aSimTime,
double aKeepTimeInterval )
virtual

◆ QueryInterface()

void * WsfTrackManager::QueryInterface ( int aRole)
inlineoverridevirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Implements WsfComponent.

References WsfSimpleComponentT< WsfPlatformComponent >::mRoles.

◆ RemoveTrack()

std::unique_ptr< WsfLocalTrack > WsfTrackManager::RemoveTrack ( const WsfTrackId & aTrackId)

Remove the indicated track from the track list but don't delete the track object itself. Caller assumes ownership of track object.

Parameters
aTrackIdThe track ID of the local track to be removed.
Returns
Pointer to track or nullptr if the requested track could not be found.

References WsfObject::GetName(), GetPlatform(), GetSimulation(), and NotifyOfLocalTrackDropped().

◆ SetCorrelationStrategy()

void WsfTrackManager::SetCorrelationStrategy ( WsfStringId aTypeName)

Sets the correlation strategy used by this track manager.

References WsfObserver::CorrelationStrategyChanged(), WsfCorrelationStrategyTypes::Get(), WsfSimulation::GetSimTime(), and GetSimulation().

◆ SetCurrentTarget()

WsfTrackId WsfTrackManager::SetCurrentTarget ( double aSimTime,
const WsfTrack & aTrack )

Set the current target to the indicated track.

Parameters
aSimTimeThe current simulation time.
aTrackThe track indicating the current target.
Returns
The track ID of the current target If a track with the same ID already exists in the track list then it will be updated with the new data. If the track does not exist then it will be added to the track list.

References AddInitialTrack(), AddTrackReport(), FindCorrelatedTrack(), FindTrack(), WsfTrack::GetTrackId(), NotifyOfCurrentTargetChanged(), and trackPtr.

Referenced by WsfPerfectTracker::EstablishNewTrack(), WsfCuedLaserWeapon::Fire(), WsfExplicitWeapon::FireP(), WsfWeaponServer::ProcessCommand(), WsfWeaponTrackProcessor::SetCurrentTarget(), and WsfPerfectTracker::UpdateExistingTrack().

◆ SetDebug()

void WsfTrackManager::SetDebug ( bool aDebug)
inline

Set whether this instance will print diagnostic message to standard output.

◆ SetDropUncorrelatedTracks()

void WsfTrackManager::SetDropUncorrelatedTracks ( bool aDropUncorrelatedTracks)
inline

Indicate if local tracks should be dropped if they become uncorrelated.

Parameters
aDropUncorrelatedTracksIf 'true' then local tracks will be dropped if they become uncorrelated. If 'false' then they will not be dropped when they become uncorrelated and must be dropped by some other mechanism (such as periodically calling PurgeInactiveTracks()).

◆ SetFusionStrategy()

void WsfTrackManager::SetFusionStrategy ( WsfStringId aTypeName)

Sets the fusion strategy used by this track manager.

References WsfObserver::FusionStrategyChanged(), WsfFusionStrategyTypes::Get(), WsfSimulation::GetSimTime(), and GetSimulation().

◆ SetInitiateLocalTracks()

void WsfTrackManager::SetInitiateLocalTracks ( bool aInitiateLocalTracks)
inline

Set whether the tracker should initiate local tracks from a raw track, if no correlation is made by the correlation strategy (default is to initiate local tracks).

Referenced by WsfMTT_Correlation::Initialize().

◆ SetWillPurgeInactiveTracks()

void WsfTrackManager::SetWillPurgeInactiveTracks ( bool aWillPurgeInactiveTracks)
inline

Indicate that some external process will be performing period purging of inactive tracks. This is simply a hint

◆ StartFrame()

void WsfTrackManager::StartFrame ( )
virtual

Start a frame for a frame based scan. This method only needs to be called in conjunction with frame-based fusion strategies.

◆ UnlockTrack() [1/2]

void WsfTrackManager::UnlockTrack ( double aSimTime,
const WsfTrackId & aLocalTrackId )
virtual

Unlock a track that was previously locked.

Parameters
aSimTimeThe current simulation time.
aLocalTrackIdThe track ID of the local track to be unlocked.

References FindTrack(), trackPtr, and UnlockTrack().

Referenced by UnlockTrack().

◆ UnlockTrack() [2/2]

void WsfTrackManager::UnlockTrack ( double aSimTime,
WsfLocalTrack * aLocalTrackPtr )
virtual

Unlock a track that was previously locked. Use this form if you already have a pointer to the local track to be unlocked. It is faster because it doesn't have to locate the track in the track list.

Parameters
aSimTimeThe current simulation time.
aLocalTrackPtrThe local track to be unlocked.

References WsfLocalTrack::DecrementUseCount(), WsfTrack::GetTrackId(), WsfLocalTrack::GetTrackManager(), WsfLocalTrack::GetUseCount(), WsfLocalTrack::IsCorrelated(), WsfTrack::IsFusible(), and NotifyOfLocalTrackDropped().

◆ UpdateAuxData()

bool WsfTrackManager::UpdateAuxData ( double aSimTime,
WsfLocalTrack & aLocalTrack,
const WsfTrack & aNonLocalTrack )

Update aux_data in the local track with aux_data from the non-local track.

This is called from WsfDefaultFusion::UpdateNonKinematic data to update the aux_data in the local track with aux_data from the non-local track. It is done within the context of the track manager because it has access to the optional input data that is used to guide the process.

Parameters
aSimTimeThe current simulation time.
aLocalTrackThe local track to be updated.
aNonLocalTrackThe non-local track that is providing the update.

References WsfAuxDataEnabled::GetAuxData(), WsfAuxDataEnabled::GetAuxDataConst(), and WsfAuxDataEnabled::HasAuxData().

Referenced by AddTrackReport(), InitiateTrackP(), WsfDefaultFusion::PerformMirrorTrackUpdate(), WsfDefaultFusion::UpdateAuxData(), and WsfOrbitDeterminationFusion::UpdateLocalTrackFromNonLocalTrack().

◆ WillPurgeInactiveTracks()

bool WsfTrackManager::WillPurgeInactiveTracks ( ) const
inline

Will some external process perform period purging of inactive tracks.

Member Data Documentation

◆ CandidateTrackPromoted

UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::CandidateTrackPromoted

◆ CurrentTargetChanged

UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::CurrentTargetChanged

◆ LocalTrackCorrelation

◆ LocalTrackDecorrelation

UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrackId&)> WsfTrackManager::LocalTrackDecorrelation

◆ LocalTrackDropped

UtCallbackListN<void(double, const WsfLocalTrack*)> WsfTrackManager::LocalTrackDropped

◆ LocalTrackInitiated

UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrack*)> WsfTrackManager::LocalTrackInitiated

◆ LocalTrackUpdated

UtCallbackListN<void(double, const WsfLocalTrack*, const WsfTrack*)> WsfTrackManager::LocalTrackUpdated

◆ RawTrackDropped

UtCallbackListN<void(double, const WsfTrack*)> WsfTrackManager::RawTrackDropped

◆ RawTrackReceived

UtCallbackListN<void(double, const WsfTrack*)> WsfTrackManager::RawTrackReceived

◆ TrackManagerChanged

UtCallbackListN<void(double, WsfTrackManager*)> WsfTrackManager::TrackManagerChanged

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