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

NXmpes liquidjet draft #27

Closed
wants to merge 7 commits into from
Closed

NXmpes liquidjet draft #27

wants to merge 7 commits into from

Conversation

domna
Copy link

@domna domna commented Mar 22, 2023

No description provided.

doc: This is the application definition for multidimensional photoelectron spectroscopy on liquids
category: application
NXmpes:
ENTRY(NXentry):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Writing ENTRY is not necessary. It is automatically inferred from writing (NXentry), i.e., there is always a conversion (NXsomething) -> SOMETHING(NXsomething) for groups.

definition:
\@version(NX_CHAR):
enumeration: ["NXmpes_liquid"]
INSTRUMENT(NXinstrument):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

INSTRUMENT may be remove, too

enumeration: ["NXmpes_liquid"]
INSTRUMENT(NXinstrument):
energy_resolution(NX_FLOAT):
SOURCE(NXsource):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove SOURCE, too

probe(NX_CHAR):
doc: "Type of probe. In photoemission it's always photons, so the full NIAC list is restricted."
enumeration: ["x-ray", "ultraviolet", "visible light"]
BEAM_PROBE(NXbeam):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a group with the name BEAM_PROBE, i.e., there may be fields written BEAM_PROBE[any_name]. Is this the intention or should it rather be a field named beam_probe? In this case it has to be written in lower case.

doc: "Incident polarization specified as a Stokes vector."
\@units(NX_CHAR):
doc: "The units for this observable are not included in the NIAC list. Responsibility on correct formatting and parsing is handed to the user by using ‘NX_ANY’. Correct parsing can still be implemented by using this attribute. Fill with: The unit unidata symbol if the unit has one (Example: ‘T’ for the unit of magnetic flux density tesla). The unit unidata name if the unit has a name (Example: ‘farad’ for capacitance). A string describing the units according to unidata unit operation notation, if the unit is a complex combination of named units and does not have a name. Example: for lightsource brilliance (SI) ‘1/(s.mm2.mrad2)’. Here: SI units are ‘V2/m2’."
ANALYZER(NXelectronanalyser):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here applies the same question as for beam_probe

slow_axes(NX_CHAR):
exists: optional
doc: "List of the axes that are acquired by scanning a physical parameter, listed in order of decreasing speed. See fast_axes for examples."
ANALYSER_LENS_SYSTEM(NXcollectioncolumn):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question as for beam_probe

exists: recommended
doc: "The space projected in the angularly dispersive directions, i.e. real or reciprocal."
enumeration: ["real", "reciprocal"]
ANALYSER_DISPERSIVE_ELEMENT(NXenergydispersion):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

->beam_probe

energy_scan_mode(NX_CHAR):
doc: "Way of scanning the energy axis (fixed or sweep)."
enumeration: ["fixed", "sweep"]
ENTRANCE_SLIT(NXaperture):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beam_probe

pass_energy(NX_FLOAT):
unit: NX_LENGTH
doc: "The relevant dimension for the aperture (slit width, pinhole diameter etc)."
ELECTRON_DETECTOR(NXdetector):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beam_probe

doc: "The vector in the direction of gravity."
\@depends_on(NX_CHAR):
doc: "Set to '.' to specify the normal vector to which all other vectors are related."
beam_axis(NX_NUMBER):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typically, in NeXus the McStas coordinate system is chosen. There, the beam_axis is always along the z-axis. What is the intention here to state it in the file?

enumeration: ["raw"]
raw(NX_NUMBER): # There is a block of numbers named raw.
doc: "Raw data before calibration."
GEOMETRY(NXtransformations):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The general idea of NXtransformations is different. It is intended as transformation matrices attached to an instrument part, i.e., the analyzer would have a transformation matrix attached to transform a coordinate system into its frame.

@domna
Copy link
Author

domna commented Apr 17, 2023

It looks pretty good already. There are a few points which need some work:

  • I think we can go in the direction of writing this as a sub-definition of NXmpes. We then only have to state additional fields and changes in this file. We denote this by the extends keyword on top of the file.
  • A group can be written shortly with (NXentry) instead of ENTRY(NXentry)
  • There are some groups (written in upper case), which I think should be written in lower case. Lower case means that there exists exactly one field with this exact name. Upper case means that there is a group with this name and the fields can be named arbitrarily.
  • The representation of NXtransformations is intended differently and there should be a transformation attached to the respective instrument part. I can assist you with doing appropriate changes in your example file to show to you how it works. Here is the documentation on NXtransformation which shows the idea.

@@ -98,119 +21,57 @@ NXmpes_liquid(NXmpes):
doc: "Is '.', since beam axis is assumed to be horizontal (perpendicular to gravity)."
\@transformation_type(NX_CHAR):
enumeration: ["rotation"]
\@units: NX_ANGLE
unit: NX_ANGLE
\@vector(NX_NUMBER):
rot_y(NX_NUMBER):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here the question is whether the users should have to follow a certain transformation chain. In principle they could use any chain they want here. Do you have a certain reason why it is better to demand this specific kind of transformation chain?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this can be open to the user and inherited from the MPES definition. From my POV, we do not require anything specific for defining the detection system / analyzer. However, if a flatjet is present, its orientation (surface normal) is defined with respect to the lens axis. However, I believe this is a similar situation with ARPES, where the surface normal is defined for sample rotation.

Also, this might change in the future, if people want to specify something like differential pumping stages / orifices, which are an integral component of liquid PES experiments as compared to UHV PES. For now, I don't see such a requirement, though.

@domna
Copy link
Author

domna commented Jun 8, 2023

@stthuermer The changes are very nice already. I tidied the definition up, because we now properly support using subdefinitions from NXmpes so we don't have to respecify what is there already. Please have a look if I did it correctly.

Other then that the transformations look good but the question is whether you really want to demand this exact transformation chain from the users or if you rather specify that transformations should be present by required a depends_on field in the appropriate groups.

@domna domna changed the title NXmpes XPS liquidjet draft NXmpes liquidjet draft Jul 4, 2023
@domna domna mentioned this pull request Aug 9, 2023
@domna domna mentioned this pull request Oct 24, 2023
4 tasks
@domna
Copy link
Author

domna commented Nov 3, 2023

Closed in favour of #104

@domna domna closed this Nov 3, 2023
@domna domna deleted the mpes-liquidjet branch January 15, 2024 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants