LSST Applications g070148d5b3+33e5256705,g0d53e28543+25c8b88941,g0da5cf3356+2dd1178308,g1081da9e2a+62d12e78cb,g17e5ecfddb+7e422d6136,g1c76d35bf8+ede3a706f7,g295839609d+225697d880,g2e2c1a68ba+cc1f6f037e,g2ffcdf413f+853cd4dcde,g38293774b4+62d12e78cb,g3b44f30a73+d953f1ac34,g48ccf36440+885b902d19,g4b2f1765b6+7dedbde6d2,g5320a0a9f6+0c5d6105b6,g56b687f8c9+ede3a706f7,g5c4744a4d9+ef6ac23297,g5ffd174ac0+0c5d6105b6,g6075d09f38+66af417445,g667d525e37+2ced63db88,g670421136f+2ced63db88,g71f27ac40c+2ced63db88,g774830318a+463cbe8d1f,g7876bc68e5+1d137996f1,g7985c39107+62d12e78cb,g7fdac2220c+0fd8241c05,g96f01af41f+368e6903a7,g9ca82378b8+2ced63db88,g9d27549199+ef6ac23297,gabe93b2c52+e3573e3735,gb065e2a02a+3dfbe639da,gbc3249ced9+0c5d6105b6,gbec6a3398f+0c5d6105b6,gc9534b9d65+35b9f25267,gd01420fc67+0c5d6105b6,geee7ff78d7+a14128c129,gf63283c776+ede3a706f7,gfed783d017+0c5d6105b6,w.2022.47
LSST Data Management Base Package
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
lsst::afw::cameraGeom Namespace Reference

Namespaces

namespace  _amplifier
 
namespace  _assembleImage
 
namespace  _camera
 
namespace  _cameraFactory
 
namespace  _cameraGeomEnumDicts
 
namespace  _detector
 
namespace  _detectorCollection
 
namespace  _makePixelToTanPixel
 
namespace  _rotateBBoxBy90
 
namespace  _transformConfig
 
namespace  cameraConfig
 
namespace  pupil
 
namespace  testUtils
 
namespace  utils
 

Classes

class  Amplifier
 Geometry and electronic information about raw amplifier images. More...
 
class  Camera
 An immutable representation of a camera. More...
 
class  CameraSys
 Camera coordinate system; used as a key in in TransformMap. More...
 
class  CameraSysPrefix
 Camera coordinate system prefix. More...
 
class  Detector
 A representation of a detector in a mosaic camera. More...
 
class  DetectorBase
 An abstract base class that provides common accessors for Detector and Detector::Builder. More...
 
class  DetectorCollection
 An immutable collection of Detectors that can be accessed by name or ID. More...
 
class  DetectorCollectionBase
 An abstract base class for collections of Detectors and specific subclasses thereof. More...
 
class  Orientation
 Describe a detector's orientation in the focal plane. More...
 
class  TransformMap
 A registry of 2-dimensional coordinate transforms for a specific camera. More...
 

Typedefs

using PyAmplifier = py::class_< Amplifier, std::shared_ptr< Amplifier > >
 
using PyAmplifierBuilder = py::class_< Amplifier::Builder, Amplifier, std::shared_ptr< Amplifier::Builder > >
 
using PyCamera = py::class_< Camera, DetectorCollection, std::shared_ptr< Camera > >
 
using PyCameraBuilder = py::class_< Camera::Builder, DetectorCollectionBase< Detector::InCameraBuilder >, std::shared_ptr< Camera::Builder > >
 

Enumerations

enum class  ReadoutCorner { LL , LR , UR , UL }
 Readout corner, in the frame of reference of the assembled image. More...
 
enum class  AssemblyState { RAW , SCIENCE }
 Assembly state of the amplifier, used to identify bounding boxes and component existence. More...
 
enum class  DetectorType { SCIENCE , FOCUS , GUIDER , WAVEFRONT }
 Type of imaging detector. More...
 

Functions

