Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplified base class design for documenting aberrations #254

Merged
merged 6 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 82 additions & 1 deletion contributed_definitions/NXaberration_model.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,86 @@
<item value="nion"/>
</enumeration>
</field>
<group type="NXaberration"/>
<!--(NXaberration):-->
<!--specifically-named aberrations following the CEOS convention-->
<group name="c_1" type="NXaberration"/>
<group name="a_1" type="NXaberration"/>
<group name="b_2" type="NXaberration"/>
<group name="a_2" type="NXaberration"/>
<group name="c_3" type="NXaberration"/>
<group name="s_3" type="NXaberration"/>
<group name="a_3" type="NXaberration"/>
<!--based on feedback from Thilo Remmele the following aberrations could be measured
(enhanced mode, tilt angle > 30 mrad) but are not corrected-->
<group name="b_4" type="NXaberration"/>
<group name="d_4" type="NXaberration"/>
<group name="a_4" type="NXaberration"/>
<group name="c_5" type="NXaberration"/>
<group name="s_5" type="NXaberration"/>
<group name="r_5" type="NXaberration"/>
<group name="a_6" type="NXaberration"/>
<!--further comments from Thilo Remmele (Leibniz-Institut für Kristallzüchtung)
ThermoFisher uses CEOS correctors but makes customizations to these in their microscopes
Aberration naming schema: C_order_multiplicity (similar to NXem, but with
another coordinate system and in addition with a confidence entry.
Aberrations with multiplicity 0 have no angle entry (C1,C3,C5,.., CEOS notation)
contrast transferfuntion: ctf = e^(-i*Xi(g)) in Fourier space
aberration function:
Xi(g) = 2*pi/lamda{ 1/2 * (lamda*g)^2 (C20 + C22 cos[2(phi-phi_22)]
+1/3 * (lamda*g)^3 (C31 cos[(phi-phi_31) + C33 cos[3(phi-phi_33)
+1/4 * (lamda*g)^4 (C40 + C42 cos[2(phi-phi_42)] + C44 cos[4(phi-phi_42)]
+1/f * (lamda*g)^f Sum (Cfm cos[m(phi-phi_fm)] where m=[0,2,..f] for even f and m=[1,3,..,f] for odd f-->
<!--Thilo Remmele also mentions that there is a mapping of aberration coefficient names:
C_2_0 -> C1 Defocus
C_2_2 -> A1 2-fold astigmatism
C_3_3 -> A2 3-fold astigmatism
C_3_1 -> B2 axial coma
C_4_0 -> C3 spherical aberration
C_4_4 -> A3 4-fold astigmatism
C_4_2 -> S3 star aberration
C_5_5 -> A4 5-fold astigmatism-->
<!--C_5_1 -> B4 axial coma
C_5_3 -> D4 three lobe aberration
C_6_0 -> C5 spherical aberration
C_6_2 -> S5 star aberration
C_6_4 -> R5 rosette aberration
C_6_6 -> A5 6-fold astigmatism-->
<!--In a session with HRTEM images the corrector is commonly aligned.
The final measurement with the estimated residual aberrations
should be saved in a corrector.html file (an example is appended
at the end of this file. Unfortunately the datetime is not included
in that html output, nor is the used outer tilt angle and exposure time.
The datetime may be estimated from the file datetime and the Delta t entry,
but caution if that datetime is not preserved on file transfers!
More than one detector entry could occure but is not common.
A seperate corrector schema, so it can be easily exchanged to other correctors if necessary.
It might be useful to collect all the corrector entries in one table, for example to analyse the performance of the corrector.
The corrector entry of the nexus em definition lacks the confidence information and the
parameter settings for the estimation oft the aberrations.-->
<!--specifically-named aberrations following the Nion convention-->
<group name="c_1_0" type="NXaberration"/>
<group name="c_1_2_a" type="NXaberration"/>
<group name="c_1_2_b" type="NXaberration"/>
<group name="c_2_1_a" type="NXaberration"/>
<group name="c_2_1_b" type="NXaberration"/>
<group name="c_2_3_a" type="NXaberration"/>
<group name="c_2_3_b" type="NXaberration"/>
<group name="c_3_0" type="NXaberration"/>
<group name="c_3_2_a" type="NXaberration"/>
<group name="c_3_2_b" type="NXaberration"/>
<group name="c_3_4_a" type="NXaberration"/>
<group name="c_3_4_b" type="NXaberration"/>
<group name="c_4_1_a" type="NXaberration"/>
<group name="c_4_1_b" type="NXaberration"/>
<group name="c_4_3_a" type="NXaberration"/>
<group name="c_4_3_b" type="NXaberration"/>
<group name="c_4_5_a" type="NXaberration"/>
<group name="c_4_5_b" type="NXaberration"/>
<group name="c_5_0" type="NXaberration"/>
<group name="c_5_2_a" type="NXaberration"/>
<group name="c_5_2_b" type="NXaberration"/>
<group name="c_5_4_a" type="NXaberration"/>
<group name="c_5_4_b" type="NXaberration"/>
<group name="c_5_6_a" type="NXaberration"/>
<group name="c_5_6_b" type="NXaberration"/>
</definition>
92 changes: 0 additions & 92 deletions contributed_definitions/NXaberration_model_ceos.nxdl.xml

This file was deleted.

63 changes: 0 additions & 63 deletions contributed_definitions/NXaberration_model_nion.nxdl.xml

This file was deleted.

48 changes: 0 additions & 48 deletions contributed_definitions/NXaperture_em.nxdl.xml

This file was deleted.

10 changes: 5 additions & 5 deletions contributed_definitions/NXapm.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ NEW ISSUE: add section for propagation_delay(NXprocess) ?
NEW ISSUE: make recon an own subentry NXapm_reconstruction
NEW ISSUE: different algorithms used one could create a class for each reconstruction method
NEW ISSUE: make this rather an own subentry NXapm_ranging-->
<group name="initial_specimen" type="NXimage_r_set" recommended="true">
<group name="initial_specimen" type="NXimage_set" recommended="true">
<doc>
SEM or TEM image of the initial specimen i.e.
ideally taken prior to the data acquisition.
Expand All @@ -673,16 +673,16 @@ NEW ISSUE: make this rather an own subentry NXapm_ranging-->
<attribute name="signal" type="NX_CHAR"/>
<attribute name="axes" type="NX_CHAR"/>
<attribute name="AXISNAME_indices" type="NX_CHAR"/>
<field name="intensity" type="NX_NUMBER"/>
<field name="axis_y" type="NX_NUMBER">
<field name="real" type="NX_NUMBER"/>
<field name="axis_j" type="NX_NUMBER">
<dimensions rank="1">
<dim index="1" value="n_y"/>
<dim index="1" value="n_j"/>
</dimensions>
<attribute name="long_name" type="NX_CHAR"/>
</field>
<field name="axis_x" type="NX_NUMBER">
<dimensions rank="1">
<dim index="1" value="n_x"/>
<dim index="1" value="n_i"/>
</dimensions>
<attribute name="long_name" type="NX_CHAR"/>
</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#
# For further information, see http://www.nexusformat.org
-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcomponent_em" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcomponent" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<doc>
Base class for components of an instrument - real ones or a simulated ones.
</doc>
Expand Down
9 changes: 4 additions & 5 deletions contributed_definitions/NXcorrector_cs.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#
# For further information, see http://www.nexusformat.org
-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcorrector_cs" extends="NXcomponent_em" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcorrector_cs" extends="NXcomponent" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<symbols>
<doc>
The symbols used in the schema to specify e.g. dimensions of arrays.
Expand All @@ -43,7 +43,7 @@
and microscope. Many of their technical details is proprietary knowledge.

If functionalities for correcting multiple aberrations are included in
one :ref:`NXcomponent_em` `like it is reported here &lt;https://www.ceos-gmbh.de/en/research/electrostat&gt;`_
one :ref:`NXcomponent` `like it is reported here &lt;https://www.ceos-gmbh.de/en/research/electrostat&gt;`_
use multiple groups:

* :ref:`NXcorrector_cs` for spherical aberration
Expand Down Expand Up @@ -109,12 +109,11 @@
<doc>
Place for storing measured or estimated aberrations (for each image or final).
</doc>
<group name="ceos" type="NXaberration_model_ceos"/>
<group name="nion" type="NXaberration_model_nion"/>
<group type="NXaberration_model"/>
</group>
</group>
<!--technical design perspective-->
<group type="NXlens_em"/>
<group type="NXaperture_em"/>
<group type="NXaperture"/>
<!--(NXdeflector):-->
</definition>
6 changes: 3 additions & 3 deletions contributed_definitions/NXebeam_column.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
# For further information, see http://www.nexusformat.org
-->
<!--
NXebeam_column is an NXobject instead of an NXcomponent_em to make that
NXebeam_column is an NXobject instead of an NXcomponent to make that
part "an electron gun" reusable in other context-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXebeam_column" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<doc>
Expand Down Expand Up @@ -98,10 +98,10 @@ relevant from maintenance point of view-->
</group>
</group>
<group type="NXlens_em"/>
<group type="NXaperture_em"/>
<group type="NXaperture"/>
<group type="NXmonochromator"/>
<group type="NXcorrector_cs"/>
<group type="NXcomponent_em"/>
<group type="NXcomponent"/>
<group type="NXsensor"/>
<group type="NXactuator"/>
<group type="NXbeam">
Expand Down
Loading