WSF
WsfLASER_RcvrComponent Class Reference

#include <WsfLASER_RcvrComponent.hpp>

Inheritance diagram for WsfLASER_RcvrComponent:
Collaboration diagram for WsfLASER_RcvrComponent:

Classes

class  DetectionData

Public Member Functions

 WsfLASER_RcvrComponent ()
 WsfLASER_RcvrComponent (const WsfLASER_RcvrComponent &aSrc)=default
WsfLASER_RcvrComponentoperator= (const WsfLASER_RcvrComponent &)=delete
double GetAntennaGain (double aXmtr_Wavelength) const
double GetInstantaneousFieldOfView () const
 Return the instantaneous field-of-view of this receiver.
double GetApertureDiameter () const
 Return the diameter of the receiver (detector) aperture.
double GetApertureSolidAngle () const
 Return the solid angle subtended by the aperture at the detector.
double GetApertureArea () const
 Return the aperture area.
double GetOpticsTransmissionFactor () const
 Return the fraction of the transmitted laser light that passes through the receiver optics.
double GetResponsivity () const
 Return the responsivity of the detector (amps of current produced per watt of incident radiation [wavelength dependent]).
virtual DetectionData ComputeDetectionData (double aSignalRadiance, double aSignalIrradiance, double aBackgroundRadiance, double aBackgroundIrradiance, double aIntegrationTime)
 virtual
virtual void AddInteractor (WsfEM_Xmtr *aXmtrPtr)
virtual void RemoveInteractor (WsfEM_Xmtr *aXmtrPtr)
Public Member Functions inherited from WsfComponentT< WsfEM_Rcvr >
 WsfComponentT ()
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
virtual void ComponentParentChanged (ParentType *aParentPtr)
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
virtual int GetComponentInitializationOrder () const
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual bool PreInitialize (double aSimTime)
virtual bool Initialize2 (double aSimTime)
virtual void PreInput ()

Protected Attributes

double mApertureDiameter
 Defines the diameter of the receiver (detector) aperture.
double mApertureSolidAngle
 The solid angle subtended by the aperture at the detector.
double mApertureArea
 The area of the aperture (assumed circular).
double mOpticsTransmissionFactor
double mFocalLength
 Optionally used to compute the aperture solid angle.
double mDetectorSize
 The length or width of the physical detector.
double mPhotonEnergy
 The photon energy at the center wavelength of the detector.
double mIFOV
 The instantaneous field of view (FOV of one detector element not always applicable).
double mQuantumEfficiency
 The fraction of electrons that are produced for each incident photon.
double mResponsivity
 Computed from quantum efficiency, this is the number of amps produced per incident watt of power.
double mDetectorGain
 Gain of the photodetector.
double mCircuitTemperature
 The temperature of the integrating circuit; used to compute thermal noise.
double mCircuitCapacitance
 Circuit capacitance of the detector integrating circuit, sometimes provided in APD spec sheets.
double mCircuitResistance
 Circuit resistance of the detector integrating circuit.
double mThermalNoiseCountSq
 If computed from circuit capacitance, this is the square of the thermal noise count.
double mBulkDarkCountRate
 The "bulk" or amplified dark count rate.
double mBandPass
 Assuming an optical filter, this defines the range of wavelengths about the center that are detected.
double mSurfaceDarkCountRate
 The un-amplified dark count rate.
double mExcessNoiseFactor
 Used with APD, this is the additional gain observed when measuring noise in an APD.
double mNoiseEquivalentPower
 The incident power that would be needed to produce a S/N of one.
double mNoiseEquivalentCountRate
 The equivalent count rate with the noise equivalent power.
double mPointingTransmissionFactor
 Applicable only when spot size is nearly diffraction-limited.

WsfComponent required methods.

WsfStringId GetComponentName () const override
WsfComponentCloneComponent () const override
const int * GetComponentRoles () const override
void * QueryInterface (int aRole) override

Framework methods.

bool Initialize (double aSimTime) override
bool ProcessInput (UtInput &aInput) override

Additional Inherited Members

Public Types inherited from WsfComponentT< WsfEM_Rcvr >
typedef WsfEM_Rcvr ParentType
 This is needed to support the WsfComponentList template.

Detailed Description

A LASER receiver component. This component provides LASER or narrowband optical receiver attributes to be used with a WsfEM_Rcvr. It also computes detection data useful in S/N calculations for LADAR and LASER comm.

Constructor & Destructor Documentation

◆ WsfLASER_RcvrComponent() [1/2]

◆ WsfLASER_RcvrComponent() [2/2]

WsfLASER_RcvrComponent::WsfLASER_RcvrComponent ( const WsfLASER_RcvrComponent & aSrc)
default

Member Function Documentation

◆ CloneComponent()

WsfComponent * WsfLASER_RcvrComponent::CloneComponent ( ) const
overridevirtual

Clones a component. May return null if component does not support clone.

Implements WsfComponent.

References WsfLASER_RcvrComponent().

◆ ComputeDetectionData()

WsfLASER_RcvrComponent::DetectionData WsfLASER_RcvrComponent::ComputeDetectionData ( double aSignalRadiance,
double aSignalIrradiance,
double aBackgroundRadiance,
double aBackgroundIrradiance,
double aIntegrationTime )
virtual

virtual

Given an incident signal and noise radiance and irradiance values, compute receiver detection data consistent with conversion of incident photons to electrons (current) by a standard (PIN), or avalanche, photodiode.

Parameters
aSignalRadianceThe incident signal radiance (laser energy).
aSignalIrradianceThe incident signal irradiance (laser energy).
aBackgroundRadianceThe incident background radiance.
aBackgroundIrradianceThe incident background irradiance.
aIntegrationTimeThe integration time over which the signal and background are accumulated in the detector.

References mApertureArea, mApertureSolidAngle, mBandPass, mBulkDarkCountRate, mCircuitResistance, mCircuitTemperature, WsfLASER_RcvrComponent::DetectionData::mDarkNoiseCount, WsfLASER_RcvrComponent::DetectionData::mDarkNoiseRate, mDetectorGain, WsfLASER_RcvrComponent::DetectionData::mEnergy, WsfLASER_RcvrComponent::DetectionData::mEnvironmentalNoiseCount, WsfLASER_RcvrComponent::DetectionData::mEnvironmentalNoiseRate, mExcessNoiseFactor, WsfLASER_RcvrComponent::DetectionData::mNoiseCount, mNoiseEquivalentCountRate, mOpticsTransmissionFactor, mPhotonEnergy, WsfLASER_RcvrComponent::DetectionData::mPower, mQuantumEfficiency, WsfLASER_RcvrComponent::DetectionData::mSignalCount, WsfLASER_RcvrComponent::DetectionData::mSignalShotNoiseCount, mSurfaceDarkCountRate, WsfLASER_RcvrComponent::DetectionData::mThermalNoiseCount, and mThermalNoiseCountSq.

◆ GetAntennaGain()

double WsfLASER_RcvrComponent::GetAntennaGain ( double aXmtr_Wavelength) const

Compute the "antenna gain" of the transmitter (see documentation or (1) eq. 3.80).

Parameters
aXmtr_WavelengthThe wavelength of the transmitter's laser.

References mApertureDiameter.

◆ GetApertureArea()

double WsfLASER_RcvrComponent::GetApertureArea ( ) const
inline

Return the aperture area.

References mApertureArea.

◆ GetApertureDiameter()

double WsfLASER_RcvrComponent::GetApertureDiameter ( ) const
inline

Return the diameter of the receiver (detector) aperture.

References mApertureDiameter.

◆ GetApertureSolidAngle()

double WsfLASER_RcvrComponent::GetApertureSolidAngle ( ) const
inline

Return the solid angle subtended by the aperture at the detector.

References mApertureSolidAngle.

◆ GetComponentName()

WsfStringId WsfLASER_RcvrComponent::GetComponentName ( ) const
overridevirtual

Returns the component's name. Each component in a component list has a unique name. Names are usually defined by the user, but they may also be generated by code and prefixed with a '#' to guarantee no collisions with user-defined names.

Implements WsfComponent.

◆ GetComponentRoles()

const int * WsfLASER_RcvrComponent::GetComponentRoles ( ) const
overridevirtual

Returns a zero-terminated array of component roles. Note that the array should be in decreasing order of specificity and should generally the inheritance hierarchy. The first entry should be the components 'primary' role. For example a sensor would do the following:

return roles;
@ cWSF_COMPONENT_SENSOR
A 'sensor' component (WsfSensor).
Definition WsfComponentRoles.hpp:105
@ cWSF_COMPONENT_PLATFORM_PART
The component derives from WsfPlatformPart.
Definition WsfComponentRoles.hpp:98
@ cWSF_COMPONENT_ARTICULATED_PART
The component derives from WsfArticulatedPart.
Definition WsfComponentRoles.hpp:99

