WSF
WsfAcousticSensor.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 WSFACOUSTICSENSOR_HPP
13#define WSFACOUSTICSENSOR_HPP
14
15#include "wsf_mil_export.h"
16
17#include <vector>
18
19#include "UtAtmosphere.hpp"
21#include "WsfEM_Antenna.hpp"
22#include "WsfEM_Rcvr.hpp"
23#include "WsfEM_Types.hpp"
24#include "WsfSensor.hpp"
25#include "WsfSensorMode.hpp"
26
27namespace wsf
28{
29class Terrain;
30}
31
33
34class WSF_MIL_EXPORT WsfAcousticSensor : public WsfSensor
35{
36public:
40 ~WsfAcousticSensor() override;
41
42 // acoustic sensor type
49
50 WsfSensor* Clone() const override;
51 bool Initialize(double aSimTime) override;
52 void Update(double aSimTime) override;
53
54 size_t GetEM_RcvrCount() const override;
55 WsfEM_Rcvr& GetEM_Rcvr(size_t aIndex) const override;
56
57 static int GetCenterFreqSize() { return 24; }
58
59 static double GetCenterFreq(int aIndex) { return mCenterFrequency[aIndex]; }
60
61protected:
62 // Default copy constructor (for Clone())
63 // WsfAcousticSensor(const WsfAcousticSensor& aSrc);
64
65 // vector defining standard 1/3-octave band center frequency
66 static const double mCenterFrequency[24];
67
70 {
71 public:
72 AcousticMode(WsfScenario& aScenario);
73 AcousticMode(const AcousticMode& aSrc);
75 ~AcousticMode() override;
76
77 WsfMode* Clone() const override;
78 bool Initialize(double aSimTime) override;
79 bool ProcessInput(UtInput& aInput) override;
80
81 bool AttemptToDetect(double aSimTime, WsfPlatform* aTargetPtr, Settings& aSettings, WsfSensorResult& aResult) override;
82 void Deselect(double aSimTime) override;
83 void Select(double aSimTime) override;
84
85 double ApplyFilterWeighting(int aBand,
86 WsfPlatform* aTargetPtr = nullptr,
87 const int aFlag = 0,
88 const double aDoppler = 0.0);
89
90 double ComputeDopplerTerm(const WsfSensorResult& aResult);
91
92 void ComputeIncidenceAngle(WsfSensorResult* aResultPtr, double& aAngle, double& aRange, double* aLoc);
93
94 double AtmosphericAttenuation(const WsfSensorResult& aResult, double aFreq);
95
96 double ComputeProbabilityOfDetection(double aSignal, double aNoise, double aThreshold);
97
98 double GroundEffectAttenuation(WsfSensorResult* aResult, const double aFreq, const int aBandIndex);
99
102
105
107
109 UtAtmosphere mAtmosphere;
110
112
114 std::vector<double> mEffectiveFilterBandwidth;
115
118
120
123
126 };
127
129 std::vector<AcousticMode*> mAcousticModeList;
130
131 struct SharedData;
132
133 SharedData* mSharePtr;
134};
135
136#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfEM_Antenna mAntenna
Definition WsfAcousticSensor.hpp:100
AcousticMode & operator=(const AcousticMode &)=delete
double ComputeProbabilityOfDetection(double aSignal, double aNoise, double aThreshold)
Definition WsfAcousticSensor.cpp:686
bool ProcessInput(UtInput &aInput) override
Definition WsfAcousticSensor.cpp:371
WsfStringId cDEFAULT_ID
Definition WsfAcousticSensor.hpp:119
double ApplyFilterWeighting(int aBand, WsfPlatform *aTargetPtr=nullptr, const int aFlag=0, const double aDoppler=0.0)
Definition WsfAcousticSensor.cpp:584
AcousticTypes mSensorType
Definition WsfAcousticSensor.hpp:111
WsfEM_Rcvr mRcvr
Definition WsfAcousticSensor.hpp:101
double AtmosphericAttenuation(const WsfSensorResult &aResult, double aFreq)
Definition WsfAcousticSensor.cpp:648
UtAtmosphere mAtmosphere
Atmosphere model.
Definition WsfAcousticSensor.hpp:109
double GroundEffectAttenuation(WsfSensorResult *aResult, const double aFreq, const int aBandIndex)
Definition WsfAcousticSensor.cpp:761
double ComputeDopplerTerm(const WsfSensorResult &aResult)
Definition WsfAcousticSensor.cpp:983
void Select(double aSimTime) override
Definition WsfAcousticSensor.cpp:638
void Deselect(double aSimTime) override
Definition WsfAcousticSensor.cpp:631
std::vector< double > mEffectiveFilterBandwidth
Array of effective filter bandwidths for each sensor.
Definition WsfAcousticSensor.hpp:114
WsfMode * Clone() const override
Create an exact duplicate of this mode.
Definition WsfAcousticSensor.cpp:302
void ComputeIncidenceAngle(WsfSensorResult *aResultPtr, double &aAngle, double &aRange, double *aLoc)
Definition WsfAcousticSensor.cpp:921
bool mVerbose
Definition WsfAcousticSensor.hpp:106
WsfStringId mBackgroundNoiseStateId
Pointer to the background noise state.
Definition WsfAcousticSensor.hpp:122
WsfAcousticSignature * mThresholdPtr
Pointer to the threshold table.
Definition WsfAcousticSensor.hpp:117
bool Initialize(double aSimTime) override
Definition WsfAcousticSensor.cpp:314
bool AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult) override
Definition WsfAcousticSensor.cpp:420
wsf::Terrain * mTerrainPtr
Pointer to terrain.
Definition WsfAcousticSensor.hpp:125
AcousticMode(WsfScenario &aScenario)
Definition WsfAcousticSensor.cpp:268
double mDetectionThreshold
Signal-To-Noise required for detection.
Definition WsfAcousticSensor.hpp:104
SharedData * mSharePtr
Definition WsfAcousticSensor.hpp:133
WsfAcousticSensor & operator=(const WsfAcousticSensor &)=delete
std::vector< AcousticMode * > mAcousticModeList
The sensor-specific list of modes (not valid until Initialize is called).
Definition WsfAcousticSensor.hpp:129
AcousticTypes
Definition WsfAcousticSensor.hpp:44
@ cACOUSTIC_NARROW
Definition WsfAcousticSensor.hpp:46
@ cACOUSTIC_HUMAN
Definition WsfAcousticSensor.hpp:45
@ cACOUSTIC_WIDE
Definition WsfAcousticSensor.hpp:47
static int GetCenterFreqSize()
Definition WsfAcousticSensor.hpp:57
static double GetCenterFreq(int aIndex)
Definition WsfAcousticSensor.hpp:59
static const double mCenterFrequency[24]
Definition WsfAcousticSensor.hpp:63
WsfAcousticSensor(WsfScenario &aScenario)
Definition WsfAcousticSensor.cpp:184
An object that represents the acoustic signature of a platform.
Definition WsfAcousticSignature.hpp:24
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Rcvr.hpp:68
WsfMode()
Definition WsfMode.cpp:15
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
WsfSensorMode()
Definition WsfSensorMode.cpp:47
Definition WsfSensorResult.hpp:27
Definition WsfSensor.hpp:133
Definition WsfSensor.hpp:92
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
bool Initialize(double aSimTime) override
Definition WsfSensor.cpp:255
Definition WsfTerrain.hpp:336
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved