lsst.astshim  22.0.1+01bcf6a671
Public Member Functions | Protected Member Functions | Friends | List of all members
ast::SlaMap Class Reference

#include <SlaMap.h>

Inheritance diagram for ast::SlaMap:
ast::Mapping ast::Object

Public Member Functions

 SlaMap (std::string const &options="")
 
virtual ~SlaMap ()
 
 SlaMap (SlaMap const &)=default
 Copy constructor: make a deep copy. More...
 
 SlaMap (SlaMap &&)=default
 
SlaMapoperator= (SlaMap const &)=delete
 
SlaMapoperator= (SlaMap &&)=default
 
std::shared_ptr< SlaMapcopy () const
 Return a deep copy of this object. More...
 
void add (std::string const &cvt, std::vector< double > const &args=std::vector< double >())
 
- 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
 
 SlaMap (AstSlaMap *rawptr)
 Construct a SlaMap 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

SlaMap is a specialised form of Mapping which can be used to represent a sequence of conversions between standard celestial (longitude, latitude) coordinate systems.

When an SlaMap is first created, it simply performs a unit (null) Mapping on a pair of coordinates. By calling add, a series of coordinate conversion steps may then be added, selected from those provided by the SLALIB Positional Astronomy Library (Starlink User Note SUN/67). This allows multi-step conversions between a variety of celestial coordinate systems to be assembled out of the building blocks provided by SLALIB.

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

Notes

Constructor & Destructor Documentation

◆ SlaMap() [1/4]

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

Construct a SlaMap

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

◆ ~SlaMap()

virtual ast::SlaMap::~SlaMap ( )
inlinevirtual

◆ SlaMap() [2/4]

ast::SlaMap::SlaMap ( SlaMap const &  )
default

Copy constructor: make a deep copy.

◆ SlaMap() [3/4]

ast::SlaMap::SlaMap ( SlaMap &&  )
default

◆ SlaMap() [4/4]

ast::SlaMap::SlaMap ( AstSlaMap *  rawptr)
inlineexplicitprotected

Construct a SlaMap from a raw AST pointer.

Member Function Documentation

◆ add()

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

Add one of the standard celestial coordinate system conversions provided by the SLALIB Positional Astronomy Library (Starlink User Note SUN/67) to an existing SlaMap.

Parameters
[in]cvtString which identifies the celestial coordinate conversion to be added to the SlaMap. See the "SLALIB Conversions" section for details of those available.
[in]argsA vector containing argument values for the celestial coordinate conversion. The number of arguments required depends on the conversion specified (see the " SLALIB Conversions" section). This vector is ignored if no arguments are needed.

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

The forward transformation is performed by carrying out each of the individual coordinate conversions specified by astSlaAdd in the order given (i.e. with the most recently added conversion applied last). The order is reversed in the inverse direction and each individual coordinate conversion is also replaced by its own inverse. This process inverts the overall effect of the SlaMap. Thus in the reverse direction the first conversion to be applied would be the inverse of the conversion most recently added.

Notes

  • All coordinate values processed by an SlaMap are in radians. The first coordinate is the celestial longitude and the second coordinate is the celestial latitude.
  • When assembling a multi-stage conversion, it can sometimes be difficult to determine the most economical conversion path. For example, converting to the standard FK5 coordinate system as an intermediate stage is often sensible in formulating the problem, but may introduce unnecessary extra conversion steps. A solution to this is to include all the steps which are (logically) necessary, but then to use astSimplify to simplify the resulting SlaMap. 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 an SlaMap is physically meaningful.

SLALIB Conversions

The following strings (which are case-insensitive) may be supplied via the cvt parameter to indicate which celestial coordinate conversion is to be added to the SlaMap. Each string is derived from the name of the SLALIB routine that performs the conversion and the relevant documentation (SUN/67) should be consulted for details. Where arguments are needed by the conversion, they are listed in parentheses. Values for these arguments should be given, via the args vector, in the order indicated. The argument names match the corresponding SLALIB routine arguments and their values should be given using exactly the same units, time scale, calendar, etc. as described in SUN/67:

  • "ADDET" (EQ): Add E-terms of aberration.
  • "SUBET" (EQ): Subtract E-terms of aberration.
  • "PREBN" (BEP0,BEP1): Apply Bessel-Newcomb pre-IAU 1976 (FK4) precession model.
  • "PREC" (EP0,EP1): Apply IAU 1975 (FK5) precession model.
  • "FK45Z" (BEPOCH): Convert FK4 to FK5 (no proper motion or parallax).
  • "FK54Z" (BEPOCH): Convert FK5 to FK4 (no proper motion or parallax).
  • "AMP" (DATE,EQ): Convert geocentric apparent to mean place.
  • "MAP" (EQ,DATE): Convert mean place to geocentric apparent.
  • "ECLEQ" (DATE): Convert ecliptic coordinates to FK5 J2000.0 equatorial.
  • "EQECL" (DATE): Convert equatorial FK5 J2000.0 to ecliptic coordinates.
  • "GALEQ" : Convert galactic coordinates to FK5 J2000.0 equatorial.
  • "EQGAL" : Convert FK5 J2000.0 equatorial to galactic coordinates.
  • "HFK5Z" (JEPOCH): Convert ICRS coordinates to FK5 J2000.0 equatorial.
  • "FK5HZ" (JEPOCH): Convert FK5 J2000.0 equatorial coordinates to ICRS.
  • "GALSUP" : Convert galactic to supergalactic coordinates.
  • "SUPGAL" : Convert supergalactic coordinates to galactic.
  • "J2000H" : Convert dynamical J2000.0 to ICRS.
  • "HJ2000" : Convert ICRS to dynamical J2000.0.
  • "R2H" (LAST): Convert RA to Hour Angle.
  • "H2R" (LAST): Convert Hour Angle to RA.

For example, to use the "ADDET" conversion, which takes a single argument EQ, you should consult the documentation for the SLALIB routine SLA_ADDET. This describes the conversion in detail and shows that EQ is the Besselian epoch of the mean equator and equinox. This value should then be supplied to add in args[0].

In addition the following strings may be supplied for more complex conversions which do not correspond to any one single SLALIB routine (DIURAB is the magnitude of the diurnal aberration vector in units of "day/(2.PI)" , DATE is the Modified Julian Date of the observation, and (OBSX,OBSY,OBZ) are the Heliocentric-Aries-Ecliptic cartesian coordinates, in metres, of the observer):

  • "HPCEQ" (DATE,OBSX,OBSY,OBSZ): Convert Helioprojective-Cartesian coordinates to J2000.0 equatorial.
  • "EQHPC" (DATE,OBSX,OBSY,OBSZ): Convert J2000.0 equatorial coordinates to Helioprojective-Ca
  • "HPREQ" (DATE,OBSX,OBSY,OBSZ): Convert Helioprojective-Radial coordinates to J2000.0 equatorial.
  • "EQHPR" (DATE,OBSX,OBSY,OBSZ): Convert J2000.0 equatorial coordinates to Helioprojective-Ra
  • "HEEQ" (DATE): Convert helio-ecliptic coordinates to J2000.0 equatorial.
  • "EQHE" (DATE): Convert J2000.0 equatorial coordinates to helio-ecliptic.
  • "H2E" (LAT,DIRUAB): Convert horizon coordinates to equatorial.
  • "E2H" (LAT,DIURAB): Convert equatorial coordinates to horizon.

Note, the "H2E" and "E2H" conversions convert between topocentric horizon coordinates (azimuth,elevation), and apparent local equatorial coordinates (hour angle,declination). Thus, the effects of diurnal aberration are taken into account in the conversions but the effects of atmospheric refraction are not.

◆ copy()

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

Return a deep copy of this object.

◆ copyPolymorphic()

virtual std::shared_ptr<Object> ast::SlaMap::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]

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

◆ operator=() [2/2]

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

Friends And Related Function Documentation

◆ Object

friend class Object
friend

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