Implements WsfComponent.

References cWSF_COMPONENT_LASER_RCVR.

◆ GetInstantaneousFieldOfView()

double WsfLASER_RcvrComponent::GetInstantaneousFieldOfView ( ) const
inline

Return the instantaneous field-of-view of this receiver.

References mIFOV.

◆ GetOpticsTransmissionFactor()

double WsfLASER_RcvrComponent::GetOpticsTransmissionFactor ( ) const
inline

Return the fraction of the transmitted laser light that passes through the receiver optics.

References mOpticsTransmissionFactor.

◆ GetResponsivity()

double WsfLASER_RcvrComponent::GetResponsivity ( ) const
inline

Return the responsivity of the detector (amps of current produced per watt of incident radiation [wavelength dependent]).

References mResponsivity.

◆ Initialize()

bool WsfLASER_RcvrComponent::Initialize ( double aSimTime)
overridevirtual

Perform phase 1 initialization. This is called by WsfPlatform::Initialize() during phase 1 initialization of the platform. The component should complete validation of input data that could not be done by ProcessInput, as well as any other functions to prepare for simulation use (subject to the next paragraph).

The order in which components are initialized is defined by GetComponentInitializationOrder. In general a component implementation of this method should not be dependent on the state of another component, i.e.: it should not assume that the other components Initialize() method has been called. If such a dependency exists one should use Initialize2() if possible, or specify a value GetComponentInitializationOrder to force things to initialize in a particular order.

Parameters
aSimTimeThe current simulation time.
Returns
true if successful or false if unsuccessful (bad input data, etc.)
Note
This method should NOT add any other components to the platform. This MUST be done in PreInitialize().

If the focal length and detector size of the receiver are specified, compute the instantaneous field- of-view (IFOV; the FOV of the smallest discrenable feature)

Reimplemented from WsfComponent.

References WsfEM_XmtrRcvr::GetAntenna(), WsfEM_Antenna::GetAzimuthFieldOfView(), WsfComponentT< WsfEM_Rcvr >::GetComponentParent(), WsfEM_Antenna::GetElevationFieldOfView(), WsfEM_XmtrRcvr::GetWavelength(), WsfComponent::Initialize(), mApertureArea, mApertureDiameter, mApertureSolidAngle, mBandPass, mCircuitCapacitance, mCircuitTemperature, mDetectorSize, mFocalLength, mIFOV, mNoiseEquivalentCountRate, mNoiseEquivalentPower, mPhotonEnergy, mQuantumEfficiency, mResponsivity, mThermalNoiseCountSq, ok, and WsfEM_Rcvr::SetBandwidth().

◆ operator=()

WsfLASER_RcvrComponent & WsfLASER_RcvrComponent::operator= ( const WsfLASER_RcvrComponent & )
delete

◆ ProcessInput()

bool WsfLASER_RcvrComponent::ProcessInput ( UtInput & aInput)
overridevirtual

Evaluate the current input command and determine if it is one processed by the component. The component should get the current command from the input stream and determine if it is one that it recognizes. If it does not recognize the command then it should leave the command in the input stream and return false. If it does recognize the command then it should process the command and return true. If invalid arguments are encountered then it should throw an exception.

Parameters
aInputThe input stream.
Returns
true if the current command was recognized (and processed), or false if the command was not recognized.
Exceptions
UtInput::ExceptionBaseif an invalid input was encountered.

Reimplemented from WsfComponent.

References mApertureDiameter, mBandPass, mBulkDarkCountRate, mCircuitCapacitance, mCircuitTemperature, mDetectorGain, mDetectorSize, mExcessNoiseFactor, mFocalLength, mNoiseEquivalentPower, mOpticsTransmissionFactor, mPointingTransmissionFactor, mQuantumEfficiency, mResponsivity, mSurfaceDarkCountRate, and WsfComponent::ProcessInput().

◆ QueryInterface()

void * WsfLASER_RcvrComponent::QueryInterface ( int aRole)
overridevirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Implements WsfComponent.

References cWSF_COMPONENT_LASER_RCVR.

Member Data Documentation

◆ mApertureArea

double WsfLASER_RcvrComponent::mApertureArea
protected

The area of the aperture (assumed circular).

Referenced by ComputeDetectionData(), GetApertureArea(), Initialize(), and WsfLASER_RcvrComponent().

◆ mApertureDiameter

double WsfLASER_RcvrComponent::mApertureDiameter
protected

Defines the diameter of the receiver (detector) aperture.

