WSF
WsfOpticalSensor.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 WSFOPTICALSENSOR_HPP
13#define WSFOPTICALSENSOR_HPP
14
15#include "wsf_mil_export.h"
16
17#include <map>
18#include <memory>
19#include <vector>
20
21#include "UtAtmosphere.hpp"
22#include "WsfEM_Antenna.hpp"
23#include "WsfEM_Rcvr.hpp"
24class WsfPlatform;
25#include "WsfSensor.hpp"
26#include "WsfSensorMode.hpp"
27
29
30class WSF_MIL_EXPORT WsfOpticalSensor : public WsfSensor
31{
32public:
33 WsfOpticalSensor(WsfScenario& aScenario);
36
37 WsfSensor* Clone() const override;
38 bool Initialize(double aSimTime) override;
39 void Update(double aSimTime) override;
40
41 size_t GetEM_RcvrCount() const override;
42 WsfEM_Rcvr& GetEM_Rcvr(size_t aIndex) const override;
43
44 void PlatformDeleted(WsfPlatform* aPlatformPtr) override;
45
48 {
49 public:
50 OpticalMode(WsfScenario& aScenario);
51 OpticalMode(const OpticalMode& aSrc);
53 ~OpticalMode() override = default;
54
55 WsfMode* Clone() const override;
56 bool Initialize(double aSimTime) override;
57 bool ProcessInput(UtInput& aInput) override;
58
59 bool AttemptToDetect(double aSimTime, WsfPlatform* aTargetPtr, Settings& aSettings, WsfSensorResult& aResult) override;
60
61 void Deselect(double aSimTime) override;
62 void Select(double aSimTime) override;
63
64 virtual void PlatformDeleted(WsfPlatform* aPlatformPtr);
65
67
68 double ComputeProbabilityOfDetection(double aSize, double aContrast, size_t aTgtIndex);
69
70 double ComputeSimpleTransmittance(double aAttenuationPerMeter,
71 double aHeightMSL_1,
72 double aHeightMSL_2,
73 double aGroundRange);
74
75 std::unique_ptr<WsfEM_Antenna> mAntenna;
76 std::unique_ptr<WsfEM_Rcvr> mRcvr;
77
80
83
86
89
92
94
96 UtAtmosphere mAtmosphere;
97
100
102 struct CumPd
103 {
104 CumPd(double aSearchPd = 1.0, double aReacquirePd = 0.0, double aTrackPd = 0.0)
105 : mSearchPd(aSearchPd)
106 , mReacquirePd(aReacquirePd)
107 , mTrackPd(aTrackPd)
108 {
109 }
110
111 double mSearchPd;
113 double mTrackPd;
114 };
115
118 {
119 public:
123 virtual ~GlimpseProbability() = default;
124
125 virtual GlimpseProbability* Clone() const;
126 virtual bool Initialize();
127 virtual bool ProcessInput(UtInput& aInput);
128 virtual double ProbabilityOfDetection(double aSize, double aContrast);
129
132
135
138
141
144
147
150
152 double mGain;
153
156
157 protected:
158 virtual void ComputeProbabilityDistribution();
159 virtual double ContrastRatioToPd(double aRatio);
160 virtual double InterpolateDistribution(double aThetaMin, double aThetaMax);
161 virtual double ContrastThreshold(double aSolidAngle, double aAngle);
162 virtual double ContrastThreshold0(double aAlpha);
163 virtual double ContrastThreshold1(double aAlpha);
164
166 std::vector<double> mProbabilityDistribution;
167 };
168
169 protected:
171 std::map<size_t, CumPd> mPdMap;
172
177 };
178
179protected:
181 std::vector<OpticalMode*> mOpticalModeList;
182};
183
184#endif
Definition WsfEM_Rcvr.hpp:68
WsfMode()
Definition WsfMode.cpp:15
Glimpse probability data.
Definition WsfOpticalSensor.hpp:118
virtual GlimpseProbability * Clone() const
Definition WsfOpticalSensor.cpp:610
virtual double InterpolateDistribution(double aThetaMin, double aThetaMax)
Definition WsfOpticalSensor.cpp:856
std::vector< double > mProbabilityDistribution
angular separation cumulative probability distribution
Definition WsfOpticalSensor.hpp:166
double mMaxElevation
maximum elevation of FOV
Definition WsfOpticalSensor.hpp:137
virtual double ContrastRatioToPd(double aRatio)
Definition WsfOpticalSensor.cpp:705
double mApparentHalfAngle
apparent half-angle FOV
Definition WsfOpticalSensor.hpp:146
double mGain
sensor gain
Definition WsfOpticalSensor.hpp:152
GlimpseProbability()
Definition WsfOpticalSensor.cpp:595
double mMinElevation
minimum elevation of FOV
Definition WsfOpticalSensor.hpp:134
virtual double ContrastThreshold0(double aAlpha)
Definition WsfOpticalSensor.cpp:785
double mResolution
sensor resolution (stored steradians, entered as deg)
Definition WsfOpticalSensor.hpp:149
GlimpseProbability(const GlimpseProbability &aSrc)=default
virtual double ContrastThreshold(double aSolidAngle, double aAngle)
Definition WsfOpticalSensor.cpp:746
virtual bool ProcessInput(UtInput &aInput)
virtual
Definition WsfOpticalSensor.cpp:916
double mMagnification
magnification
Definition WsfOpticalSensor.hpp:143
virtual void ComputeProbabilityDistribution()
Definition WsfOpticalSensor.cpp:625
GlimpseProbability & operator=(const GlimpseProbability &)=delete
double mAzimuthFOV
Azimuth FOV.
Definition WsfOpticalSensor.hpp:131
virtual bool Initialize()
Definition WsfOpticalSensor.cpp:616
virtual double ContrastThreshold1(double aAlpha)
Definition WsfOpticalSensor.cpp:820
double mOcularIntegration
ocular integration interval (deg)
Definition WsfOpticalSensor.hpp:155
int mNumIterations
number of iterations
Definition WsfOpticalSensor.hpp:140
virtual double ProbabilityOfDetection(double aSize, double aContrast)
Definition WsfOpticalSensor.cpp:874
double ComputeProbabilityOfDetection(double aSize, double aContrast, size_t aTgtIndex)
Definition WsfOpticalSensor.cpp:549
double ComputeAtmosphericTransmittance(WsfSensorResult &aResult)
Definition WsfOpticalSensor.cpp:450
double mAtmosphericAttenuation
Fixed atmospheric attenuation (1/m).
Definition WsfOpticalSensor.hpp:85
void Select(double aSimTime) override
Definition WsfOpticalSensor.cpp:441
void Deselect(double aSimTime) override
Definition WsfOpticalSensor.cpp:435
bool mVerbose
Definition WsfOpticalSensor.hpp:93
double mReacquireTime
re-acquisition time
Definition WsfOpticalSensor.hpp:82
bool AttemptToDetect(double aSimTime, WsfPlatform *aTargetPtr, Settings &aSettings, WsfSensorResult &aResult) override
Definition WsfOpticalSensor.cpp:318
GlimpseProbability mReacquire
Definition WsfOpticalSensor.hpp:175
bool Initialize(double aSimTime) override
Definition WsfOpticalSensor.cpp:165
std::unique_ptr< WsfEM_Rcvr > mRcvr
Definition WsfOpticalSensor.hpp:76
virtual void PlatformDeleted(WsfPlatform *aPlatformPtr)
Definition WsfOpticalSensor.cpp:588
double ComputeSimpleTransmittance(double aAttenuationPerMeter, double aHeightMSL_1, double aHeightMSL_2, double aGroundRange)
Definition WsfOpticalSensor.cpp:484
std::unique_ptr< WsfEM_Antenna > mAntenna
Definition WsfOpticalSensor.hpp:75
double mBackgroundRadiance
Fixed background radiance (W/m^2/sr).
Definition WsfOpticalSensor.hpp:88
UtAtmosphere mAtmosphere
Atmosphere model.
Definition WsfOpticalSensor.hpp:96
GlimpseProbability mTrack
Definition WsfOpticalSensor.hpp:176
double mGlimpseTime
observer glimpse time
Definition WsfOpticalSensor.hpp:79
OpticalMode(WsfScenario &aScenario)
Definition WsfOpticalSensor.cpp:119
std::map< size_t, CumPd > mPdMap
map to store cumulative probabilities
Definition WsfOpticalSensor.hpp:171
OpticalMode & operator=(const OpticalMode &)=delete
double mPathRadiance
Fixed path radiance (W/m^/sr).
Definition WsfOpticalSensor.hpp:91
WsfMode * Clone() const override
Create an exact duplicate of this mode.
Definition WsfOpticalSensor.cpp:159
GlimpseProbability mSearch
The mode-specific search, re-acquire and track glimpse probabilities.
Definition WsfOpticalSensor.hpp:174
double mRhoSeaLevel
Air density at sea level (kg/m^3).
Definition WsfOpticalSensor.hpp:99
bool ProcessInput(UtInput &aInput) override
Definition WsfOpticalSensor.cpp:185
~OpticalMode() override=default
std::vector< OpticalMode * > mOpticalModeList
The sensor-specific list of modes (not valid until Initialize is called).
Definition WsfOpticalSensor.hpp:181
WsfOpticalSensor & operator=(const WsfOpticalSensor &)=delete
WsfOpticalSensor(WsfScenario &aScenario)
Definition WsfOpticalSensor.cpp:41
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
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
void PlatformDeleted(WsfPlatform *aPlatformPtr) override
Definition WsfSensor.cpp:355
WsfSensor * Clone() const override=0
bool Initialize(double aSimTime) override
Definition WsfSensor.cpp:255
double mReacquirePd
Definition WsfOpticalSensor.hpp:112
double mTrackPd
Definition WsfOpticalSensor.hpp:113
CumPd(double aSearchPd=1.0, double aReacquirePd=0.0, double aTrackPd=0.0)
Definition WsfOpticalSensor.hpp:104
double mSearchPd
Definition WsfOpticalSensor.hpp:111
Copyrights Multiple, All Rights Reserved