ObsRngDev.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
44 #ifndef OBSRNGDEV_HPP
45 #define OBSRNGDEV_HPP
46 
47 #include <ostream>
48 
49 #include "CommonTime.hpp"
50 #include "CarrierBand.hpp"
51 #include "NavLibrary.hpp"
52 #include "Exception.hpp"
53 #include "GPSEllipsoid.hpp"
54 #include "IonoModelStore.hpp"
55 #include "TropModel.hpp"
56 #include "NBTropModel.hpp"
57 #include "ValidType.hpp"
58 #include "SatID.hpp"
59 #include "GNSSconstants.hpp"
60 #include "gnsstk_export.h"
61 
62 namespace gnsstk
63 {
65 
66 
73  class ObsRngDev
74  {
75  public:
76 
82  ObsRngDev() noexcept
84  {}
85 
103  ObsRngDev(const double prange,
104  const SatID& svid,
105  const CommonTime& time,
106  const Position& rxpos,
107  NavLibrary& navLib,
108  EllipsoidModel& em,
109  bool svTime = false,
111  SVHealth xmitHealth = SVHealth::Any,
113 
133  ObsRngDev(const double prange,
134  const SatID& svid,
135  const CommonTime& time,
136  const Position& rxpos,
137  NavLibrary& navLib,
138  EllipsoidModel& em,
139  const IonoModelStore& ion,
140  CarrierBand band,
141  bool svTime = false,
143  SVHealth xmitHealth = SVHealth::Any,
145 
164  ObsRngDev(const double prange,
165  const SatID& svid,
166  const CommonTime& time,
167  const Position& rxpos,
168  NavLibrary& navLib,
169  EllipsoidModel& em,
170  const TropModel& tm,
171  bool svTime = false,
173  SVHealth xmitHealth = SVHealth::Any,
175 
196  ObsRngDev(const double prange,
197  const SatID& svid,
198  const CommonTime& time,
199  const Position& rxpos,
200  NavLibrary& navLib,
201  EllipsoidModel& em,
202  const TropModel& tm,
203  const IonoModelStore& ion,
204  CarrierBand band,
205  bool svTime = false,
207  SVHealth xmitHealth = SVHealth::Any,
209 
229  ObsRngDev(const double prange1,
230  const double prange2,
231  const SatID& svid,
232  const CommonTime& time,
233  const Position& rxpos,
234  NavLibrary& navLib,
235  EllipsoidModel& em,
236  bool svTime = false,
237  double gamma = GAMMA_GPS,
239  SVHealth xmitHealth = SVHealth::Any,
241 
262  ObsRngDev(const double prange1,
263  const double prange2,
264  const SatID& svid,
265  const CommonTime& time,
266  const Position& rxpos,
267  NavLibrary& navLib,
268  const EllipsoidModel& em,
269  const TropModel& tm,
270  bool svTime = false,
271  double gamma = GAMMA_GPS,
273  SVHealth xmitHealth = SVHealth::Any,
275 
277  virtual ~ObsRngDev() noexcept
278  {}
279 
280  // get accessor methods ----------------------------------------------
285  const CommonTime& getTime() const noexcept
286  { return obstime; }
287 
292  SatID getSvID() const noexcept
293  { return svid; }
294 
300  { return azimuth; }
301 
307  { return elevation; }
308 
313  vshort getHealth() const noexcept
314  { return health; }
315 
320  vshort getIODC() const noexcept
321  { return iodc; }
322 
327  double getORD() const noexcept
328  { return ord; }
329 
334  vdouble getIono() const noexcept
335  { return iono; }
336 
341  vdouble getTrop() const noexcept
342  { return trop; }
343 
344  friend std::ostream& operator<<(std::ostream& s,
345  const ObsRngDev& r) noexcept;
346 
348  { ord -= clockOffset; }
349 
350  GNSSTK_EXPORT static bool debug;
351 
352  private:
353  void computeOrd(double obs,
354  const Position& rxpos,
355  NavLibrary& navLib,
356  const EllipsoidModel& em,
357  bool svTime,
358  NavSearchOrder order,
359  SVHealth xmitHealth,
361  {
362  if (svTime)
363  computeOrdTx(obs, rxpos, navLib, em, order, xmitHealth, valid);
364  else
365  computeOrdRx(obs, rxpos, navLib, em, order, xmitHealth, valid);
366  return;
367  }
368 
369 
370 
371  void computeOrdTx(double obs,
372  const Position& rxpos,
373  NavLibrary& navLib,
374  const EllipsoidModel& em,
375  NavSearchOrder order,
376  SVHealth xmitHealth,
378 
379  void computeOrdRx(double obs,
380  const Position& rxpos,
381  NavLibrary& navLib,
382  const EllipsoidModel& em,
383  NavSearchOrder order,
384  SVHealth xmitHealth,
386 
387  void computeTrop(const TropModel& tm);
388 
389  public:
392  double ord;
393  unsigned wonky;
394 
402  };
403 
405 
406 }
407 #endif
gnsstk::ValidType< float >
gnsstk::ObsRngDev::getHealth
vshort getHealth() const noexcept
Definition: ObsRngDev.hpp:313
gnsstk::ObsRngDev::azimuth
vfloat azimuth
SV azimuth.
Definition: ObsRngDev.hpp:395
const
#define const
Definition: getopt.c:43
ValidType.hpp
gnsstk::ObsRngDev::getTime
const CommonTime & getTime() const noexcept
Definition: ObsRngDev.hpp:285
gnsstk::CarrierBand
CarrierBand
Definition: CarrierBand.hpp:54
gnsstk::ObsRngDev::iodc
vshort iodc
ephemeris IODC
Definition: ObsRngDev.hpp:398
gnsstk::ObsRngDev::debug
static GNSSTK_EXPORT bool debug
Definition: ObsRngDev.hpp:350
gnsstk::ObsRngDev::getTrop
vdouble getTrop() const noexcept
Definition: ObsRngDev.hpp:341
gnsstk::ObsRngDev::ObsRngDev
ObsRngDev() noexcept
Definition: ObsRngDev.hpp:82
gnsstk::ObsRngDev::health
vshort health
SV health bitfield.
Definition: ObsRngDev.hpp:397
gnsstk::ObsRngDev::svid
SatID svid
PRN number of observed SV.
Definition: ObsRngDev.hpp:391
gnsstk::SatID
Definition: SatID.hpp:89
SatID.hpp
gnsstk::TropModel
Definition: TropModel.hpp:105
TropModel.hpp
gnsstk::SVHealth
SVHealth
Identify different types of SV health states.
Definition: SVHealth.hpp:52
gnsstk::NavValidityType
NavValidityType
Definition: NavValidityType.hpp:53
GNSSconstants.hpp
gnsstk::NavSearchOrder
NavSearchOrder
Specify the behavior of nav data searches in NavLibrary/NavDataFactory.
Definition: NavSearchOrder.hpp:51
gnsstk::ObsRngDev::operator<<
friend std::ostream & operator<<(std::ostream &s, const ObsRngDev &r) noexcept
Definition: ObsRngDev.cpp:284
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
IonoModelStore.hpp
gnsstk::ObsRngDev::rho
vdouble rho
expected geometric range
Definition: ObsRngDev.hpp:399
gnsstk::ObsRngDev
Definition: ObsRngDev.hpp:73
CarrierBand.hpp
gnsstk::SVHealth::Any
@ Any
Use in searches when you don't care about the SV health.
gnsstk::ObsRngDev::getElevation
vfloat getElevation() const noexcept
Definition: ObsRngDev.hpp:306
gnsstk::ObsRngDev::getIono
vdouble getIono() const noexcept
Definition: ObsRngDev.hpp:334
gnsstk::ObsRngDev::computeOrd
void computeOrd(double obs, const Position &rxpos, NavLibrary &navLib, const EllipsoidModel &em, bool svTime, NavSearchOrder order, SVHealth xmitHealth, NavValidityType valid)
Definition: ObsRngDev.hpp:353
gnsstk::IonoModelStore
Definition: IonoModelStore.hpp:62
NavLibrary.hpp
gnsstk::NavLibrary
Definition: NavLibrary.hpp:944
gnsstk::ObsRngDev::ord
double ord
difference between expected and observed range
Definition: ObsRngDev.hpp:392
gnsstk::NavValidityType::ValidOnly
@ ValidOnly
Only load/find nav messages that pass validity checks.
example4.time
time
Definition: example4.py:103
gnsstk::ObsRngDev::computeOrdRx
void computeOrdRx(double obs, const Position &rxpos, NavLibrary &navLib, const EllipsoidModel &em, NavSearchOrder order, SVHealth xmitHealth, NavValidityType valid)
Definition: ObsRngDev.cpp:203
gnsstk::CommonTime
Definition: CommonTime.hpp:84
NBTropModel.hpp
example6.clockOffset
clockOffset
Definition: example6.py:110
example6.valid
valid
Definition: example6.py:20
gnsstk::END_OF_TIME
const Epoch END_OF_TIME(CommonTime::END_OF_TIME)
Latest Representable Epoch.
gnsstk::ObsRngDev::computeOrdTx
void computeOrdTx(double obs, const Position &rxpos, NavLibrary &navLib, const EllipsoidModel &em, NavSearchOrder order, SVHealth xmitHealth, NavValidityType valid)
Definition: ObsRngDev.cpp:241
GPSEllipsoid.hpp
gnsstk::ObsRngDev::getORD
double getORD() const noexcept
Definition: ObsRngDev.hpp:327
gnsstk::GAMMA_GPS
const double GAMMA_GPS
Definition: GNSSconstants.hpp:104
Exception.hpp
CommonTime.hpp
gnsstk::ObsRngDev::obstime
CommonTime obstime
time of SV observation
Definition: ObsRngDev.hpp:390
gnsstk::ObsRngDev::getAzimuth
vfloat getAzimuth() const noexcept
Definition: ObsRngDev.hpp:299
gnsstk::ObsRngDev::elevation
vfloat elevation
SV elevation.
Definition: ObsRngDev.hpp:396
gnsstk::ObsRngDev::iono
vdouble iono
iono correction (meters)
Definition: ObsRngDev.hpp:400
gnsstk::ObsRngDev::computeTrop
void computeTrop(const TropModel &tm)
Definition: ObsRngDev.cpp:278
gnsstk::Position
Definition: Position.hpp:136
gnsstk::ObsRngDev::~ObsRngDev
virtual ~ObsRngDev() noexcept
destructor
Definition: ObsRngDev.hpp:277
gnsstk::NavSearchOrder::User
@ User
Return the latest message before the search time.
gnsstk::EllipsoidModel
Definition: EllipsoidModel.hpp:56
gnsstk::ObsRngDev::trop
vdouble trop
trop correction (meters)
Definition: ObsRngDev.hpp:401
gnsstk::ObsRngDev::getIODC
vshort getIODC() const noexcept
Definition: ObsRngDev.hpp:320
gnsstk::ObsRngDev::wonky
unsigned wonky
A bitmask defined by the application to flag questionable data.
Definition: ObsRngDev.hpp:393
gnsstk::ObsRngDev::applyClockOffset
void applyClockOffset(double clockOffset)
Definition: ObsRngDev.hpp:347
gnsstk::ObsRngDev::getSvID
SatID getSvID() const noexcept
Definition: ObsRngDev.hpp:292


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40