LSSTApplications  19.0.0-14-gb0260a2+72efe9b372,20.0.0+7927753e06,20.0.0+8829bf0056,20.0.0+995114c5d2,20.0.0+b6f4b2abd1,20.0.0+bddc4f4cbe,20.0.0-1-g253301a+8829bf0056,20.0.0-1-g2b7511a+0d71a2d77f,20.0.0-1-g5b95a8c+7461dd0434,20.0.0-12-g321c96ea+23efe4bbff,20.0.0-16-gfab17e72e+fdf35455f6,20.0.0-2-g0070d88+ba3ffc8f0b,20.0.0-2-g4dae9ad+ee58a624b3,20.0.0-2-g61b8584+5d3db074ba,20.0.0-2-gb780d76+d529cf1a41,20.0.0-2-ged6426c+226a441f5f,20.0.0-2-gf072044+8829bf0056,20.0.0-2-gf1f7952+ee58a624b3,20.0.0-20-geae50cf+e37fec0aee,20.0.0-25-g3dcad98+544a109665,20.0.0-25-g5eafb0f+ee58a624b3,20.0.0-27-g64178ef+f1f297b00a,20.0.0-3-g4cc78c6+e0676b0dc8,20.0.0-3-g8f21e14+4fd2c12c9a,20.0.0-3-gbd60e8c+187b78b4b8,20.0.0-3-gbecbe05+48431fa087,20.0.0-38-ge4adf513+a12e1f8e37,20.0.0-4-g97dc21a+544a109665,20.0.0-4-gb4befbc+087873070b,20.0.0-4-gf910f65+5d3db074ba,20.0.0-5-gdfe0fee+199202a608,20.0.0-5-gfbfe500+d529cf1a41,20.0.0-6-g64f541c+d529cf1a41,20.0.0-6-g9a5b7a1+a1cd37312e,20.0.0-68-ga3f3dda+5fca18c6a4,20.0.0-9-g4aef684+e18322736b,w.2020.45
LSSTDataManagementBasePackage
Detector.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 /*
3  * Developed for the LSST Data Management System.
4  * This product includes software developed by the LSST Project
5  * (https://www.lsst.org).
6  * See the COPYRIGHT file at the top-level directory of this distribution
7  * for details of code ownership.
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
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"
36 
37 namespace lsst {
38 namespace afw {
39 namespace cameraGeom {
40 
44 enum class DetectorType {
45  SCIENCE,
46  FOCUS,
47  GUIDER,
48  WAVEFRONT,
49 };
50 
51 
56 class DetectorBase {
57 public:
58 
59  using CrosstalkMatrix = ndarray::Array<float const, 2>;
60 
61  virtual ~DetectorBase() noexcept = default;
62 
64  std::string getName() const { return getFields().name; }
65 
67  int getId() const { return getFields().id; }
68 
70  DetectorType getType() const { return getFields().type; }
71 
73  std::string getSerial() const { return getFields().serial; }
74 
83 
85  lsst::geom::Box2I getBBox() const { return getFields().bbox; }
86 
89 
92 
94  bool hasCrosstalk() const {
95  return !(getFields().crosstalk.isEmpty() ||
96  getFields().crosstalk.getShape() == ndarray::makeVector(0, 0));
97  }
98 
101 
110  CameraSys makeCameraSys(CameraSys const &cameraSys) const { return cameraSys; }
111 
118  CameraSys makeCameraSys(CameraSysPrefix const &cameraSysPrefix) const {
119  return CameraSys(cameraSysPrefix, getFields().name);
120  }
121 
124 
125 protected:
126 
127  // Simple struct containing all simple fields (everything not related
128  // to coordinate systems/transforms or associated with an Amplifier).
129  // See docs for corresponding getters (each field has one) for
130  // descriptions.
131  struct Fields {
133  int id = 0;
141  };
142 
144 
148  DetectorBase() = default;
149  DetectorBase(DetectorBase const &) = default;
150  DetectorBase(DetectorBase &&) = default;
151  DetectorBase & operator=(DetectorBase const &) = default;
154 
160  virtual Fields const & getFields() const = 0;
161 
162 };
163 
164 
181 class Detector final :
182  public DetectorBase,
183  public table::io::PersistableFacade<Detector>,
185 {
186 public:
187 
188  class Builder;
189  class PartialRebuilder;
190  class InCameraBuilder;
191 
198 
200  std::vector<lsst::geom::Point2D> getCorners(CameraSys const &cameraSys) const;
201 
203  std::vector<lsst::geom::Point2D> getCorners(CameraSysPrefix const &cameraSysPrefix) const;
204 
206  lsst::geom::Point2D getCenter(CameraSys const &cameraSys) const;
207 
209  lsst::geom::Point2D getCenter(CameraSysPrefix const &cameraSysPrefix) const;
210 
212  bool hasTransform(CameraSys const &cameraSys) const;
213 
215  bool hasTransform(CameraSysPrefix const &cameraSysPrefix) const;
216 
229  template <typename FromSysT, typename ToSysT>
231  ToSysT const &toSys) const;
232 
245  template <typename FromSysT, typename ToSysT>
246  lsst::geom::Point2D transform(lsst::geom::Point2D const &point, FromSysT const &fromSys,
247  ToSysT const &toSys) const;
248 
261  template <typename FromSysT, typename ToSysT>
263  FromSysT const &fromSys, ToSysT const &toSys) const;
264 
265 
267  std::shared_ptr<TransformMap const> getTransformMap() const { return _transformMap; }
268 
270  std::vector<std::shared_ptr<Amplifier const>> const & getAmplifiers() const { return _amplifiers; }
271 
273 
278  auto begin() const { return _amplifiers.begin(); }
279  auto end() const { return _amplifiers.end(); }
280  //}
281 
287  std::shared_ptr<Amplifier const> operator[](size_t i) const { return _amplifiers.at(i); }
288 
295 
299  std::size_t size() const { return _amplifiers.size(); }
300 
302  bool isPersistable() const noexcept override { return true; }
303 
304 protected:
305 
306  Fields const & getFields() const override { return _fields; }
307 
308 private:
309 
310  class Factory;
311 
312  // Pass fields by value to move when we can and copy when we can't;
313  // pass amplifiers by rvalue ref because we always move those.
316 
317  std::string getPersistenceName() const override;
318 
319  std::string getPythonModule() const override;
320 
321  void write(OutputArchiveHandle& handle) const override;
322 
323  Fields const _fields;
325  // Given that the number of amplifiers in a detector is generally quite
326  // small (even LSST only has 16), we just use a vector and do linear
327  // searches for name lookups, as adding a map of some kind is definitely
328  // more storage and code complexity, without necessarily being any faster.
330 };
331 
332 
363 public:
364 
365  // Builder's current subclasses have no need for copy or assignment, and
366  // the hierarchy should be considered closed.
367  Builder(Builder const &) = delete;
368  Builder(Builder &&) = delete;
369  Builder & operator=(Builder const &) = delete;
370  Builder & operator=(Builder &&) = delete;
371 
372  ~Builder() noexcept override = 0;
373 
375  void setBBox(lsst::geom::Box2I const & bbox) { _fields.bbox = bbox; }
376 
378  void setType(DetectorType type) { _fields.type = type; }
379 
381  void setSerial(std::string const & serial) { _fields.serial = serial; }
382 
389 
401 
403  void unsetCrosstalk() { _fields.crosstalk = CrosstalkMatrix(); }
404 
405  // We return non-const Amplifier::Builder objects by shared_ptr, via const
406  // methods. That's a bit counterintuitive, but there's no solution to the
407  // problem of constness in containers of pointers in C++ that *is*
408  // intuitive. The alternative would be to have const methods that return
409  // pointer-to-const and non-const methods that return
410  // pointer-to-not-const. The only gain from that would be that it'd be
411  // possible to have a const reference to a Detector::Builder that would
412  // prevent modifications to its amplifiers. That's a lot more code
413  // (writing the iterators would be especially unpleasant) for essentially
414  // no gain, because users who want to prevent changes to the amplifiers
415  // essentially always Detector itself, not Detector::Builder.
416 
418  std::vector<std::shared_ptr<Amplifier::Builder>> const & getAmplifiers() const { return _amplifiers; }
419 
421 
426  auto begin() { return _amplifiers.begin(); }
427  auto end() { return _amplifiers.end(); }
429 
435  std::shared_ptr<Amplifier::Builder> operator[](size_t i) const { return _amplifiers.at(i); }
436 
443 
446 
448  void clear() { _amplifiers.clear(); }
449 
451  std::size_t size() const { return _amplifiers.size(); }
452 
453 protected:
454 
460 
465  Builder(std::string const & name, int id);
466 
471  Builder(Fields fields, std::vector<std::shared_ptr<Amplifier::Builder>> && amplifiers) :
472  _fields(std::move(fields)),
473  _amplifiers(std::move(amplifiers))
474  {}
475 
476  Fields const & getFields() const override { return _fields; }
477 
482 
491 
500 
501 private:
502  Fields _fields;
504 };
505 
506 
521 public:
522 
528 
533 
534 private:
536 };
537 
556 public:
557 
562 
567 
578  CameraSysPrefix const & toSys,
580  );
581 
595  CameraSys const & toSys,
597  );
598 
606  bool discardTransformFromPixelsTo(CameraSysPrefix const & toSys);
607 
618  bool discardTransformFromPixelsTo(CameraSys const & toSys);
619 
623  void clearTransforms() { _connections.clear(); }
624 
625 private:
626 
627  // We'd really like to friend Camera::Builder, but can't forward declare
628  // an inner class. So instead we friend Camera, and it has static members
629  // that make the needed functionality accessible to Camera::Builder.
630  friend class Camera;
631 
632  // Construct from an existing Detector. For use only by Camera.
634 
635  // Construct a completely new detector. For use only by Camera.
636  InCameraBuilder(std::string const & name, int id);
637 
638  // Construct a Detector from the builder. For use only by Camera.
639  //
640  // @param[in] transformMap All transforms known to the entire Camera.
641  //
643 
644  // Transforms and coordinate systems that are specific to this detector.
645  // This does not include the FOCAL_PLANE<->PIXELS connection, as that's
646  // derived from the orientation and pixel size.
648 };
649 
650 } // namespace cameraGeom
651 } // namespace afw
652 } // namespace lsst
653 
654 #endif
lsst::afw::cameraGeom::DetectorBase::getType
DetectorType getType() const
Return the purpose of this detector.
Definition: Detector.h:70
lsst::afw::cameraGeom::Detector::end
auto end() const
Definition: Detector.h:279
lsst::afw::cameraGeom::Camera
An immutable representation of a camera.
Definition: Camera.h:43
crosstalk
table::Key< table::Array< float > > crosstalk
Definition: Detector.cc:173
lsst::afw::cameraGeom::DetectorBase::getSerial
std::string getSerial() const
Get the detector serial "number".
Definition: Detector.h:73
std::string
STL class.
std::shared_ptr
STL class.
lsst::afw::cameraGeom::DetectorType::WAVEFRONT
@ WAVEFRONT
lsst::afw::cameraGeom::Detector::getCenter
lsst::geom::Point2D getCenter(CameraSys const &cameraSys) const
Get the center of the detector in the specified camera coordinate system.
Definition: Detector.cc:72
lsst::afw::cameraGeom::DetectorBase::getPhysicalType
std::string getPhysicalType() const
Get the detector's physical type.
Definition: Detector.h:82
lsst::afw::cameraGeom::DetectorBase::DetectorBase
DetectorBase()=default
DetectorBase has no state, and is hence default-constructable, copyable, and movable.
lsst::sphgeom::orientation
int orientation(UnitVector3d const &a, UnitVector3d const &b, UnitVector3d const &c)
orientation computes and returns the orientations of 3 unit vectors a, b and c.
Definition: orientation.cc:135
lsst::afw::cameraGeom::Detector::Builder::append
void append(std::shared_ptr< Amplifier::Builder > builder)
Append a new amplifier.
Definition: Detector.cc:351
lsst::afw::cameraGeom::DetectorBase::~DetectorBase
virtual ~DetectorBase() noexcept=default
std::vector
STL class.
lsst::afw::cameraGeom::Detector::InCameraBuilder::clearTransforms
void clearTransforms()
Remove all coordinate transforms.
Definition: Detector.h:623
lsst::afw::cameraGeom::DetectorBase::getNativeCoordSys
CameraSys getNativeCoordSys() const
The "native" coordinate system of this detector.
Definition: Detector.h:123
transformMap
table::Key< int > transformMap
Definition: Camera.cc:125
lsst::afw::cameraGeom::Detector::Builder::operator=
Builder & operator=(Builder &&)=delete
lsst::afw
Definition: imageAlgorithm.dox:1
lsst::afw::cameraGeom::Detector::getTransformMap
std::shared_ptr< TransformMap const > getTransformMap() const
Get the transform registry.
Definition: Detector.h:267
Orientation.h
lsst::afw::cameraGeom::DetectorBase::getFields
virtual Fields const & getFields() const =0
Return a reference to a Fields struct.
lsst::afw::cameraGeom::Detector::isPersistable
bool isPersistable() const noexcept override
Detector is always persistable.
Definition: Detector.h:302
lsst::afw::cameraGeom::DetectorBase::Fields::bbox
lsst::geom::Box2I bbox
Definition: Detector.h:136
lsst::afw::cameraGeom::Detector::Builder::Builder
Builder(Fields fields, std::vector< std::shared_ptr< Amplifier::Builder >> &&amplifiers)
Construct a Detector::Builder with the given field values and amplifiers.
Definition: Detector.h:471
lsst::afw::cameraGeom::Detector::hasTransform
bool hasTransform(CameraSys const &cameraSys) const
Can this object convert between PIXELS and the specified camera coordinate system?
Definition: Detector.cc:82
lsst::afw::typehandling::Storable
Interface supporting iteration over heterogenous containers.
Definition: Storable.h:58
lsst::afw::geom.transform.transformContinued.name
string name
Definition: transformContinued.py:32
lsst::afw::cameraGeom::Detector::InCameraBuilder::setTransformFromPixelsTo
void setTransformFromPixelsTo(CameraSysPrefix const &toSys, std::shared_ptr< afw::geom::TransformPoint2ToPoint2 const > transform)
Set the transformation from PIXELS to the given coordinate system.
Definition: Detector.cc:413
CameraSys.h
lsst::afw::cameraGeom::DetectorBase::CrosstalkMatrix
ndarray::Array< float const, 2 > CrosstalkMatrix
Definition: Detector.h:59
lsst::afw::cameraGeom::DetectorType
DetectorType
Type of imaging detector.
Definition: Detector.h:44
lsst::afw::cameraGeom::Detector::rebuild
std::shared_ptr< PartialRebuilder > rebuild() const
Return a Builder object initialized with the state of this Detector.
Definition: Detector.cc:58
lsst::afw::cameraGeom::Detector::Builder::getAmplifiers
std::vector< std::shared_ptr< Amplifier::Builder > > const & getAmplifiers() const
Return the sequence of Amplifier::Builders directly.
Definition: Detector.h:418
lsst.pipe.tasks.mergeDetections.write
def write(self, patchRef, catalog)
Write the output.
Definition: mergeDetections.py:388
lsst::afw::cameraGeom::DetectorBase::getBBox
lsst::geom::Box2I getBBox() const
Get the bounding box.
Definition: Detector.h:85
lsst::afw::cameraGeom::Detector::Builder::rebuildAmplifiers
static std::vector< std::shared_ptr< Amplifier::Builder > > rebuildAmplifiers(Detector const &detector)
Create a vector of Amplifier::Builders from the Amplifiers in a Detector.
Definition: Detector.cc:355
lsst::afw::cameraGeom::Detector::InCameraBuilder::discardTransformFromPixelsTo
bool discardTransformFromPixelsTo(CameraSysPrefix const &toSys)
Remove any transformation from PIXELS to the given coordinate system.
Definition: Detector.cc:441
lsst::afw::cameraGeom::DetectorBase
An abstract base class that provides common accessors for Detector and Detector::Builder.
Definition: Detector.h:56
lsst::afw::cameraGeom::Detector::Builder::Builder
Builder(Builder &&)=delete
lsst::afw::cameraGeom::Detector::InCameraBuilder::setPixelSize
void setPixelSize(lsst::geom::Extent2D const &pixelSize)
Set the pixel size (in mm).
Definition: Detector.h:566
base.h
lsst::afw::cameraGeom::DetectorBase::getPixelSize
lsst::geom::Extent2D getPixelSize() const
Get size of pixel along (mm)
Definition: Detector.h:91
Amplifier.h
lsst::afw::cameraGeom::Detector::getFields
Fields const & getFields() const override
Return a reference to a Fields struct.
Definition: Detector.h:306
lsst::afw::cameraGeom::DetectorBase::DetectorBase
DetectorBase(DetectorBase const &)=default
physicalType
table::Key< std::string > physicalType
Definition: Detector.cc:174
lsst::afw::cameraGeom::DetectorBase::operator=
DetectorBase & operator=(DetectorBase &&)=default
lsst::afw::cameraGeom::DetectorBase::hasCrosstalk
bool hasCrosstalk() const
Have we got crosstalk coefficients?
Definition: Detector.h:94
lsst::afw::cameraGeom::DetectorBase::operator=
DetectorBase & operator=(DetectorBase const &)=default
lsst::afw::cameraGeom::DetectorBase::getOrientation
Orientation getOrientation() const
Get detector's orientation in the focal plane.
Definition: Detector.h:88
lsst::afw::cameraGeom::DetectorBase::Fields::physicalType
std::string physicalType
Definition: Detector.h:140
Transform.h
serial
table::Key< std::string > serial
Definition: Detector.cc:164
lsst::afw::cameraGeom::DetectorBase::DetectorBase
DetectorBase(DetectorBase &&)=default
Storable.h
lsst::afw::cameraGeom::Detector::PartialRebuilder
A helper class that allows the properties of a single detector to be modified in isolation.
Definition: Detector.h:520
lsst::afw::cameraGeom::Detector::Builder::begin
auto begin()
An iterator range over amplifers.
Definition: Detector.h:426
lsst::afw::cameraGeom::Detector::operator[]
std::shared_ptr< Amplifier const > operator[](size_t i) const
Get the amplifier specified by index.
Definition: Detector.h:287
lsst::afw::cameraGeom::Detector::InCameraBuilder
A helper class that allows the properties of a detector to be modified in the course of modifying a f...
Definition: Detector.h:555
lsst
A base class for image defects.
Definition: imageAlgorithm.dox:1
lsst::afw::cameraGeom::Orientation
Describe a detector's orientation in the focal plane.
Definition: Orientation.h:52
lsst::afw::cameraGeom::Detector::Builder::Builder
Builder(Builder const &)=delete
lsst::afw::cameraGeom::Detector::InCameraBuilder::setOrientation
void setOrientation(Orientation const &orientation)
Set the orientation of the detector in the focal plane.
Definition: Detector.h:561
lsst::afw::cameraGeom::Detector::Builder::setCrosstalk
void setCrosstalk(CrosstalkMatrix const &crosstalk)
Set the crosstalk coefficients.
Definition: Detector.h:400
lsst::afw::cameraGeom::Detector::Builder::size
std::size_t size() const
Return the number of amplifiers (renamed to len in Python).
Definition: Detector.h:451
lsst::geom
Definition: AffineTransform.h:36
lsst::afw::cameraGeom::Detector::Builder::setBBox
void setBBox(lsst::geom::Box2I const &bbox)
Set the bounding box.
Definition: Detector.h:375
lsst::afw::cameraGeom::Detector::Builder::operator=
Builder & operator=(Builder const &)=delete
lsst::afw::cameraGeom::Detector::Builder::unsetCrosstalk
void unsetCrosstalk()
Remove the crosstalk coefficient matrix.
Definition: Detector.h:403
lsst::afw::cameraGeom::Detector::Builder::clear
void clear()
Remove all amplifiers.
Definition: Detector.h:448
lsst::afw::cameraGeom::DetectorBase::Fields::id
int id
Definition: Detector.h:133
lsst::afw::image.slicing.Factory
Factory
Definition: slicing.py:252
lsst::afw::cameraGeom::Detector::getCorners
std::vector< lsst::geom::Point2D > getCorners(CameraSys const &cameraSys) const
Get the corners of the detector in the specified camera coordinate system.
Definition: Detector.cc:62
lsst::afw::cameraGeom::Detector::Builder::getFields
Fields const & getFields() const override
Return a reference to a Fields struct.
Definition: Detector.h:476
lsst::afw::cameraGeom::Detector::Builder::end
auto end()
Definition: Detector.h:427
lsst::afw::cameraGeom::DetectorBase::Fields::pixelSize
lsst::geom::Extent2D pixelSize
Definition: Detector.h:138
lsst::afw::cameraGeom::DetectorBase::makeCameraSys
CameraSys makeCameraSys(CameraSysPrefix const &cameraSysPrefix) const
Get a coordinate system from a detector system prefix (add detector name)
Definition: Detector.h:118
lsst::afw::cameraGeom::Detector::Builder::finishAmplifiers
std::vector< std::shared_ptr< Amplifier const > > finishAmplifiers() const
Create a vector of Amplifiers from the Amplifier::Builder sequence.
Definition: Detector.cc:373
std
STL namespace.
type
table::Key< int > type
Definition: Detector.cc:163
lsst::afw::cameraGeom::DetectorBase::getName
std::string getName() const
Get the detector name.
Definition: Detector.h:64
detector
table::Key< int > detector
Definition: DetectorCollection.cc:172
lsst::geom::Point< double, 2 >
TransformMap.h
lsst::afw::table::io::PersistableFacade
A CRTP facade class for subclasses of Persistable.
Definition: Persistable.h:176
lsst::afw::cameraGeom::DetectorBase::Fields
Definition: Detector.h:131
lsst::afw::cameraGeom::Detector::Builder::setPixelSize
void setPixelSize(lsst::geom::Extent2D const &pixelSize)
Set the pixel size (in mm).
Definition: Detector.h:499
lsst::geom::Box2I
An integer coordinate rectangle.
Definition: Box.h:55
lsst::afw::cameraGeom::Detector::Builder::~Builder
~Builder() noexcept override=0
lsst::afw::cameraGeom::Detector::Builder::setType
void setType(DetectorType type)
Set the purpose of this detector.
Definition: Detector.h:378
lsst::afw::cameraGeom::Detector::PartialRebuilder::PartialRebuilder
PartialRebuilder(Detector const &detector)
Construct a PartialRebuilder initialized to the state of the given Detector.
Definition: Detector.cc:383
lsst::afw::cameraGeom::Detector::getTransform
std::shared_ptr< afw::geom::TransformPoint2ToPoint2 > getTransform(FromSysT const &fromSys, ToSysT const &toSys) const
Get a Transform from one camera coordinate system, or camera coordinate system prefix,...
lsst::afw::cameraGeom::DetectorBase::getCrosstalk
CrosstalkMatrix getCrosstalk() const
Get the crosstalk coefficients.
Definition: Detector.h:100
lsst::afw::cameraGeom::DetectorBase::Fields::name
std::string name
Definition: Detector.h:132
lsst::afw::cameraGeom::DetectorType::GUIDER
@ GUIDER
std::size_t
lsst::afw::cameraGeom::Detector::size
std::size_t size() const
Get the number of amplifiers.
Definition: Detector.h:299
lsst::afw::cameraGeom::Detector::Builder::setPhysicalType
void setPhysicalType(std::string const &physicalType)
Set the detector's physical type.
Definition: Detector.h:388
lsst::afw::cameraGeom::Detector::getAmplifiers
std::vector< std::shared_ptr< Amplifier const > > const & getAmplifiers() const
Return the sequence of Amplifiers directly.
Definition: Detector.h:270
lsst::afw::cameraGeom::DetectorBase::makeCameraSys
CameraSys makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested)
Definition: Detector.h:110
lsst::afw::cameraGeom::Detector::Builder
A helper class for Detector that allows amplifiers and most fields to be modified.
Definition: Detector.h:362
lsst::afw::cameraGeom::DetectorType::SCIENCE
@ SCIENCE
lsst::afw::cameraGeom::Detector::Builder::operator[]
std::shared_ptr< Amplifier::Builder > operator[](size_t i) const
Get the amplifier builder specified by index.
Definition: Detector.h:435
lsst::afw::cameraGeom::DetectorType::FOCUS
@ FOCUS
lsst::afw::cameraGeom::Detector::PartialRebuilder::finish
std::shared_ptr< Detector const > finish() const
Construct a new Detector from the current state of the Builder.
Definition: Detector.cc:388
lsst::afw::cameraGeom::DetectorBase::Fields::type
DetectorType type
Definition: Detector.h:134
lsst::afw::cameraGeom::CameraSysPrefix
Camera coordinate system prefix.
Definition: CameraSys.h:44
lsst::afw::cameraGeom::PIXELS
CameraSysPrefix const PIXELS
Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels).
Definition: CameraSys.cc:34
lsst::afw::table::io::Persistable::OutputArchiveHandle
io::OutputArchiveHandle OutputArchiveHandle
Definition: Persistable.h:108
lsst::geom::Extent< double, 2 >
lsst::afw::cameraGeom::DetectorBase::Fields::crosstalk
CrosstalkMatrix crosstalk
Definition: Detector.h:139
lsst::afw::cameraGeom::Detector::transform
lsst::geom::Point2D transform(lsst::geom::Point2D const &point, FromSysT const &fromSys, ToSysT const &toSys) const
Transform a point from one camera system to another.
Definition: Detector.cc:95
pixelSize
table::Point2DKey pixelSize
Definition: Detector.cc:166
lsst::afw::cameraGeom::DetectorBase::getId
int getId() const
Get the detector ID.
Definition: Detector.h:67
lsst::afw::cameraGeom::DetectorBase::Fields::orientation
Orientation orientation
Definition: Detector.h:137
lsst::afw::cameraGeom::Detector
A representation of a detector in a mosaic camera.
Definition: Detector.h:185
bbox
AmpInfoBoxKey bbox
Definition: Amplifier.cc:117
lsst::afw::cameraGeom::Detector::Builder::setOrientation
void setOrientation(Orientation const &orientation)
Set the orientation of the detector in the focal plane.
Definition: Detector.h:490
lsst::afw::cameraGeom::Detector::begin
auto begin() const
An iterator range over amplifers.
Definition: Detector.h:278
lsst::afw::cameraGeom::DetectorBase::Fields::serial
std::string serial
Definition: Detector.h:135
lsst::afw::cameraGeom::CameraSys
Camera coordinate system; used as a key in in TransformMap.
Definition: CameraSys.h:83
lsst::afw::cameraGeom::Detector::Builder::setSerial
void setSerial(std::string const &serial)
Set the detector serial "number".
Definition: Detector.h:381