diff --git a/src/toolbox_scs/detectors/hrixs.py b/src/toolbox_scs/detectors/hrixs.py index 6282d85f15c4bd1d9721fc1e1793a48d12a3f825..daf5e84bceef0ef1b0804299f0a4cab0e667e001 100644 --- a/src/toolbox_scs/detectors/hrixs.py +++ b/src/toolbox_scs/detectors/hrixs.py @@ -341,9 +341,11 @@ class hRIXS: self.CURVE_B, self.CURVE_A, *_ = args return self.CURVE_A, self.CURVE_B - def centroid(self, data, bins=None): + def centroid(self, data, bins=None, return_hits=False): if bins is None: bins = self.BINS + hit_x = [] + hit_y = [] ret = np.zeros((len(data["hRIXS_det"]), bins)) for image, r in zip(data["hRIXS_det"], ret): c = centroid( @@ -353,7 +355,13 @@ class hRIXS: curvature=(self.CURVE_A, self.CURVE_B)) if not len(c): continue + rc = np.array(c) + + if return_hits: + hit_x.append(rc[:,0]) + hit_y.append(rc[:,1]) + hy, hx = np.histogram( rc[:, 0], bins=bins, range=(0, self.Y_RANGE.stop - self.Y_RANGE.start)) @@ -362,7 +370,10 @@ class hRIXS: data = data.assign_coords( energy=np.linspace(self.Y_RANGE.start, self.Y_RANGE.stop, bins) * self.ENERGY_SLOPE + self.ENERGY_INTERCEPT) - return data.assign(spectrum=(("trainId", "energy"), ret)) + if return_hits: + return data.assign(xhits=(("trainId"), hit_x), yhits=(("trainId"), hit_y)) + else: + return data.assign(spectrum=(("trainId", "energy"), ret)) def integrate(self, data): bins = self.Y_RANGE.stop - self.Y_RANGE.start