void swap (CameraSys &a, CameraSys &b)
 
std::ostreamoperator<< (std::ostream &os, CameraSysPrefix const &detSysPrefix)
 
std::ostreamoperator<< (std::ostream &os, CameraSys const &cameraSys)
 
std::ostreamoperator<< (std::ostream &os, TransformMap::Connection const &connection)
 
void wrapAmplifier (lsst::utils::python::WrapperCollection &wrappers)
 
void wrapCamera (lsst::utils::python::WrapperCollection &wrappers)
 
void wrapCameraSys (lsst::utils::python::WrapperCollection &)
 
void wrapDetector (lsst::utils::python::WrapperCollection &)
 
void wrapDetectorCollection (lsst::utils::python::WrapperCollection &)
 
void wrapOrientation (lsst::utils::python::WrapperCollection &)
 
void wrapTransformMap (lsst::utils::python::WrapperCollection &)
 
 PYBIND11_MODULE (_cameraGeom, mod)
 

Variables

CameraSys const FOCAL_PLANE = CameraSys("FocalPlane")
 Focal plane coordinates: Position on a 2-d planar approximation to the focal plane (x,y mm). More...
 
CameraSys const FIELD_ANGLE = CameraSys("FieldAngle")
 Field angle coordinates: Angle of a principal ray relative to the optical axis (x,y radians). More...
 
CameraSysPrefix const PIXELS = CameraSysPrefix("Pixels")
 Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels). More...
 
CameraSysPrefix const TAN_PIXELS = CameraSysPrefix("TanPixels")
 Tangent-plane pixels on the detector (x, y unbinned pixels) More...
 
CameraSysPrefix const ACTUAL_PIXELS = CameraSysPrefix("ActualPixels")
 The actual pixels where the photon lands and electrons are generated (x,y unbinned) This takes into account manufacturing defects, "tree ring" distortions and other such effects. More...
 
string NullLinearityType = "None"
 

Typedef Documentation

◆ PyAmplifier

Definition at line 40 of file _amplifier.cc.

◆ PyAmplifierBuilder

Definition at line 41 of file _amplifier.cc.

◆ PyCamera

Definition at line 40 of file _camera.cc.

◆ PyCameraBuilder

Definition at line 41 of file _camera.cc.

Enumeration Type Documentation

◆ AssemblyState

Assembly state of the amplifier, used to identify bounding boxes and component existence.

Enumerator
RAW 
SCIENCE 

Definition at line 48 of file Amplifier.h.

◆ DetectorType

Type of imaging detector.

Enumerator
SCIENCE 
FOCUS 
GUIDER 
WAVEFRONT 

Definition at line 44 of file Detector.h.

◆ ReadoutCorner

Readout corner, in the frame of reference of the assembled image.

Enumerator
LL 
LR 
UR 
UL 

Definition at line 38 of file Amplifier.h.

Function Documentation

◆ operator<<() [1/3]

std::ostream & lsst::afw::cameraGeom::operator<< ( std::ostream os,
CameraSys const &  cameraSys 
)

Definition at line 52 of file CameraSys.cc.

52 {
53 os << "CameraSys(" << cameraSys.getSysName();
54 if (cameraSys.hasDetectorName()) {
55 os << ", " << cameraSys.getDetectorName();
56 }
57 os << ")";
58 return os;
59}
std::ostream * os
Definition: Schema.cc:557

◆ operator<<() [2/3]

std::ostream & lsst::afw::cameraGeom::operator<< ( std::ostream os,
CameraSysPrefix const &  detSysPrefix 
)

Definition at line 47 of file CameraSys.cc.

47 {
48 os << "CameraSysPrefix(" << camSysPrefix.getSysName() << ")";
49 return os;
50}

◆ operator<<() [3/3]

std::ostream & lsst::afw::cameraGeom::operator<< ( std::ostream os,
TransformMap::Connection const &  connection 
)

Definition at line 169 of file TransformMap.cc.

169 {
170 return os << connection.fromSys << "->" << connection.toSys;
171}

