REvent/StationRecData.cc
Go to the documentation of this file.
1 #include <revt/StationRecData.h>
2 
3 #include <utl/ErrorLogger.h>
4 #include <utl/AnalyticCoordinateTransformator.h>
5 #include <utl/Math.h>
6 
7 using namespace revt;
8 using namespace utl;
9 
10 
12 double
14  const
15 {
16  if (HasParameter(eSignalArrivalDirectionX) && HasParameter(eSignalArrivalDirectionY)) {
17  return
18  AnalyticCoordinateTransformator::GetAzimuthFromCartesianCoordinates(
19  GetParameter(eSignalArrivalDirectionX), GetParameter(eSignalArrivalDirectionY)
20  );
21  } else {
22  WARNING("StationRecData::GetSignalArrivalAzimuth(): Parameter eSignalArrivalDirection was not set");
23  return std::numeric_limits<double>::quiet_NaN();
24  }
25 }
26 
27 
29 double
31  const
32 {
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(
44  2,
45  2,
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)
55  );
56  return sqrt(covariance22);
57  } else {
58  WARNING("StationRecData::GetSignalArrivalAzimuthError(): Parameter or Covariances"
59  " of eSignalArrivalDirection was not set, returning NaN");
60  return std::numeric_limits<double>::quiet_NaN();
61  }
62 }
63 
64 
66 double
68  const
69 {
70  if (HasParameter(eSignalArrivalDirectionX) &&
71  HasParameter(eSignalArrivalDirectionY) &&
72  HasParameter(eSignalArrivalDirectionZ)) {
73  return
74  AnalyticCoordinateTransformator::GetZenithFromCartesianCoordinates(
75  GetParameter(eSignalArrivalDirectionX), GetParameter(eSignalArrivalDirectionY), GetParameter(eSignalArrivalDirectionZ)
76  );
77  } else {
78  WARNING("StationRecData::GetSignalArrivalZenith(): Parameter eSignalArrivalDirection was not set");
79  return std::numeric_limits<double>::quiet_NaN();
80  }
81 }
82 
83 
85 double
87  const
88 {
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(
100  1,
101  1,
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)
111  );
112  return sqrt(covariance11);
113  } else {
114  WARNING("StationRecData::GetSignalArrivalZenithError(): Parameter or Covariances"
115  " of eSignalArrivalDirection was not set, returning NaN");
116  return std::numeric_limits<double>::quiet_NaN();
117  }
118 }
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.
Definition: ErrorLogger.h:163

, generated on Tue Sep 26 2023.