lsst.astshim  20.0.0+1
Public Member Functions | Protected Member Functions | Friends | List of all members
ast::TimeMap Class Reference

#include <TimeMap.h>

Inheritance diagram for ast::TimeMap:
ast::Mapping ast::Object

Public Member Functions

 TimeMap (std::string const &options="")
 
virtual ~TimeMap ()
 
 TimeMap (TimeMap const &)=default
 Copy constructor: make a deep copy. More...
 
 TimeMap (TimeMap &&)=default
 
TimeMapoperator= (TimeMap const &)=delete
 
TimeMapoperator= (TimeMap &&)=default
 
std::shared_ptr< TimeMapcopy () const
 Return a deep copy of this object. More...
 
void add (std::string const &cvt, std::vector< double > const &args)
 
- Public Member Functions inherited from ast::Mapping
virtual ~Mapping ()
 
 Mapping (Mapping const &)=default
 Copy constructor: make a deep copy. More...
 
 Mapping (Mapping &&)=default
 
Mappingoperator= (Mapping const &)=delete
 
Mappingoperator= (Mapping &&)=default
 
std::shared_ptr< Mappingcopy () const
 Return a deep copy of this object. More...
 
int getNIn () const
 
int getNOut () const
 
bool getIsSimple () const
 
bool isInverted () const
 
bool getIsLinear () const
 
bool getReport () const
 
bool hasForward () const
 
bool hasInverse () const
 
std::shared_ptr< Mappinginverted () const
 
Array2D linearApprox (PointD const &lbnd, PointD const &ubnd, double tol) const
 
SeriesMap then (Mapping const &next) const
 
ParallelMap under (Mapping const &next) const
 
double rate (PointD const &at, int ax1, int ax2) const
 
void setReport (bool report)
 
std::shared_ptr< Mappingsimplified () const
 
