.. auto-generated by dev_tools.docs.nxdl from the NXDL source contributed_definitions/NXcoordinate_system_set.nxdl.xml -- DO NOT EDIT .. index:: ! NXcoordinate_system_set (base class) ! coordinate_system_set (base class) see: coordinate_system_set (base class); NXcoordinate_system_set .. _NXcoordinate_system_set: ======================= NXcoordinate_system_set ======================= **Status**: base class, extends :ref:`NXobject` **Description**: .. collapse:: Base class to hold different coordinate systems and representation conversions. ... Base class to hold different coordinate systems and representation conversions. How many nodes of type :ref:`NXcoordinate_system_set` should be used in an application definition? * 0; if there is no instance of :ref:`NXcoordinate_system_set` and therein or elsewhere across the application definition, an instance of NXcoordinate_system is defined, the default NeXus `McStas `_ coordinate system is assumed. This makes :ref:`NXcoordinate_system_set` and NXcoordinate_system base classes backwards compatible to older NeXus conventions and classes. * 1; if only one :ref:`NXcoordinate_system_set` is defined, it should be placed as high up in the node hierarchy (ideally right below an instance of NXentry) of the application definition tree as possible. This :ref:`NXcoordinate_system_set` should define at least one NXcoordinate_system instance. This shall be named such that it is clear how this coordinate system is typically referred to in a community. For the NeXus `McStas coordinate system, it is advised to call it mcstas for the sake of improved clarity. Additional NXcoordinate_system instances should be specified if possible in that same :ref:`NXcoordinate_system_set` instead of cluttering them across the tree. If this is the case, it is assumed that the NXcoordinate_system_members overwrite the NeXus default McStas coordinate system, i.e. users can thereby conveniently and explicitly specify the coordinate system(s) that they wish to use. Users are encouraged to write also explicit and clean depends_on fields in all groups that encode information about where the interpretation of coordinate systems is relevant. If these depends_on hints are not provided, it is automatically assumed that all children (to arbitrary depth) of that branch and sub-branches below the one in which that :ref:`NXcoordinate_system_set` is defined use either the only NXcoordinate_system_set instance in that set or the application definition is considered underconstrained which should at all costs be avoided and in which case again McStas is assumed. * 2 and more; as soon as more than one :ref:`NXcoordinate_system_set` is specified somewhere in the tree, different interpretations are possible as to which of these coordinate system sets and instances apply or take preference. We realize that such ambiguities should at all costs be avoided. However, the opportunity for multiple sets and their instances enables to have branch-specific coordinate system conventions which could especially be useful for deep classes where multiple scientific methods are combined or cases where having a definition of global translation and conversion tables how to convert between representations in different coordinate systems is not desired or available for now. We argue that having 2 or more :ref:`NXcoordinate_system_set` instances and respective NXcoordinate_system instances makes the interpretation eventually unnecessary complicated. Instead, developers of application definitions should always try to work for clarity and thus use only one top-level coordinate system set. For these reasons we conclude that the option with one top-level :ref:`NXcoordinate_system_set` instance is the preferred choice. McStas is used if neither an instance of :ref:`NXcoordinate_system_set` nor an instance of NXcoordinate_system is specified. However, even in this case it is better to be explicit like for every other coordinate system definition to support users with interpreting the content and logic behind every instance of the tree. How to store coordinate systems inside :ref:`NXcoordinate_system_set`? Individual coordinate systems should be specified as members of the :ref:`NXcoordinate_system_set` instance using instances of NXcoordinate_system. How many individual instances of NXcoordinate_system to allow within one instance of :ref:`NXcoordinate_system_set`? * 0; This case should be avoided for the sake of clarity but this case could mean the authors of the definition meant that McStas is used. We conclude, McStas is used in this case. * 1; Like above-mentioned this case has the advantage that it is explicit and faces no ambiguities. However, in reality typically multiple coordinate systems have to be mastered especially for complex multi-signal modality experiments. * 2 or more; If this case is realized, the best practice is that in every case where a coordinate system should be referred to the respective class has a depends_on field which resolves the possible ambiguities which specific coordinate systems is referred to. The benefit of this explicit and clear specifying of the coordinate system used in every case is that especially in combination with having coordinate systems inside deeper branches makes up for a very versatile, backwards compatible, but powerful system to express different types of coordinate systems using NeXus. In the case of two or more instances of NXcoordinate_system in one :ref:`NXcoordinate_system_set`, it is also advised to specify the relationship between the two coordinate systems by using the (NXtransformations) group within NXcoordinate_system. In effect, 1 should be the preferred choice. However, if more than one coordinate system is defined for practical purposes, explicit depends_on fields should always guide the user for each group and field which of the coordinate system one refers to. **Symbols**: No symbol table **Groups cited**: :ref:`NXcoordinate_system` .. index:: NXcoordinate_system (base class); used in base class **Structure**: .. _/NXcoordinate_system_set/COORDINATE_SYSTEM-group: **COORDINATE_SYSTEM**: (optional) :ref:`NXcoordinate_system` Hypertext Anchors ----------------- List of hypertext anchors for all groups, fields, attributes, and links defined in this class. * :ref:`/NXcoordinate_system_set/COORDINATE_SYSTEM-group ` **NXDL Source**: https://github.com/FAIRmat-NFDI/nexus_definitions/tree/fairmat/contributed_definitions/NXcoordinate_system_set.nxdl.xml