def _get_detector_layout(self, ngrids, nep, fknee, fslope, ncorr, tau): shape, vertex, removed, index, quadrant, efficiency = \ self.calibration.get('detarray') if ngrids == 2: shape = (2,) + shape vertex = np.array([vertex, vertex]) removed = np.array([removed, removed]) index = np.array([index, index + np.max(index) + 1], index.dtype) quadrant = np.array([quadrant, quadrant + 4], quadrant.dtype) efficiency = np.array([efficiency, efficiency]) focal_length = self.calibration.get('optics')['focal length'] vertex = np.concatenate( [vertex, np.full_like(vertex[..., :1], -focal_length)], -1) def theta(self): return np.arctan2( np.sqrt(np.sum(self.center[..., :2]**2, axis=-1)), self.center[..., 2]) def phi(self): return np.arctan2(self.center[..., 1], self.center[..., 0]) layout = Layout( shape, vertex=vertex, selection=~removed, ordering=index, quadrant=quadrant, nep=nep, fknee=fknee, fslope=fslope, tau=tau, theta=theta, phi=phi, efficiency=efficiency) # assume all detectors have the same area layout.area = surface_simple_polygon(layout.vertex[0, :, :2]) layout.ncorr = ncorr layout.ngrids = ngrids return layout
def _get_detector_layout(self, ngrids, nep, fknee, fslope, ncorr, tau): shape, vertex, removed, index, quadrant, efficiency = \ self.calibration.get('detarray') if ngrids == 2: shape = (2,) + shape vertex = np.array([vertex, vertex]) removed = np.array([removed, removed]) index = np.array([index, index + np.max(index) + 1], index.dtype) quadrant = np.array([quadrant, quadrant + 4], quadrant.dtype) efficiency = np.array([efficiency, efficiency]) focal_length = self.calibration.get('optics')['focal length'] vertex = np.concatenate([vertex, np.full_like(vertex[..., :1], -focal_length)], -1) def theta(self): return np.arctan2( np.sqrt(np.sum(self.center[..., :2]**2, axis=-1)), self.center[..., 2]) def phi(self): return np.arctan2(self.center[..., 1], self.center[..., 0]) layout = Layout( shape, vertex=vertex, selection=~removed, ordering=index, quadrant=quadrant, nep=nep, fknee=fknee, fslope=fslope, tau=tau, theta=theta, phi=phi, efficiency=efficiency) # assume all detectors have the same area layout.area = surface_simple_polygon(layout.vertex[0, :, :2]) layout.ncorr = ncorr layout.ngrids = ngrids return layout
def func(r, n, e): polygon = create_regular_polygon(n, r, center=origin) assert_same(surface_simple_polygon(polygon), e * r**2) out = np.empty(np.shape(r)) surface_simple_polygon(polygon, out=out) assert_same(out, e * r**2)