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)
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)
-----------------------------------------------------------------------
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
const String & id() const
returns data members as proper measures
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
returns (Az,El) vector in degrees
Vector <Double> lonLat ( Bool degrees=False ) const
returns (Lon,Lat) vector, default units are radians
returns (Lon,Lat) vector in degrees
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
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
-----------------------------------------------------------------------
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
void resize( uInt n )
resizes internal vectors
accessors for the slant memeber
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
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
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 )
-----------------------------------------------------------------------
Ionosphere
-----------------------------------------------------------------------
Member Description
setModelOptions() and getModelOptions() map to IonosphModel::get/setOptions.
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 )
-----------------------------------------------------------------------
IonosphModel
-----------------------------------------------------------------------
Member Description
Constructor. Sets up the model.
virtual void setAlt( const Float *alt,uInt nalt)
Sets up the altitude sampling grid
virtual void setAlt( const Vector<Float> &alt )
Returns a "descriptor" record of available options.
Returns currently active model options
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.
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
-----------------------------------------------------------------------
IonosphData
-----------------------------------------------------------------------
Member Description
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
returns True if this RTD class is capable of fitting ED profiles directly
returns weight of dataset
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).