ObsRngDev.hpp

Go to the documentation of this file.
00001 #pragma ident "$Id: ObsRngDev.hpp 778 2007-09-25 16:14:58Z ocibu $"
00002 
00003 //============================================================================
00004 //
00005 //  This file is part of GPSTk, the GPS Toolkit.
00006 //
00007 //  The GPSTk is free software; you can redistribute it and/or modify
00008 //  it under the terms of the GNU Lesser General Public License as published
00009 //  by the Free Software Foundation; either version 2.1 of the License, or
00010 //  any later version.
00011 //
00012 //  The GPSTk is distributed in the hope that it will be useful,
00013 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 //  GNU Lesser General Public License for more details.
00016 //
00017 //  You should have received a copy of the GNU Lesser General Public
00018 //  License along with GPSTk; if not, write to the Free Software Foundation,
00019 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 //  
00021 //  Copyright 2004, The University of Texas at Austin
00022 //
00023 //============================================================================
00024 
00025 //============================================================================
00026 //
00027 //This software developed by Applied Research Laboratories at the University of
00028 //Texas at Austin, under contract to an agency or agencies within the U.S. 
00029 //Department of Defense. The U.S. Government retains all rights to use,
00030 //duplicate, distribute, disclose, or release this software. 
00031 //
00032 //Pursuant to DoD Directive 523024 
00033 //
00034 // DISTRIBUTION STATEMENT A: This software has been approved for public 
00035 //                           release, distribution is unlimited.
00036 //
00037 //=============================================================================
00038 
00045 #ifndef OBSRNGDEV_HPP
00046 #define OBSRNGDEV_HPP
00047 
00048 #include <ostream>
00049 
00050 #include "DayTime.hpp"
00051 #include "ECEF.hpp"
00052 #include "XvtStore.hpp"
00053 #include "Exception.hpp"
00054 #include "GPSGeoid.hpp"
00055 #include "IonoModelStore.hpp"
00056 #include "TropModel.hpp"
00057 #include "ValidType.hpp"
00058 #include "SatID.hpp"
00059 
00060 namespace gpstk
00061 {
00062 
00068    class ObsRngDev
00069    {
00070    public:
00071 
00077       ObsRngDev() throw() : wonky(false), obstime(DayTime::END_OF_TIME) {};
00078 
00093       ObsRngDev(const double prange,
00094                 const SatID& svid,
00095                 const DayTime& time,
00096                 const ECEF& rxpos,
00097                 const XvtStore<SatID>& eph,
00098                 GeoidModel& gm,
00099                 bool svTime = false);
00114       ObsRngDev(const double prange,
00115                 const SatID& svid,
00116                 const DayTime& time,
00117                 const ECEF& rxpos,
00118                 const XvtStore<SatID>& eph,
00119                 GeoidModel& gm,
00120                 const IonoModelStore& ion,
00121                 IonoModel::Frequency fq,
00122                 bool svTime = false);
00138       ObsRngDev(const double prange,
00139                 const SatID& svid,
00140                 const DayTime& time,
00141                 const ECEF& rxpos,
00142                 const XvtStore<SatID>& eph,
00143                 GeoidModel& gm,
00144                 const TropModel& tm,
00145                 bool svTime = false);
00146    
00162       ObsRngDev(const double prange,
00163                 const SatID& svid,
00164                 const DayTime& time,
00165                 const ECEF& rxpos,
00166                 const XvtStore<SatID>& eph,
00167                 GeoidModel& gm,
00168                 const TropModel& tm,
00169                 const IonoModelStore& ion,
00170                 IonoModel::Frequency fq,
00171                 bool svTime = false);
00172    
00185       ObsRngDev(const double prange1,
00186                 const double prange2,
00187                 const SatID& svid,
00188                 const DayTime& time,
00189                 const ECEF& rxpos,
00190                 const XvtStore<SatID>& eph,
00191                 GeoidModel& gm,
00192                 bool svTime = false);
00193    
00207       ObsRngDev(const double prange1,
00208                 const double prange2,
00209                 const SatID& svid,
00210                 const DayTime& time,
00211                 const ECEF& rxpos,
00212                 const XvtStore<SatID>& eph,
00213                 const GeoidModel& gm,
00214                 const TropModel& tm,
00215                 bool svTime = false);
00216    
00218       virtual ~ObsRngDev() throw() {}
00219 
00220       // get accessor methods ----------------------------------------------
00225       const DayTime& getTime() const throw() { return obstime; }
00226 
00231       SatID getSvID() const throw() { return svid; }
00232 
00237       vfloat getAzimuth() const throw() { return azimuth; }
00238 
00243       vfloat getElevation() const throw() { return elevation; }
00244 
00249       vshort getHealth() const throw() { return health; }
00250 
00255       vshort getIODC() const throw() { return iodc; }
00256 
00261       double getORD() const throw() { return ord; }
00262 
00267       vdouble getIono() const throw() { return iono; }
00268 
00273       vdouble getTrop() const throw() { return trop; }
00274 
00275       friend std::ostream& operator<<(std::ostream& s, 
00276                                       const ObsRngDev& r) throw();
00277 
00278       void applyClockOffset(double clockOffset)
00279       {ord -= clockOffset;}
00280 
00281    static bool debug;
00282 
00283    private:
00284       void computeOrd(double obs,
00285                       const ECEF& rxpos,
00286                       const XvtStore<SatID>& eph,
00287                       const GeoidModel& gm,
00288                       bool svTime)
00289       {
00290          if (svTime) 
00291             computeOrdTx(obs, rxpos, eph, gm);
00292          else 
00293             computeOrdRx(obs, rxpos, eph, gm);
00294          return;
00295       }
00296 
00297 
00298 
00299       void computeOrdTx(double obs,
00300                         const ECEF& rxpos,
00301                         const XvtStore<SatID>& eph,
00302                         const GeoidModel& gm);
00303    
00304       void computeOrdRx(double obs,
00305                         const ECEF& rxpos,
00306                         const XvtStore<SatID>& eph,
00307                         const GeoidModel& gm);
00308 
00309       void computeTrop(const TropModel& tm);
00310 
00311    public:
00312       DayTime obstime;           
00313       SatID svid;                
00314       double ord;                
00315       unsigned wonky;            
00316 
00317       vfloat azimuth;            
00318       vfloat elevation;          
00319       vshort health;             
00320       vshort iodc;               
00321       vdouble rho;               
00322       vdouble iono;              
00323       vdouble trop;              
00324    };
00325 }
00326 #endif

Generated on Wed Feb 8 03:31:01 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1