12#ifndef WSFOTHRADARSENSOR_HPP
13#define WSFOTHRADARSENSOR_HPP
15#include "wsf_mil_export.h"
20#include "TblLookup.hpp"
46 void Update(
double aSimTime)
override;
87 void SetIntegrationGain(
double aIntegrationGain)
override { mIntegrationGain = aIntegrationGain; }
96 bool AreIonosphericParametersValid();
98 void ComputeIonosphericCharacteristics();
100 void UpdateIonosphericCharacteristics();
102 void GetReflectionLocationWCS(
double aReflectionLocationWCS[]);
108 void GetIonosphericRangeLimits(
double& aMin,
double& aMax);
121 unsigned int aBeamIndex,
126 bool aShowCalibrationData,
131 void ComputeMTI_Effects(
WsfSensorResult& aResult,
double& aClutterAttenuationFactor);
166 void Calibrate(
bool aPrint);
168 void ComputeClutterAttenuationFactor(
OTH_Mode& aMode);
170 double ComputeIntegratedPulseCount(
OTH_Mode& aMode);
172 bool InitializeDetector(
OTH_Mode& aMode);
173 bool InitializeMTI(
OTH_Mode& aMode);
175 void ComputeBouncePathRanges(
WsfSensorResult& aResult,
double& aXmtrToTgt,
double& aRcvrToTgt);
186 double mDopplerResolution;
189 double mOneM2DetectRange;
192 double mLookDownFactor;
198 double mPostLockonDetectionThresholdAdjustment;
201 double mPostLockonAdjustmentDelayTime;
207 double mAdjustmentFactor;
210 double mIntegrationGain;
214 int mNumberOfPulsesIntegrated;
225 std::shared_ptr<wsf::DetectionProbabilityTable> mProbabilityTablePtr;
229 std::shared_ptr<WsfMTI_TableManager::MTI_AdjustmentTable> mMTI_AdjustmentTablePtr;
233 double mMTI_TableMaxRange;
239 double mClutterAttenuationFactor;
246 double mMTI_MaxRange;
247 double mMTI_InterpulsePeriod_1;
248 double mMTI_InterpulsePeriod_2;
249 double mMTI_StabilityConstant;
250 double mMTI_Weights[3];
251 int mMTI_NumberOfStages;
252 bool mPerformMTI_Processing;
253 bool mMTI_ClutterLock;
260 double mAngularExtent;
261 double mReflectionLocWCS[3];
262 double mReflectionHeight;
263 double mGreatCircleDistance;
266 struct SolarCharacteristics
270 double mSolarAngRads;
271 double mSolarDeclinationAngRads;
272 double mSolarZenithAngRads;
275 struct IonosphereCharacteristics
277 double mElectronDensityAtMax = 4.0e11;
278 double mElectronHeightAtMax = 250000.0;
279 double mReflectionHeight = 300000.0;
280 double mTemperatureAtMax = 1540.0;
281 bool mRangeConstrained =
false;
283 double mComputedElectronicDensity;
284 double mMaxIncidenceAngleDegrees;
287 double mCriticalFrequency;
288 double mMaxUsableFrequency;
289 double mMinUsableFrequency;
293 SolarCharacteristics mSolarCharacteristics;
294 IonosphereCharacteristics mIonosphericCharacteristics;
295 OTH_Geometry mOTH_Geometry;
296 bool mIonosphereChanged;
297 bool mComputeAtmosphericNoise;
323 void ScheduleAltFreqChange(
double aSimTime,
int aAltFreqId = -1)
override;
328 void Deselect(
double aSimTime)
override;
329 void Select(
double aSimTime)
override;
349 std::vector<OTH_Mode*> mOTH_ModeList;
352 std::vector<WsfEM_Xmtr*> mXmtrList;
355 std::vector<WsfEM_Rcvr*> mRcvrList;
358 bool mAnyModeCanTransmit;
361 bool mAnyModeCanReceive;
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
An abstract class for computing clutter power.
Definition WsfEM_Clutter.hpp:25
Definition WsfEM_Noise.hpp:21
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_Xmtr.hpp:55
A nested class for the MTI adjustment table. This was extracted from WsfRadarSensor.
Definition WsfMTI_TableManager.hpp:44
Definition WsfMode.hpp:32
Definition WsfOTH_RadarSensor.hpp:70
WsfEM_Clutter * GetClutter() const override
Definition WsfOTH_RadarSensor.hpp:134
OTH_Beam & operator=(const OTH_Beam &)=delete
void SetClutterAttenuationFactor(double aFactor)
Definition WsfOTH_RadarSensor.hpp:116
WsfStringId GetClutterType() const
Definition WsfOTH_RadarSensor.hpp:133
std::unique_ptr< WsfEM_Antenna > mAntennaPtr
Definition WsfOTH_RadarSensor.hpp:136
double GetMinUsableFrequency() const
Definition WsfOTH_RadarSensor.hpp:106
std::unique_ptr< WsfEM_Rcvr > mRcvrPtr
The receiver for a radar beam.
Definition WsfOTH_RadarSensor.hpp:142
double mErrorModelElBeamwidth
Definition WsfOTH_RadarSensor.hpp:153
double mErrorModelAzBeamwidth
Additional parameters associated with measurement errors.
Definition WsfOTH_RadarSensor.hpp:152
double GetAdjustmentFactor() const
Definition WsfOTH_RadarSensor.hpp:85
WsfEM_Xmtr * GetEM_Xmtr() override
Definition WsfOTH_RadarSensor.hpp:79
int GetNumberOfPulsesIntegrated() const override
Definition WsfOTH_RadarSensor.hpp:88
OTH_Beam()
Definition WsfOTH_RadarSensor.cpp:432
void SetIntegrationGain(double aIntegrationGain) override
Definition WsfOTH_RadarSensor.hpp:87
WsfEM_Rcvr * GetEM_Rcvr() override
Definition WsfOTH_RadarSensor.hpp:78
WsfMTI_TableManager::MTI_AdjustmentTable * GetMTI_AdjustmentTable()
For External Services.
Definition WsfOTH_RadarSensor.hpp:94
void AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult)
Definition WsfOTH_RadarSensor.cpp:554
bool GetIonosphereChanged() const
Definition WsfOTH_RadarSensor.hpp:110
double GetDopplerResolution() const
Definition WsfOTH_RadarSensor.hpp:91
double GetIntegrationGain() const override
Definition WsfOTH_RadarSensor.hpp:86
bool UsingDetector() const
Definition WsfOTH_RadarSensor.hpp:89
bool GetIonosphericRangeConstrained() const
Definition WsfOTH_RadarSensor.hpp:104
std::unique_ptr< WsfEM_Xmtr > mXmtrPtr
The transmitter for a radar beam.
Definition WsfOTH_RadarSensor.hpp:139
void SetIonosphereChanged(bool aIonosphereChanged)
Definition WsfOTH_RadarSensor.hpp:112
WsfEM_Clutter * mClutterPtr
Definition WsfOTH_RadarSensor.hpp:146
double mErrorModelPulseWidth
Definition WsfOTH_RadarSensor.hpp:154
void SetLoopGain(double aLoopGain)
Definition WsfOTH_RadarSensor.hpp:114
WsfEM_Noise mNoise
The galactic noise.
Definition WsfOTH_RadarSensor.hpp:149
double mErrorModelDopplerResolution
Definition WsfOTH_RadarSensor.hpp:155
A 'mode' of the sensor.
Definition WsfOTH_RadarSensor.hpp:303
OTH_Mode()
Definition WsfOTH_RadarSensor.cpp:2172
bool mCanReceive
Definition WsfOTH_RadarSensor.hpp:333
double mAltFreqSelectDelay
Definition WsfOTH_RadarSensor.hpp:341
OTH_Mode & operator=(const OTH_Mode &)=delete
bool mOverrideMeasurementWithTruth
Definition WsfOTH_RadarSensor.hpp:331
WsfSensorBeam * GetBeamEntry(size_t aBeamIndex) override
Definition WsfOTH_RadarSensor.hpp:312
bool IsAltFreqChangeScheduled() const override
Definition WsfOTH_RadarSensor.hpp:324
void SelectAlternateFrequency(double aSimTime, int aAltFreqId=-1) override
Definition WsfOTH_RadarSensor.cpp:2480
double mLastAltFreqSelectTime
Definition WsfOTH_RadarSensor.hpp:343
double GetLastAltFreqSelectTime() const override
Definition WsfOTH_RadarSensor.hpp:325
size_t GetBeamCount() const override
Definition WsfOTH_RadarSensor.hpp:311
bool IsFrequencyAgile() const override
Definition WsfOTH_RadarSensor.hpp:326
bool mCanTransmit
Definition WsfOTH_RadarSensor.hpp:332
bool mExplicitBeamUsed
Definition WsfOTH_RadarSensor.hpp:335
bool mIsFrequencyAgile
Definition WsfOTH_RadarSensor.hpp:344
bool mImplicitBeamUsed
Definition WsfOTH_RadarSensor.hpp:334
std::vector< OTH_Beam * > mBeamList
Definition WsfOTH_RadarSensor.hpp:336
double GetAltFreqSelectDelay() const override
Definition WsfOTH_RadarSensor.hpp:322
bool mAltFreqChangeScheduled
Definition WsfOTH_RadarSensor.hpp:342
WsfSensor * Clone() const override
Definition WsfOTH_RadarSensor.cpp:91
bool Initialize(double aSimTime) override
Definition WsfOTH_RadarSensor.cpp:256
WsfOTH_RadarSensor & operator=(const WsfOTH_RadarSensor &)=delete
bool ProcessInput(UtInput &aInput) override
Definition WsfOTH_RadarSensor.cpp:297
WsfOTH_RadarSensor(WsfScenario &aScenario)
Definition WsfOTH_RadarSensor.cpp:59
void UpdateXmtrRcvrLists()
Definition WsfOTH_RadarSensor.cpp:230
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSensorBeam.hpp:58
WsfSensorBeam()
Definition WsfSensorBeam.cpp:20
WsfSensorMode()
Definition WsfSensorMode.cpp:47
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:133
bool ProcessInput(UtInput &aInput) override
Definition WsfSensor.cpp:380
void Update(double aSimTime) override
Definition WsfSensor.cpp:497
virtual WsfEM_Rcvr & GetEM_Rcvr(size_t aIndex) const
Definition WsfSensor.cpp:660
WsfSensor(const WsfScenario &aScenario)
Definition WsfSensor.cpp:52
virtual size_t GetEM_RcvrCount() const
Definition WsfSensor.cpp:646
WsfSensor * Clone() const override=0
virtual WsfEM_Xmtr & GetEM_Xmtr(size_t aIndex) const
Definition WsfSensor.cpp:714
bool Initialize(double aSimTime) override
Definition WsfSensor.cpp:255
virtual size_t GetEM_XmtrCount() const
Definition WsfSensor.cpp:700
virtual void PerformScheduledDetections(double aSimTime)
Definition WsfSensor.cpp:1415
virtual bool AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult)
Definition WsfSensor.cpp:224
void PlatformAdded(double aSimTime, WsfPlatform *aPlatformPtr) override
Definition WsfSensor.cpp:334
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Computation of probability of detection using the Marcum-Swerling algorithm.
Definition WsfMarcumSwerling.hpp:29