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

Fairmat 2024: proposal on optical spectroscopy #1425

Open
wants to merge 1,156 commits into
base: main
Choose a base branch
from

Conversation

lukaspie
Copy link
Contributor

@lukaspie lukaspie commented Sep 24, 2024

The aim of this PR is to add a more detailed description of optical spectroscopy experiments, with a specific focus on Raman spectroscopy and ellipsometry.

The starting point are the NXellipsometry and NXopt application definitions that have been in the contributed definitions for > 1.5 years now. NXellipsometry was a specialization of NXopt, which from the start was intended to extend possibly in the future several other optical spectroscopy methods, such as photoluminescence, transmission or reflection spectroscopy, as there are various commonalities between those techniques.

Now, NXopt has been renamed to NXoptical_spectroscopy and has been enhanced quite a bit to be more inclusive for all kinds fo optical spectroscopy experiments. NXellipsometry is now inheriting from NXoptical_spectroscopy. In addition, NXraman was added, which is also a specialization of NXoptical_spectroscopy and meant to describe Raman spectroscopy data.

Summary of changes to NXoptical_spectroscopy (previously NXopt):

  • Adding of various default experimental metadata (start_time, end_time, experiment_identifier, experiment_description, experiment_type, experiment_sub_type)
  • Removal of restriction of via "symbols" /NX_measurement, NX_spectrum)
  • Adding the possibility to define coordinate frames via NXcoordinate_system(_set). Will enable description of sample, laboratory, beam, sample stage reference frames and more. This is based on Fairmat 2024: use NXcoordinate_system together with NXtransformations #1415.
  • instrument description (in NXoptical_spectroscopy/NXinstrument):
    • device_information(NXfabrication), software_TYPE(NXprogram)
    • angle_reference_frame - to describe either beam or sample-centered reference frames
    • Description of device calibration
    • Specialization of NXbeam, with respect to used terms and properties within optical spectroscopy setups
    • Angles of incidence and detection, as generic description of setup geometry
  • Some changes for NXsample in NXoptical_spectroscopy, to be more in line with the NXsample base class. Also a sample history and sample environment and other sample metadata
  • A method to describe the calibration of measurement data
  • Also adding a sample stage, sensors and actuators to describe a variety of different experiment types

To describe optical spectroscopy experiments, several base classes are used (these are either completely new or have been in contributed before:

  • NXlens_opt: description of a lens or objective in an optical setup
  • NXwaveplate: half or quater wave plate
  • generic polariation and spectral filters, NXoptical_window
  • A rework of "NXbeam_path" - This is now extended significantly and generalized enough to be used for other techniques. This was done by including:
    • NXbeam_device:
      • This concept is connected to a specific device of the setup (Lens, Filter, Mirror, Sample, Source, Detector, etc.) via @device. The field previous_device clearly defines a list of (possibly multiple) devices, from which a photon beam came, as it arrived at @device.
      • In this way, a directed graph can be created, if this characteristic is defined for all elements of the optical spectroscopy setup. Given all detectors as "end-points" of the photon beam, the directed graph can be tracked backwards to identify all possible beam paths. This is especially of relevance if beam splitters are present - or especially in a Mach-Zender interferometer.
      • This way, the optical spectroscopy setup can be visualized (especially via spatial coordinates via NXtransformations).
    • Via NXbeam_transfer_matrix_table, properties of the beam along all beam paths can be calculated. NXbeam_transfer_matrix_table defines specific concepts and a large matrix with submatricies, for the respective models to describe the parameters of interest.

Due to the large extensions and changes in NXoptical_spectroscopy, the respective NXraman definition is quite short. It contains some general experiment metadata and a description of the scattering configuration.

atomprobe-tc and others added 30 commits July 4, 2024 15:36
…or_circuits

Cleaned the too many base classes for circuits and cleaned base classes for describing a computer
Make geometries and sourceTYPE recommended in NXxps
…NXms with NXmicrostructure to avoid confusing the symbol convention with mass spectrometry as the abbreviation NXms may suggest
…con and eventually make this NXmicrostructure
lukaspie and others added 24 commits September 17, 2024 17:51
black code style
… contributed but implicitly as a dependency of NXem, NXem_ebsd, NXem_img proposed for voting and acceptance
black formatting

isort dev_tools
remove classes from contributed that have been moved to base_classes
@lukaspie lukaspie marked this pull request as ready for review September 24, 2024 09:07
@lukaspie lukaspie linked an issue Sep 29, 2024 that may be closed by this pull request
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.

NXoptical_spectroscopy
7 participants