LSST Applications g0265f82a02+c6dfa2ddaf,g1162b98a3f+b2075782a9,g2079a07aa2+1b2e822518,g2bbee38e9b+c6dfa2ddaf,g337abbeb29+c6dfa2ddaf,g3ddfee87b4+a60788ef87,g50ff169b8f+2eb0e556e8,g52b1c1532d+90ebb246c7,g555ede804d+a60788ef87,g591dd9f2cf+ba8caea58f,g5ec818987f+864ee9cddb,g858d7b2824+9ee1ab4172,g876c692160+a40945ebb7,g8a8a8dda67+90ebb246c7,g8cdfe0ae6a+4fd9e222a8,g99cad8db69+5e309b7bc6,g9ddcbc5298+a1346535a5,ga1e77700b3+df8f93165b,ga8c6da7877+aa12a14d27,gae46bcf261+c6dfa2ddaf,gb0e22166c9+8634eb87fb,gb3f2274832+d0da15e3be,gba4ed39666+1ac82b564f,gbb8dafda3b+5dfd9c994b,gbeb006f7da+97157f9740,gc28159a63d+c6dfa2ddaf,gc86a011abf+9ee1ab4172,gcf0d15dbbd+a60788ef87,gdaeeff99f8+1cafcb7cd4,gdc0c513512+9ee1ab4172,ge79ae78c31+c6dfa2ddaf,geb67518f79+ba1859f325,geb961e4c1e+f9439d1e6f,gee10cc3b42+90ebb246c7,gf1cff7945b+9ee1ab4172,w.2024.12
LSST Data Management Base Package
Loading...
Searching...
No Matches
Functions | Variables
lsst.afw.cameraGeom._cameraFactory Namespace Reference

Functions

 addDetectorBuilderFromConfig (cameraBuilder, detectorConfig, amplifiers, focalPlaneToField)
 
 makeTransformDict (transformConfigDict)
 
 makeCameraFromPath (cameraConfig, ampInfoPath, shortNameFunc, pupilFactoryClass=PupilFactory)
 
 makeCameraFromAmpLists (cameraConfig, ampListDict, pupilFactoryClass=PupilFactory)
 

Variables

list cameraSysList = [FIELD_ANGLE, FOCAL_PLANE, PIXELS, TAN_PIXELS, ACTUAL_PIXELS]
 
 cameraSysMap = dict((sys.getSysName(), sys) for sys in cameraSysList)
 

Function Documentation

◆ addDetectorBuilderFromConfig()

lsst.afw.cameraGeom._cameraFactory.addDetectorBuilderFromConfig ( cameraBuilder,
detectorConfig,
amplifiers,
focalPlaneToField )
Build a dictionary of Detector constructor keyword arguments.

The returned dictionary can be passed as keyword arguments to the Detector
constructor, providing all required arguments.  However, using these
arguments directly constructs a Detector with knowledge of only the
coordinate systems that are *directly* mapped to its own PIXELS coordinate
system.  To construct Detectors with a shared TransformMap for the full
Camera, use makeCameraFromCatalogs or makeCameraFromPath instead of
calling this function or makeDetector directly.

Parameters
----------
cameraBuilder : `lsst.afw.cameraGeonm.Camera.Builder`
    Camera builder object to which the new Detector Builder
    should be added.
detectorConfig : `lsst.pex.config.Config`
    Configuration for this detector.
amplifiers : `list` [`~lsst.afw.cameraGeom.Amplifier`]
    amplifier information for this detector
focalPlaneToField : `lsst.afw.geom.TransformPoint2ToPoint2`
    FOCAL_PLANE to FIELD_ANGLE Transform

Returns
-------
detectorBuilder : `lsst.afw.cameraGeom.Detector.InCameraBuilder`
    A builder object for a detector corresponding to the given config,
    associated with the given camera builder object.

Definition at line 37 of file _cameraFactory.py.

