12#ifndef SOSM_SENSOR_HPP
13#define SOSM_SENSOR_HPP
15#include "sosm_export.h"
46 float& aBackgroundRadiance_xR,
47 float& aForegroundRadiance_xR,
48 float& aTransmittance_xR);
52 float& aTargetIntensity_xR,
53 float& aProjectedArea);
81 void GetResponseCurve(std::vector<float>& aWavelength, std::vector<float>& aResponse)
const;
86 aLowerWavelength = mSharedDataPtr->mLowerWavelength;
87 aUpperWavelength = mSharedDataPtr->mUpperWavelength;
90 static double ComputeProbabilityOfDetection(
double aSignal,
double aNoise,
double aThreshold);
98 bool operator<(
const ResponsePoint& aRhs)
const {
return (mWavelength < aRhs.mWavelength); }
99 bool operator==(
const ResponsePoint& aRhs)
const {
return (mWavelength == aRhs.mWavelength); }
108 class SharedData :
public SOSM_SpectralObject
113 float ComputeAverageResponse(
const TblIndVarU<float>& aWavelengthVar,
114 const TblDepVar1<float>& aResponseVar,
115 float aLowerWavelength,
116 float aUpperWavelength);
117 void InputComplete(SOSM_Sensor& aSensor);
118 bool ProcessInput(UtInput& aInput, SOSM_Sensor& aSensor);
119 float ReadWavenumber(UtInput& aInput);
120 void ShowResponse(SOSM_Sensor& aSensor,
const std::vector<float>& aResponse);
123 std::vector<ResponsePoint> mResponseCurve;
126 float mLowerWavelength;
129 float mUpperWavelength;
132 float mNoiseEquivalentIrradiance;
135 float mDetectionThresholdAboveHorizon;
138 float mDetectionThresholdBelowHorizon;
141 std::shared_ptr<SOSM_ScalarTable2D> mInstallationAdjustmentTablePtr;
143 std::string mAtmosphereType;
155 std::vector<float> mIntegFactor;
164 std::vector<float> mTransFactor;
167 float mFirstIntervalFraction;
170 float mLastIntervalFraction;
176 float mSumIntervalSize;
179 float mAverageResponse;
182 SOSM_Manager* mManagerPtr;
185 std::shared_ptr<SharedData> mSharedDataPtr;
188 SOSM_Atmosphere* mAtmospherePtr;
191 SOSM_Selector mAtmosphereSelector;
bool operator==(int aId, const WsfStringInt &aRhs)
Equal relational operator for the case of an integer on the LHS and a StringId on the RHS.
Definition WsfStringId.hpp:69
An abstract base class for representing atmospherics.
Definition SOSM_Atmosphere.hpp:23
SOSM_CoreBase()
Definition SOSM_CoreBase.cpp:17
virtual bool ProcessInput(UtInput &aInput)
Definition SOSM_CoreBase.cpp:62
virtual bool Initialize()
Definition SOSM_CoreBase.cpp:40
virtual void InputComplete()
Definition SOSM_CoreBase.cpp:58
Definition SOSM_Interaction.hpp:46
A singleton class that manages SOSM data.
Definition SOSM_Manager.hpp:32
SOSM_Sensor * Clone() const
Definition SOSM_Sensor.cpp:65
void GetWavelengthLimits(float &aLowerWavelength, float &aUpperWavelength) const
Return the wavelength limits (in microns) of the sensor.
Definition SOSM_Sensor.hpp:84
SOSM_Sensor(SOSM_Manager *aManagerPtr)
Definition SOSM_Sensor.cpp:37
float GetDetectionThresholdBelowHorizon() const
Definition SOSM_Sensor.hpp:72
float GetAverageResponse() const
Return the average response.
Definition SOSM_Sensor.hpp:64
float GetDetectionThresholdAboveHorizon() const
Definition SOSM_Sensor.hpp:68
SOSM_Manager * GetManager() const
Definition SOSM_Sensor.hpp:92
float GetNoiseEquivalentIrradiance() const
Definition SOSM_Sensor.hpp:79
void ComputeIntegratedTargetData(SOSM_Target *aTargetPtr, SOSM_Interaction &aInteraction, float &aTargetIntensity_xR, float &aProjectedArea)
Definition SOSM_Sensor.cpp:202
std::vector< float > GetIntegrationFactor() const
Get the integration factor (delta wavelength * response) used for spectral integration.
Definition SOSM_Sensor.hpp:75
SOSM_Atmosphere * GetAtmosphere() const
Definition SOSM_Sensor.hpp:61
void ComputeIntegratedAtmosphericData(SOSM_Interaction &aInteraction, float &aBackgroundRadiance_xR, float &aForegroundRadiance_xR, float &aTransmittance_xR)
Definition SOSM_Sensor.cpp:139
float ComputeTargetIrradiance(SOSM_Target *aTargetPtr, SOSM_Interaction &aInteraction)
Definition SOSM_Sensor.cpp:297
float ComputeProbabilityOfDetection(float aTargetIrradiance, SOSM_Interaction &aInteraction) const
Definition SOSM_Sensor.cpp:248
SOSM_Sensor & operator=(const SOSM_Sensor &)=delete
Abstract base class that represents a target.
Definition SOSM_Target.hpp:31