Skip to content
Snippets Groups Projects
Commit 5a42d5bf authored by David Hammer's avatar David Hammer
Browse files

Including the individual geometry devices

Wow, I guess this was a slight oversight
parent da983bbe
No related branches found
No related tags found
1 merge request!12Snapshot: field test deployed version as of end of run 202201
import extra_geom
from ..base_geometry import ManualQuadrantsGeometryBase, make_quadrant_corners_node
class Agipd1MGeometry(ManualQuadrantsGeometryBase):
geometry_class = extra_geom.AGIPD_1MGeometry
quadrantCorners = make_quadrant_corners_node(
[
(-525, 625),
(-550, -10),
(520, -160),
(542.5, 475),
]
)
import extra_geom
from ..base_geometry import ManualQuadrantsGeometryBase, make_quadrant_corners_node
class Dssc1MGeometry(ManualQuadrantsGeometryBase):
geometry_class = extra_geom.DSSC_1MGeometry
quadrantCorners = make_quadrant_corners_node(
[
(-130, 5),
(-130, -125),
(5, -125),
(5, 5),
]
)
import extra_geom
import numpy as np
from karabo.middlelayer import Hash
from ..base_geometry import ManualModuleListGeometryBase, make_manual_module_list_node
class JungfrauGeometry(ManualModuleListGeometryBase):
geometry_class = extra_geom.JUNGFRAUGeometry
moduleList = make_manual_module_list_node(
[
Hash("posX", x, "posY", y, "orientX", ox, "orientY", oy)
for (x, y, ox, oy) in [
(95, 564, -1, -1),
(95, 17, -1, -1),
(95, -530, -1, -1),
(95, -1077, -1, -1),
(-1125, -1078, 1, 1),
(-1125, -531, 1, 1),
(-1125, 16, 1, 1),
(-1125, 563, 1, 1),
]
]
)
def _update_manual_from_current(self):
self.moduleList.modules = [
self._guess_offset_and_orientation(module)
for module in self.geometry.modules
]
def _guess_offset_and_orientation(self, module, asic_gap=2):
# note: if this generalizes, make classmethod of ManualModuleListGeometryBase
# Working backwards from from_module_positions from detectors.py in extra_geom
corners = np.asarray([tile.corner_pos for tile in module])
row_1 = corners[0:4]
row_2 = corners[4:8]
horizontal_diff = np.diff([row_1[:, 0], row_2[:, 0]])
vertical_diff = np.diff([row_1[:, 1], row_2[:, 1]], axis=0)
if np.all(horizontal_diff > 0):
x_orientation = 1
else:
# TODO: maybe warn if also not all < 0
x_orientation = -1
if np.all(vertical_diff > 0):
y_orientation = 1
else:
y_orientation = -1
corner = module[0].corner_pos
module_width = (4 * self.geometry_class.frag_fs_pixels) + (3 * asic_gap)
module_height = (2 * self.geometry_class.frag_ss_pixels) + asic_gap
corner_x = corner[0] / self.geometry_class.pixel_size - (
module_width if x_orientation == -1 else 0
)
corner_y = corner[1] / self.geometry_class.pixel_size - (
module_height if y_orientation == -1 else 0
)
return (corner_x, corner_y, x_orientation, y_orientation)
import extra_geom
from ..base_geometry import ManualQuadrantsGeometryBase, make_quadrant_corners_node
class Lpd1MGeometry(ManualQuadrantsGeometryBase):
geometry_class = extra_geom.LPD_1MGeometry
quadrantCorners = make_quadrant_corners_node(
[
(11.4, 299),
(-11.5, 8),
(254.5, -16),
(278.5, 275),
]
)
from . import Agipd1MGeometry, Dssc1MGeometry, Lpd1MGeometry, JungfrauGeometry
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment