1 #include <revt/StationRecData.h>
3 #include <utl/ErrorLogger.h>
4 #include <utl/AnalyticCoordinateTransformator.h>
16 if (HasParameter(eSignalArrivalDirectionX) && HasParameter(eSignalArrivalDirectionY)) {
18 AnalyticCoordinateTransformator::GetAzimuthFromCartesianCoordinates(
19 GetParameter(eSignalArrivalDirectionX), GetParameter(eSignalArrivalDirectionY)
22 WARNING(
"StationRecData::GetSignalArrivalAzimuth(): Parameter eSignalArrivalDirection was not set");
23 return std::numeric_limits<double>::quiet_NaN();
33 if (HasParameter(eSignalArrivalDirectionX) &&
34 HasParameter(eSignalArrivalDirectionY) &&
35 HasParameter(eSignalArrivalDirectionZ) &&
36 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionX) &&
37 HasParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionY) &&
38 HasParameterCovariance(eSignalArrivalDirectionZ, eSignalArrivalDirectionZ) &&
39 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionY) &&
40 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionZ) &&
41 HasParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionZ)) {
42 const double covariance22 =
43 AnalyticCoordinateTransformator::GetSphericalCovarianceFromCartesian(
46 GetParameter(eSignalArrivalDirectionX),
47 GetParameter(eSignalArrivalDirectionY),
48 GetParameter(eSignalArrivalDirectionZ),
49 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionX),
50 GetParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionY),
51 GetParameterCovariance(eSignalArrivalDirectionZ, eSignalArrivalDirectionZ),
52 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionY),
53 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionZ),
54 GetParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionZ)
56 return sqrt(covariance22);
58 WARNING(
"StationRecData::GetSignalArrivalAzimuthError(): Parameter or Covariances"
59 " of eSignalArrivalDirection was not set, returning NaN");
60 return std::numeric_limits<double>::quiet_NaN();
70 if (HasParameter(eSignalArrivalDirectionX) &&
71 HasParameter(eSignalArrivalDirectionY) &&
72 HasParameter(eSignalArrivalDirectionZ)) {
74 AnalyticCoordinateTransformator::GetZenithFromCartesianCoordinates(
75 GetParameter(eSignalArrivalDirectionX), GetParameter(eSignalArrivalDirectionY), GetParameter(eSignalArrivalDirectionZ)
78 WARNING(
"StationRecData::GetSignalArrivalZenith(): Parameter eSignalArrivalDirection was not set");
79 return std::numeric_limits<double>::quiet_NaN();
89 if (HasParameter(eSignalArrivalDirectionX) &&
90 HasParameter(eSignalArrivalDirectionY) &&
91 HasParameter(eSignalArrivalDirectionZ) &&
92 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionX) &&
93 HasParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionY) &&
94 HasParameterCovariance(eSignalArrivalDirectionZ, eSignalArrivalDirectionZ) &&
95 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionY) &&
96 HasParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionZ) &&
97 HasParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionZ)) {
98 const double covariance11 =
99 AnalyticCoordinateTransformator::GetSphericalCovarianceFromCartesian(
102 GetParameter(eSignalArrivalDirectionX),
103 GetParameter(eSignalArrivalDirectionY),
104 GetParameter(eSignalArrivalDirectionZ),
105 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionX),
106 GetParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionY),
107 GetParameterCovariance(eSignalArrivalDirectionZ, eSignalArrivalDirectionZ),
108 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionY),
109 GetParameterCovariance(eSignalArrivalDirectionX, eSignalArrivalDirectionZ),
110 GetParameterCovariance(eSignalArrivalDirectionY, eSignalArrivalDirectionZ)
112 return sqrt(covariance11);
114 WARNING(
"StationRecData::GetSignalArrivalZenithError(): Parameter or Covariances"
115 " of eSignalArrivalDirection was not set, returning NaN");
116 return std::numeric_limits<double>::quiet_NaN();
double GetSignalArrivalZenith() const
returns the zenith angle of the signal arrival direction (perpendicular to wavefront) ...
double GetSignalArrivalZenithError() const
returns the error of the zenith angle of the signal arrival direction (perpendicular to wavefront) ...
double GetSignalArrivalAzimuth() const
returns the azimuth angle of the signal arrival direction (perpendicular to wavefront) ...
double GetSignalArrivalAzimuthError() const
returns the error of the azimuth angle of the signal arrival direction (perpendicular to wavefront) ...
#define WARNING(message)
Macro for logging warning messages.