LSSTApplications  18.1.0
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Static Protected Member Functions | Related Functions | List of all members
lsst::afw::cameraGeom::Detector Class Referencefinal

Information about a CCD or other imaging detector. More...

#include <Detector.h>

Inheritance diagram for lsst::afw::cameraGeom::Detector:
lsst::afw::table::io::PersistableFacade< Detector > lsst::afw::typehandling::Storable lsst::afw::table::io::Persistable

Public Types

typedef ndarray::Array< float const, 2 > CrosstalkMatrix
 

Public Member Functions

 Detector (std::string const &name, int id, DetectorType type, std::string const &serial, lsst::geom::Box2I const &bbox, lsst::afw::table::AmpInfoCatalog const &ampInfoCatalog, Orientation const &orientation, lsst::geom::Extent2D const &pixelSize, TransformMap::Transforms const &transforms, CrosstalkMatrix const &crosstalk=CrosstalkMatrix(), std::string const &physicalType="")
 Make a Detector. More...
 
 Detector (std::string const &name, int id, DetectorType type, std::string const &serial, lsst::geom::Box2I const &bbox, lsst::afw::table::AmpInfoCatalog const &ampInfoCatalog, Orientation const &orientation, lsst::geom::Extent2D const &pixelSize, std::shared_ptr< TransformMap const > transformMap, CrosstalkMatrix const &crosstalk=CrosstalkMatrix(), std::string const &physicalType="")
 Make a Detector. More...
 
 ~Detector ()=default
 
 Detector (Detector const &)=delete
 
 Detector (Detector &&)=delete
 
Detectoroperator= (Detector const &)=delete
 
Detectoroperator= (Detector &&)=delete
 
std::string getName () const
 Get the detector name. More...
 
int getId () const
 Get the detector ID. More...
 
DetectorType getType () const
 Get the "type" (really purpose) of the Detector. More...
 