◆ PYBIND11_MODULE()

lsst::afw::cameraGeom::PYBIND11_MODULE ( _cameraGeom  ,
mod   
)

Definition at line 38 of file _cameraGeom.cc.

38 {
39 lsst::utils::python::WrapperCollection wrappers(mod, "lsst.afw.cameraGeom");
40 wrapAmplifier(wrappers);
41 wrapDetectorCollection(wrappers);
42 wrapDetector(wrappers);
43 wrapCamera(wrappers);
44 wrapCameraSys(wrappers);
45 wrapOrientation(wrappers);
46 wrapTransformMap(wrappers);
47 wrappers.finish();
48}
void wrapDetectorCollection(lsst::utils::python::WrapperCollection &)
void wrapTransformMap(lsst::utils::python::WrapperCollection &)
void wrapCameraSys(lsst::utils::python::WrapperCollection &)
Definition: _cameraSys.cc:65
void wrapOrientation(lsst::utils::python::WrapperCollection &)
Definition: _orientation.cc:36
void wrapDetector(lsst::utils::python::WrapperCollection &)
Definition: _detector.cc:195
void wrapAmplifier(lsst::utils::python::WrapperCollection &wrappers)
Definition: _amplifier.cc:43
void wrapCamera(lsst::utils::python::WrapperCollection &wrappers)
Definition: _camera.cc:48

◆ swap()

void lsst::afw::cameraGeom::swap ( CameraSys a,
CameraSys b 
)
inline

Definition at line 157 of file CameraSys.h.

157 {
158 a.swap(b);
159}
table::Key< int > b
table::Key< int > a

◆ wrapAmplifier()

void lsst::afw::cameraGeom::wrapAmplifier ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 43 of file _amplifier.cc.

