Example #1
0
    def __init__(self, grating):
        super(DEIMOSOpticalModel, self).__init__(
            20018.4,  # Pupil distance in mm (!PPLDIST, !D_1)
            2133.6,  # Radius of the image surface in mm (!R_IMSURF)
            2124.71,  # Focal-plane radius of curvature in mm (!R_CURV)
            2120.9,  # Mask radius of curvature in mm (!M_RCURV)
            np.radians(6.),  # Mask tilt angle in radians (!M_ANGLE)
            128.803,  # Mask y zero point in mm (!ZPT_YM)
            3.378,  # Mask z zero-point in mm (!MASK_HT0)
            2197.1,  # Collimator distance in mm (sys.COL_DST)
            4394.2,  # Collimator radius of curvature in mm (!R_COLL)
            -0.75,  # Collimator curvature constant (!K_COLL)
            np.radians(
                0.002),  # Collimator tilt error in radians (sys.COL_ERR)
            0.0,  # Collimator tilt phi angle in radians (sys.COL_PHI)
            grating,  # DEIMOS grating object
            np.radians(2.752),  # Camera angle in radians (sys.CAM_ANG)
            np.pi / 2,  # Camera tilt phi angle in radians (sys.CAM_PHI)
            382.0,  # Camera focal length in mm (sys.CAM_FOC)
            DEIMOSCameraDistortion(
            ),  # Object used to apply/remove camera distortions
            np.radians(0.021),  # ICS rotation in radians (sys.MOS_ROT)
            [-0.234, -3.822
             ])  # Camera optical axis center in mm (sys.X_OPT,sys.Y_OPT)

        # Include tent mirror
        self.tent_theta = np.radians(
            71.5 - 0.5)  # Tent mirror theta angle (sys.TNT_ANG)
        self.tent_phi = np.radians(
            90. + 0.081)  # Tent mirror phi angle (sys.TNT_PHI)

        # TENT MIRROR: this mirror is OK to leave in del-theta,phi
        self.tent_reflection \
            = OpticalModel.get_reflection_transform(self.tent_theta, self.tent_phi)
Example #2
0
    def mask_coo_to_grating_input_vectors(self, x, y):
        """
        Propagate rays from the mask plane to the grating.

        Taken from xidl/DEEP2/spec2d/pro/model/pre_grating.pro

        Need to override parent class to add tent mirror reflection.
        """
        r = super(DEIMOSOpticalModel, self).mask_coo_to_grating_input_vectors(x, y)
        # Reflect off the tent mirror and return
        return OpticalModel.reflect(r, self.tent_reflection)