25 #if !defined(LSST_AFW_COORD_COORD_H)
26 #define LSST_AFW_COORD_COORD_H
61 class TopocentricCoord;
77 Coord(std::string
const ra, std::string
const dec,
double const epoch = 2000.0);
84 double const epoch = 2000.0;
85 reset(longitude, latitude, epoch);
95 return std::pair<std::string, std::string>(
"RA",
"Dec");
127 std::pair<lsst::afw::geom::Angle, lsst::afw::geom::Angle>
getOffsetFrom(
Coord const &c)
const;
142 lsst::daf::base::DateTime const &obsDate) const;
161 Coord(p3d, 2000.0,
normalize, defaultLongitude) {}
163 IcrsCoord(std::string
const ra, std::string
const dec) : Coord(ra, dec, 2000.0) {}
195 Coord(p2d, unit, epoch) {}
199 Coord(p3d, epoch,
normalize, defaultLongitude) {}
201 Coord(ra, dec, epoch) {}
202 Fk5Coord(std::string
const ra, std::string
const dec,
double const epoch = 2000.0) :
203 Coord(ra, dec, epoch) {}
212 Fk5Coord precess(
double const epochTo)
const;
243 Coord(p3d,
normalize, defaultLongitude) {}
257 return std::pair<std::string, std::string>(
"L",
"B");
283 double const epoch = 2000.0) :
284 Coord(p2d, unit, epoch) {}
288 Coord(p3d, epoch,
normalize, defaultLongitude) {}
292 double const epoch = 2000.0) :
293 Coord(lamb, beta, epoch) {}
295 Coord(lamb, beta, epoch) {}
306 return std::pair<std::string, std::string>(
"Lambda",
"Beta");
333 Observatory const &obs) : Coord(p2d, unit, epoch), _obs(obs) {}
337 Coord(p3d, epoch,
normalize, defaultLongitude), _obs(obs) {}
339 Observatory const &obs) : Coord(az, alt, epoch), _obs(obs) {}
341 Observatory const &obs) : Coord(az, alt, epoch), _obs(obs) {}
345 virtual std::string
getClassName()
const {
return "TopocentricCoord"; }
352 return std::pair<std::string, std::string>(
"Az",
"Alt");
381 lsst::afw::geom::
Angle const defaultLongitude=lsst::afw::geom::
Angle(0.));
384 PTR(Coord)
makeCoord(
CoordSystem const system, lsst::afw::geom::Angle const ra, lsst::afw::geom::Angle const dec);
389 lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.));
403 std::vector<
PTR(Coord const)> const coords,
418 std::ostream & operator<<(std::ostream & os, Coord const & coord);
434 inline lsst::afw::geom::Angle lsst::afw::coord::Coord::operator[](
int const index)
const {
444 throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError,
445 "Index must be 0 or 1.");
465 throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError,
466 "Units must be 'degrees' or 'hours'");
493 return !(lhs == rhs);
virtual std::string getClassName() const
GalacticCoord(std::string const l, std::string const b)
lsst::afw::geom::Point2D getPosition(lsst::afw::geom::AngleUnit unit=lsst::afw::geom::degrees) const
Return our contents in a Point2D object.
virtual CoordSystem getCoordSystem() const
A coordinate class intended to represent absolute positions.
EclipticCoord(lsst::afw::geom::Point2D const &p2d, lsst::afw::geom::AngleUnit unit=lsst::afw::geom::degrees, double const epoch=2000.0)
virtual Fk5Coord toFk5() const
Convert ourself to Fk5: RA, Dec (use current epoch)
std::string getLongitudeStr(lsst::afw::geom::AngleUnit unit) const
Allow quick access to the longitudinal coordinate as a string.
Class for handling dates/times, including MJD, UTC, and TAI.
lsst::afw::geom::Angle getL() const
TopocentricCoord(std::string const az, std::string const alt, double const epoch, Observatory const &obs)
A class to handle Galactic coordinates (inherits from Coord)
lsst::afw::geom::Angle _latitude
lsst::afw::geom::Angle hmsStringToAngle(std::string const hms)
Convert a hh:mm:ss string to Angle.
std::string getAltitudeStr() const
lsst::afw::geom::Angle angularSeparation(Coord const &c) const
compute the angular separation between two Coords
lsst::afw::geom::Angle getAltitude() const
lsst::afw::geom::Angle getAzimuth() const
std::pair< lsst::afw::geom::Angle, lsst::afw::geom::Angle > getOffsetFrom(Coord const &c) const
Compute the offset from a coordinate.
Hold the location of an observatory.
lsst::afw::geom::Angle getBeta() const
IcrsCoord(lsst::afw::geom::Angle const ra, lsst::afw::geom::Angle const dec)
bool operator!=(lsst::afw::coord::Coord const &lhs, lsst::afw::coord::Coord const &rhs)
Inequality; the complement of equality.
EclipticCoord(lsst::afw::geom::Point3D const &p3d, double const epoch=2000.0, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))
lsst::afw::geom::Angle getRa() const
lsst::afw::geom::Angle getLongitude() const
The main access method for the longitudinal coordinate.
virtual GalacticCoord toGalactic() const
Convert ourself to Galactic: l, b.
lsst::afw::geom::Angle _longitude
EclipticCoord(lsst::afw::geom::Angle const lamb, lsst::afw::geom::Angle const beta, double const epoch=2000.0)
GalacticCoord(lsst::afw::geom::Point3D const &p3d, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))
Fk5Coord(std::string const ra, std::string const dec, double const epoch=2000.0)
TopocentricCoord(lsst::afw::geom::Angle const az, lsst::afw::geom::Angle const alt, double const epoch, Observatory const &obs)
Fk5Coord(lsst::afw::geom::Angle const ra, lsst::afw::geom::Angle const dec, double const epoch=2000.0)
lsst::afw::coord::IcrsCoord IcrsCoord
Class to hold observatory/telescope location.
table::Key< geom::Angle > latitude
A class used to convert scalar POD types such as double to Angle.
std::string getBetaStr() const
std::string getRaStr(lsst::afw::geom::AngleUnit unit) const
EclipticCoord(std::string const lamb, std::string const beta, double const epoch=2000.0)
virtual std::string getClassName() const
IcrsCoord(lsst::afw::geom::Point3D const &p3d, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))
virtual std::string getClassName() const
std::string getAzimuthStr(lsst::afw::geom::AngleUnit unit) const
virtual std::pair< std::string, std::string > getCoordNames() const
virtual std::string getClassName() const
TopocentricCoord(lsst::afw::geom::Point2D const &p2d, lsst::afw::geom::AngleUnit unit, double const epoch, Observatory const &obs)
A class representing an Angle.
A class to handle topocentric (AltAz) coordinates (inherits from Coord)
void rotate(Coord const &axis, lsst::afw::geom::Angle const theta)
Rotate our current coords about a pole.
table::Key< geom::Angle > longitude
boost::shared_ptr< Coord > averageCoord(std::vector< boost::shared_ptr< Coord const >> const coords, CoordSystem system=UNKNOWN)
Return average of a list of coordinates.
std::pair< lsst::afw::geom::Angle, lsst::afw::geom::Angle > getTangentPlaneOffset(Coord const &c) const
Get the offset on the tangent plane.
lsst::afw::geom::Point3D getVector() const
Return our contents in a position vector.
std::string getRaStr(lsst::afw::geom::AngleUnit unit) const
virtual boost::shared_ptr< Coord > clone() const
virtual std::pair< std::string, std::string > getCoordNames() const
IcrsCoord(std::string const ra, std::string const dec)
std::string getDecStr() const
Fk5Coord(lsst::afw::geom::Point2D const &p2d, lsst::afw::geom::AngleUnit unit=lsst::afw::geom::degrees, double const epoch=2000.0)
std::string getBStr() const
virtual std::string getClassName() const
bool operator==(Coord const &rhs) const
Equality operator, compares each element directly.
TopocentricCoord(lsst::afw::geom::Point3D const &p3d, double const epoch, Observatory const &obs, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))
std::string angleToDmsString(lsst::afw::geom::Angle const deg)
a Function to convert a coordinate in decimal degrees to a string with form dd:mm:ss ...
virtual CoordSystem getCoordSystem() const
lsst::afw::geom::Angle offset(lsst::afw::geom::Angle const phi, lsst::afw::geom::Angle const arcLen)
offset our current coords along a great circle defined by an angle wrt a declination parallel ...
lsst::afw::geom::Angle getB() const
std::string angleToHmsString(lsst::afw::geom::Angle const deg)
a function to convert decimal degrees to a string with form hh:mm:ss.s
boost::shared_ptr< Coord > convert(CoordSystem system, double epoch=2000) const
Convert to a specified Coord type at a specified epoch.
Point< double, 3 > Point3D
A class to handle Fk5 coordinates (inherits from Coord)
GalacticCoord(lsst::afw::geom::Angle const l, lsst::afw::geom::Angle const b)
void _verifyValues() const
Make sure the values we've got are in the range 0 <= x < 2PI.
#define LSST_EXCEPT(type,...)
Create an exception with a given type and message and optionally other arguments (dependent on the ty...
A class to handle Ecliptic coordinates (inherits from Coord)
Observatory getObservatory() const
virtual void reset(lsst::afw::geom::Angle const longitude, lsst::afw::geom::Angle const latitude)
virtual std::pair< std::string, std::string > getCoordNames() const
lsst::afw::geom::Angle Angle
std::string getLatitudeStr() const
Allow quick access to the longitude coordinate as a string.
Coord()
Default constructor for the Coord base class.
std::string getDecStr() const
virtual TopocentricCoord toTopocentric(Observatory const &obs, lsst::daf::base::DateTime const &obsDate) const
Convert ourself to Altitude/Azimuth: alt, az.
boost::shared_ptr< Coord > makeCoord(CoordSystem const system, lsst::afw::geom::Angle const ra, lsst::afw::geom::Angle const dec, double const epoch)
Factory function to create a Coord of arbitrary type with decimal RA,Dec.
lsst::afw::geom::Angle getDec() const
afw::table::Key< double > b
Point< double, 2 > Point2D
CoordSystem makeCoordEnum(std::string const system)
A utility function to get the enum value of a coordinate system from a string name.
virtual std::string getClassName() const
virtual EclipticCoord toEcliptic() const
Convert ourself to Ecliptic: lambda, beta (use existing epoch)
virtual CoordSystem getCoordSystem() const
virtual CoordSystem getCoordSystem() const
virtual IcrsCoord toIcrs() const
Convert ourself to ICRS: RA, Dec (basically J2000)
lsst::afw::geom::Angle getLatitude() const
The main access method for the latitudinal coordinate.
IcrsCoord(lsst::afw::geom::Point2D const &p2d, lsst::afw::geom::AngleUnit unit=lsst::afw::geom::degrees)
lsst::afw::geom::Angle getLambda() const
virtual CoordSystem getCoordSystem() const
lsst::afw::geom::Angle getRa() const
This is the base class for spherical coordinates.
GalacticCoord(lsst::afw::geom::Point2D const &p2d, lsst::afw::geom::AngleUnit unit=lsst::afw::geom::degrees)
std::string getLStr(lsst::afw::geom::AngleUnit unit) const
A class to handle Icrs coordinates (inherits from Coord)
lsst::afw::geom::Angle dmsStringToAngle(std::string const dms)
Convert a dd:mm:ss string to Angle.
lsst::afw::geom::Angle operator[](int const index) const
Provide access to our contents via an index.
virtual std::pair< std::string, std::string > getCoordNames() const
lsst::afw::geom::Angle getDec() const
lsst::afw::geom::Angle eclipticPoleInclination(double const epoch)
get the inclination of the ecliptic pole (obliquity) at epoch
std::string getLambdaStr(lsst::afw::geom::AngleUnit unit) const
Coord transform(Coord const &poleFrom, Coord const &poleTo) const
Tranform our current coords to another spherical polar system.
virtual CoordSystem getCoordSystem() const
Fk5Coord(lsst::afw::geom::Point3D const &p3d, double const epoch=2000.0, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))