def _make_counts(emin, emax):
def _counts(field, data):
e = data["event_energy"].in_units("keV")
mask = np.logical_and(e >= emin, e < emax)
x = data["event_x"][mask]
y = data["event_y"][mask]
z = np.ones(x.shape)
pos = np.array([x,y,z]).transpose()
img = data.deposit(pos, method="count")
if data.has_field_parameter("sigma"):
sigma = data.get_field_parameter("sigma")
else:
sigma = None
if sigma is not None and sigma > 0.0:
kern = _astropy.conv.Gaussian2DKernel(stddev=sigma)
img[:,:,0] = _astropy.conv.convolve(img[:,:,0], kern)
return data.ds.arr(img, "counts/pixel")
return _counts
评论列表
文章目录