Example #1
0
 def testHolePositionsFlipX(self):
     for telFlipX, cbpFlipX in itertools.product((False, True), (False, True)):
         with self.subTest(telFlipX=telFlipX, cbpFlipX=cbpFlipX):
             scc = SampleCoordinateConverter(telFlipX=telFlipX, cbpFlipX=cbpFlipX)
             holePositions = [scc.maskInfo.getHolePos(name) for name in scc.maskInfo.holeNames]
             if not (telFlipX or cbpFlipX):
                 unflippedHolePositions = holePositions[:]
                 flippedHolePositions = [(-pos[0], pos[1]) for pos in unflippedHolePositions]
             elif cbpFlipX:
                 self.assertPairListsAlmostEqual(holePositions, flippedHolePositions)
             else:
                 self.assertPairListsAlmostEqual(holePositions, unflippedHolePositions)
Example #2
0
 def setUp(self):
     if ReportRecordedErrors:
         lsst.cbp.coordUtils.startRecordingErrors()
         lsst.cbp.coordinateConverter.startRecordingErrors()
     self.scc = SampleCoordinateConverter()
     self.cco = self.scc.coordinateConverter
     # a list of all detector names plus None for the default detector
     self.detectorNames = itertools.chain([None], self.cco.cameraGeom.getNameIter())
     # set values for maximum error that are "plenty good enough"
     self.maxPupilPosErr = 1e-4  # mm
     self.maxDetectorPosErr = 1e-4  # pixels
     self.maxFocalPlanePosErr = self.scc.pixelSizeMm * self.maxDetectorPosErr  # mm
     self.maxFieldAngleErrRad = (0.001*arcseconds).asRadians()
Example #3
0
 def testSetDetectorPosFlipX(self):
     """Test setDetectorPos with varying flipX for telescope and CBP
     """
     pupilPos = (5000, -5000)
     detectorName = "D2"  # pick a detector well away from the center of the focal plane
     detectorPos = (750, 250)
     beam = 3  # pick a beam that is a bit off center
     for telFlipX, cbpFlipX in itertools.product((False, True), (False, True)):
         with self.subTest(telFlipX=telFlipX, cbpFlipX=cbpFlipX):
             scc = SampleCoordinateConverter(telFlipX=telFlipX, cbpFlipX=cbpFlipX)
             cco = scc.coordinateConverter
             cco.setDetectorPos(pupilPos=pupilPos, detectorPos=detectorPos, detector=detectorName,
                                beam=beam)
             beamInfo = cco[beam]
             self.assertTrue(beamInfo.isOnDetector)
             self.assertEqual(beamInfo.detectorName, detectorName)
             self.checkOrientation()
             self.assertPairsAlmostEqual(beamInfo.detectorPos, detectorPos,
                                         maxDiff=self.maxDetectorPosErr)
             self.assertPairsAlmostEqual(beamInfo.pupilPos, pupilPos, maxDiff=self.maxPupilPosErr)
Example #4
0
    def testSetPupilFieldAngleFlipX(self):
        """Test setPupilFieldAngle with varying flipX for telescope and CBP
        """
        beam = 3  # pick a beam that is a bit off center
        for telFlipX, cbpFlipX in itertools.product((False, True), (False, True)):
            with self.subTest(telFlipX=telFlipX, cbpFlipX=cbpFlipX):
                # flip pupilPos and fieldAngle so that everything else is identical
                # e.g. all 3-D vectors; that makes debugging easier if the test fails
                unflippedPupilPos = (5000, -2500)
                unflippedPupilFieldAngle = (0.1, 0.12)
                pupilPos = coordUtils.getFlippedPos(unflippedPupilPos, flipX=telFlipX)
                pupilFieldAngle = coordUtils.getFlippedPos(unflippedPupilFieldAngle, flipX=telFlipX)

                scc = SampleCoordinateConverter(telFlipX=telFlipX, cbpFlipX=cbpFlipX)
                cco = scc.coordinateConverter
                cco.setPupilFieldAngle(pupilPos=pupilPos, pupilFieldAngle=pupilFieldAngle, beam=beam)
                beamInfo = cco[beam]
                self.assertPairsAlmostEqual(beamInfo.pupilFieldAngle, pupilFieldAngle,
                                            maxDiff=self.maxFieldAngleErrRad)
                self.assertPairsAlmostEqual(beamInfo.pupilPos, pupilPos, maxDiff=self.maxPupilPosErr)
Example #5
0
 def setUp(self):
     self.scc = SampleCoordinateConverter()
     self.cco = self.scc.coordinateConverter
     # point the telescope and CBP right at each other
     self.cco.setFocalPlanePos(pupilPos=(0, 0))