12#ifndef WSFTRIMSIM_PROCESSOR_HPP
13#define WSFTRIMSIM_PROCESSOR_HPP
15#include "wsf_nx_export.h"
19#include "UtMatrix.hpp"
59 void TurnOn(
double aSimTime)
override;
72 static void PrintMatrix(
const std::string& aTitle, UtMatrixd& aMatrix);
91 void ClearDetections() { mDetectionList.clear(); }
94 void PrintTDOAInfo(WsfSensor* aSensorPtr);
97 unsigned int mMinimumDetections{cDEFAULT_MINIMUM_DETECTIONS};
100 std::vector<Detection> mDetectionList;
103 std::vector<WsfSensor*> mSensorPtrs;
141 void SetMeasurement(
const UtMatrixd& aMeasurement) { mMeasurement = aMeasurement; }
146 mMeasurementErrorCovariance = aMeasurementErrorCovariance;
152 mMeasurementTransition = aMeasurementTransition;
155 void CorrectForAltitude(
double aTargetLocWCS[3],
157 double aDefaultAltitude = 0.0);
162 void ConvertMatrix(UtMatrixd& aMatrix,
WsfTrack* aTrackPtr);
168 UtMatrixd mMeasurement;
169 UtMatrixd mMeasurementErrorCovariance;
170 UtMatrixd mMeasurementTransition;
171 bool mMeasurementIsValid;
186 static std::unique_ptr<wsf::SensorErrorModelBase>
ObjectFactory(
const std::string& aTypeName);
201 const std::vector<double>&
GetErrors()
const {
return mErrors; }
223 std::vector<double> mErrors;
224 double mGroundTargetAltitudeError;
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_TRIMSIM_SENSOR
TDOA TRIMSIM extension for WsfSensor.
Definition WsfNonExportableComponentRoles.hpp:18
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfComponent.hpp:39
void TurnOn(double aSimTime) override
Definition WsfProcessor.cpp:183
WsfComponent * CloneComponent() const override
Definition WsfProcessor.hpp:54
WsfProcessor(const WsfScenario &aScenario)
Definition WsfProcessor.cpp:25
const int * GetComponentRoles() const override
Definition WsfProcessor.cpp:46
void * QueryInterface(int aRole) override
Definition WsfProcessor.cpp:53
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfSensorComponent.hpp:36
Definition WsfSensorMode.hpp:36
WsfSensorProcessor & operator=(const WsfSensorProcessor &aRhs)=delete
virtual bool SensorAdded(WsfSensor *aSensorPtr)=0
Clear any data or lists maintained by inheriting classes.
WsfSensorProcessor(WsfScenario &aScenario)
Definition WsfSensorProcessor.cpp:34
bool ProcessInput(UtInput &aInput) override
Definition WsfSensorProcessor.cpp:72
WsfProcessor * Clone() const override=0
virtual bool SensorRemoved(WsfSensor *aSensorPtr)=0
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:92
void ApplyMeasurementErrors(WsfSensorResult &aResult) override
Definition WsfTRIMSIM_Processor.hpp:192
bool ProcessInput(UtInput &aInput) override
Definition WsfTRIMSIM_Processor.cpp:1305
WsfTRIMSIM_ErrorModel & operator=(const WsfTRIMSIM_ErrorModel &)=delete
static const unsigned int cTDOA_STATE_SIZE
Definition WsfTRIMSIM_Processor.hpp:206
bool Initialize(WsfSensorMode *aSensorModePtr) override
Definition WsfTRIMSIM_Processor.cpp:1377
WsfTRIMSIM_ErrorModel()
Definition WsfTRIMSIM_Processor.cpp:1274
static std::unique_ptr< wsf::SensorErrorModelBase > ObjectFactory(const std::string &aTypeName)
Definition WsfTRIMSIM_Processor.cpp:1295
bool IsNullModel() const override
Is this a null model (i.e., ApplyMeasurementErrors has no effect).
Definition WsfTRIMSIM_Processor.hpp:196
const std::vector< double > & GetErrors() const
Definition WsfTRIMSIM_Processor.hpp:201
static const unsigned int cTDOA_ERROR_SIZE
Definition WsfTRIMSIM_Processor.hpp:205
bool ComputeErrors() const
TRIMSIM Errors.
Definition WsfTRIMSIM_Processor.hpp:200
double GetGroundTargetAltitudeError() const
Definition WsfTRIMSIM_Processor.hpp:202
WsfTRIMSIM_ErrorModel(const WsfTRIMSIM_ErrorModel &aSrc)=default
WsfTRIMSIM_ErrorModel * Clone() const override
Create a clone of "this" object.
Definition WsfTRIMSIM_Processor.cpp:1285
Definition WsfTRIMSIM_Processor.hpp:28
~WsfTRIMSIM_Processor() override=default
std::vector< Detection > Detections
Definition WsfTRIMSIM_Processor.hpp:46
bool AttemptToDetect(double aSimTime, WsfSensor *aSensorPtr, WsfPlatform *aTargetPtr, WsfSensorResult &aResult)
Definition WsfTRIMSIM_Processor.cpp:72
const Detections & GetDetections() const
Definition WsfTRIMSIM_Processor.hpp:68
bool ComputeMeasurementErrors(WsfSensor &aSensor)
Definition WsfTRIMSIM_Processor.cpp:165
WsfTRIMSIM_Processor(WsfScenario &aScenario)
Definition WsfTRIMSIM_Processor.cpp:32
static constexpr unsigned int cDEFAULT_MINIMUM_DETECTIONS
Definition WsfTRIMSIM_Processor.hpp:32
size_t GetDetectionCount() const
Definition WsfTRIMSIM_Processor.hpp:69
Definition WsfTRIMSIM_Processor.hpp:111
static WsfTRIMSIM_SensorComponent * FindOrCreate(WsfSensor &aSensor)
Definition WsfTRIMSIM_Processor.cpp:816
void SetMeasurement(const UtMatrixd &aMeasurement)
Definition WsfTRIMSIM_Processor.hpp:141
UtMatrixd & GetMeasurementErrorCovariance()
Definition WsfTRIMSIM_Processor.hpp:143
UtMatrixd & GetMeasurement()
Definition WsfTRIMSIM_Processor.hpp:140
~WsfTRIMSIM_SensorComponent() override=default
static void RegisterComponentFactory(WsfScenario &aScenario)
Register the component factory that handles input for this component.
Definition WsfTRIMSIM_Processor.cpp:799
void UpdateTrack(double aSimTime, WsfTrack *aTrackPtr, WsfPlatform *aTargetPtr, WsfSensorResult &aResult) override
Definition WsfTRIMSIM_Processor.cpp:891
void SetMeasurementErrorCovariance(const UtMatrixd &aMeasurementErrorCovariance)
Definition WsfTRIMSIM_Processor.hpp:144
void SetProcessor(WsfTRIMSIM_Processor *aTRIMSIM_ProcessorPtr)
Definition WsfTRIMSIM_Processor.hpp:159
void PostAttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, WsfSensorResult &aResult) override
Definition WsfTRIMSIM_Processor.cpp:885
void SetMeasurementTransition(const UtMatrixd &aMeasurementTransition)
Definition WsfTRIMSIM_Processor.hpp:150
static WsfTRIMSIM_SensorComponent * Find(const WsfSensor &aSensor)
Find the instance of this component attached to the specified sensor.
Definition WsfTRIMSIM_Processor.cpp:806
bool GetMeasurementIsValid() const
Definition WsfTRIMSIM_Processor.hpp:137
UtMatrixd & GetMeasurementTransition()
Definition WsfTRIMSIM_Processor.hpp:149
void SetMeasurementIsValid(bool aIsValid)
Definition WsfTRIMSIM_Processor.hpp:138
WsfTRIMSIM_SensorComponent & operator=(const WsfTRIMSIM_SensorComponent &)=delete
WsfTRIMSIM_SensorComponent()
Definition WsfTRIMSIM_Processor.cpp:831
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Detection results.
Definition WsfTRIMSIM_Processor.hpp:36
double mTimeOfDetection
Definition WsfTRIMSIM_Processor.hpp:42
double mSensorVelWCS[3]
Definition WsfTRIMSIM_Processor.hpp:41
WsfSensor * mSensorPtr
Definition WsfTRIMSIM_Processor.hpp:37
double mTrueUnitVecNED[3]
Definition WsfTRIMSIM_Processor.hpp:44
double mSensorLocWCS[3]
Definition WsfTRIMSIM_Processor.hpp:39
double mSensorVelNED[3]
Definition WsfTRIMSIM_Processor.hpp:40
size_t mTargetPlatformIndex
Definition WsfTRIMSIM_Processor.hpp:38
double mTrueRange
Definition WsfTRIMSIM_Processor.hpp:43