43 {
44 wrappers.addInheritanceDependency("lsst.afw.table");
45 wrappers.wrapType(py::enum_<ReadoutCorner>(wrappers.module, "ReadoutCorner"), [](auto &mod, auto &enm) {
46 enm.value("LL", ReadoutCorner::LL);
47 enm.value("LR", ReadoutCorner::LR);
48 enm.value("UR", ReadoutCorner::UR);
49 enm.value("UL", ReadoutCorner::UL);
50 });
51 wrappers.wrapType(py::enum_<AssemblyState>(wrappers.module, "AssemblyState"), [](auto &mod, auto &enm) {
52 enm.value("RAW", AssemblyState::RAW);
53 enm.value("SCIENCE", AssemblyState::SCIENCE);
54 });
55 auto amplifier = wrappers.wrapType(PyAmplifier(wrappers.module, "Amplifier"), [](auto &mod, auto &cls) {
56 cls.def_static("getRecordSchema", &Amplifier::getRecordSchema);
57 cls.def("toRecord", &Amplifier::toRecord);
58 cls.def("rebuild", &Amplifier::rebuild);
59 cls.def("getName", &Amplifier::getName);
60 cls.def("getBBox", &Amplifier::getBBox);
61 cls.def("getGain", &Amplifier::getGain);
62 cls.def("getReadNoise", &Amplifier::getReadNoise);
63 cls.def("getSaturation", &Amplifier::getSaturation);
64 cls.def("getSuspectLevel", &Amplifier::getSuspectLevel);
65 cls.def("getReadoutCorner", &Amplifier::getReadoutCorner);
66 cls.def("getLinearityCoeffs", &Amplifier::getLinearityCoeffs);
67 cls.def("getLinearityType", &Amplifier::getLinearityType);
68 cls.def("getLinearityThreshold", &Amplifier::getLinearityThreshold);
69 cls.def("getLinearityMaximum", &Amplifier::getLinearityMaximum);
70 cls.def("getLinearityUnits", &Amplifier::getLinearityUnits);
71 cls.def("getRawBBox", &Amplifier::getRawBBox);
72 cls.def("getRawDataBBox", &Amplifier::getRawDataBBox);
73 cls.def("getRawFlipX", &Amplifier::getRawFlipX);
74 cls.def("getRawFlipY", &Amplifier::getRawFlipY);
75 cls.def("getRawXYOffset", &Amplifier::getRawXYOffset);
76 cls.def("getRawHorizontalOverscanBBox", &Amplifier::getRawHorizontalOverscanBBox);
77 cls.def("getRawVerticalOverscanBBox", &Amplifier::getRawVerticalOverscanBBox);
78 cls.def("getRawPrescanBBox", &Amplifier::getRawPrescanBBox);
79 cls.def("getRawSerialOverscanBBox", &Amplifier::getRawSerialOverscanBBox);
80 cls.def("getRawParallelOverscanBBox", &Amplifier::getRawParallelOverscanBBox);
81 cls.def("getRawSerialPrescanBBox", &Amplifier::getRawSerialPrescanBBox);
82 cls.def("getRawHorizontalPrescanBBox", &Amplifier::getRawHorizontalPrescanBBox);
83 });
84 wrappers.wrapType(PyAmplifierBuilder(amplifier, "Builder"), [](auto &mod, auto &cls) {
85 cls.def_static("fromRecord", &Amplifier::Builder::fromRecord);
86 cls.def(py::init());
87 cls.def("finish", &Amplifier::Builder::finish);
88 cls.def("assign", [](Amplifier::Builder &self, Amplifier const &other) { self = other; });
89 cls.def("setName", &Amplifier::Builder::setName, "name"_a);
90 cls.def("setBBox", &Amplifier::Builder::setBBox, "bbox"_a);
91 cls.def("setGain", &Amplifier::Builder::setGain, "gain"_a);
92 cls.def("setReadNoise", &Amplifier::Builder::setReadNoise, "readNoise"_a);
93 cls.def("setSaturation", &Amplifier::Builder::setSaturation, "saturation"_a);
94 cls.def("setSuspectLevel", &Amplifier::Builder::setSuspectLevel, "suspectLevel"_a);
95 cls.def("setReadoutCorner", &Amplifier::Builder::setReadoutCorner, "corner"_a);
96 cls.def("setLinearityCoeffs", &Amplifier::Builder::setLinearityCoeffs, "coeffs"_a);
97 // Backwards compatibility: accept std::vector (list in Python) in
98 // addition to ndarray::Array (np.ndarray)
99 cls.def("setLinearityCoeffs", [](Amplifier::Builder &self, std::vector<double> const &coeffs) {
100 ndarray::Array<double, 1, 1> array = ndarray::allocate(coeffs.size());
101 std::copy(coeffs.begin(), coeffs.end(), array.begin());
102 self.setLinearityCoeffs(array);
103 });
104 cls.def("setLinearityType", &Amplifier::Builder::setLinearityType, "type"_a);
105 cls.def("setLinearityThreshold", &Amplifier::Builder::setLinearityThreshold, "threshold"_a);
106 cls.def("setLinearityMaximum", &Amplifier::Builder::setLinearityMaximum, "maximum"_a);
107 cls.def("setLinearityUnits", &Amplifier::Builder::setLinearityUnits, "units"_a);
108 cls.def("setRawBBox", &Amplifier::Builder::setRawBBox, "bbox"_a);
109 cls.def("setRawDataBBox", &Amplifier::Builder::setRawDataBBox, "bbox"_a);
110 cls.def("setRawFlipX", &Amplifier::Builder::setRawFlipX, "rawFlipX"_a);
111 cls.def("setRawFlipY", &Amplifier::Builder::setRawFlipY, "rawFlipY"_a);
112 cls.def("setRawXYOffset", &Amplifier::Builder::setRawXYOffset, "offset"_a);
113 cls.def("setRawHorizontalOverscanBBox", &Amplifier::Builder::setRawHorizontalOverscanBBox, "bbox"_a);
114 cls.def("setRawVerticalOverscanBBox", &Amplifier::Builder::setRawVerticalOverscanBBox, "bbox"_a);
115 cls.def("setRawPrescanBBox", &Amplifier::Builder::setRawPrescanBBox, "bbox"_a);
116 cls.def("setRawSerialOverscanBBox", &Amplifier::Builder::setRawSerialOverscanBBox, "bbox"_a);
117 cls.def("setRawParallelOverscanBBox", &Amplifier::Builder::setRawParallelOverscanBBox, "bbox"_a);
118 cls.def("setRawSerialPrescanBBox", &Amplifier::Builder::setRawSerialPrescanBBox, "bbox"_a);
119 cls.def("setRawHorizontalPrescanBBox", &Amplifier::Builder::setRawHorizontalPrescanBBox, "bbox"_a);
120 });
121}
T begin(T... args)
A mutable Amplifier subclass class that can be used to incrementally construct or modify Amplifiers.
Definition: Amplifier.h:305
Geometry and electronic information about raw amplifier images.
Definition: Amplifier.h:86
T copy(T... args)
T end(T... args)
py::class_< Amplifier::Builder, Amplifier, std::shared_ptr< Amplifier::Builder > > PyAmplifierBuilder
Definition: _amplifier.cc:41
py::class_< Amplifier, std::shared_ptr< Amplifier > > PyAmplifier
Definition: _amplifier.cc:40
T size(T... args)

