diff --git a/FastCCD.py b/FastCCD.py index 1b8ca489f6e82dd39aafa73f7a9e236d54133cb1..6d4b2a1bde2552ecb3509e026c004415074ac197 100644 --- a/FastCCD.py +++ b/FastCCD.py @@ -496,7 +496,7 @@ class FastCCD: im_pumped_mean = im_pumped_arranged.mean(axis=0) im_unpumped_mean = im_unpumped_arranged.mean(axis=0) - ai = tb.azimuthal_integrator(im_pumped_mean.shape, center, angle_range, dr=dr) + ai = tb.azimuthal_integrator(im_pumped_mean.shape, center, angle_range, dr=dr, aspect=1) norm = ai(~np.isnan(im_pumped_mean)) az_pump = [] diff --git a/azimuthal_integrator.py b/azimuthal_integrator.py index e064a392c2aaf497a365b17a25b3df5461c1f753..b84df6c347c9445e713d53234562857f29098135 100644 --- a/azimuthal_integrator.py +++ b/azimuthal_integrator.py @@ -1,7 +1,7 @@ import numpy as np class azimuthal_integrator(object): - def __init__(self, imageshape, center, polar_range, dr=2): + def __init__(self, imageshape, center, polar_range, dr=2, aspect=204/236): ''' Create a reusable integrator for repeated azimuthal integration of similar images. Calculates array indices for a given parameter set that allows @@ -21,6 +21,9 @@ class azimuthal_integrator(object): dr : int, default 2 radial width of the integration slices. Takes non-square DSSC pixels into account. + aspect: float, default 204/236 for DSSC + aspect ratio of the pixel pitch + Returns ======= ai : azimuthal_integrator instance @@ -39,7 +42,7 @@ class azimuthal_integrator(object): ycoord -= cy # distance from center, hexagonal pixel shape taken into account - dist_array = np.hypot(xcoord * 204 / 236, ycoord) + dist_array = np.hypot(xcoord * aspect, ycoord) # array of polar angles if np.abs(polar_range[1]-polar_range[0]) > 180: @@ -53,7 +56,7 @@ class azimuthal_integrator(object): polar_array = np.mod(polar_array, np.pi) self.polar_mask = (polar_array > tmin) * (polar_array < tmax) - self.maxdist = min(sx - cx, sy - cy) + self.maxdist = max(sx - cx, sy - cy) ix, iy = np.indices(dimensions=(sx, sy)) self.index_array = np.ravel_multi_index((ix, iy), (sx, sy))