def inv(self, rad, vec): rad = Planck.parse_channel(rad) l.info('Rotating to detector %s' % rad) if self.deaberration: l.warning('Applying deaberration correction') vec -= correction.simple_deaberration(vec, self.obt, self.coord) qarray.norm_inplace(vec) vec_rad = qarray.rotate(qarray.inv(self.qsatgal_interp), vec) invsiam = np.linalg.inv(self.siam.get(rad)) #invsiamquat = qarray.inv(qarray.norm(qarray.from_rotmat(self.siam.get(rad)))) #qarray.rotate(invsiamquat, vec_rad) return np.array([np.dot(invsiam , row) for row in vec_rad])
def get(self, rad): rad = Planck.parse_channel(rad) l.info('Rotating to detector %s' % rad) x = np.dot(self.siam.get(rad),[1, 0, 0]) vec = qarray.rotate(self.qsatgal_interp, x) qarray.norm_inplace(vec) if self.deaberration: l.warning('Applying deaberration correction') vec += correction.simple_deaberration(vec, self.obt, self.coord) qarray.norm_inplace(vec) l.info('Rotated to detector %s' % rad) return vec