◆ wrapCamera()

void lsst::afw::cameraGeom::wrapCamera ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 48 of file _camera.cc.

48 {
49 wrappers.addInheritanceDependency("lsst.afw.table.io");
50 wrappers.addSignatureDependency("lsst.afw.cameraGeom");
51 auto camera = wrappers.wrapType(PyCamera(wrappers.module, "Camera"), [](auto &mod, auto &cls) {
52 cls.def("rebuild", &Camera::rebuild);
53 cls.def("getName", &Camera::getName);
54 cls.def("getPupilFactoryName", &Camera::getPupilFactoryName);
55 cls.def("findDetectors", &Camera::findDetectors, "point"_a, "cameraSys"_a);
56 cls.def("findDetectorsList", &Camera::findDetectorsList, "pointList"_a, "cameraSys"_a);
57 // transform methods are wrapped with lambdas that translate exceptions for backwards compatibility
58 cls.def(
59 "getTransform",
60 [](Camera const &self, CameraSys const &fromSys, CameraSys const &toSys) {
61 try {
62 return self.getTransform(fromSys, toSys);
63 } catch (pex::exceptions::NotFoundError &err) {
64 PyErr_SetString(PyExc_KeyError, err.what());
65 throw py::error_already_set();
66 }
67 },
68 "fromSys"_a, "toSys"_a);
69 cls.def("getTransformMap", &Camera::getTransformMap);
70 cls.def(
71 "transform",
72 [](Camera const &self, lsst::geom::Point2D const &point, CameraSys const &fromSys,
73 CameraSys const &toSys) {
74 try {
75 return self.transform(point, fromSys, toSys);
76 } catch (pex::exceptions::NotFoundError &err) {
77 PyErr_SetString(PyExc_KeyError, err.what());
78 throw py::error_already_set();
79 }
80 },
81 "point"_a, "fromSys"_a, "toSys"_a);
82 cls.def(
83 "transform",
84 [](Camera const &self, std::vector<lsst::geom::Point2D> const &points,
85 CameraSys const &fromSys, CameraSys const &toSys) {
86 try {
87 return self.transform(points, fromSys, toSys);
88 } catch (pex::exceptions::NotFoundError &err) {
89 PyErr_SetString(PyExc_KeyError, err.what());
90 throw py::error_already_set();
91 }
92 },
93 "points"_a, "fromSys"_a, "toSys"_a);
94 table::io::python::addPersistableMethods(cls);
95 });
96 wrappers.wrapType(PyCameraBuilder(camera, "Builder"), [](auto &mod, auto &cls) {
97 cls.def(py::init<std::string const &>(), "name"_a);
98 cls.def(py::init<Camera const &>(), "camera"_a);
99 cls.def("finish", &Camera::Builder::finish);
100 cls.def("getName", &Camera::Builder::getName);
101 cls.def("setName", &Camera::Builder::setName);
102 cls.def("getPupilFactoryName", &Camera::Builder::getPupilFactoryName);
103 cls.def("setPupilFactoryName", &Camera::Builder::setPupilFactoryName);
104 cls.def("setPupilFactoryClass", [](Camera::Builder &self, py::object pupilFactoryClass) {
105 std::string pupilFactoryName = "lsst.afw.cameraGeom.pupil.PupilFactory";
106 if (!pupilFactoryClass.is(py::none())) {
107 pupilFactoryName = py::str("{}.{}").format(pupilFactoryClass.attr("__module__"),
108 pupilFactoryClass.attr("__name__"));
109 }
110 self.setPupilFactoryName(pupilFactoryName);
111 });
112 cls.def("setTransformFromFocalPlaneTo", &Camera::Builder::setTransformFromFocalPlaneTo, "toSys"_a,
113 "transform"_a);
114 cls.def("discardTransformFromFocalPlaneTo", &Camera::Builder::discardTransformFromFocalPlaneTo);
115 cls.def("add", &Camera::Builder::add);
116 cls.def("__delitem__", py::overload_cast<int>(&Camera::Builder::remove));
117 cls.def("__delitem__", py::overload_cast<std::string const &>(&Camera::Builder::remove));
118 });
119}
table::Key< std::string > pupilFactoryName
Definition: Camera.cc:124
An immutable representation of a camera.
Definition: Camera.h:43
lsst::geom::Point2D transform(lsst::geom::Point2D const &point, CameraSys const &fromSys, CameraSys const &toSys) const
Transform a point from one camera coordinate system to another.
Definition: Camera.cc:83
Camera coordinate system; used as a key in in TransformMap.
Definition: CameraSys.h:83
virtual char const * what(void) const noexcept
Return a character string summarizing this exception.
Definition: Exception.cc:99
Reports attempts to access elements using an invalid key.
Definition: Runtime.h:151
py::class_< Camera, DetectorCollection, std::shared_ptr< Camera > > PyCamera
Definition: _camera.cc:40
py::class_< Camera::Builder, DetectorCollectionBase< Detector::InCameraBuilder >, std::shared_ptr< Camera::Builder > > PyCameraBuilder
Definition: _camera.cc:42

