WSF
WsfTabularAttenuation.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 WSFTABULARATTENUATION_HPP
13#define WSFTABULARATTENUATION_HPP
14
15#include "wsf_export.h"
16
17#include <iosfwd>
18#include <string>
19#include <vector>
20
21#include "UtCloneablePtr.hpp"
22#include "UtTable.hpp"
23#include "WsfEM_Attenuation.hpp"
24
27{
28public:
32 WsfEM_Attenuation* Clone() const override;
33
34 static WsfEM_Attenuation* ObjectFactory(const std::string& aTypeName);
35
36 bool Initialize(WsfEM_XmtrRcvr* aXmtrRcvrPtr) override;
37
38 bool ProcessInput(UtInput& aInput) override;
39
40 bool AcceptsInlineBlockInput() const override { return true; }
41
43 WsfEnvironment& aEnvironment,
44 WsfEM_Interaction::Geometry aGeometry) override;
45
47
48
49 static void BuildResponseVector(UtTable::Curve& aReponseCurve,
50 const std::vector<double>& aWavenumbers,
51 std::vector<double>& aResponseVector);
52
53 static double ComputeAverageContrastTransmittance(const std::vector<double>& aWavenumbers,
54 const std::vector<double>& aSensorToTargetTransmittances,
55 const std::vector<double>& aTargetToBackgroundRadiances,
56 const std::vector<double>& aSensorResponse);
57
58 static double ComputeAverageTransmittance(const std::vector<double>& aWavenumbers,
59 const std::vector<double>& aTransmittances,
60 const std::vector<double>& aSensorResponse);
61
62 static bool ReadSpectralData(std::istream& aFile,
63 double& aAltitude,
64 double& aElevation,
65 double& aRange,
66 std::vector<double>& aWavenumbers,
67 std::vector<double>& aValues);
68
69 static void ReadSpectralHeaders(std::istream& aFile, std::string aHeaders[3]);
71private:
72 void ProcessQueryCommand(UtInput& aInput);
73
74 void SpectralDataConversion(UtInput& aInput);
75
77 UtCloneablePtr<UtTable::Table> mAttenuationPtr;
78
80 double mAdjustmentFactor;
81
83 bool mTwoWayAttenuation;
84
86 bool mNeedFrequency;
87
89 bool mNeedGroundRange;
90
92 bool mNeedSlantRange;
93};
94
95#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfEM_Attenuation()
Definition WsfEM_Attenuation.cpp:25
virtual double ComputeAttenuationFactor(WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment, WsfEM_Interaction::Geometry aGeometry)
Definition WsfEM_Attenuation.cpp:94
virtual bool Initialize(WsfEM_XmtrRcvr *aXmtrRcvrPtr)
Definition WsfEM_Attenuation.cpp:48
bool ProcessInput(UtInput &aInput) override
Definition WsfEM_Attenuation.cpp:66
WsfEM_Attenuation * Clone() const override=0
Definition WsfEM_Interaction.hpp:68
Geometry
Definition WsfEM_Interaction.hpp:93
Definition WsfEM_XmtrRcvr.hpp:42
Definition WsfEnvironment.hpp:37
bool AcceptsInlineBlockInput() const override
Definition WsfTabularAttenuation.hpp:40
static WsfEM_Attenuation * ObjectFactory(const std::string &aTypeName)
Factory method called by WsfEM_AttenuationTypes.
Definition WsfTabularAttenuation.cpp:93
WsfTabularAttenuation()
Definition WsfTabularAttenuation.cpp:53
WsfTabularAttenuation & operator=(const WsfTabularAttenuation &)=delete
Copyrights Multiple, All Rights Reserved