added sanity check for overlapping module coordinates

This commit is contained in:
2022-06-26 15:38:02 +02:00
parent 4db7b8c008
commit caa81ceebe
+22 -3
View File
@@ -12,10 +12,16 @@ def get_module_coords(name):
try:
g = detector_geometry[name]
except KeyError:
n = parse_jf_name(name)["T"]
return square_grid_coords(n)
pass
else:
return jf_geom_coords(g)
try:
return jf_geom_coords(g)
except ValueError:
pass
print("fall back to squared grid for", name)
n = parse_jf_name(name)["T"]
return square_grid_coords(n)
def parse_jf_name(n):
@@ -71,6 +77,8 @@ def jf_geom_coords(geom):
# nys = len(set(ys))
coords = dict(enumerate(zip(xs, ys)))
sanity_check(coords)
return coords
@@ -96,6 +104,17 @@ def map_pixels(vs):
def sanity_check(coords):
if not check_all_unique(coords.values()):
raise ValueError("found duplicates in coords")
def check_all_unique(l):
l = sorted(l)
s = sorted(set(l))
return s == l
if __name__ == "__main__":