◆ wrapCameraSys()

void lsst::afw::cameraGeom::wrapCameraSys ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 65 of file _cameraSys.cc.

65 {
66 /* Module level */
67 wrappers.wrapType(py::class_<CameraSysPrefix>(wrappers.module, "CameraSysPrefix"),
68 [](auto &mod, auto &cls) {
69 declareCommonSysMethods<CameraSysPrefix>(cls);
70 cls.def(py::init<std::string const &>(), "sysName"_a);
71 });
72 wrappers.wrapType(py::class_<CameraSys>(wrappers.module, "CameraSys"), [](auto &mod, auto &cls) {
73 declareCommonSysMethods<CameraSys>(cls);
74 /* Constructors */
75 cls.def(py::init<std::string const &>(), "sysName"_a);
76 cls.def(py::init<std::string const &, std::string const &>(), "sysName"_a, "detectorName"_a = "");
77 cls.def(py::init<CameraSysPrefix const &, std::string const &>(), "sysPrefix"_a,
78 "detectorName"_a = "");
79 /* Members */
80 cls.def("getDetectorName", &CameraSys::getDetectorName);
81 cls.def("hasDetectorName", &CameraSys::hasDetectorName);
82 });
83
84 // The following must come after the associated pybind11 class is declared
85 // (e.g. FOCAL_PLANE is a CameraSys, so clsCameraSys must have been declared
86 wrappers.wrap([](auto &mod) {
87 mod.attr("FOCAL_PLANE") = py::cast(FOCAL_PLANE);
88 mod.attr("FIELD_ANGLE") = py::cast(FIELD_ANGLE);
89 mod.attr("PIXELS") = py::cast(PIXELS);
90 mod.attr("TAN_PIXELS") = py::cast(TAN_PIXELS);
91 mod.attr("ACTUAL_PIXELS") = py::cast(ACTUAL_PIXELS);
92 });
93}

