WSF
WsfEW_SimpleFT_Effect.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEW_SIMPLEFT_EFFECT_HPP
13#define WSFEW_SIMPLEFT_EFFECT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <iosfwd>
18#include <map>
19
20class UtInput;
21
22#include "WsfEM_Interaction.hpp"
23#include "WsfEW_PulseEffect.hpp"
24
26
27class WSF_MIL_EXPORT WsfEW_SimpleFT_Effect : public WsfEW_PulseEffect
28{
29public:
32 ~WsfEW_SimpleFT_Effect() override = default;
33 WsfEW_Effect* Clone() const override;
34 bool Initialize(WsfSimulation& aSimulation) override;
35 bool ProcessInput(UtInput& aInput) override;
36
37 void ApplyUnmitigatedEffect(WsfEW_Effects& aEW_Effects) const override;
38
39 void ApplyMitigatedEffect(WsfEW_Effect* aEW_EffectPtr, WsfEW_Effects& aEW_Effects) const override;
40
41 void UpdateEffects(double aSimTime,
42 const WsfEM_Interaction& aTargetInteraction,
43 const WsfEM_Interaction& aJammerToTgtInteraction,
44 const ut::optional<WsfEM_Interaction>& aTgtToJammerInteraction,
45 WsfEW_Effects& aEW_Effects,
46 WsfEW_Effect* aEW_EffectPtr = nullptr) override;
47
48 void UpdateJammerPulseDensity(WsfEM_Xmtr* aJammerXmtrPtr, WsfEM_Xmtr* aRadarXmtrPtr) override;
49
51
52
54 double GetNumberFalseTargets() { return mNumberFalseTargets; }
56
57protected:
58 class WSF_MIL_EXPORT SimpleFT_Data : public WsfEW_PulseEffect::PulseData
59 {
60 public:
63 ~SimpleFT_Data() override = default;
64
65 bool ProcessInput(UtInput& aInput) override;
66 bool Initialize(WsfSimulation& aSimulation) override;
67
68 EW_EffectData* Clone() const override;
69
70 void Reset() override;
71
72 unsigned int mMaximumNumberFTs;
73 unsigned int mMaximumFT_Capacity;
80
81 protected:
82 SimpleFT_Data(const SimpleFT_Data& aSrc) = default;
83 };
84
86
87 unsigned int GetMaximumNumberFalseTargets(WsfStringId aSystemTypeId) const;
88
90
91 EffectData* NewEffectData() override;
92 EffectData* PropagateEffectDataPtr(WsfStringId aSystemTypeId) override;
94
95private:
96 struct SensorData
97 {
98 SensorData()
99 : mLastUpdateTime(-DBL_MAX)
100 , mNumberFalseTargets(0)
101 , mFloodedBlocked(false)
102 {
103 }
104
105 double mLastUpdateTime;
106 unsigned int mNumberFalseTargets;
107 bool mFloodedBlocked;
108 };
109
110 bool FloodedBlocked(unsigned int aNumberFalseTargets, unsigned int aMaximumCapacity, bool aRandomDraw);
111
112 using SimpleFT_DataMap =
113 std::map<WsfStringId, SimpleFT_Data*>;
114 using RcvrPtrDeltaGainVec = std::vector<std::pair<WsfEM_Rcvr*, double>>;
115 using SensorDataMap = std::map<WsfStringId, SensorData>;
116
117 SimpleFT_DataMap mSimpleFT_DataMap;
118
119 // Current data
120 SensorDataMap mSensorDataMap;
121 unsigned int mNumberFalseTargets;
122 unsigned int mMaximumFT_Capacity;
123 bool mFloodedBlocked;
124 bool mForceAllow;
125};
126
127#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Xmtr.hpp:55
Base effect data used to derive from in inheriting effect classes.
Definition WsfEW_Effect.hpp:317
Definition WsfEW_Effect.hpp:45
Definition WsfEW_Effects.hpp:41
void ApplyUnmitigatedEffect(WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:72
void ApplyMitigatedEffect(WsfEW_Effect *aEW_EffectPtr, WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:233
Definition WsfEW_PulseEffect.hpp:75
EffectData * PropagateEffectDataPtr(WsfStringId aSystemTypeId) override
Definition WsfEW_PulseEffect.cpp:104
EffectData * NewEffectData() override
Definition WsfEW_PulseEffect.hpp:104
WsfEW_Effect * Clone() const override
Definition WsfEW_PulseEffect.cpp:42
virtual void UpdateJammerPulseDensity(WsfEM_Xmtr *aJammerXmtrPtr, WsfEM_Xmtr *aRadarXmtrPtr)
Definition WsfEW_PulseEffect.cpp:111
WsfEW_PulseEffect()
Definition WsfEW_PulseEffect.cpp:24
bool Initialize(WsfSimulation &aSimulation) override
Definition WsfEW_PulseEffect.cpp:48
void UpdateEffects(double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects, WsfEW_Effect *aEW_EffectPtr=nullptr) override
Definition WsfEW_PulseEffect.cpp:67
bool ProcessInput(UtInput &aInput) override
Definition WsfEW_PulseEffect.cpp:61
bool mApplyEP_Effects
Flag to apply EP techniques to number of false targets calculated.
Definition WsfEW_SimpleFT_Effect.hpp:76
bool mUpdateOncePerFrame
Update the false target count only once per frame of a sensor per receiver.
Definition WsfEW_SimpleFT_Effect.hpp:77
SimpleFT_Data()
Definition WsfEW_SimpleFT_Effect.cpp:708
bool mExplicitFT_Capacity
Maximum false target capacity was explicitly set.
Definition WsfEW_SimpleFT_Effect.hpp:74
double mDetectBW_Ratio
The ratio of the 3dB beamwidth required for detection.
Definition WsfEW_SimpleFT_Effect.hpp:75
bool mCombineBeamCounts
For multi-beam radars, combine the beam counts as they are processed.
Definition WsfEW_SimpleFT_Effect.hpp:78
unsigned int mMaximumFT_Capacity
The maximum number of false targets per detection attempt.
Definition WsfEW_SimpleFT_Effect.hpp:73
void Reset() override
Definition WsfEW_SimpleFT_Effect.cpp:789
SimpleFT_Data(const SimpleFT_Data &aSrc)=default
bool mUseRandomDraw
Flag for random draws based on ratios of targets and false targets.
Definition WsfEW_SimpleFT_Effect.hpp:79
unsigned int mMaximumNumberFTs
Maximum number of false targets to be injected.
Definition WsfEW_SimpleFT_Effect.hpp:72
SimpleFT_Data & operator=(const SimpleFT_Data &)=delete
WsfEW_SimpleFT_Effect & operator=(const WsfEW_SimpleFT_Effect &)=delete
double GetNumberFalseTargets()
Get the calculated number of false targets for the last call to UpdateEffects(..).
Definition WsfEW_SimpleFT_Effect.hpp:54
~WsfEW_SimpleFT_Effect() override=default
unsigned int GetMaximumNumberFalseTargets(WsfStringId aSystemTypeId) const
Definition WsfEW_SimpleFT_Effect.cpp:691
WsfEW_SimpleFT_Effect()
Definition WsfEW_SimpleFT_Effect.cpp:38
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved