LSSTApplications  11.0-13-gbb96280,12.1.rc1,12.1.rc1+1,12.1.rc1+2,12.1.rc1+5,12.1.rc1+8,12.1.rc1-1-g06d7636+1,12.1.rc1-1-g253890b+5,12.1.rc1-1-g3d31b68+7,12.1.rc1-1-g3db6b75+1,12.1.rc1-1-g5c1385a+3,12.1.rc1-1-g83b2247,12.1.rc1-1-g90cb4cf+6,12.1.rc1-1-g91da24b+3,12.1.rc1-2-g3521f8a,12.1.rc1-2-g39433dd+4,12.1.rc1-2-g486411b+2,12.1.rc1-2-g4c2be76,12.1.rc1-2-gc9c0491,12.1.rc1-2-gda2cd4f+6,12.1.rc1-3-g3391c73+2,12.1.rc1-3-g8c1bd6c+1,12.1.rc1-3-gcf4b6cb+2,12.1.rc1-4-g057223e+1,12.1.rc1-4-g19ed13b+2,12.1.rc1-4-g30492a7
LSSTDataManagementBasePackage
Detector.h
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2014 LSST Corporation.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the LSST License Statement and
19  * the GNU General Public License along with this program. If not,
20  * see <http://www.lsstcorp.org/LegalNotices/>.
21  */
22 
23 #if !defined(LSST_AFW_CAMERAGEOM_DETECTOR_H)
24 #define LSST_AFW_CAMERAGEOM_DETECTOR_H
25 
26 #include <string>
27 #include <vector>
28 #include <unordered_map>
29 #include "lsst/base.h"
31 #include "lsst/afw/table/AmpInfo.h"
35 
36 namespace lsst {
37 namespace afw {
38 namespace cameraGeom {
39 
48 };
49 
50 
65 class Detector {
66 public:
78  explicit Detector(
79  std::string const &name,
80  int id,
81  DetectorType type,
82  std::string const &serial,
83  geom::Box2I const &bbox,
84  lsst::afw::table::AmpInfoCatalog const &ampInfoCatalog,
85  Orientation const &orientation,
86  geom::Extent2D const &pixelSize,
87  CameraTransformMap::Transforms const &transforms
88  );
91 
92  ~Detector() {}
93 
95  std::string getName() const { return _name; }
96 
98  int getId() const { return _id; }
99 
100  DetectorType getType() const { return _type; }
101 
103  std::string getSerial() const { return _serial; }
104 
107 
109  std::vector<geom::Point2D> getCorners(CameraSys const &cameraSys) const;
110 
112  std::vector<geom::Point2D> getCorners(CameraSysPrefix const &cameraSysPrefix) const;
113 
115  CameraPoint getCenter(CameraSys const &cameraSys) const;
116 
118  CameraPoint getCenter(CameraSysPrefix const &cameraSysPrefix) const;
119 
122 
124  Orientation const getOrientation() const { return _orientation; }
125 
128 
131 
134 
137 
143  lsst::afw::table::AmpInfoRecord const & operator[](size_t i) const { return _ampInfoCatalog.at(i); }
144 
150  lsst::afw::table::AmpInfoRecord const & operator[](std::string const &name) const;
151 
155  size_t size() const {return _ampInfoCatalog.size(); }
156 
158  bool hasTransform(CameraSys const &cameraSys) const;
159 
161  bool hasTransform(CameraSysPrefix const &cameraSysPrefix) const;
162 
171  CONST_PTR(afw::geom::XYTransform) getTransform(CameraSys const &cameraSys) const;
172 
181  CONST_PTR(afw::geom::XYTransform) getTransform(CameraSysPrefix const &cameraSysPrefix) const;
182 
189  geom::Point2D point,
190  CameraSys cameraSys
191  ) const {
192  return CameraPoint(point, cameraSys);
193  }
194 
199  geom::Point2D point,
200  CameraSysPrefix cameraSysPrefix
201  ) const {
202  return CameraPoint(point, makeCameraSys(cameraSysPrefix));
203  }
204 
210  CameraSys const makeCameraSys(CameraSys const &cameraSys) const { return cameraSys; }
211 
215  CameraSys const makeCameraSys(CameraSysPrefix const &cameraSysPrefix) const {
216  return CameraSys(cameraSysPrefix.getSysName(), _name);
217  }
218 
225  CameraPoint const &fromCameraPoint,
226  CameraSys const &toSys
227  ) const {
228  return CameraPoint(
229  _transformMap.transform(fromCameraPoint.getPoint(), fromCameraPoint.getCameraSys(), toSys),
230  toSys);
231  }
232 
241  CameraPoint const &fromCameraPoint,
242  CameraSysPrefix const &toSys
243  ) const {
244  return transform(fromCameraPoint, makeCameraSys(toSys));
245  }
246 
247 private:
248  typedef std::unordered_map<std::string, table::AmpInfoCatalog::const_iterator> _AmpInfoMap;
259  void _init();
260 
261  std::string _name;
262  int _id;
264  std::string _serial;
271 };
272 
273 }}}
274 
275 #endif
Orientation const getOrientation() const
Definition: Detector.h:124
std::vector< geom::Point2D > getCorners(CameraSys const &cameraSys) const
Definition: Detector.cc:56
lsst::afw::table::AmpInfoCatalog::const_iterator end() const
Definition: Detector.h:136
table::Key< std::string > name
Definition: ApCorrMap.cc:71
std::string getSerial() const
Definition: Detector.h:103
Geometry and electronic information about raw amplifier images.
Definition: AmpInfo.h:77
geom::Extent2D getPixelSize() const
Definition: Detector.h:127
geom::Point2D getPoint() const
Definition: CameraPoint.h:40
geom::Box2I _bbox
bounding box
Definition: Detector.h:265
A custom container class for records, based on std::vector.
Definition: Catalog.h:95
lsst::afw::table::AmpInfoRecord const & operator[](size_t i) const
Definition: Detector.h:143
Point< double, 2 > Point2D
Definition: Point.h:288
CameraPoint transform(CameraPoint const &fromCameraPoint, CameraSys const &toSys) const
Definition: Detector.h:224
CameraPoint getCenter(CameraSys const &cameraSys) const
Definition: Detector.cc:65
#define CONST_PTR(...)
Definition: base.h:47
reference at(size_type i) const
Return the record at index i (throws std::out_of_range).
Definition: Catalog.h:431
lsst::afw::geom::Box2I getBBox() const
Definition: Detector.h:106
size_type size() const
Return the number of elements in the catalog.
Definition: Catalog.h:402
CameraPoint transform(CameraPoint const &fromCameraPoint, CameraSysPrefix const &toSys) const
Definition: Detector.h:240
An integer coordinate rectangle.
Definition: Box.h:53
CameraPoint makeCameraPoint(geom::Point2D point, CameraSys cameraSys) const
Definition: Detector.h:188
CameraTransformMap _transformMap
registry of coordinate transforms
Definition: Detector.h:270
Point2D transform(Point2D const &fromPoint, CoordSysT const &fromSys, CoordSysT const &toCoordSys) const
DetectorType getType() const
Definition: Detector.h:100
CameraTransformMap const getTransformMap() const
Definition: Detector.h:130
lsst::afw::table::AmpInfoCatalog::const_iterator begin() const
Definition: Detector.h:133
DetectorType _type
type of detectorsize_t
Definition: Detector.h:263
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Definition: Detector.h:210
Iterator class for CatalogT.
Definition: Catalog.h:35
std::map< CameraSys, boost::shared_ptr< XYTransform const > > Transforms
Definition: TransformMap.h:67
Detector(std::string const &name, int id, DetectorType type, std::string const &serial, geom::Box2I const &bbox, lsst::afw::table::AmpInfoCatalog const &ampInfoCatalog, Orientation const &orientation, geom::Extent2D const &pixelSize, CameraTransformMap::Transforms const &transforms)
Definition: Detector.cc:31
lsst::afw::table::AmpInfoCatalog const getAmpInfoCatalog() const
Definition: Detector.h:121
table::AmpInfoCatalog _ampInfoCatalog
list of amplifier data
Definition: Detector.h:266
bool hasTransform(CameraSys const &cameraSys) const
Definition: Detector.cc:84
std::string getName() const
Definition: Detector.h:95
std::unordered_map< std::string, table::AmpInfoCatalog::const_iterator > _AmpInfoMap
Definition: Detector.h:248
CameraSys const makeCameraSys(CameraSysPrefix const &cameraSysPrefix) const
Definition: Detector.h:215
CameraSys getCameraSys() const
Definition: CameraPoint.h:41
Orientation _orientation
position and orientation of detector in focal plane
Definition: Detector.h:268
geom::Extent2D _pixelSize
pixel size (mm)
Definition: Detector.h:269
Virtual base class for 2D transforms.
Definition: XYTransform.h:48
CameraPoint makeCameraPoint(geom::Point2D point, CameraSysPrefix cameraSysPrefix) const
Definition: Detector.h:198
_AmpInfoMap _ampNameIterMap
map of amplifier name: catalog iterator
Definition: Detector.h:267
std::string _name
name of detector&#39;s location in the camera
Definition: Detector.h:261
std::string _serial
serial &quot;number&quot; that identifies the physical detector
Definition: Detector.h:264
int _id
detector numeric ID
Definition: Detector.h:262
std::string getSysName() const
Definition: CameraSys.h:55
boost::shared_ptr< afw::geom::XYTransform const > getTransform(CameraSys const &cameraSys) const
Definition: Detector.cc:92