12#ifndef WSFFALSETARGETSCREENER_HPP
13#define WSFFALSETARGETSCREENER_HPP
15#include "wsf_mil_export.h"
20#include "UtCloneablePtr.hpp"
23#include "UtRandom.hpp"
46 using FT_Result = std::map<unsigned int, WsfEM_Interaction*>;
47 using BlipAlloc = std::map<WsfFalseTarget::BlipBehavior, int>;
50 using RR_Map = std::map<WsfFalseTarget::BlipBehavior, double>;
51 using RR_MapPair = std::pair<WsfFalseTarget::BlipBehavior, double>;
56 ForceData(
double aAzimuth,
double aRange,
double aSNR)
140 bool FindTrackableBlip(
size_t aBlipId);
144 bool FindBlockedBlip(
size_t aBlipId);
148 bool FindUndetectedBlip(
size_t aBlipId);
155 bool AddFalseTarget(FT_JammerPair aFT_JammerPair);
156 bool RemoveFalseTarget(FT_JammerPair aFT_JammerPair);
158 bool FindFalseTarget(FT_JammerPair aFT_JammerPair);
161 bool RemoveJammerXmtr(
WsfEM_Xmtr* aJammerXmtrPtr);
163 TrackIdMap GetActiveTargetTracks()
const;
169 void AddFalseTargetTrack(
size_t aBlipId,
WsfTrackId aTrackId);
170 void DropFalseTargetTrack(
size_t aBlipId);
171 bool FindFalseTargetTrack(
size_t aBlipId);
182 void UpdateTargetTrack(
size_t aObjectId,
WsfTrack* aValidTrackPtr);
183 void DropTargetTrack(
size_t aObjectId);
185 bool AllowTrackReporting(
size_t aObjectId,
const WsfTrack* aTrackPtr);
186 void TracksTransfered();
187 bool TrackExists(
size_t aObjectId);
190 bool IsRadarModeTurnedOn();
253 void CheckFT_Toggle();
257 void AdjustTargetsAndBlips(
double aSimTime);
258 bool ForceTargetTrack(
double aRadar2TargetRange,
double aRadar2TargetAzimuth,
double aTargetSNR);
261 void SetScreenerValid(
bool aBoolValue) { mScreenerValid = aBoolValue; }
263 bool CreateBlips(WsfFalseTarget* aFalseTargetPtr, WsfEM_Xmtr* aJammerXmtrPtr);
264 void RemoveBlockedBlips(WsfFalseTarget* aFalseTargetPtr, WsfEM_Xmtr* aJammerXmtr);
265 void RemoveUndetectedBlips(WsfFalseTarget* aFalseTargetPtr, WsfEM_Xmtr* aJammerXmtr);
266 void RemoveTrackableBlips(WsfFalseTarget* aFalseTargetPtr, WsfEM_Xmtr* aJammerXmtr);
267 void UpdateBlips(
double aSimTime, WsfSensor::Settings& aSettings);
268 void UpdateFalseTargetJammers(
double aSimTime);
270 size_t PruneTargetTracks(
size_t aPruneQuantity);
272 size_t AddTrackableBlips(
size_t aAddQuantity);
273 size_t PruneTrackableBlips(
size_t aPruneQuantity);
275 bool RejectBlips(
double aSimTime);
278 WsfSensorMode* mSensorModePtr;
281 bool mReportsSignalToNoise;
288 BlipAlloc mBlipsAllocation;
291 RR_Map mInitialRejectionRatios;
294 RR_Map mRejectionRatios;
297 OutputType mOutputType;
302 bool mTrackReportingWhenFlooded;
305 bool mProduceOutputPlot;
308 bool mRequestBasedTracking;
311 bool mOnlyScreenFT_Requests;
324 int mTransferCapacity;
329 bool mFT_JammerStatusChange;
332 double mLastBlipUpdate;
336 int mForceCountPerRangeSector;
337 double mForceJtoSDeltaThreshold;
338 double mForceSectorArc;
341 RangeForceType mRangeForceType;
345 double mMinimumBlipRange;
349 double mMaximumBlipRange;
353 BlipIdToForceDataMap mBlipIdToForceDataMap;
357 int mPassedFalseTargetNumber;
360 int mPassedRealTargetNumber;
363 int mAllowedFalseTargetNumber;
366 int mAllowedRealTargetNumber;
369 TrackIdMap mFalseTargetTrackIds;
372 ut::CloneablePtr<WsfPlatform> mTempPlatformPtr;
aObjectPtr Update(simTime)
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Xmtr.hpp:55
WsfEW_FalseTargeEffect models and applies false-target effects.
Definition WsfEW_FalseTargetEffect.hpp:30
Definition WsfFalseTargetScreener.hpp:41
int GetRangeForceType() const
Definition WsfFalseTargetScreener.hpp:131
std::vector< size_t > TargetIds
Definition WsfFalseTargetScreener.hpp:49
std::pair< WsfFalseTarget *, WsfEM_Xmtr * > FT_JammerPair
Definition WsfFalseTargetScreener.hpp:43
TrackIdMap mForcedTargetTrackIds
Definition WsfFalseTargetScreener.hpp:223
TrackIdMap mReportingTrackIds
Reportable Track Id list from the sensor tracker. The sensor tracker manages this list.
Definition WsfFalseTargetScreener.hpp:206
void UpdateTargetTrack(size_t aObjectId, WsfTrack *aValidTrackPtr)
Definition WsfFalseTargetScreener.cpp:570
double mLastUpdate
The last time a full update of the screener was achieved.
Definition WsfFalseTargetScreener.hpp:233
int GetRealTargetNumber() const
Definition WsfFalseTargetScreener.hpp:198
OutputType GetScreenerOutputType() const
Definition WsfFalseTargetScreener.hpp:118
bool mBlipsAdjusted
Definition WsfFalseTargetScreener.hpp:247
std::vector< std::pair< size_t, FT_JammerPair > > BlipIdFTJammerList
Definition WsfFalseTargetScreener.hpp:48
std::map< unsigned int, WsfEM_Interaction * > FT_Result
Definition WsfFalseTargetScreener.hpp:46
BlipIdFTJammerList & GetUndetectedBlipIds()
Definition WsfFalseTargetScreener.hpp:149
std::vector< FT_JammerPair > FT_JammerVec
Definition WsfFalseTargetScreener.hpp:45
virtual bool Initialize(double aSimTime, WsfSensorMode *aSensorModePtr, bool aReportsSignalToNoise)
Definition WsfFalseTargetScreener.cpp:202
bool GetDebugEnabled() const
Definition WsfFalseTargetScreener.hpp:122
bool IsRequestBasedTracking() const
Definition WsfFalseTargetScreener.hpp:174
WsfFalseTargetScreener & operator=(const WsfFalseTargetScreener &)=delete
BlipIdFTJammerList & GetTrackableBlipIds()
Definition WsfFalseTargetScreener.hpp:141
void ProcessInputBlock(UtInputBlock &aInputBlock)
A convenience method to check for and process a 'false_target_screener/end_false_target_screener' blo...
Definition WsfFalseTargetScreener.cpp:392
int GetPassedRealTargetNumber() const
Definition WsfFalseTargetScreener.hpp:196
int GetTrackCapacity() const
Definition WsfFalseTargetScreener.hpp:129
std::map< size_t, ForceData > BlipIdToForceDataMap
Definition WsfFalseTargetScreener.hpp:67
int GetAllowedRealTargetNumber() const
Definition WsfFalseTargetScreener.hpp:251
TrackIdMap GetFalseTargetTracks()
Definition WsfFalseTargetScreener.hpp:172
BlipIdFTJammerList mTrackableBlipIds
Track-able blip list (i.e. detected).
Definition WsfFalseTargetScreener.hpp:245
void Reset()
Definition WsfFalseTargetScreener.cpp:1721
double GetForceRange() const
Definition WsfFalseTargetScreener.hpp:133
BlipIdFTJammerList mUndetectedBlipIds
Undetectable blip list.
Definition WsfFalseTargetScreener.hpp:242
bool mTargetsAdjusted
Definition WsfFalseTargetScreener.hpp:228
TrackIdMap mNullTargetTrackIds
List of target track Ids that are being detected but not yet a track in the sensor tracker.
Definition WsfFalseTargetScreener.hpp:226
bool mBlipsInvalid
Definition WsfFalseTargetScreener.hpp:248
BlipIdFTJammerList & GetBlockedBlipIds()
Definition WsfFalseTargetScreener.hpp:145
OutputType
Describe the output state of this object.
Definition WsfFalseTargetScreener.hpp:71
@ cPLOT
Producing plotted output, a pseudo-radar screen representation.
Definition WsfFalseTargetScreener.hpp:72
@ cTRACKS
Producing tracks, for communication to external entities.
Definition WsfFalseTargetScreener.hpp:73
@ cOVERLOAD
Countermeasures have produced an excessive number of false targets, causing an overload.
Definition WsfFalseTargetScreener.hpp:74
bool mTargetsInvalid
Definition WsfFalseTargetScreener.hpp:229
bool OnlyScreenFT_TrackRequests() const
Definition WsfFalseTargetScreener.hpp:175
void SetSensorModePtr(WsfSensorMode *aSensorModePtr)
Definition WsfFalseTargetScreener.hpp:113
std::pair< WsfFalseTarget::BlipBehavior, double > RR_MapPair
Definition WsfFalseTargetScreener.hpp:51
std::map< size_t, WsfTrackId > TrackIdMap
Definition WsfFalseTargetScreener.hpp:52
TrackIdMap mActiveTargetTrackIds
List of active target track Ids that are being tracked in the sensor tracker.
Definition WsfFalseTargetScreener.hpp:215
int GetFalseTargetNumber() const
Definition WsfFalseTargetScreener.hpp:197
int GetTransferCapacity() const
Definition WsfFalseTargetScreener.hpp:130
std::map< WsfFalseTarget::BlipBehavior, double > RR_Map
Definition WsfFalseTargetScreener.hpp:50
void PrintScreenerState(double aSimTime)
Definition WsfFalseTargetScreener.cpp:1139
bool GetScreenerValid()
Definition WsfFalseTargetScreener.hpp:123
std::map< WsfFalseTarget::BlipBehavior, int > BlipAlloc
Definition WsfFalseTargetScreener.hpp:47
double GetForceJtoSDeltaThreshold() const
Definition WsfFalseTargetScreener.hpp:135
Picture
Definition WsfFalseTargetScreener.hpp:80
@ cPERFECT
Enough energy is injected to produce the desired effect.
Definition WsfFalseTargetScreener.hpp:81
@ cINEFFECTIVE
Not successful with the desired effect.
Definition WsfFalseTargetScreener.hpp:83
@ cDEGRADED
Marginally effective.
Definition WsfFalseTargetScreener.hpp:82
FT_JammerVec mFalseTargetsJammers
List of false target jammer pairs being considered by screener function.
Definition WsfFalseTargetScreener.hpp:209
bool NeedsUpdated(double aSimTime)
Definition WsfFalseTargetScreener.cpp:1653
WsfFalseTargetScreener(const WsfScenario &aScenario)
Definition WsfFalseTargetScreener.cpp:77
std::pair< WsfStringId, unsigned int > FT_JammerIdPair
Definition WsfFalseTargetScreener.hpp:44
WsfPlatform * GetTempPlatform()
Definition WsfFalseTargetScreener.hpp:201
double GetForceSectorArc() const
Definition WsfFalseTargetScreener.hpp:132
TrackIdMap GetBlockedTargets()
Definition WsfFalseTargetScreener.hpp:164
WsfSensorMode * GetSensorModePtr()
Definition WsfFalseTargetScreener.hpp:114
int GetForceCountPerRangeSector() const
Definition WsfFalseTargetScreener.hpp:134
RangeForceType
Definition WsfFalseTargetScreener.hpp:89
@ cFORCE_NEITHER
Definition WsfFalseTargetScreener.hpp:90
@ cFORCE_IN_OUT
Definition WsfFalseTargetScreener.hpp:93
@ cFORCE_INSIDE
Definition WsfFalseTargetScreener.hpp:91
@ cFORCE_OUTSIDE
Definition WsfFalseTargetScreener.hpp:92
int GetPlotCapacity() const
Definition WsfFalseTargetScreener.hpp:128
bool ReportsSNR() const
Definition WsfFalseTargetScreener.hpp:116
TrackIdMap mBlockedTargetTrackIds
Definition WsfFalseTargetScreener.hpp:219
BlipIdFTJammerList mBlockedBlipIds
Blocked but detectable blip list.
Definition WsfFalseTargetScreener.hpp:239
void AddTargetTrack(WsfStringInt aObjectId, WsfTrack *aValidTrackPtr)
Definition WsfFalseTargetScreener.hpp:177
int GetPassedFalseTargetNumber() const
Definition WsfFalseTargetScreener.hpp:195
An instance of this class quantitatively models the multiple false targets that will be perceived by.
Definition WsfFalseTarget.hpp:50
WsfFalseTargetBlip Blip
Definition WsfFalseTarget.hpp:58
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual WsfObject * Clone() const =0
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:133
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfStringId.hpp:29
Definition WsfTrackId.hpp:33
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
ForceData(double aAzimuth, double aRange, double aSNR)
Definition WsfFalseTargetScreener.hpp:56
double mSNR
Definition WsfFalseTargetScreener.hpp:65
double mRange
Definition WsfFalseTargetScreener.hpp:64
double mAzimuth
Definition WsfFalseTargetScreener.hpp:63