37def addDetectorBuilderFromConfig(cameraBuilder, detectorConfig, amplifiers, focalPlaneToField):
38 """Build a dictionary of Detector constructor keyword arguments.
39
40 The returned dictionary can be passed as keyword arguments to the Detector
41 constructor, providing all required arguments. However, using these
42 arguments directly constructs a Detector with knowledge of only the
43 coordinate systems that are *directly* mapped to its own PIXELS coordinate
44 system. To construct Detectors with a shared TransformMap for the full
45 Camera, use makeCameraFromCatalogs or makeCameraFromPath instead of
46 calling this function or makeDetector directly.
47
48 Parameters
49 ----------
50 cameraBuilder : `lsst.afw.cameraGeonm.Camera.Builder`
51 Camera builder object to which the new Detector Builder
52 should be added.
53 detectorConfig : `lsst.pex.config.Config`
54 Configuration for this detector.
55 amplifiers : `list` [`~lsst.afw.cameraGeom.Amplifier`]
56 amplifier information for this detector
57 focalPlaneToField : `lsst.afw.geom.TransformPoint2ToPoint2`
58 FOCAL_PLANE to FIELD_ANGLE Transform
59
60 Returns
61 -------
62 detectorBuilder : `lsst.afw.cameraGeom.Detector.InCameraBuilder`
63 A builder object for a detector corresponding to the given config,
64 associated with the given camera builder object.
65 """
66 detectorBuilder = cameraBuilder.add(detectorConfig.name, detectorConfig.id)
67 detectorBuilder.fromConfig(detectorConfig)
68
69 for ampBuilder in amplifiers:
70 detectorBuilder.append(ampBuilder)
71
72 transforms = makeTransformDict(detectorConfig.transformDict.transforms)
73
74 # It seems the C++ code has always assumed that the "nativeSys" for
75 # detectors is PIXELS, despite the configs here giving the illusion of
76 # choice. We'll use PIXELS if the config value is None, and assert that
77 # the value is PIXELS otherwise. Note that we can't actually get rid of
78 # the nativeSys config option without breaking lots of on-disk camera
79 # configs.
80 detectorNativeSysPrefix = cameraSysMap.get(detectorConfig.transformDict.nativeSys, PIXELS)
81 assert detectorNativeSysPrefix == PIXELS, "Detectors with nativeSys != PIXELS are not supported."
82
83 for toSys, transform in transforms.items():
84 detectorBuilder.setTransformFromPixelsTo(toSys, transform)
85 tanPixSys = CameraSys(TAN_PIXELS, detectorConfig.name)
86 transforms[tanPixSys] = makePixelToTanPixel(
87 bbox=detectorBuilder.getBBox(),
88 orientation=detectorBuilder.getOrientation(),
89 focalPlaneToField=focalPlaneToField,
90 pixelSizeMm=detectorBuilder.getPixelSize(),
91 )
92
93 for toSys, transform in transforms.items():
94 detectorBuilder.setTransformFromPixelsTo(toSys, transform)
95
96 detectorBuilder.setCrosstalk(detectorConfig.getCrosstalk(len(amplifiers)))
97
98 return detectorBuilder
99
100

◆ makeCameraFromAmpLists()

lsst.afw.cameraGeom._cameraFactory.makeCameraFromAmpLists ( cameraConfig,
ampListDict,
pupilFactoryClass = PupilFactory )
Construct a Camera instance from a dictionary of detector name: list of
Amplifier.Builder

Parameters
----------
cameraConfig : `CameraConfig`
    Config describing camera and its detectors.
ampListDict : `dict` [`str`, `list` [`Amplifier.Builder`]]
    A dictionary of detector name: list of Amplifier.Builder
pupilFactoryClass : `type`, optional
    Class to attach to camera; `lsst.default afw.cameraGeom.PupilFactory`.

Returns
-------
camera : `lsst.afw.cameraGeom.Camera`
    New Camera instance.

Definition at line 156 of file _cameraFactory.py.

157 pupilFactoryClass=PupilFactory):
158 """Construct a Camera instance from a dictionary of detector name: list of
159 Amplifier.Builder
160
161 Parameters
162 ----------
163 cameraConfig : `CameraConfig`
164 Config describing camera and its detectors.
165 ampListDict : `dict` [`str`, `list` [`Amplifier.Builder`]]
166 A dictionary of detector name: list of Amplifier.Builder
167 pupilFactoryClass : `type`, optional
168 Class to attach to camera; `lsst.default afw.cameraGeom.PupilFactory`.
169
170 Returns
171 -------
172 camera : `lsst.afw.cameraGeom.Camera`
173 New Camera instance.
174 """
175 nativeSys = cameraSysMap[cameraConfig.transformDict.nativeSys]
176
177 # nativeSys=FOCAL_PLANE seems is baked into the camera class definition,
178 # despite CameraConfig providing the illusion that it's configurable. Note
179 # that we can't actually get rid of the nativeSys config option without
180 # breaking lots of on-disk camera configs.
181 assert nativeSys == FOCAL_PLANE, "Cameras with nativeSys != FOCAL_PLANE are not supported."
182
183 cameraBuilder = Camera.Builder(cameraConfig.name)
184 cameraBuilder.setPupilFactoryClass(pupilFactoryClass)
185
186 transformDict = makeTransformDict(cameraConfig.transformDict.transforms)
187 focalPlaneToField = transformDict[FIELD_ANGLE]
188
189 for toSys, transform in transformDict.items():
190 cameraBuilder.setTransformFromFocalPlaneTo(toSys, transform)
191
192 for detectorConfig in cameraConfig.detectorList.values():
193 addDetectorBuilderFromConfig(
194 cameraBuilder,
195 detectorConfig=detectorConfig,
196 amplifiers=ampListDict[detectorConfig.name],
197 focalPlaneToField=focalPlaneToField,
198 )
199
200 return cameraBuilder.finish()

