PhaseCodeAlignment Class Reference
[GPS solution algorithms and Tropospheric]

#include <PhaseCodeAlignment.hpp>

Inheritance diagram for PhaseCodeAlignment:

Inheritance graph
[legend]
Collaboration diagram for PhaseCodeAlignment:

Collaboration graph
[legend]
List of all members.

Detailed Description

This class aligns phase with code measurements.

This class is meant to be used with the GNSS data structures objects found in "DataStructures" class.

A typical way to use this class follows:

      // INITIALIZATION PART

      // EBRE station nominal position
   Position nominalPos(4833520.192, 41537.1043, 4147461.560);
   RinexObsStream rin("ebre0300.02o");  // Data stream

      // Load all the SP3 ephemerides files
   SP3EphemerisStore SP3EphList;
   SP3EphList.loadFile("igs11512.sp3");
   SP3EphList.loadFile("igs11513.sp3");
   SP3EphList.loadFile("igs11514.sp3");

      // More declarations here: ComputeMOPSWeights, SimpleFilter,
      // LICSDetector, MWCSDetector, SolidTides, OceanLoading,
      // PoleTides, CorrectObservables, ComputeWindUp, ComputeLinear,
      // LinearCombinations, SolverPPP, etc...

      // Object to align phase (LC) with code (PC) measurements
   PhaseCodeAlignment phaseAlign;

     // PROCESSING PART

   gnssRinex gRin;

   while(rin >> gRin)
   {
      try
      {
         gRin  >> basicM
               >> correctObs
               >> compWindup
               >> computeTropo
               >> linear
               >> pcFilter
               >> markCSLI
               >> markCSMW
               >> markArc
               >> phaseAlign
               >> pppSolver;
      }
      catch(...)
      {
         cerr << "Unknown exception at epoch: " << time << endl;
         continue;
      }

         // Print results
      cout << time.DOYsecond()      << "  "; // Output field #1
      cout << pppSolver.solution[1] << "  "; // dx: Output field #2
      cout << pppSolver.solution[2] << "  "; // dy: Output field #3
      cout << pppSolver.solution[3] << "  "; // dz: Output field #4
      cout << pppSolver.solution[0] << "  "; // wetTropo: Out field #5
      cout << endl;
   }

The "PhaseCodeAlignment" object will visit every satellite in the GNSS data structure that is "gRin" and, if an arc change or cycle slip has happened, it will compute a phase offset in order to take the phase measurement close to the corresponding code measurement.

By default, "PhaseCodeAlignment" objects will align the ionosphere-free phase combination (LC) with the corresponding code (PC). Also, it will check changes in satellite arcs in order to know when offset recomputing is necessary. All these defaults may be changed with the appropriate methods.

The use of this class is not mandatory; however, it is recommendable given that resulting phase ambiguities are smaller, and it potentially improves the numerical stability of the solver.

Warning:
Be aware that if you change the phase/code pair, you must change the wavelength accordingly.

Objects in this class store their internal state, so you MUST NOT use the SAME object to process DIFFERENT data streams.

See also:
SatArcMarker.hpp, LICSDetector.hpp and MWCSDetector.hpp.

Definition at line 134 of file PhaseCodeAlignment.hpp.

Public Member Functions

 PhaseCodeAlignment ()
 Default constructor.
 PhaseCodeAlignment (const TypeID &phase, const TypeID &code, const double wavelength, bool useArc=true)
 Common constructor.
virtual TypeID getPhaseType () const
 Method to get the phase TypeID being used.
virtual PhaseCodeAlignmentsetPhaseType (const TypeID &phase)
 Method to set the phase TypeID to be used.
virtual TypeID getCodeType () const
 Method to get the code TypeID being used.
virtual PhaseCodeAlignmentsetCodeType (const TypeID &code)
 Method to set the code TypeID to be used.
virtual double getPhaseWavelength () const
 Method to get phase wavelength being used.
virtual PhaseCodeAlignmentsetPhaseWavelength (double wavelength)
 Method to set the phase wavelength to be used.
virtual bool getUseSatArc () const
 Method to get if this class will use satellite arcs (true) or cycle slip flags (false).
virtual PhaseCodeAlignmentsetUseSatArc (bool useArc)
 Method to set if this class will use satellite arcs (true) or cycle slip flags (false).
virtual TypeID getCSFlag () const
 Method to get the default CS flag type being used.
virtual PhaseCodeAlignmentsetCSFlag (const TypeID &watchFlag)
 Method to set the default CS flag type to be used.
virtual satTypeValueMapProcess (const DayTime &epoch, satTypeValueMap &gData) throw (ProcessingException)
 Returns a satTypeValueMap object, adding the new data generated when calling this object.
virtual gnssSatTypeValueProcess (gnssSatTypeValue &gData) throw (ProcessingException)
 Returns a gnnsSatTypeValue object, adding the new data generated when calling this object.
virtual gnssRinexProcess (gnssRinex &gData) throw (ProcessingException)
 Returns a gnnsRinex object, adding the new data generated when calling this object.
