Details
-
Type:
Story
-
Status: Done
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: afw
-
Labels:
-
Story Points:2
-
Epic Link:
-
Sprint:AP F18-2
-
Team:Alert Production
Description
Given an accurate boresight and rotator angle from a camera, we should be able to construct our best initial estimate of the WCS for a sensor by combining that information with our own camera geometry, as this will probably produce better results that relying on any WCS provided directly by the camera. In fact, for LSST, it's not clear that there even will be a sensor WCS provided directly by the camera, because LSST raw data has amps in different HDUs and no full-sensor HDU that could unproblematically hold a full-sensor WCS.
To do without using astshim code directly, we should provide utility functions in afw with something like the following signatures:
TransformPoint2ToSpherePoint makeIntermediateWorldCoordsToSky(
|
SpherePoint const & position, // (ra, dec) that corresponds to FIELD_ANGLE origin |
Angle rotation // rotation about FIELD_ANGLE origin |
);
|
|
std::shared_ptr<SkyWcs> makeSkyWcs(
|
TransformPoint2ToPoint2 const & pixToIwc, |
TransformPoint2ToSpherePoint const & iwcToSky |
);
|
Attachments
Activity
Field | Original Value | New Value |
---|---|---|
Risk Score | 0 |
Attachment | persisted trivial TAN WCS.txt [ 33232 ] |
Epic Link |
|
Sprint | AP F18-2 [ 747 ] | |
Story Points | 5 | |
Team | Alert Production [ 10300 ] |
Story Points | 5 | 2 |
Reviewers | Jim Bosch [ jbosch ] | |
Status | To Do [ 10001 ] | In Review [ 10004 ] |
Status | In Review [ 10004 ] | Reviewed [ 10101 ] |
Resolution | Done [ 10000 ] | |
Status | Reviewed [ 10101 ] | Done [ 10002 ] |
Here's Russell Owen's initial proposal for how to do both of these operations together; we now think it's missing a way to provide CRVAL to the iwcToSky transformation, but it may otherwise be complete:
crval = ...
camera = ...
detector = ...
pixelsToIwcRad = camera.getTransform(detector.makeCameraSys(PIXELS), FIELD_ANGLE)
pixelsToIwcDeg = pixelsToIwcRad.then(radToDeg)
skyFrame = ast.SkyFrame(“Domain=SKY”)
skyFrame.setSkyRef(crval)
skyFrame.setSkyRefIs(“Ignored”)
frameDict = ast.FrameSet(pixelFrame, pixelsToIwcDeg, iwcFrame)
frameDict.addFrame(“IWC”, skyToIwc.getInverse(), skyFrame)
wcs = SkyWcs(frameDict)