NXaperture and Slits¶
The actual NXaperture base class is far t0o complex for most of the apertures used at synchrotron facilities. Currently the most commonly used aperture types are
pinholes
2 or 4 blade slits.
From the current implementation of NXaperture it would be rather difficult to obtain relevant quantities like the size of the slit gap or the offsets of the gap. There are basically two ways how to face this problem
redesign NXaperture
or introduce new classes for more specific aperture types.
Which of them is appropriate for us should be the topic of this discussion.
Introducing new classes¶
Pinholes - NXpinhole¶
Pinholes are most
probably the simplest apertures available. The only parameter of
importance is the diameter of the pinhole and its position with respect
to the beam (as shown in the image). From this sketch one could easily
deduce a new class NXpinhole with the following parameters:
NXpinhole
diameter:NX_LENGTH
depends_on:NX_CHAR
The first parameter diameter describes the diameter of the pinhole while the depends_on references the last element of the chain of transformations to position the center of the pinhole.
Slits - NXslit¶
Two or four blade slits are the most common apertures used at
synchrotrons. In this example a 4-blade slit is shown. The most
important parameter for such a system is the size of the aperture
determined by the positions of the blades. A base class NXslit could
look like this
NXslit
x_gap:NX_LENGTH
y_gap:NX_LENGTH
depends_on:NX_CHAR
The gaps are given in the local reference frame of the slit system, which is defined by the transformation chain referenced by the depends_on field. The depends_on places the center of the slit assembly into the coordinate system. NXslit basically describes a rectangular aperture. The positions of the individual slit blades are not included in the definition of the base class.
What happens to NXaperture¶
The original NXaperture remains unchanged (for the sake of compatibility) and can still be used for all kind of more complex apertures which cannot be represented by the the new classes.