12#ifndef WSFFALSETARGET_HPP
13#define WSFFALSETARGET_HPP
15#include "wsf_mil_export.h"
22#include "UtEntity.hpp"
24#include "UtRandom.hpp"
53 static std::map<WsfStringInt, size_t> sFT_NameCounter;
54 static size_t sFT_UniqueId;
55 static std::recursive_mutex sFT_Mutex;
129 double mLastScan{std::numeric_limits<double>::lowest()};
165 using Blips = std::vector<WsfFalseTargetBlip*>;
195 virtual void ClearAllBlips();
196 virtual void ClearBlips(
unsigned int aJammerId);
197 Blips& GetBlips(
unsigned int aJammerId);
198 Blip* GetBlipPtr(
WsfStringId aBlipNameId,
unsigned int aJammerId);
199 Blip* GetBlipPtr(
size_t aBlipUniqueId,
unsigned int aJammerId);
200 bool GetBlipsCreated(
unsigned int aJammerId);
201 void CreateBlipNameId(Blip* aBlipPtr);
206 void SetScanInterval(
double aScanInterval);
207 void SetPersistence(
double aPersistence);
208 void SetInitialNumberOfFTs(
unsigned int aInitialNumberOfFTs,
bool aIsExplicit =
false);
210 void SetAzimuthExtent(
double aAzLower,
double aAzUpper);
211 void SetRangeExtent(
double aRangeLower,
double aRangeUpper);
212 void SetBlipSpeeds(
double aMinSpeed,
double aMaxSpeed);
214 void GetBlipSpeeds(
double& aMinBlipSpeed,
double& aMaxBlipSpeed)
const;
215 void GetBlipHeadings(
double& aMinBlipHeading,
double& aMaxBlipHeading)
const;
220 void SetReferenceCentroid(
double aLatitude,
double aLongitude,
double aAltitude);
221 void GetReferenceCentroid(
double& aLatitude,
double& aLongitude,
double& aAltitude);
224 virtual void RemoveJammer(
WsfEM_Xmtr* aJammerXmtrPtr);
241 void DropTracks(RadarSnsrPair aIdKey,
WsfEM_Xmtr* aJammerXmtrPtr);
260 virtual void Rescan(
double aSimTime,
WsfEM_Xmtr* aJammerXmtrPtr);
261 virtual void UpdateBlipPositions(
double aSimTime,
unsigned int aJammerId);
262 void UpdateBaseBlipPositions(
double aSimTime);
263 void UpdateCentroidPosition(
double aSimTime);
268 BlipBehavior mBlipBehavior;
269 RadarBehavior mRadarBehavior;
270 PlatformBehavior mPlatformBehavior;
271 unsigned int mInitialNumberOfFTs;
272 double mScanInterval;
275 ExtentData mAzimuthExtent;
276 ExtentData mRangeExtent;
277 bool mRangeConstrained;
278 ReferenceBearing mBearingReference;
279 RangeDistribution mRangeDistribution;
282 double mCentroidHeading;
283 double mCentroidSpeed;
284 double mLastCentroidUpdate;
285 bool mCentroidNeedsAGL_Adjustment;
287 bool mExplicitReferenceCentroid;
288 bool mExplicitNumberOfFTs;
289 bool mExplicitScanInterval;
290 bool mExplicitAzimuthExtent;
291 bool mExplicitRangeConstraint;
292 bool mExplicitRangeExtent;
293 bool mExplicitBlipSpeeds;
295 double mBlipHeadings[2];
296 double mBlipSpeeds[2];
297 BlipReference mBlipReference;
300 double mInitializationTime;
304 JammerIdToBlipsMap mBlipsMap;
305 BaseLocsVec mBaseLocations;
309 JammerIdToStateMap mJammerIdToStateMap;
311 double mLastBaseLocWCS[3];
312 double mLastBaseLocsUpdate;
316 BlipStateVec mNewBlipsStateVec;
323 size_t mFTNameExtensionId;
324 size_t mBlipIdCounter;
328 mutable std::recursive_mutex mMutex;
392 void AddStrength(RadarSnsrPair aIdKey, BlipStrength aStrength);
394 void AddTargetedRadarId(RadarSnsrPair aIdKey);
395 bool IsValidTargetedRadarId(RadarSnsrPair aIdKey);
396 void ResetBlipData(RadarSnsrPair aIdKey);
397 void UpdateBlipData(RadarSnsrPair aIdKey,
401 void AddRadarToBlipRange(RadarSnsrPair aIdKey,
double aRadar2BlipRange);
402 double GetRadarToBlipRange(RadarSnsrPair aIdKey);
404 void AddJammerToRadarRange(RadarSnsrPair aIdKey,
double aJammer2RadarRange);
405 double GetJammerToRadarRange(RadarSnsrPair aIdKey);
406 double GetReferenceJammerToRadarRange();
408 void UnDetect(RadarSnsrPair aIdKey);
409 BlipStrength GetStrength(RadarSnsrPair aIdKey);
411 void AddLocationDelta(RadarSnsrPair aIdKey,
const double aLocationDelta[3]);
412 void GetLocationDelta(RadarSnsrPair aIdKey,
double aLocationDelta[3]);
414 void AddActualSNR(RadarSnsrPair aIdKey,
double aActualSNR);
415 double GetActualSNR(RadarSnsrPair aIdKey);
417 double GetMinimumActualSNR(
const RadarSnsrVec& aRadarSensorVec);
421 void AddEquivalentRCS(RadarSnsrPair aIdKey,
double aEquivalentRCS);
422 double GetEquivalentRCS(RadarSnsrPair aIdKey);
430 std::string
GetTypeId()
const {
return mFT_BlipTypeId; }
445 BlipDataMap mDataMap;
447 BlipBehavior mFtBehavior;
455 RadarSnsrVec mRadarSensorIds;
457 mutable std::recursive_mutex mMutex;
aObjectPtr Update(simTime)
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_Xmtr.hpp:55
Manages simulation-wide variables used by EW Effects.
Definition WsfEW_EffectManager.hpp:27
Definition WsfFalseTarget.hpp:332
void SetJammerXmtr(WsfEM_Xmtr *aJammerXmtrPtr)
Definition WsfFalseTarget.hpp:383
void SetNameId(WsfStringId aNameId)
Definition WsfFalseTarget.hpp:427
BlipStrength
Definition WsfFalseTarget.hpp:342
@ cStrong
Definition WsfFalseTarget.hpp:343
@ cWeak
Definition WsfFalseTarget.hpp:344
@ cUndetected
Definition WsfFalseTarget.hpp:345
size_t GetUniqueId() const
Definition WsfFalseTarget.hpp:433
WsfFalseTargetBlip(const WsfFalseTargetBlip &aSrc)=delete
WsfFalseTarget * GetFalseTarget() const
Definition WsfFalseTarget.hpp:386
void SetUniqueId(size_t aUniqueId)
Definition WsfFalseTarget.hpp:432
WsfFalseTargetBlip()
Definition WsfFalseTarget.cpp:1378
BlipBehavior GetBehavior() const
Definition WsfFalseTarget.hpp:389
std::map< RadarSnsrPair, BlipData > BlipDataMap
Definition WsfFalseTarget.hpp:373
std::vector< RadarSnsrPair > RadarSnsrVec
Definition WsfFalseTarget.hpp:336
std::string GetTypeId() const
Definition WsfFalseTarget.hpp:430
void SetPlatform(WsfPlatform *aPlatformPtr)
Definition WsfFalseTarget.hpp:380
void SetBehavior(BlipBehavior aFalseTargetBehavior)
Definition WsfFalseTarget.hpp:390
void SetFalseTarget(WsfFalseTarget *aFtPtr)
Definition WsfFalseTarget.hpp:387
WsfPlatform * GetPlatform() const
Definition WsfFalseTarget.hpp:381
WsfStringId GetNameId() const
Definition WsfFalseTarget.hpp:428
WsfEM_Xmtr * GetJammerXmtr() const
Definition WsfFalseTarget.hpp:384
WsfFalseTarget::BlipBehavior BlipBehavior
Definition WsfFalseTarget.hpp:335
WsfFalseTarget::RadarSnsrPair RadarSnsrPair
Definition WsfFalseTarget.hpp:334
Definition WsfFalseTargetScreener.hpp:41
An instance of this class quantitatively models the multiple false targets that will be perceived by.
Definition WsfFalseTarget.hpp:50
unsigned int GetInitialNumberOfFTs() const
Definition WsfFalseTarget.hpp:230
RadarBehavior GetRadarBehavior() const
Definition WsfFalseTarget.hpp:187
BlipBehavior GetBlipBehavior() const
Definition WsfFalseTarget.hpp:186
std::vector< ExtentPair > ExtentData
Definition WsfFalseTarget.hpp:162
bool ExplicitNumberOfFTs() const
Definition WsfFalseTarget.hpp:250
PlatformBehavior
Definition WsfFalseTarget.hpp:68
@ cCONSISTENT_TO_MULTIPLE_PLATFORMS
Perception from multiple platforms is correlated.
Definition WsfFalseTarget.hpp:70
@ cRANDOM_TO_MULTIPLE_PLATFORMS
Perception from multiple platforms is uncorrelated.
Definition WsfFalseTarget.hpp:69
void SetDebug(bool aDebug)
Definition WsfFalseTarget.hpp:227
WsfFalseTargetBlip Blip
Definition WsfFalseTarget.hpp:58
static size_t AssignFT_BlipUniqueId()
Definition WsfFalseTarget.cpp:58
virtual bool Initialize(WsfSimulation *aSimulationPtr)
Definition WsfFalseTarget.cpp:202
void SetBlipBehavior(BlipBehavior aBlipBehavior)
Definition WsfFalseTarget.hpp:203
bool ExplicitRangeExtent() const
Definition WsfFalseTarget.hpp:252
std::vector< BaseData > BaseLocsVec
Definition WsfFalseTarget.hpp:164
std::pair< WsfFalseTargetScreener *, WsfEM_Xmtr * > ScreenerPtrJammerXmtrPtr
Definition WsfFalseTarget.hpp:170
double GetScanInterval() const
Definition WsfFalseTarget.hpp:190
BlipReference
Definition WsfFalseTarget.hpp:121
@ cBR_JAMMER
Uses the jammer (i.e. transmitter) platform for the heading and speed of the blips.
Definition WsfFalseTarget.hpp:123
@ cBR_NONE
Uses the input speed and heading for the false target blip movement.
Definition WsfFalseTarget.hpp:122
OnOffState
OnOffState indicates what the state of this false target technique.
Definition WsfFalseTarget.hpp:106
@ cOff
Definition WsfFalseTarget.hpp:108
@ cOn
Definition WsfFalseTarget.hpp:107
std::pair< WsfStringInt, WsfStringInt > RadarSnsrPair
Definition WsfFalseTarget.hpp:161
WsfFalseTarget(WsfScenario &aScenario)
Definition WsfFalseTarget.cpp:70
std::vector< ScreenerPtrJammerXmtrPtr > BlipStateVec
Definition WsfFalseTarget.hpp:171
bool GetDebug() const
Definition WsfFalseTarget.hpp:228
std::vector< WsfFalseTargetBlip * > Blips
Definition WsfFalseTarget.hpp:165
void SetToggled(bool aToggled)
Definition WsfFalseTarget.hpp:238
bool GetChanged() const
Definition WsfFalseTarget.hpp:226
std::vector< Blips::iterator > BlipsIterators
Definition WsfFalseTarget.hpp:166
WsfPlatform * GetCentroidPlatform() const
Definition WsfFalseTarget.hpp:222
bool ExplicitAzimuthExtent() const
Definition WsfFalseTarget.hpp:249
void SetState(OnOffState aState)
Definition WsfFalseTarget.hpp:235
PlatformBehavior GetPlatformBehavior() const
Definition WsfFalseTarget.hpp:188
ReferenceBearing GetBearingReference() const
Definition WsfFalseTarget.hpp:218
friend class WsfFalseTargetBlip
Definition WsfFalseTarget.hpp:59
void SetBlips(int aJammerID, WsfFalseTarget::Blips &aBlips)
Definition WsfFalseTarget.hpp:247
WsfSimulation * GetSimulation() const
Definition WsfFalseTarget.hpp:259
void SetPlatformBehavior(PlatformBehavior aPlatformBehavior)
Definition WsfFalseTarget.hpp:205
bool GetToggled() const
Definition WsfFalseTarget.hpp:239
bool ExplicitBlipSpeeds() const
Definition WsfFalseTarget.hpp:255
bool ExplicitReferenceCentroid() const
Definition WsfFalseTarget.hpp:253
std::map< unsigned int, Blips > JammerIdToBlipsMap
Definition WsfFalseTarget.hpp:167
std::map< unsigned int, JammerState > JammerIdToStateMap
Definition WsfFalseTarget.hpp:168
bool GetRangeConstrained() const
Definition WsfFalseTarget.hpp:232
WsfFalseTarget & operator=(const WsfFalseTarget &)=delete
BlipDistribution
"BlipDistribution" appearance describes how the false targets are spread over an area surrounding a r...
Definition WsfFalseTarget.hpp:90
@ cSECTORED
Definition WsfFalseTarget.hpp:93
@ cCIRCULAR
Definition WsfFalseTarget.hpp:92
@ cRANDOM
Definition WsfFalseTarget.hpp:91
void SetRadarBehavior(RadarBehavior aRadarBehavior)
Definition WsfFalseTarget.hpp:204
void SetBearingReference(ReferenceBearing aBearingReference)
Definition WsfFalseTarget.hpp:217
bool ExplicitScanInterval() const
Definition WsfFalseTarget.hpp:254
bool ExplicitRangeConstraint() const
Definition WsfFalseTarget.hpp:251
BlipBehavior
Definition WsfFalseTarget.hpp:83
@ cRANDOM_SCAN_TO_SCAN
Perception changes randomly from scan to scan.
Definition WsfFalseTarget.hpp:84
@ cCONSISTENT_SCAN_TO_SCAN
Relative to the true track geometry, perception is consistent from scan to scan.
Definition WsfFalseTarget.hpp:85
ReferenceBearing
ReferenceBearing indicates what the reference angle for zero azimuth is.
Definition WsfFalseTarget.hpp:113
@ cPROTECTED_ENTITY
Definition WsfFalseTarget.hpp:116
@ cNORTH
Definition WsfFalseTarget.hpp:115
@ cJAMMER
Definition WsfFalseTarget.hpp:114
double GetPersistence() const
Definition WsfFalseTarget.hpp:231
RangeDistribution
"RangeDistribution" describes how the false targets are spread over the range from the radar site.
Definition WsfFalseTarget.hpp:98
@ cUNIFORM
Definition WsfFalseTarget.hpp:99
@ cEXPONENTIAL
Definition WsfFalseTarget.hpp:101
@ cLOG
Definition WsfFalseTarget.hpp:100
RadarBehavior
"RadarBehavior" describes the observed time-variant behavior for the false-target blips among differe...
Definition WsfFalseTarget.hpp:75
@ cCONSISTENT_TO_MULTIPLE_RADARS
Perception from multiple radars is correlated.
Definition WsfFalseTarget.hpp:77
@ cRANDOM_TO_MULTIPLE_RADARS
Perception from multiple radars is uncorrelated.
Definition WsfFalseTarget.hpp:76
static void ResetStatic()
Definition WsfFalseTarget.cpp:50
void Reset()
Definition WsfFalseTarget.cpp:1328
OnOffState GetState() const
Definition WsfFalseTarget.hpp:236
void SetRangeConstrained(bool aRangeConstrained)
Definition WsfFalseTarget.hpp:233
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
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfFalseTarget.hpp:349
double mRadarToBlipRange
Definition WsfFalseTarget.hpp:351
BlipStrength mStrength
Definition WsfFalseTarget.hpp:354
double mLocationDelta[3]
Definition WsfFalseTarget.hpp:355
double mActualSNR
Definition WsfFalseTarget.hpp:350
WsfEM_Interaction * mInteractionPtr
Definition WsfFalseTarget.hpp:356
double mEquivalentRCS
Definition WsfFalseTarget.hpp:352
double mJammerToRadarRange
Definition WsfFalseTarget.hpp:353
void Clear()
Definition WsfFalseTarget.hpp:358
Definition WsfFalseTarget.hpp:138
void Clear()
Definition WsfFalseTarget.hpp:145
double mHeading
Definition WsfFalseTarget.hpp:141
double mSpeed
Definition WsfFalseTarget.hpp:140
WsfStringId mNameId
Definition WsfFalseTarget.hpp:142
double mLocationWCS[3]
Definition WsfFalseTarget.hpp:139
size_t mUniqueId
Definition WsfFalseTarget.hpp:143
Definition WsfFalseTarget.hpp:156
double mMax
Definition WsfFalseTarget.hpp:158
double mMin
Definition WsfFalseTarget.hpp:157
Definition WsfFalseTarget.hpp:127
unsigned int mScreenedNumberOfFTs
Definition WsfFalseTarget.hpp:133
double mLastScan
Definition WsfFalseTarget.hpp:129
bool mBlipsCreated
Definition WsfFalseTarget.hpp:128
double mLastBlipUpdate
Definition WsfFalseTarget.hpp:131
double mLastBlipLocWCS[3]
Definition WsfFalseTarget.hpp:132
bool mFTsRejected
Definition WsfFalseTarget.hpp:134
double mLastUpdate
Definition WsfFalseTarget.hpp:130