◆ wrapDetector()

void lsst::afw::cameraGeom::wrapDetector ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 195 of file _detector.cc.

195 {
196 wrappers.addInheritanceDependency("lsst.afw.typehandling");
197 wrappers.wrapType(py::enum_<DetectorType>(wrappers.module, "DetectorType"), [](auto &mod, auto &enm) {
198 enm.value("SCIENCE", DetectorType::SCIENCE);
199 enm.value("FOCUS", DetectorType::FOCUS);
200 enm.value("GUIDER", DetectorType::GUIDER);
201 enm.value("WAVEFRONT", DetectorType::WAVEFRONT);
202 });
203 declareDetectorBase(wrappers);
204 declareDetector(wrappers);
205}

◆ wrapDetectorCollection()

void lsst::afw::cameraGeom::wrapDetectorCollection ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 66 of file _detectorCollection.cc.

66 {
67 wrappers.addInheritanceDependency("lsst.afw.table.io");
68 wrappers.wrapType(
69 PyDetectorCollectionBase<Detector const>(wrappers.module, "DetectorCollectionDetectorBase"),
70 [](auto &mod, auto &cls) { declareDetectorCollectionBase(cls); });
71 wrappers.wrapType(PyDetectorCollection(wrappers.module, "DetectorCollection"), [](auto &mod, auto &cls) {
72 ;
73 cls.def(py::init<DetectorCollection::List>());
74 cls.def("getFpBBox", &DetectorCollection::getFpBBox);
75 table::io::python::addPersistableMethods(cls);
76 });
77
78 wrappers.wrapType(PyDetectorCollectionBase<Detector::InCameraBuilder>(wrappers.module,
79 "DetectorCollectionBuilderBase"),
80 [](auto &mod, auto &cls) { declareDetectorCollectionBase(cls); });
81}

◆ wrapOrientation()

void lsst::afw::cameraGeom::wrapOrientation ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 36 of file _orientation.cc.

36 {
37 wrappers.addSignatureDependency("lsst.geom");
38 wrappers.wrapType(py::class_<Orientation>(wrappers.module, "Orientation"), [](auto &mod, auto &cls) {
39 /* Constructors */
40 cls.def(py::init<lsst::geom::Point3D, lsst::geom::Point2D, lsst::geom::Angle, lsst::geom::Angle,
41 lsst::geom::Angle>(),
42 "fpPosition"_a = lsst::geom::Point3D(0, 0, 0), "refPoint"_a = lsst::geom::Point2D(-0.5, -0.5),
43 "yaw"_a = lsst::geom::Angle(0), "pitch"_a = lsst::geom::Angle(0),
44 "roll"_a = lsst::geom::Angle(0));
45
46 cls.def(py::init<lsst::geom::Point2D, lsst::geom::Point2D, lsst::geom::Angle, lsst::geom::Angle,
47 lsst::geom::Angle>(),
48 "fpPosition"_a, "refPoint"_a = lsst::geom::Point2D(-0.5, -0.5),
49 "yaw"_a = lsst::geom::Angle(0), "pitch"_a = lsst::geom::Angle(0),
50 "roll"_a = lsst::geom::Angle(0));
51
52 /* Operators */
53
54 /* Members */
55 cls.def("getFpPosition", &Orientation::getFpPosition);
56 cls.def("getFpPosition3", &Orientation::getFpPosition3);
57 cls.def("getReferencePoint", &Orientation::getReferencePoint);
58 cls.def("getHeight", &Orientation::getHeight);
59 cls.def("getYaw", &Orientation::getYaw);
60 cls.def("getPitch", &Orientation::getPitch);
61 cls.def("getRoll", &Orientation::getRoll);
62 cls.def("getNQuarter", &Orientation::getNQuarter);
63 cls.def("makePixelFpTransform", &Orientation::makePixelFpTransform, "pixelSizeMm"_a);
64 cls.def("makeFpPixelTransform", &Orientation::makeFpPixelTransform, "pixelSizeMm"_a);
65 });
66}