virtual int getIndex (void) const
 Returns an index identifying this object.
virtual std::string getClassName (void) const
 Returns a string identifying this object.
virtual ~PhaseCodeAlignment ()
 Destructor.


Constructor & Destructor Documentation

PhaseCodeAlignment  )  [inline]
 

Default constructor.

Definition at line 139 of file PhaseCodeAlignment.hpp.

References gpstk::codeType.

PhaseCodeAlignment const TypeID phase,
const TypeID code,
const double  wavelength,
bool  useArc = true
 

Common constructor.

Parameters:
phase Phase TypeID.
code Code TypeID.
wavelength Phase wavelength, in meters.
useArc Whether satellite arcs will be used or not.

Definition at line 58 of file PhaseCodeAlignment.cpp.

References gpstk::codeType, and PhaseCodeAlignment::setPhaseWavelength().

virtual ~PhaseCodeAlignment  )  [inline, virtual]
 

Destructor.

Definition at line 264 of file PhaseCodeAlignment.hpp.


Member Function Documentation

std::string getClassName void   )  const [virtual]
 

Returns a string identifying this object.

Implements ProcessingClass.

Definition at line 47 of file PhaseCodeAlignment.cpp.

virtual TypeID getCodeType  )  const [inline, virtual]
 

Method to get the code TypeID being used.

Definition at line 173 of file PhaseCodeAlignment.hpp.

virtual TypeID getCSFlag  )  const [inline, virtual]
 

Method to get the default CS flag type being used.

Definition at line 214 of file PhaseCodeAlignment.hpp.

int getIndex void   )  const [virtual]
 

Returns an index identifying this object.

Implements ProcessingClass.

Definition at line 42 of file PhaseCodeAlignment.cpp.

virtual TypeID getPhaseType  )  const [inline, virtual]
 

Method to get the phase TypeID being used.

Definition at line 160 of file PhaseCodeAlignment.hpp.

virtual double getPhaseWavelength  )  const [inline, virtual]
 

Method to get phase wavelength being used.

Definition at line 186 of file PhaseCodeAlignment.hpp.

virtual bool getUseSatArc  )  const [inline, virtual]
 

Method to get if this class will use satellite arcs (true) or cycle slip flags (false).

Definition at line 199 of file PhaseCodeAlignment.hpp.

gnssRinex & Process gnssRinex gData  )  throw (ProcessingException) [virtual]
 

Returns a gnnsRinex object, adding the new data generated when calling this object.

Parameters:
gData Data object holding the data.

Implements ProcessingClass.

Definition at line 292 of file PhaseCodeAlignment.cpp.

References GPSTK_THROW.

gnssSatTypeValue & Process gnssSatTypeValue gData  )  throw (ProcessingException) [virtual]
 

Returns a gnnsSatTypeValue object, adding the new data generated when calling this object.

Parameters:
gData Data object holding the data.

Implements ProcessingClass.

Definition at line 260 of file PhaseCodeAlignment.cpp.

References GPSTK_THROW.

satTypeValueMap & Process const DayTime epoch,
satTypeValueMap gData
throw (ProcessingException) [virtual]
 

Returns a satTypeValueMap object, adding the new data generated when calling this object.

Parameters:
epoch Time of observations.
gData Data object holding the data.

Definition at line 104 of file PhaseCodeAlignment.cpp.

References gpstk::codeType, GPSTK_THROW, and gpstk::SatIDSet.

virtual PhaseCodeAlignment& setCodeType const TypeID code  )  [inline, virtual]
 

Method to set the code TypeID to be used.

Parameters:
code Code TypeID.

Definition at line 181 of file PhaseCodeAlignment.hpp.

References gpstk::codeType.

virtual PhaseCodeAlignment& setCSFlag const TypeID watchFlag  )  [inline, virtual]
 

Method to set the default CS flag type to be used.

Parameters:
watchFlag Cycle slip flag to be watched.

Definition at line 222 of file PhaseCodeAlignment.hpp.

virtual PhaseCodeAlignment& setPhaseType const TypeID phase  )  [inline, virtual]
 

Method to set the phase TypeID to be used.

Parameters:
phase Phase TypeID.

Definition at line 168 of file PhaseCodeAlignment.hpp.

PhaseCodeAlignment & setPhaseWavelength double  wavelength  )  [virtual]
 

Method to set the phase wavelength to be used.

Parameters:
wavelength Phase wavelength, in meters.

Definition at line 79 of file PhaseCodeAlignment.cpp.

Referenced by PhaseCodeAlignment::PhaseCodeAlignment().

virtual PhaseCodeAlignment& setUseSatArc bool  useArc  )  [inline, virtual]
 

Method to set if this class will use satellite arcs (true) or cycle slip flags (false).

Parameters:
useArc Whether this class will use satellite arcs (true) or cycle slip flags (false).

Definition at line 209 of file PhaseCodeAlignment.hpp.


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 03:31:30 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1