◆ makeCameraFromPath()

lsst.afw.cameraGeom._cameraFactory.makeCameraFromPath ( cameraConfig,
ampInfoPath,
shortNameFunc,
pupilFactoryClass = PupilFactory )
Make a Camera instance from a directory of ampInfo files

The directory must contain one ampInfo fits file for each detector in cameraConfig.detectorList.
The name of each ampInfo file must be shortNameFunc(fullDetectorName) + ".fits".

Parameters
----------
cameraConfig : `CameraConfig`
    Config describing camera and its detectors.
ampInfoPath : `str`
    Path to ampInfo data files.
shortNameFunc : callable
    A function that converts a long detector name to a short one.
pupilFactoryClass : `type`, optional
    Class to attach to camera; default is `lsst.afw.cameraGeom.PupilFactory`.

Returns
-------
camera : `lsst.afw.cameraGeom.Camera`
    New Camera instance.

Definition at line 122 of file _cameraFactory.py.

123 pupilFactoryClass=PupilFactory):
124 """Make a Camera instance from a directory of ampInfo files
125
126 The directory must contain one ampInfo fits file for each detector in cameraConfig.detectorList.
127 The name of each ampInfo file must be shortNameFunc(fullDetectorName) + ".fits".
128
129 Parameters
130 ----------
131 cameraConfig : `CameraConfig`
132 Config describing camera and its detectors.
133 ampInfoPath : `str`
134 Path to ampInfo data files.
135 shortNameFunc : callable
136 A function that converts a long detector name to a short one.
137 pupilFactoryClass : `type`, optional
138 Class to attach to camera; default is `lsst.afw.cameraGeom.PupilFactory`.
139
140 Returns
141 -------
142 camera : `lsst.afw.cameraGeom.Camera`
143 New Camera instance.
144 """
145 ampListDict = dict()
146 for detectorConfig in cameraConfig.detectorList.values():
147 shortName = shortNameFunc(detectorConfig.name)
148 ampCatPath = os.path.join(ampInfoPath, shortName + ".fits")
149 catalog = BaseCatalog.readFits(ampCatPath)
150 ampListDict[detectorConfig.name] = [Amplifier.Builder.fromRecord(record)
151 for record in catalog]
152
153 return makeCameraFromAmpLists(cameraConfig, ampListDict, pupilFactoryClass)
154
155

◆ makeTransformDict()

lsst.afw.cameraGeom._cameraFactory.makeTransformDict ( transformConfigDict)
Make a dictionary of CameraSys: lsst.afw.geom.Transform from a config dict.

Parameters
----------
transformConfigDict : value obtained from a `lsst.pex.config.ConfigDictField`
    registry; keys are camera system names.

Returns
-------
transforms : `dict` [`CameraSys` or `CameraSysPrefix`, `lsst.afw.geom.Transform`]
    A dict of CameraSys or CameraSysPrefix: lsst.afw.geom.Transform

Definition at line 101 of file _cameraFactory.py.

101def makeTransformDict(transformConfigDict):
102 """Make a dictionary of CameraSys: lsst.afw.geom.Transform from a config dict.
103
104 Parameters
105 ----------
106 transformConfigDict : value obtained from a `lsst.pex.config.ConfigDictField`
107 registry; keys are camera system names.
108
109 Returns
110 -------
111 transforms : `dict` [`CameraSys` or `CameraSysPrefix`, `lsst.afw.geom.Transform`]
112 A dict of CameraSys or CameraSysPrefix: lsst.afw.geom.Transform
113 """
114 resMap = dict()
115 if transformConfigDict is not None:
116 for key in transformConfigDict:
117 transform = transformConfigDict[key].transform.apply()
118 resMap[CameraSys(key)] = transform
119 return resMap
120
121

Variable Documentation

◆ cameraSysList

list lsst.afw.cameraGeom._cameraFactory.cameraSysList = [FIELD_ANGLE, FOCAL_PLANE, PIXELS, TAN_PIXELS, ACTUAL_PIXELS]

Definition at line 33 of file _cameraFactory.py.

◆ cameraSysMap

lsst.afw.cameraGeom._cameraFactory.cameraSysMap = dict((sys.getSysName(), sys) for sys in cameraSysList)

Definition at line 34 of file _cameraFactory.py.