◆ wrapTransformMap()

void lsst::afw::cameraGeom::wrapTransformMap ( lsst::utils::python::WrapperCollection &  wrappers)

Definition at line 94 of file _transformMap.cc.

94{ declareTransformMap(wrappers); }

Variable Documentation

◆ ACTUAL_PIXELS

CameraSysPrefix const lsst::afw::cameraGeom::ACTUAL_PIXELS = CameraSysPrefix("ActualPixels")

The actual pixels where the photon lands and electrons are generated (x,y unbinned) This takes into account manufacturing defects, "tree ring" distortions and other such effects.

This is a detector prefix; call Detector.makeCameraSys(ACTUAL_PIXELS) to make a full CameraSys.

Definition at line 38 of file CameraSys.cc.

◆ FIELD_ANGLE

CameraSys const lsst::afw::cameraGeom::FIELD_ANGLE = CameraSys("FieldAngle")

Field angle coordinates: Angle of a principal ray relative to the optical axis (x,y radians).

The orientation of the x,y axes is the same as FOCAL_PLANE.

Definition at line 32 of file CameraSys.cc.

◆ FOCAL_PLANE

CameraSys const lsst::afw::cameraGeom::FOCAL_PLANE = CameraSys("FocalPlane")

Focal plane coordinates: Position on a 2-d planar approximation to the focal plane (x,y mm).

The origin and orientation may be defined by the camera team, but we strongly recommend that the origin be on the optical axis and (if using CCD detectors) that the X axis be aligned along CCD rows.

Note
Location and orientation of detectors are defined in a 3-d version of FOCAL_PLANE coordinates (the z axis is also relevant). Rectilinear x, y (and z when talking about the location of a detector) on the camera focal plane (mm). For z=0 choose a convenient point near the focus at x, y = 0.

Definition at line 30 of file CameraSys.cc.

◆ NullLinearityType

string lsst.afw.cameraGeom.NullLinearityType = "None"

Definition at line 38 of file __init__.py.

◆ PIXELS

CameraSysPrefix const lsst::afw::cameraGeom::PIXELS = CameraSysPrefix("Pixels")

Pixel coordinates: Nominal position on the entry surface of a given detector (x, y unbinned pixels).

For CCD detectors the x axis must be along rows (the direction of the serial register). This is required for our interpolation algorithm to interpolate across bad columns.

This ignores manufacturing imperfections, "tree ring" distortions and all other such effects. It is a uniform grid of rectangular (usually square) pixels.

Warning
This is a detector prefix; call Detector.makeCameraSys(PIXELS) to make a full CameraSys.

Definition at line 34 of file CameraSys.cc.

◆ TAN_PIXELS

CameraSysPrefix const lsst::afw::cameraGeom::TAN_PIXELS = CameraSysPrefix("TanPixels")

Tangent-plane pixels on the detector (x, y unbinned pixels)

Converting from PIXELS to TAN_PIXELS has the effect of removing optical distortion (and the distortion due to rectangular pixels) with the point at the center of the detector being unaffected by the transformation.

In detail, PIXELS->TAN_PIXELS is PIXELS->FIELD_ANGLE plus an affine transformation, such that:

  • The x,y axes are parallel to the detector axes
  • The dimensions are nominal pixels at the center of the focal plane (where nominal pixels size is mean of x, y pixel size).
  • The point at the center of the detector has the same value in PIXELS and TAN_PIXELS

This is a detector prefix; call Detector.makeCameraSys(TAN_PIXELS) to make a full CameraSys.

Definition at line 36 of file CameraSys.cc.