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)
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)