Referenced by GetAntennaGain(), GetApertureDiameter(), Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mApertureSolidAngle

double WsfLASER_RcvrComponent::mApertureSolidAngle
protected

The solid angle subtended by the aperture at the detector.

Referenced by ComputeDetectionData(), GetApertureSolidAngle(), Initialize(), and WsfLASER_RcvrComponent().

◆ mBandPass

double WsfLASER_RcvrComponent::mBandPass
protected

Assuming an optical filter, this defines the range of wavelengths about the center that are detected.

Referenced by ComputeDetectionData(), Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mBulkDarkCountRate

double WsfLASER_RcvrComponent::mBulkDarkCountRate
protected

The "bulk" or amplified dark count rate.

Referenced by ComputeDetectionData(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mCircuitCapacitance

double WsfLASER_RcvrComponent::mCircuitCapacitance
protected

Circuit capacitance of the detector integrating circuit, sometimes provided in APD spec sheets.

Referenced by Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mCircuitResistance

double WsfLASER_RcvrComponent::mCircuitResistance
protected

Circuit resistance of the detector integrating circuit.

Referenced by ComputeDetectionData(), and WsfLASER_RcvrComponent().

◆ mCircuitTemperature

double WsfLASER_RcvrComponent::mCircuitTemperature
protected

The temperature of the integrating circuit; used to compute thermal noise.

Referenced by ComputeDetectionData(), Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mDetectorGain

double WsfLASER_RcvrComponent::mDetectorGain
protected

Gain of the photodetector.

Referenced by ComputeDetectionData(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mDetectorSize

double WsfLASER_RcvrComponent::mDetectorSize
protected

The length or width of the physical detector.

Referenced by Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mExcessNoiseFactor

double WsfLASER_RcvrComponent::mExcessNoiseFactor
protected

Used with APD, this is the additional gain observed when measuring noise in an APD.

Referenced by ComputeDetectionData(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mFocalLength

double WsfLASER_RcvrComponent::mFocalLength
protected

Optionally used to compute the aperture solid angle.

Referenced by Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mIFOV

double WsfLASER_RcvrComponent::mIFOV
protected

The instantaneous field of view (FOV of one detector element not always applicable).

Referenced by GetInstantaneousFieldOfView(), Initialize(), and WsfLASER_RcvrComponent().

◆ mNoiseEquivalentCountRate

double WsfLASER_RcvrComponent::mNoiseEquivalentCountRate
protected

The equivalent count rate with the noise equivalent power.

Referenced by ComputeDetectionData(), Initialize(), and WsfLASER_RcvrComponent().

◆ mNoiseEquivalentPower

double WsfLASER_RcvrComponent::mNoiseEquivalentPower
protected

The incident power that would be needed to produce a S/N of one.

Referenced by Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mOpticsTransmissionFactor

double WsfLASER_RcvrComponent::mOpticsTransmissionFactor
protected

Defines the fraction of the received laser laser light that passes through the receiver optics.

Referenced by ComputeDetectionData(), GetOpticsTransmissionFactor(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mPhotonEnergy

double WsfLASER_RcvrComponent::mPhotonEnergy
protected

The photon energy at the center wavelength of the detector.

Referenced by ComputeDetectionData(), Initialize(), and WsfLASER_RcvrComponent().

◆ mPointingTransmissionFactor

double WsfLASER_RcvrComponent::mPointingTransmissionFactor
protected

Applicable only when spot size is nearly diffraction-limited.

Referenced by ProcessInput(), and WsfLASER_RcvrComponent().

◆ mQuantumEfficiency

double WsfLASER_RcvrComponent::mQuantumEfficiency
protected

The fraction of electrons that are produced for each incident photon.

Referenced by ComputeDetectionData(), Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mResponsivity

double WsfLASER_RcvrComponent::mResponsivity
protected

Computed from quantum efficiency, this is the number of amps produced per incident watt of power.

Referenced by GetResponsivity(), Initialize(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mSurfaceDarkCountRate

double WsfLASER_RcvrComponent::mSurfaceDarkCountRate
protected

The un-amplified dark count rate.

Referenced by ComputeDetectionData(), ProcessInput(), and WsfLASER_RcvrComponent().

◆ mThermalNoiseCountSq

double WsfLASER_RcvrComponent::mThermalNoiseCountSq
protected

If computed from circuit capacitance, this is the square of the thermal noise count.

Referenced by ComputeDetectionData(), Initialize(), and WsfLASER_RcvrComponent().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved