LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
ReferencePosition.cc
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
28 #ifndef LSST_AP_MATCH_REFERENCEPOSITION_CC
29 #define LSST_AP_MATCH_REFERENCEPOSITION_CC
30 
31 #include "ReferencePosition.h"
32 
33 
34 namespace lsst { namespace ap { namespace match {
35 
39  int64_t id,
40  lsst::afw::geom::Angle const ra,
41  lsst::afw::geom::Angle const decl,
42  double epoch
43  ) :
44  _sc(ra, decl),
45  _id(id),
46  _epoch(epoch),
47  _p(_sc.getVector().asEigen()),
48  _v(Eigen::Vector3d::Zero()),
49  _parallax(0.0),
50  _minDecl(decl),
51  _maxDecl(decl),
52  _minRa(ra),
53  _maxRa(ra),
54  _flags(0)
55 { }
56 
59 inline int64_t ReferencePosition::getId() const {
60  return _id;
61 }
62 
65 inline double ReferencePosition::getEpoch() const {
66  return _epoch;
67 }
68 
72 inline int ReferencePosition::getFlags() const {
73  return _flags;
74 }
75 
80  return _sc;
81 }
82 
92 inline Eigen::Vector3d const & ReferencePosition::getPosition() const {
93  return _p;
94 }
95 
101 inline Eigen::Vector3d const & ReferencePosition::getVelocity() const {
102  return _v;
103 }
104 
114 inline Eigen::Vector3d const ReferencePosition::getPosition(double epoch) const {
115  if ((_flags & MOVING) == 0) {
116  return _p;
117  }
118  Eigen::Vector3d p = _p + _v*(epoch - _epoch);
119  if ((_flags & PARALLAX_COR) != 0) {
120  p -= lsst::ap::utils::earthPosition(epoch);
121  }
122  return p.normalized();
123 }
124 
130 inline Eigen::Vector3d const ReferencePosition::getPosition(
131  double epoch,
132  Eigen::Vector3d const &origin // barycentric coordinate of origin, AU
133 ) const {
134  if ((_flags & MOVING) == 0) {
135  return _p;
136  }
137  Eigen::Vector3d p = _p + _v*(epoch - _epoch);
138  if ((_flags & PARALLAX_COR) != 0) {
139  p -= origin;
140  }
141  return p.normalized();
142 }
143 
144 }}} // namespace lsst::ap::match
145 
146 #endif // LSST_AP_MATCH_REFERENCEPOSITION_CC
Class for simulated reference catalog positions.
lsst::afw::coord::IcrsCoord _sc
(ra, decl) at _epoch, ICRS rad
ReferencePosition(int64_t id, lsst::afw::geom::Angle const ra, lsst::afw::geom::Angle const dec, double epoch=J2000_MJD)
IcrsCoord _sc
int64_t _id
Eigen::Vector3d const & getVelocity() const
Eigen::Vector3d const & getPosition() const
double _epoch
epoch of reference position, MJD
int _flags
Bit-wise OR of Flags.
Eigen::Vector3d _v
(dx/dt, dy/dt, dz/dt)
Eigen::Vector3d _p
(x, y, z) at _epoch
Angle _maxDecl
Eigen::Vector3d _p
double _epoch
Set if the reference position has proper motion.
A class to handle Icrs coordinates (inherits from Coord)
Definition: Coord.h:155
lsst::afw::coord::IcrsCoord const & getSphericalCoords() const
Eigen::Vector3d const earthPosition(double const epoch)