std::string getPhysicalType () const
 Get information about the physical type of the device (e.g. More...
 
std::string getSerial () const
 Get the detector serial "number". More...
 
lsst::geom::Box2I getBBox () const
 Get the bounding box. More...
 
std::vector< lsst::geom::Point2DgetCorners (CameraSys const &cameraSys) const
 Get the corners of the detector in the specified camera coordinate system. More...
 
std::vector< lsst::geom::Point2DgetCorners (CameraSysPrefix const &cameraSysPrefix) const
 Get the corners of the detector in the specified camera coordinate system prefix. More...
 
lsst::geom::Point2D getCenter (CameraSys const &cameraSys) const
 Get the center of the detector in the specified camera coordinate system. More...
 
lsst::geom::Point2D getCenter (CameraSysPrefix const &cameraSysPrefix) const
 Get the center of the detector in the specified camera coordinate system prefix. More...
 
table::AmpInfoCatalog const getAmpInfoCatalog () const
 Get the amplifier information catalog. More...
 
Orientation const getOrientation () const
 Get detector's orientation in the focal plane. More...
 
lsst::geom::Extent2D getPixelSize () const
 Get size of pixel along (mm) More...
 
std::shared_ptr< TransformMap const > getTransformMap () const
 Get the transform registry. More...
 
bool hasCrosstalk () const
 Have we got crosstalk coefficients? More...
 
CrosstalkMatrix const getCrosstalk () const
 Get the crosstalk coefficients. More...
 
table::AmpInfoCatalog::const_iterator begin () const
 Get iterator to beginning of amplifier list. More...
 
table::AmpInfoCatalog::const_iterator end () const
 Get iterator to end of amplifier list. More...
 
table::AmpInfoRecord const & operator[] (size_t i) const
 Get the amplifier specified by index. More...
 
table::AmpInfoRecord const & operator[] (std::string const &name) const
 Get the amplifier specified by name. More...
 
std::shared_ptr< table::AmpInfoRecord const > _get (int i) const
 Get the amplifier specified by index, returning a shared pointer to an AmpInfo record. More...
 
std::shared_ptr< table::AmpInfoRecord const > _get (std::string const &name) const
 Get the amplifier specified by name, returning a shared pointer to an AmpInfo record. More...
 
size_t size () const
 Get the number of amplifiers. More...
 
bool hasTransform (CameraSys const &cameraSys) const
 Can this object convert between PIXELS and the specified camera coordinate system? More...
 
bool hasTransform (CameraSysPrefix const &cameraSysPrefix) const
 Can this object convert between PIXELS and the specified camera coordinate system prefix? More...
 
template<typename FromSysT , typename ToSysT >
std::shared_ptr< afw::geom::TransformPoint2ToPoint2getTransform (FromSysT const &fromSys, ToSysT const &toSys) const
 Get a Transform from one camera coordinate system, or camera coordinate system prefix, to another. More...
 
CameraSys const makeCameraSys (CameraSys const &cameraSys) const
 Get a coordinate system from a coordinate system (return input unchanged and untested) More...
 
CameraSys const makeCameraSys (CameraSysPrefix const &cameraSysPrefix) const
 Get a coordinate system from a detector system prefix (add detector name) More...
 
template<typename FromSysT , typename ToSysT >
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. More...
 
template<typename FromSysT , typename ToSysT >
std::vector< lsst::geom::Point2Dtransform (std::vector< lsst::geom::Point2D > const &points, FromSysT const &fromSys, ToSysT const &toSys) const
 Transform a vector of points from one camera system to another. More...
 
CameraSys getNativeCoordSys () const
 The "native" coordinate system of this detector. More...
 
bool isPersistable () const noexcept override
 Detectors are always peristable. More...
 
template<typename FromSysT , typename ToSysT >
std::shared_ptr< geom::TransformPoint2ToPoint2getTransform (FromSysT const &fromSys, ToSysT const &toSys) const
 
virtual std::shared_ptr< Storable > cloneStorable () const
 Create a new object that is a copy of this one (optional operation). More...
 
virtual std::string toString () const
 Create a string representation of this object (optional operation). More...
 
virtual std::size_t hash_value () const
 Return a hash of this object (optional operation). More...
 
virtual bool equals (Storable const &other) const noexcept
 Compare this object to another Storable. More...
 
void writeFits (std::string const &fileName, std::string const &mode="w") const
 Write the object to a regular FITS file. More...
 
void writeFits (fits::MemFileManager &manager, std::string const &mode="w") const
 Write the object to a FITS image in memory. More...
 
void writeFits (fits::Fits &fitsfile) const
 Write the object to an already-open FITS object. More...
 

Static Public Member Functions

static std::shared_ptr< DetectorreadFits (fits::Fits &fitsfile)
 Read an object from an already open FITS object. More...
 
static std::shared_ptr< DetectorreadFits (std::string const &fileName, int hdu=fits::DEFAULT_HDU)
 Read an object from a regular FITS file. More...
 
static std::shared_ptr< DetectorreadFits (fits::MemFileManager &manager, int hdu=fits::DEFAULT_HDU)
 Read an object from a FITS file in memory. More...
 
static std::shared_ptr< DetectordynamicCast (std::shared_ptr< Persistable > const &ptr)
 Dynamically cast a shared_ptr. More...
 

Protected Types

typedef io::OutputArchiveHandle OutputArchiveHandle
 

Static Protected Member Functions

template<class T >
static bool singleClassEquals (T const &lhs, Storable const &rhs)
 Test if a Storable is of a particular class and equal to another object. More...
 

Related Functions

(Note that these are not member functions.)

std::ostreamoperator<< (std::ostream &os, Storable const &storable)
 Output operator for Storable. More...
 

Detailed Description

Information about a CCD or other imaging detector.

Supports transformation of points between FOCAL_PLANE and pixel-based coordinate systems. Also an iterator over amplifiers (in C++ use begin(), end(), in Python use "for amplifier in detector").

Todo:
: this would probably be a bit more robust if it used a ConstAmpInfoCatalog (a catalog with const records) but I don't think const catalogs really work yet; for instance it is not possible to construct one from a non-const catalog, so I don't know how to construct one.

Definition at line 62 of file Detector.h.

Member Typedef Documentation

◆ CrosstalkMatrix

typedef ndarray::Array<float const, 2> lsst::afw::cameraGeom::Detector::CrosstalkMatrix

Definition at line 64 of file Detector.h.

◆ OutputArchiveHandle

typedef io::OutputArchiveHandle lsst::afw::table::io::Persistable::OutputArchiveHandle
protectedinherited

Definition at line 108 of file Persistable.h.

Constructor & Destructor Documentation

◆ Detector() [1/4]

lsst::afw::cameraGeom::Detector::Detector ( std::string const &  name,
int  id,
DetectorType  type,
std::string const &  serial,
lsst::geom::Box2I const &  bbox,
lsst::afw::table::AmpInfoCatalog const &  ampInfoCatalog,
Orientation const &  orientation,
lsst::geom::Extent2D const &  pixelSize,
TransformMap::Transforms const &  transforms,
CrosstalkMatrix const &  crosstalk = CrosstalkMatrix(),
std::string const &  physicalType = "" 
)

Make a Detector.

Parameters
namename of detector's location in the camera
iddetector integer ID; used as keys in some tables
typetype of detector
serialserial "number" that identifies the physical detector
bboxbounding box
ampInfoCatalogcatalog of amplifier information
orientationdetector position and orientation in focal plane
pixelSizepixel size (mm)
transformsmap of CameraSys: afw::geom::Transform, where each Transform's forward transform transforms from PIXELS to the specified camera system
crosstalkmatrix of crosstalk coefficients
physicalTypedetector type, e.g. "CCD", "ITL-A", "HgCdTe"
Exceptions
lsst::pex::exceptions::InvalidParameterErrorif any amplifier names are not unique
Warning
  • The keys for the detector-specific coordinate systems in the transform registry must include the detector name (even though this is redundant).

Definition at line 36 of file Detector.cc.

40  :
41  Detector(name, id, type, serial, bbox, ampInfoCatalog, orientation, pixelSize,
42  TransformMap::make(CameraSys(PIXELS, name), transforms),
44 {}
table::Key< std::string > name
Definition: Detector.cc:165
Detector(std::string const &name, int id, DetectorType type, std::string const &serial, lsst::geom::Box2I const &bbox, lsst::afw::table::AmpInfoCatalog const &ampInfoCatalog, Orientation const &orientation, lsst::geom::Extent2D const &pixelSize, TransformMap::Transforms const &transforms, CrosstalkMatrix const &crosstalk=CrosstalkMatrix(), std::string const &physicalType="")
Make a Detector.
Definition: Detector.cc:36
CameraSysPrefix const PIXELS
Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels)...
Definition: CameraSys.cc:34
table::Key< int > type
Definition: Detector.cc:167
table::Point2DKey pixelSize
Definition: Detector.cc:170
table::Box2IKey bbox
Definition: Detector.cc:169
static std::shared_ptr< TransformMap const > make(CameraSys const &reference, Transforms const &transforms)
Construct a TransformMap with all transforms relative to a single reference CameraSys.
Definition: TransformMap.cc:42
table::Key< std::string > physicalType
Definition: Detector.cc:178
table::Key< std::string > serial
Definition: Detector.cc:168
table::Key< table::Array< float > > crosstalk
Definition: Detector.cc:177

◆ Detector() [2/4]

lsst::afw::cameraGeom::Detector::Detector ( std::string const &  name,
int  id,
DetectorType  type,
std::string const &  serial,
lsst::geom::Box2I const &  bbox,
lsst::afw::table::AmpInfoCatalog const &  ampInfoCatalog,
Orientation const &  orientation,
lsst::geom::Extent2D const &  pixelSize,
std::shared_ptr< TransformMap const >  transformMap,
CrosstalkMatrix const &  crosstalk = CrosstalkMatrix(),
std::string const &  physicalType = "" 
)

Make a Detector.

Parameters
namename of detector's location in the camera
iddetector integer ID; used as keys in some tables
typefunction of detector (e.g. SCIENCE, WAVEFRONT)
serialserial "number" that identifies the physical detector
bboxbounding box
ampInfoCatalogcatalog of amplifier information
orientationdetector position and orientation in focal plane
pixelSizepixel size (mm)
transformMapcoordinate systems and transforms between them
crosstalkmatrix of crosstalk coefficients
physicalTypedetector type, e.g. "CCD", "ITL-A", "HgCdTe"
Exceptions
lsst::pex::exceptions::InvalidParameterErrorif: any amplifier names are not unique

Definition at line 46 of file Detector.cc.

50  :
51  _name(name),
52  _id(id),
53  _type(type),
54  _serial(serial),
55  _bbox(bbox),
56  _ampInfoCatalog(ampInfoCatalog),
57  _ampNameIterMap(),
58  _orientation(orientation),
59  _pixelSize(pixelSize),
60  _nativeSys(CameraSys(PIXELS, name)),
61  _transformMap(std::move(transformMap)),
62  _crosstalk(crosstalk),
63  _physicalType(physicalType)
64 {
65  // make _ampNameIterMap
66  for (auto ampIter = _ampInfoCatalog.begin(); ampIter != _ampInfoCatalog.end(); ++ampIter) {
67  _ampNameIterMap.insert(std::make_pair(ampIter->getName(), ampIter));
68  }
69  if (_ampNameIterMap.size() != _ampInfoCatalog.size()) {
71  "Invalid ampInfoCatalog: not all amplifier names are unique");
72  }
73 
74  // ensure crosstalk coefficients matrix is square
75  if (hasCrosstalk()) {
76  auto shape = _crosstalk.getShape();
77  assert(shape.size() == 2); // we've declared this as a 2D array
78  if (shape[0] != shape[1]) {
80  os << "Non-square crosstalk matrix: " << _crosstalk << " for detector \"" << _name << "\"";
82  }
83  if (shape[0] != _ampInfoCatalog.size()) {
85  os << "Wrong size crosstalk matrix: " << _crosstalk << " for detector \"" << _name << "\"";
87  }
88  }
89 }
table::Key< std::string > name
Definition: Detector.cc:165
CameraSysPrefix const PIXELS
Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels)...
Definition: CameraSys.cc:34
table::Key< int > type
Definition: Detector.cc:167
iterator end()
Iterator access.
Definition: Catalog.h:397
bool hasCrosstalk() const
Have we got crosstalk coefficients?
Definition: Detector.h:172
T str(T... args)
T make_pair(T... args)
table::Point2DKey pixelSize
Definition: Detector.cc:170
table::Box2IKey bbox
Definition: Detector.cc:169
T move(T... args)
T insert(T... args)
T size(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
table::Key< std::string > physicalType
Definition: Detector.cc:178
Reports invalid arguments.
Definition: Runtime.h:66
size_type size() const
Return the number of elements in the catalog.
Definition: Catalog.h:408
table::Key< std::string > serial
Definition: Detector.cc:168
iterator begin()
Iterator access.
Definition: Catalog.h:396
table::Key< table::Array< float > > crosstalk
Definition: Detector.cc:177
std::ostream * os
Definition: Schema.cc:746

◆ ~Detector()

lsst::afw::cameraGeom::Detector::~Detector ( )
default

◆ Detector() [3/4]

lsst::afw::cameraGeom::Detector::Detector ( Detector const &  )
delete

◆ Detector() [4/4]

lsst::afw::cameraGeom::Detector::Detector ( Detector &&  )
delete

Member Function Documentation

◆ _get() [1/2]

std::shared_ptr< table::AmpInfoRecord const > lsst::afw::cameraGeom::Detector::_get ( int  i) const

Get the amplifier specified by index, returning a shared pointer to an AmpInfo record.

Warning
Intended only for use by pybind11. This exists because Operator[] returns a data type that is difficult for pybind11 to use. Since we have it, we also take advantage of the fact that it is only for pybind11 to support negative indices in the python style.
Parameters
[in]iAmpifier index; if < 0 then treat as an offset from the end (the Python convention)
Exceptions
std::out_of_rangeif index is out of range

Definition at line 113 of file Detector.cc.

113  {
114  if (i < 0) {
115  i = _ampInfoCatalog.size() + i;
116  };
117  return _ampInfoCatalog.get(i);
118 }
std::shared_ptr< RecordT > const get(size_type i) const
Return a pointer to the record at index i.
Definition: Catalog.h:459
size_type size() const
Return the number of elements in the catalog.
Definition: Catalog.h:408

◆ _get() [2/2]

std::shared_ptr< table::AmpInfoRecord const > lsst::afw::cameraGeom::Detector::_get ( std::string const &  name) const

Get the amplifier specified by name, returning a shared pointer to an AmpInfo record.

Warning
Intended only for internal and pybind11 use. This exists because Operator[] returns a data type that is difficult for pybind11 to use.
Parameters
[in]nameAmplifier name
Exceptions
std::out_of_rangeif index is out of range

Definition at line 120 of file Detector.cc.

120  {
121  _AmpInfoMap::const_iterator ampIter = _ampNameIterMap.find(name);
122  if (ampIter == _ampNameIterMap.end()) {
124  os << "Unknown amplifier \"" << name << "\"";
126  }
127  return ampIter->second;
128 }
table::Key< std::string > name
Definition: Detector.cc:165
T end(T... args)
T str(T... args)
T find(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
Reports invalid arguments.
Definition: Runtime.h:66
std::ostream * os
Definition: Schema.cc:746

◆ begin()

table::AmpInfoCatalog::const_iterator lsst::afw::cameraGeom::Detector::begin ( ) const
inline

Get iterator to beginning of amplifier list.

Definition at line 180 of file Detector.h.

180 { return _ampInfoCatalog.begin(); }
iterator begin()
Iterator access.
Definition: Catalog.h:396

◆ cloneStorable()

std::shared_ptr< Storable > lsst::afw::typehandling::Storable::cloneStorable ( ) const
virtualinherited

Create a new object that is a copy of this one (optional operation).

This operation is required for Storables that are stored in GenericMap by value, but not for those stored by shared pointer.

Exceptions
UnsupportedOperationExceptionThrown if this object is not cloneable.
Note
If this class supports a clone operation, the two should behave identically except for the formal return type.

Reimplemented in lsst::afw::image::PhotoCalib, lsst::afw::geom::SkyWcs, lsst::afw::geom::polygon::Polygon, lsst::afw::image::Filter, lsst::afw::image::VisitInfo, lsst::afw::detection::Psf, lsst::afw::image::ApCorrMap, and lsst::afw::image::CoaddInputs.

Definition at line 36 of file Storable.cc.

36  {
37  throw LSST_EXCEPT(UnsupportedOperationException, "Cloning is not supported.");
38 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ dynamicCast()

Dynamically cast a shared_ptr.

Dynamically cast a shared pointer and raise on failure.

You must provide an explicit template instantiation in the .cc file for each class that inherits from PersistableFacade. Designed to work around RTTI issues on macOS with hidden symbols;

Exceptions
lsst::pex::exceptions::LogicErrorif the cast fails

param[in] ptr The pointer to be cast.

Returns
The cast pointer.
Exceptions
lsst::pex::exceptions::TypeErrorIf the dynamic cast fails.

Definition at line 18 of file Persistable.cc.

18  {
20  if (!result) {
21  throw LSST_EXCEPT(pex::exceptions::TypeError, "Dynamic pointer cast failed");
22  }
23  return result;
24 }
uint64_t * ptr
Definition: RangeSet.cc:88
py::object result
Definition: schema.cc:418
T dynamic_pointer_cast(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ end()

table::AmpInfoCatalog::const_iterator lsst::afw::cameraGeom::Detector::end ( ) const
inline

Get iterator to end of amplifier list.

Definition at line 183 of file Detector.h.

183 { return _ampInfoCatalog.end(); }
iterator end()
Iterator access.
Definition: Catalog.h:397

◆ equals()

bool lsst::afw::typehandling::Storable::equals ( Storable const &  other) const
virtualnoexceptinherited

Compare this object to another Storable.

Subclasses that implement equality comparison must override this method to give results consistent with operator== for all inputs that are accepted by both.

Returns
This implementation returns whether the two objects are the same.
Warning
This method compares an object to any type of Storable, although cross-class comparisons should usually return false. If cross-class comparisons are valid, implementers should take care that they are symmetric and will give the same result no matter what the compile-time types of the left- and right-hand sides are.
See also
singleClassEquals

Reimplemented in lsst::afw::image::PhotoCalib, lsst::afw::geom::SkyWcs, lsst::afw::geom::polygon::Polygon, lsst::afw::image::Filter, and lsst::afw::image::VisitInfo.

Definition at line 48 of file Storable.cc.

48 { return this == &other; }
ItemVariant const * other
Definition: Schema.cc:56

◆ getAmpInfoCatalog()

table::AmpInfoCatalog const lsst::afw::cameraGeom::Detector::getAmpInfoCatalog ( ) const
inline

Get the amplifier information catalog.

Definition at line 160 of file Detector.h.

160 { return _ampInfoCatalog; }

◆ getBBox()

lsst::geom::Box2I lsst::afw::cameraGeom::Detector::getBBox ( ) const
inline

Get the bounding box.

Definition at line 145 of file Detector.h.

145 { return _bbox; }

◆ getCenter() [1/2]

lsst::geom::Point2D lsst::afw::cameraGeom::Detector::getCenter ( CameraSys const &  cameraSys) const

Get the center of the detector in the specified camera coordinate system.

Definition at line 101 of file Detector.cc.

101  {
102  auto ctrPix = lsst::geom::Box2D(_bbox).getCenter();
104  return transform->applyForward(ctrPix);
105 }
A floating-point coordinate rectangle geometry.
Definition: Box.h:305
Point2D const getCenter() const noexcept
Definition: Box.h:423
CameraSysPrefix const PIXELS
Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels)...
Definition: CameraSys.cc:34
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, to another.

◆ getCenter() [2/2]

lsst::geom::Point2D lsst::afw::cameraGeom::Detector::getCenter ( CameraSysPrefix const &  cameraSysPrefix) const

Get the center of the detector in the specified camera coordinate system prefix.

Definition at line 107 of file Detector.cc.

107  {
108  return getCenter(makeCameraSys(cameraSysPrefix));
109 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260
lsst::geom::Point2D getCenter(CameraSys const &cameraSys) const
Get the center of the detector in the specified camera coordinate system.
Definition: Detector.cc:101

◆ getCorners() [1/2]

std::vector< lsst::geom::Point2D > lsst::afw::cameraGeom::Detector::getCorners ( CameraSys const &  cameraSys) const

Get the corners of the detector in the specified camera coordinate system.

Definition at line 91 of file Detector.cc.

91  {
93  auto nativeToCameraSys = _transformMap->getTransform(_nativeSys, cameraSys);
94  return nativeToCameraSys->applyForward(nativeCorners);
95 }
std::vector< Point2D > getCorners() const
Get the corner points.
Definition: Box.cc:421
A floating-point coordinate rectangle geometry.
Definition: Box.h:305
STL class.

◆ getCorners() [2/2]

std::vector< lsst::geom::Point2D > lsst::afw::cameraGeom::Detector::getCorners ( CameraSysPrefix const &  cameraSysPrefix) const

Get the corners of the detector in the specified camera coordinate system prefix.

Definition at line 97 of file Detector.cc.

97  {
98  return getCorners(makeCameraSys(cameraSysPrefix));
99 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260
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:91

◆ getCrosstalk()

CrosstalkMatrix const lsst::afw::cameraGeom::Detector::getCrosstalk ( ) const
inline

Get the crosstalk coefficients.

Definition at line 177 of file Detector.h.

177 { return _crosstalk; }

◆ getId()

int lsst::afw::cameraGeom::Detector::getId ( ) const
inline

Get the detector ID.

Definition at line 133 of file Detector.h.

133 { return _id; }

◆ getName()

std::string lsst::afw::cameraGeom::Detector::getName ( ) const
inline

Get the detector name.

Definition at line 130 of file Detector.h.

130 { return _name; }

◆ getNativeCoordSys()

CameraSys lsst::afw::cameraGeom::Detector::getNativeCoordSys ( ) const
inline

The "native" coordinate system of this detector.

Definition at line 305 of file Detector.h.

305 { return _nativeSys; }

◆ getOrientation()

Orientation const lsst::afw::cameraGeom::Detector::getOrientation ( ) const
inline

Get detector's orientation in the focal plane.

Definition at line 163 of file Detector.h.

163 { return _orientation; }

◆ getPhysicalType()

std::string lsst::afw::cameraGeom::Detector::getPhysicalType ( ) const
inline

Get information about the physical type of the device (e.g.

CCD, E2V, ITL-A, HgCdTe)

Definition at line 139 of file Detector.h.

139 { return _physicalType; }

◆ getPixelSize()

lsst::geom::Extent2D lsst::afw::cameraGeom::Detector::getPixelSize ( ) const
inline

Get size of pixel along (mm)

Definition at line 166 of file Detector.h.

166 { return _pixelSize; }

◆ getSerial()

std::string lsst::afw::cameraGeom::Detector::getSerial ( ) const
inline

Get the detector serial "number".

Definition at line 142 of file Detector.h.

142 { return _serial; }

◆ getTransform() [1/2]

template<typename FromSysT , typename ToSysT >
std::shared_ptr<geom::TransformPoint2ToPoint2> lsst::afw::cameraGeom::Detector::getTransform ( FromSysT const &  fromSys,
ToSysT const &  toSys 
) const

Definition at line 137 of file Detector.cc.

138  {
139  return _transformMap->getTransform(makeCameraSys(fromSys), makeCameraSys(toSys));
140 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260

◆ getTransform() [2/2]

template<typename FromSysT , typename ToSysT >
std::shared_ptr<afw::geom::TransformPoint2ToPoint2> lsst::afw::cameraGeom::Detector::getTransform ( FromSysT const &  fromSys,
ToSysT const &  toSys 
) const

Get a Transform from one camera coordinate system, or camera coordinate system prefix, to another.

Template Parameters
FromSysT,ToSysTType of fromSys, toSys: one of CameraSys or CameraSysPrefix
Parameters
fromSys,toSyscamera coordinate systems or prefixes between which to transform
Returns
a Transform that converts from fromSys to toSys in the forward direction. The Transform will be invertible.
Exceptions
lsst::pex::exceptions::InvalidParameterErrorThrown if either fromSys or toSys is not supported.

◆ getTransformMap()

std::shared_ptr<TransformMap const> lsst::afw::cameraGeom::Detector::getTransformMap ( ) const
inline

Get the transform registry.

Definition at line 169 of file Detector.h.

169 { return _transformMap; }

◆ getType()

DetectorType lsst::afw::cameraGeom::Detector::getType ( ) const
inline

Get the "type" (really purpose) of the Detector.

Definition at line 136 of file Detector.h.

136 { return _type; }

◆ hasCrosstalk()

bool lsst::afw::cameraGeom::Detector::hasCrosstalk ( ) const
inline

Have we got crosstalk coefficients?

Definition at line 172 of file Detector.h.

172  {
173  return !(_crosstalk.isEmpty() || _crosstalk.getShape() == ndarray::makeVector(0, 0));
174  }

◆ hash_value()

std::size_t lsst::afw::typehandling::Storable::hash_value ( ) const
virtualinherited

Return a hash of this object (optional operation).

Exceptions
UnsupportedOperationExceptionThrown if this object is not hashable.
Note
Subclass authors are responsible for any associated specializations of std::hash.

Reimplemented in lsst::afw::image::Filter, lsst::afw::geom::polygon::Polygon, and lsst::afw::image::VisitInfo.

Definition at line 44 of file Storable.cc.

44  {
45  throw LSST_EXCEPT(UnsupportedOperationException, "Hashes are not supported.");
46 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ hasTransform() [1/2]

bool lsst::afw::cameraGeom::Detector::hasTransform ( CameraSys const &  cameraSys) const

Can this object convert between PIXELS and the specified camera coordinate system?

Definition at line 130 of file Detector.cc.

130 { return _transformMap->contains(cameraSys); }

◆ hasTransform() [2/2]

bool lsst::afw::cameraGeom::Detector::hasTransform ( CameraSysPrefix const &  cameraSysPrefix) const

Can this object convert between PIXELS and the specified camera coordinate system prefix?

Definition at line 132 of file Detector.cc.

132  {
133  return hasTransform(makeCameraSys(cameraSysPrefix));
134 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260
bool hasTransform(CameraSys const &cameraSys) const
Can this object convert between PIXELS and the specified camera coordinate system?
Definition: Detector.cc:130

◆ isPersistable()

bool lsst::afw::cameraGeom::Detector::isPersistable ( ) const
inlineoverridevirtualnoexcept

Detectors are always peristable.

Reimplemented from lsst::afw::table::io::Persistable.

Definition at line 308 of file Detector.h.

308 { return true; }

◆ makeCameraSys() [1/2]

CameraSys const lsst::afw::cameraGeom::Detector::makeCameraSys ( CameraSys const &  cameraSys) const
inline

Get a coordinate system from a coordinate system (return input unchanged and untested)

Parameters
[in]cameraSysCamera coordinate system
Returns
cameraSys unchanged
Note
the CameraSysPrefix version needs the detector name, which is why this is not static.

Definition at line 260 of file Detector.h.

260 { return cameraSys; }

◆ makeCameraSys() [2/2]

CameraSys const lsst::afw::cameraGeom::Detector::makeCameraSys ( CameraSysPrefix const &  cameraSysPrefix) const
inline

Get a coordinate system from a detector system prefix (add detector name)

Parameters
[in]cameraSysPrefixCamera coordinate system prefix
Returns
cameraSysPrefix with the detector name added

Definition at line 268 of file Detector.h.

268  {
269  return CameraSys(cameraSysPrefix, _name);
270  }

◆ operator=() [1/2]

Detector& lsst::afw::cameraGeom::Detector::operator= ( Detector const &  )
delete

◆ operator=() [2/2]

Detector& lsst::afw::cameraGeom::Detector::operator= ( Detector &&  )
delete

◆ operator[]() [1/2]

table::AmpInfoRecord const& lsst::afw::cameraGeom::Detector::operator[] ( size_t  i) const
inline

Get the amplifier specified by index.

Exceptions
std::out_of_rangeif index is out of range

Definition at line 190 of file Detector.h.

190 { return _ampInfoCatalog.at(i); }
reference at(size_type i) const
Return the record at index i (throws std::out_of_range).
Definition: Catalog.h:450

◆ operator[]() [2/2]

const table::AmpInfoRecord & lsst::afw::cameraGeom::Detector::operator[] ( std::string const &  name) const

Get the amplifier specified by name.

Exceptions
lsst::pex::exceptions::InvalidParameterErrorif no such amplifier

Definition at line 111 of file Detector.cc.

111 { return *(_get(name)); }
table::Key< std::string > name
Definition: Detector.cc:165
std::shared_ptr< table::AmpInfoRecord const > _get(int i) const
Get the amplifier specified by index, returning a shared pointer to an AmpInfo record.
Definition: Detector.cc:113

◆ readFits() [1/3]

static std::shared_ptr<Detector > lsst::afw::table::io::PersistableFacade< Detector >::readFits ( fits::Fits fitsfile)
inlinestaticinherited

Read an object from an already open FITS object.

Parameters
[in]fitsfileFITS object to read from, already positioned at the desired HDU.

Definition at line 183 of file Persistable.h.

183  {
184  return dynamicCast(Persistable::_readFits(fitsfile));
185  }
static std::shared_ptr< Detector > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
Definition: Persistable.cc:18

◆ readFits() [2/3]

static std::shared_ptr<Detector > lsst::afw::table::io::PersistableFacade< Detector >::readFits ( std::string const &  fileName,
int  hdu = fits::DEFAULT_HDU 
)
inlinestaticinherited

Read an object from a regular FITS file.

Parameters
[in]fileNameName of the file to read.
[in]hduHDU to read, where 0 is the primary. The special value of afw::fits::DEFAULT_HDU skips the primary HDU if it is empty.

Definition at line 194 of file Persistable.h.

194  {
195  return dynamicCast(Persistable::_readFits(fileName, hdu));
196  }
static std::shared_ptr< Detector > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
Definition: Persistable.cc:18

◆ readFits() [3/3]

static std::shared_ptr<Detector > lsst::afw::table::io::PersistableFacade< Detector >::readFits ( fits::MemFileManager manager,
int  hdu = fits::DEFAULT_HDU 
)
inlinestaticinherited

Read an object from a FITS file in memory.

Parameters
[in]managerManager for the memory to read from.
[in]hduHDU to read, where 0 is the primary. The special value of afw::fits::DEFAULT_HDU skips the primary HDU if it is empty.

Definition at line 205 of file Persistable.h.

205  {
206  return dynamicCast(Persistable::_readFits(manager, hdu));
207  }
static std::shared_ptr< Detector > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
Definition: Persistable.cc:18

◆ singleClassEquals()

template<class T >
static bool lsst::afw::typehandling::Storable::singleClassEquals ( T const &  lhs,
Storable const &  rhs 
)
inlinestaticprotectedinherited

Test if a Storable is of a particular class and equal to another object.

This method template simplifies implementations of equals that delegate to operator== without supporting cross-class comparisons.

Template Parameters
TThe class expected of the two objects to be compared.
Parameters
lhs,rhsThe objects to compare. Note that rhs need not be a T, while lhs must be.
Returns
true if rhs is a T and lhs == rhs; false otherwise.
Exception Safety
Provides the same level of exception safety as operator==. Most implementations of operator== do not throw.
Note
This method template calls operator== with both arguments of compile-time type T const&. Its use is not recommended if there would be any ambiguity as to which operator== gets picked by overload resolution.

This method template is typically called from equals as:

bool MyType::equals(Storable const& other) const noexcept {
    return singleClassEquals(*this, other);
}

Definition at line 136 of file Storable.h.

136  {
137  auto typedRhs = dynamic_cast<T const*>(&rhs);
138  if (typedRhs != nullptr) {
139  return lhs == *typedRhs;
140  } else {
141  return false;
142  }
143  }

◆ size()

size_t lsst::afw::cameraGeom::Detector::size ( ) const
inline

Get the number of amplifiers.

Renamed to __len__ in Python.

Definition at line 228 of file Detector.h.

228 { return _ampInfoCatalog.size(); }
size_type size() const
Return the number of elements in the catalog.
Definition: Catalog.h:408

◆ toString()

std::string lsst::afw::typehandling::Storable::toString ( ) const
virtualinherited

Create a string representation of this object (optional operation).

Exceptions
UnsupportedOperationExceptionThrown if this object does not have a string representation.

Reimplemented in lsst::afw::image::PhotoCalib, lsst::afw::geom::SkyWcs, lsst::afw::geom::polygon::Polygon, and lsst::afw::image::VisitInfo.

Definition at line 40 of file Storable.cc.

40  {
41  throw LSST_EXCEPT(UnsupportedOperationException, "No string representation available.");
42 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ transform() [1/2]

template<typename FromSysT , typename ToSysT >
lsst::geom::Point2D lsst::afw::cameraGeom::Detector::transform ( lsst::geom::Point2D const &  point,
FromSysT const &  fromSys,
ToSysT const &  toSys 
) const

Transform a point from one camera system to another.

Template Parameters
FromSysTClass of fromSys: one of CameraSys or CameraSysPrefix
ToSysTClass of toSys: one of CameraSys or CameraSysPrefix
Parameters
[in]pointCamera point to transform
[in]fromSysCamera coordinate system of point
[in]toSysCamera coordinate system of returned point
Returns
The transformed point
Exceptions
pex::exceptions::InvalidParameterErrorif fromSys or toSys is unknown

Definition at line 143 of file Detector.cc.

144  {
145  return _transformMap->transform(point, makeCameraSys(fromSys), makeCameraSys(toSys));
146 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260

◆ transform() [2/2]

template<typename FromSysT , typename ToSysT >
std::vector< lsst::geom::Point2D > lsst::afw::cameraGeom::Detector::transform ( std::vector< lsst::geom::Point2D > const &  points,
FromSysT const &  fromSys,
ToSysT const &  toSys 
) const

Transform a vector of points from one camera system to another.

Template Parameters
FromSysTClass of fromSys: one of CameraSys or CameraSysPrefix
ToSysTClass of toSys: one of CameraSys or CameraSysPrefix
Parameters
[in]pointsCamera points to transform
[in]fromSysCamera coordinate system of points
[in]toSysCamera coordinate system of returned points
Returns
The transformed points
Exceptions
pex::exceptions::InvalidParameterErrorif fromSys or toSys is unknown

Definition at line 149 of file Detector.cc.

150  {
151  return _transformMap->transform(points, makeCameraSys(fromSys), makeCameraSys(toSys));
152 }
CameraSys const makeCameraSys(CameraSys const &cameraSys) const
Get a coordinate system from a coordinate system (return input unchanged and untested) ...
Definition: Detector.h:260

◆ writeFits() [1/3]

void lsst::afw::table::io::Persistable::writeFits ( std::string const &  fileName,
std::string const &  mode = "w" 
) const
inherited

Write the object to a regular FITS file.

Parameters
[in]fileNameName of the file to write to.
[in]modeIf "w", any existing file with the given name will be overwritten. If "a", new HDUs will be appended to an existing file.

Definition at line 24 of file Persistable.cc.

24  {
25  fits::Fits fitsfile(fileName, mode, fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
26  writeFits(fitsfile);
27 }
void writeFits(std::string const &fileName, std::string const &mode="w") const
Write the object to a regular FITS file.
Definition: Persistable.cc:24

◆ writeFits() [2/3]

void lsst::afw::table::io::Persistable::writeFits ( fits::MemFileManager manager,
std::string const &  mode = "w" 
) const
inherited

Write the object to a FITS image in memory.

Parameters
[in]managerName of the file to write to.
[in]modeIf "w", any existing file with the given name will be overwritten. If "a", new HDUs will be appended to an existing file.

Definition at line 29 of file Persistable.cc.

29  {
30  fits::Fits fitsfile(manager, mode, fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
31  writeFits(fitsfile);
32 }
void writeFits(std::string const &fileName, std::string const &mode="w") const
Write the object to a regular FITS file.
Definition: Persistable.cc:24

◆ writeFits() [3/3]

void lsst::afw::table::io::Persistable::writeFits ( fits::Fits fitsfile) const
inherited

Write the object to an already-open FITS object.

Parameters
[in]fitsfileOpen FITS object to write to.

Definition at line 18 of file Persistable.cc.

18  {
19  OutputArchive archive;
20  archive.put(this);
21  archive.writeFits(fitsfile);
22 }

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream os,
Storable const &  storable 
)
related

Output operator for Storable.

Parameters
osthe desired output stream
storablethe object to print
Returns
a reference to os
Exceptions
UnsupportedOperationExceptionThrown if storable does not have an implementation of Storable::toString.

Definition at line 159 of file Storable.h.

159  {
160  return os << storable.toString();
161 }

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