void applyForward (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyForward (ConstArray2D const &from) const
 
std::vector< double > applyForward (std::vector< double > const &from) const
 
void applyInverse (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyInverse (ConstArray2D const &from) const
 
std::vector< double > applyInverse (std::vector< double > const &from) const
 
void tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
void tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
- Public Member Functions inherited from ast::Object
virtual ~Object ()
 
 Object (Object const &object)
 Copy constructor: make a deep copy. More...
 
 Object (Object &&)=default
 
Objectoperator= (Object const &)=delete
 
Objectoperator= (Object &&)=default
 
bool operator== (Object const &rhs) const
 
bool operator!= (Object const &rhs) const
 
std::shared_ptr< Objectcopy () const
 Return a deep copy of this object. More...
 
void clear (std::string const &attrib)
 
bool hasAttribute (std::string const &attrib) const
 
std::string getClassName () const
 
std::string getID () const
 Get ID: object identification string that is not copied. More...
 
std::string getIdent () const
 Get Ident: object identification string that is copied. More...
 
int getNObject () const
 
int getObjSize () const
 Get ObjSize: the in-memory size of the AST object in bytes. More...
 
int getRefCount () const
 
bool getUseDefs () const
 Get UseDefs: allow use of default values for Object attributes? More...
 
void lock (bool wait)
 
bool same (Object const &other) const
 
void setID (std::string const &id)
 Set ID: object identification string that is not copied. More...
 
void setIdent (std::string const &ident)
 Set Ident: object identification string that is copied. More...
 
void setUseDefs (bool usedefs)
 Set UseDefs: allow use of default values for Object attributes? More...
 
void show (std::ostream &os, bool showComments=true) const
 
std::string show (bool showComments=true) const
 
bool test (std::string const &attrib) const
 
void unlock (bool report=false)
 
AstObject const * getRawPtr () const
 
AstObject * getRawPtr ()
 

Protected Member Functions

virtual std::shared_ptr< ObjectcopyPolymorphic () const override
 
 TimeMap (AstTimeMap *rawptr)
 Construct a TimeMap from a raw AST pointer. More...
 
- Protected Member Functions inherited from ast::Mapping
 Mapping (AstMapping *rawMap)
 
template<typename Class >
std::shared_ptr< Class > decompose (int i, bool copy) const
 
- Protected Member Functions inherited from ast::Object
 Object (AstObject *object)
 
template<typename T , typename AstT >
std::shared_ptr< T > copyImpl () const
 
bool getB (std::string const &attrib) const
 
std::string const getC (std::string const &attrib) const
 
double getD (std::string const &attrib) const
 
float getF (std::string const &attrib) const
 
int getI (std::string const &attrib) const
 
long int getL (std::string const &attrib) const
 
void set (std::string const &setting)
 
void setB (std::string const &attrib, bool value)
 
void setC (std::string const &attrib, std::string const &value)
 
void setD (std::string const &attrib, double value)
 
void setF (std::string const &attrib, float value)
 
void setI (std::string const &attrib, int value)
 
void setL (std::string const &attrib, long int value)
 

Friends

class Object
 

Additional Inherited Members

- Public Types inherited from ast::Object
using ObjectPtr = std::unique_ptr< AstObject, Deleter >
 unique pointer holding an AST raw pointer More...
 
- Static Public Member Functions inherited from ast::Object
static std::shared_ptr< ObjectfromString (std::string const &str)
 
template<typename Class >
static std::shared_ptr< Class > fromAstObject (AstObject *rawObj, bool copy)
 
- Static Protected Member Functions inherited from ast::Object
template<typename ShimT , typename AstT >
static std::shared_ptr< ShimT > makeShim (AstObject *p)
 

Detailed Description

A TimeMap is a specialised form of 1-dimensional Mapping which can be used to represent a sequence of conversions between standard time coordinate systems.

Constructor & Destructor Documentation

◆ TimeMap() [1/4]

ast::TimeMap::TimeMap ( std::string const &  options = "")
inlineexplicit

Construct a TimeMap

When a TimeMap is first created, it simply performs a unit (null) Mapping. Using the add method, a series of coordinate conversion steps may then be added. This allows multi-step conversions between a variety of time coordinate systems to be assembled out of a set of building blocks.

For details of the individual coordinate conversions available, see add.

Parameters
[in]optionsComma-separated list of attribute assignments.

◆ ~TimeMap()

virtual ast::TimeMap::~TimeMap ( )
inlinevirtual

◆ TimeMap() [2/4]

ast::TimeMap::TimeMap ( TimeMap const &  )
default

Copy constructor: make a deep copy.

◆ TimeMap() [3/4]

ast::TimeMap::TimeMap ( TimeMap &&  )
default

◆ TimeMap() [4/4]

ast::TimeMap::TimeMap ( AstTimeMap *  rawptr)
inlineexplicitprotected

Construct a TimeMap from a raw AST pointer.

Member Function Documentation

◆ add()

void ast::TimeMap::add ( std::string const &  cvt,
std::vector< double > const &  args 
)
inline

Add one of the standard time coordinate system conversions listed below.

When a TimeMap is first created, it simply performs a unit (null) Mapping. By using add (repeatedly if necessary), one or more coordinate conversion steps may then be added, which the TimeMap will perform in sequence. This allows multi-step conversions between a variety of time coordinate systems to be assembled out of the building blocks provided by this class.

Normally, if a TimeMap's Invert attribute is zero (the default), then its forward transformation is performed by carrying out each of the individual coordinate conversions specified by add in the order given (i.e. with the most recently added conversion applied last).

This order is reversed if the TimeMap's Invert attribute is non-zero (or if the inverse transformation is requested by any other means) and each individual coordinate conversion is also replaced by its own inverse. This process inverts the overall effect of the TimeMap. In this case, the first conversion to be applied would be the inverse of the one most recently added.

Parameters
[in]cvtString which identifies the time coordinate conversion to be added to the TimeMap. See "Available Conversions" for details of those available.
[in]argsAn array containing argument values for the time coordinate conversion. The number of arguments required, and hence the number of array elements used, depends on the conversion specified (see the "Available Conversions" section). This array is ignored and an empty vector may be provided if no arguments are needed.

Attributes

TimeMap has no attributes beyond those provided by Mapping and Object.

Notes

  • When assembling a multi-stage conversion, it can sometimes be difficult to determine the most economical conversion path. A solution to this is to include all the steps which are (logically) necessary, but then to use astSimplify to simplify the resulting TimeMap. The simplification process will eliminate any steps which turn out not to be needed.
  • This function does not check to ensure that the sequence of coordinate conversions added to a TimeMap is physically meaningful.

Available Conversions

The following strings (which are case-insensitive) may be supplied via the "cvt" parameter to indicate which time coordinate conversion is to be added to the TimeMap.

The cvt string is followed by the number of arguments required in the args array and the description of those arguments in parenthesis. Units and argument names are described at the end of the list of conversions, and "MJD" means Modified Julian Date.

  • "MJDTOMJD" (MJDOFF1,MJDOFF2): Convert MJD from one offset to another.
  • "MJDTOJD" (MJDOFF,JDOFF): Convert MJD to Julian Date.
  • "JDTOMJD" (JDOFF,MJDOFF): Convert Julian Date to MJD.
  • "MJDTOBEP" (MJDOFF,BEPOFF): Convert MJD to Besselian epoch.
  • "BEPTOMJD" (BEPOFF,MJDOFF): Convert Besselian epoch to MJD.
  • "MJDTOJEP" (MJDOFF,JEPOFF): Convert MJD to Julian epoch.
  • "JEPTOMJD" (JEPOFF,MJDOFF): Convert Julian epoch to MJD.
  • "TAITOUTC" (MJDOFF,DTAI): Convert a TAI MJD to a UTC MJD.
  • "UTCTOTAI" (MJDOFF,DTAI): Convert a UTC MJD to a TAI MJD.
  • "TAITOTT" (MJDOFF): Convert a TAI MJD to a TT MJD.
  • "TTTOTAI" (MJDOFF): Convert a TT MJD to a TAI MJD.
  • "TTTOTDB" (MJDOFF,OBSLON,OBSLAT,OBSALT,DTAI): Convert a TT MJD to a TDB MJD.
  • "TDBTOTT" (MJDOFF,OBSLON,OBSLAT,OBSALT,DTAI): Convert a TDB MJD to a TT MJD.
  • "TTTOTCG" (MJDOFF): Convert a TT MJD to a TCG MJD.
  • "TCGTOTT" (MJDOFF): Convert a TCG MJD to a TT MJD.
  • "TDBTOTCB" (MJDOFF): Convert a TDB MJD to a TCB MJD.
  • "TCBTOTDB" (MJDOFF): Convert a TCB MJD to a TDB MJD.
  • "UTTOGMST" (MJDOFF): Convert a UT MJD to a GMST MJD.
  • "GMSTTOUT" (MJDOFF): Convert a GMST MJD to a UT MJD.
  • "GMSTTOLMST" (MJDOFF,OBSLON,OBSLAT): Convert a GMST MJD to a LMST MJD.
  • "LMSTTOGMST" (MJDOFF,OBSLON,OBSLAT): Convert a LMST MJD to a GMST MJD.
  • "LASTTOLMST" (MJDOFF,OBSLON,OBSLAT): Convert a GMST MJD to a LMST MJD.
  • "LMSTTOLAST" (MJDOFF,OBSLON,OBSLAT): Convert a LMST MJD to a GMST MJD.
  • "UTTOUTC" (DUT1): Convert a UT1 MJD to a UTC MJD.
  • "UTCTOUT" (DUT1): Convert a UTC MJD to a UT1 MJD.
  • "LTTOUTC" (LTOFF): Convert a Local Time MJD to a UTC MJD.
  • "UTCTOLT" (LTOFF): Convert a UTC MJD to a Local Time MJD.

The units for the values processed by the above conversions are as follows:

  • Julian epochs and offsets: Julian years
  • Besselian epochs and offsets: Tropical years
  • Modified Julian Dates and offsets: days
  • Julian Dates and offsets: days

The arguments used in the above conversions are the zero-points used by the Mapping::applyForward function. The axis values supplied and returned by Mapping::applyForward are offsets away from these zero-points:

  • MJDOFF: The zero-point being used with MJD values.
  • JDOFF: The zero-point being used with Julian Date values.
  • BEPOFF: The zero-point being used with Besselian epoch values.
  • JEPOFF: The zero-point being used with Julian epoch values.
  • OBSLON: Observer longitude in radians (+ve westwards).
  • OBSLAT: Observer geodetic latitude (IAU 1975) in radians (+ve northwards).
  • OBSALT: Observer geodetic altitude (IAU 1975) in metres.
  • DUT1: The UT1-UTC value to use.
  • LTOFF: The offset between Local Time and UTC (in hours, positive for time zones east of Greenwich).

◆ copy()

std::shared_ptr<TimeMap> ast::TimeMap::copy ( ) const
inline

Return a deep copy of this object.

◆ copyPolymorphic()

virtual std::shared_ptr<Object> ast::TimeMap::copyPolymorphic ( ) const
inlineoverrideprotectedvirtual

Return a deep copy of this object. This is called by copy.

Each subclass must override this method. The standard implementation is:

return copyImpl<astshim_class, ast_class>();

for example Frame implements this as:

return copyImpl<Frame, AstFrame>();

Reimplemented from ast::Mapping.

◆ operator=() [1/2]

TimeMap& ast::TimeMap::operator= ( TimeMap &&  )
default

◆ operator=() [2/2]

TimeMap& ast::TimeMap::operator= ( TimeMap const &  )
delete

Friends And Related Function Documentation

◆ Object

friend class Object
friend

The documentation for this class was generated from the following file: