Ionosphere.h

Classes

Slant -- Slant record (full description)
EDProfile -- Ionospheric electron density profile. (full description)
Ionosphere -- Ionospheric modelling and prediction (full description)
IonosphModel -- Abstract base class for apriori ionospheric models (full description)
IonosphData -- Abstract base class for a real-time dataset (RTD) (full description)

class Slant

Interface

Public Members
Slant() : mjd_(0),dir_(),pos_(),id_()
Double mjd () const
MVTime time () const
const MVDirection & dir () const
const MVPosition & pos () const
const String & id() const
MEpoch mep () const
MPosition mpos () const
MeasFrame mdirframe () const
MDirection mdir () const
void set ( Double mjd,const MVDirection &dir,const MVPosition &pos, const char *id_sta=NULL,const char *id_src=NULL )
Vector <Double> azEl ( Bool degrees=False ) const
Vector <Double> azElDeg () const
Vector <Double> lonLat ( Bool degrees=False ) const
Vector <Double> lonLatDeg () const
String string () const
friend uInt sortSlants( Vector<uInt> &sidx,Vector<uInt> &suniq,const SlantSet &sl)

Description

----------------------------------------------------------------------- Slant The Slant class is a container for a {UT,Az,El,Lon,Lat} combo, defining a line-of-sight to (Az,El) from location (Lon,Lat) at a specific time slot UT. -----------------------------------------------------------------------

Member Description

Slant() : mjd_(0),dir_(),pos_(),id_()

default constructor

Double mjd () const

data accessors

MVTime time () const

const MVDirection & dir () const

const MVPosition & pos () const

const String & id() const

MEpoch mep () const

returns data members as proper measures

MPosition mpos () const

MeasFrame mdirframe () const

MDirection mdir () const

void set ( Double mjd,const MVDirection &dir,const MVPosition &pos, const char *id_sta=NULL,const char *id_src=NULL )

sets epoch (MJD), position (ITRF) and direction (AZEL)

Vector <Double> azEl ( Bool degrees=False ) const

returns (Az,El) vector, default units are radians

Vector <Double> azElDeg () const

returns (Az,El) vector in degrees

Vector <Double> lonLat ( Bool degrees=False ) const

returns (Lon,Lat) vector, default units are radians

Vector <Double> lonLatDeg () const

returns (Lon,Lat) vector in degrees

String string () const

returns slant as a string (for printing)

friend uInt sortSlants( Vector<uInt> &sidx,Vector<uInt> &suniq,const SlantSet &sl)

sorting function declared as friend -- must have access


class EDProfile

Interface

EDProfile ()
~EDProfile ()
void resize( uInt n )
uInt nelements ()
const Slant & slant () const
void set_slant ( const Slant &other )
const Float * memb##_storage () const
ACCESSOR(ed)
ACCESSOR(alt)
ACCESSOR(lat)
ACCESSOR(lon)
ACCESSOR(rng)
const Vector<Float> & getLOSField() const
void copyData( const EDProfile &other )
Double tec () const
Double getTecRot (Double &tec) const

Description

----------------------------------------------------------------------- EDProfile EDProfile contains a measurement or a prediction for an ED profile along a particular slant. The ed vector holds values of ED, sampled at corresponding altitudes (alt), ranges (rng) and coordinates (lat,lon). Note that any three out of four coordinates {alt,rng,lat,lon} are redundant (since a slant is one-dimensional), but it is very useful in computations to have all four available. -----------------------------------------------------------------------

Member Description

EDProfile ()

~EDProfile ()

void resize( uInt n )

resizes internal vectors

uInt nelements ()

const Slant & slant () const

accessors for the slant memeber

void set_slant ( const Slant &other )

const Float * memb##_storage () const

accessors for the other members. Each data member (ed,alt,lat,lon,rng) has the following accessor forms: ed() returns the whole vector (by const reference) ed(i) returns value of element i set_ed(ed1) assigns the whole vector ed_storage() returns a 'Float *' to the member's storage

ACCESSOR(ed)

ACCESSOR(alt)

ACCESSOR(lat)

ACCESSOR(lon)

ACCESSOR(rng)

const Vector<Float> & getLOSField() const

computes (if not already computed) the magnetic field along the line of sight. Returns the line-of-sight intensity (in Gauss) at each defined altitude point.

void copyData( const EDProfile &other )

copies data members directly from other EDProfile

Double tec () const

The TEC function determines the total electron content for this profile. For now, it's a simple sum. We really should do some sophisticated integration here...

Double getTecRot (Double &tec) const

Computes the TEC and the Faraday Rotation for this profile. Uses a more sophisticated integration technique


class Ionosphere

Interface

Ionosphere ( IonosphModel *mod=NULL )
~Ionosphere ()
void setRTA ()
void setModel ( IonosphModel *mod )
void addData ( IonosphData *data )
Record getModelOptDesc () const
Record getModelOptions () const
void setModelOptions ( const Record &opt )

Description

----------------------------------------------------------------------- Ionosphere -----------------------------------------------------------------------

Member Description

Ionosphere ( IonosphModel *mod=NULL )

~Ionosphere ()

void setRTA ()

void setModel ( IonosphModel *mod )

void addData ( IonosphData *data )

Record getModelOptDesc () const

setModelOptions() and getModelOptions() map to IonosphModel::get/setOptions.

Record getModelOptions () const

void setModelOptions ( const Record &opt )


class IonosphModel

Interface

IonosphModel ()
virtual ~IonosphModel()
virtual void setAlt( const Float *alt,uInt nalt)
virtual void setAlt( const Vector<Float> &alt )
virtual Record getOptDesc() const
virtual Record getOptions() const
virtual void setOptions( const Record &opt )
virtual Block<EDProfile> getED ( LogicalVector &isUniq, const SlantSet &sl_set, const SlantSet<uInt> &sidx, const SlantSet<uInt> &suniq )=0
virtual Block<EDProfile> getED ( LogicalVector &isUniq,const SlantSet &sl_set )

Description

----------------------------------------------------------------------- IonosphModel -----------------------------------------------------------------------

Member Description

IonosphModel ()

Constructor. Sets up the model.

virtual ~IonosphModel()

virtual void setAlt( const Float *alt,uInt nalt)

Sets up the altitude sampling grid

virtual void setAlt( const Vector<Float> &alt )

virtual Record getOptDesc() const

Returns a "descriptor" record of available options.

virtual Record getOptions() const

Returns currently active model options

virtual void setOptions( const Record &opt )

Sets up model options.

virtual Block<EDProfile> getED ( LogicalVector &isUniq, const SlantSet &sl_set, const SlantSet<uInt> &sidx, const SlantSet<uInt> &suniq )=0

Performs the actual model computations for a number of slants, and returns the corresponding ED profile estimates. Slants should be sorted by time, into unique time slots, with sidx and suniq containing the sorted and unique index vectors.

virtual Block<EDProfile> getED ( LogicalVector &isUniq,const SlantSet &sl_set )

Version of getED for an unsorted time slot array. Default implementation does the sort, then calls getED() above.


class IonosphData

Interface

IonosphData ()
virtual ~IonosphData ()
virtual const SlantSet& slants ()
virtual Bool fitsTEC ()
virtual Bool fitsProfile ()
virtual Float getWeight ()
virtual Float getDegree ()
virtual Float chiSquare (Vector<Float> &JChi, int isl,Float TEC, const Vector<Float> &JT) =0
virtual Float chiSquare (Vector<Float> &JChi,int isl,const EDProfile &edp, const Matrix<Float> &JD) =0

Description

----------------------------------------------------------------------- IonosphData -----------------------------------------------------------------------

Member Description

IonosphData ()

virtual ~IonosphData ()

virtual const SlantSet& slants ()

returns a referece to the "interesting" slant set.

virtual Bool fitsTEC ()

returns True if this RTD class is capable of fitting TECs

virtual Bool fitsProfile ()

returns True if this RTD class is capable of fitting ED profiles directly

virtual Float getWeight ()

returns weight of dataset

virtual Float getDegree ()

returns "degree of contraint" of dataset

virtual Float chiSquare (Vector<Float> &JChi, int isl,Float TEC, const Vector<Float> &JT) =0

TEC fitting. Given a TEC value along slant number isl, and a vector JT(j)=dTEC/dP(j) (where P(j) is the j-th parameter), computes chi-square for this slant, plus a vector of derivatives JChi(j)=dChiSq/dP(j).

virtual Float chiSquare (Vector<Float> &JChi,int isl,const EDProfile &edp, const Matrix<Float> &JD) =0

Profile fitting. Given an ED profile (edp) along slant number isl, and a matrix JD(i,j)=dED(i)/dP(j) (where ED(i) is the i-th point on the ED profile, and P(j) is the j-th parameter), computes chi-square for this slant, plus a vector of derivatives JChi(j)=dChiSq/dP(j).