LPD geometry

LPD-1M

The LPD-1M detector, used in FXE, consists of 16 supermodules of 256×256 pixels each. Each module is divided into 16 tiles.

[1]:
%matplotlib inline
from extra_geom import LPD_1MGeometry

We can generate a simple geometry from (x, y) coordinates of the top, beam-left (left looking along the beam) corner of each quadrant:

[2]:
quadpos = [(11.4, 299), (-11.5, 8), (254.5, -16), (278.5, 275)]  # in mm
geom = LPD_1MGeometry.from_quad_positions(quadpos)
geom.inspect()
[2]:
<AxesSubplot: title={'center': 'LPD-1M detector geometry (No file)'}, xlabel='pixels', ylabel='pixels'>
_images/lpd_geometry_3_1.png

We can also load geometry information within each quadrant from an EuXFEL HDF5 geometry file. These files do not store the quadrant positions, so we need to use it along with the quadrant positions, in the same format as above.

[3]:
# From March 18; converted to XFEL standard coordinate directions
geom2 = LPD_1MGeometry.from_h5_file_and_quad_positions('lpd_mar_18_axesfixed.h5', quadpos)
geom2.inspect()
[3]:
<AxesSubplot: title={'center': 'LPD-1M detector geometry (lpd_mar_18_axesfixed.h5)'}, xlabel='pixels', ylabel='pixels'>
_images/lpd_geometry_5_1.png

Q2M2 was missing and not measured for this geometry file, so there’s a gap at the bottom right. In fact, all of the tiles for this module have ended up overlapped inside Q2M4.

The code above creates a geometry object for LPD-1M. See these examples for how to use a geometry object:

LPD-Mini geometry

The LPD-Mini detector, used in FXE, can have one or more modules, each with 64×128 pixels across 2 tiles.

[4]:
%matplotlib inline
from extra_geom import LPD_MiniGeometry

We can generate a simple geometry from (x, y) coordinates of the bottom, beam-left (left looking along the beam) corner, for one module or several:

[5]:
geom = LPD_MiniGeometry.from_module_positions([(0, 0)])
ax = geom.inspect(axis_units='m')
ax.set_aspect(1.)
_images/lpd_geometry_11_0.png

We can also specify that modules are rotated around the reference corner:

[6]:
geom = LPD_MiniGeometry.from_module_positions([(0, 0), (0, -70)], rotations=[90, 90])
ax = geom.inspect()
ax.set_aspect(1)
_images/lpd_geometry_13_0.png

The code above creates a geometry object for the LPD Mini. See these examples for how to use a geometry object: