NXDL Field Types and Units

Field Types allowed in NXDL specifications

Field types for use in NXDL describe the expected type of data for a NeXus field. These terms are very broad. More specific terms are used in actual NeXus data files that describe size and array dimensions. In addition to the types in the following table, the NAPI type is defined when one wishes to permit a field with any of these data types. The default type NX_CHAR is applied in cases where a field or attribute is defined in an NXDL specification without explicit assignment of a type.

ISO8601

ISO8601 date/time stamp. It is recommended to add an explicit time zone, otherwise the local time zone is assumed per ISO8601. The norm is that if there is no time zone, it is assumed local time, however, when a file moves from one country to another it is undefined. If the local time zone is written, the ambiguity is gone.

NX_BINARY

any representation of binary data - if text, line terminator is [CR][LF]

NX_BOOLEAN

true/false value ( true | 1 | false | 0 )

NX_CHAR

The preferred string representation is UTF-8. Both fixed-length strings and variable-length strings are valid. String arrays cannot be used where only a string is expected (title, start_time, end_time, NX_class attribute,…). Fields or attributes requiring the use of string arrays will be clearly marked as such (like the NXdata attribute auxiliary_signals). This is the default field type.

NX_DATE_TIME

Alias for the ISO8601 date/time stamp. It is recommended to add an explicit time zone, otherwise the local time zone is assumed per ISO8601.

NX_FLOAT

any representation of a floating point number

NX_INT

any representation of an integer number

NX_NUMBER

any valid NeXus number representation

NX_POSINT

any representation of a positive integer number (greater than zero)

NX_UINT

any representation of an unsigned integer number (includes zero)

Unit Categories allowed in NXDL specifications

Unit categories in NXDL specifications describe the expected type of units for a NeXus field. They should describe valid units consistent with the NeXus units section. The values for unit categories are restricted (by an enumeration) to the following table.

NX_ANGLE

units of angle, example(s): rad

NX_ANY

units for things like logs that aren’t picky on units

NX_AREA

units of area, example(s): m^2 | barns

NX_CHARGE

units of electrical charge, example(s): C

NX_CROSS_SECTION

units of area (alias of NX_AREA), example(s): barn

NX_CURRENT

units of electrical current, example(s): A

NX_DIMENSIONLESS
units for fields where the units cancel out

(NOTE: not the same as NX_UNITLESS), example(s): m/m

NX_EMITTANCE
units of emittance (length * angle) of a

radiation source, example(s): nm*rad

NX_ENERGY

units of energy, example(s): J | keV

NX_FLUX

units of flux, example(s): 1/s/cm^2

NX_FREQUENCY

units of frequency, example(s): Hz

NX_LENGTH

units of length, example(s): m

NX_MASS

units of mass, example(s): g

NX_MASS_DENSITY

units of mass density, example(s): g/cm^3

NX_MOLECULAR_WEIGHT

units of molecular weight, example(s): g/mol

NX_PERIOD
units of time, period of pulsed source

(alias to NX_TIME), example(s): us

NX_PER_AREA

units of 1/length^2, example(s): 1/m^2

NX_PER_LENGTH

units of 1/length, example(s): 1/m

NX_POWER

units of power, example(s): W

NX_PRESSURE

units of pressure, example(s): Pa

NX_PULSES

units of clock pulses (alias to NX_NUMBER)

NX_SCATTERING_LENGTH_DENSITY

units of scattering length density, example(s): m/m^3

NX_SOLID_ANGLE

units of solid angle, example(s): sr | steradian

NX_TEMPERATURE

units of temperature, example(s): K

NX_TIME

units of time, example(s): s

NX_TIME_OF_FLIGHT
units of (neutron) time of flight

(alias to NX_TIME), example(s): s

NX_TRANSFORMATION

units of the specified transformation

could be any of these: NX_LENGTH, NX_ANGLE, or NX_UNITLESS

There will be one or more transformations defined by one or more fields for each transformation. The units type NX_TRANSFORMATION designates the particular axis generating a transformation (e.g. a rotation axis or a translation axis or a general axis). NX_TRANSFORMATION designates the units will be appropriate to the type of transformation, indicated in the NXtransformations base class by the transformation_type value:

  • NX_LENGTH for translation

  • NX_ANGLE for rotation

  • NX_UNITLESS for axes for which no transformation type is specified.

NX_UNITLESS
for fields that don’t have a unit (e.g. hkl) so that they don’t

inherit the wrong units (NOTE: not the same as NX_DIMENSIONLESS), example(s): ""

NX_VOLTAGE

units of voltage, example(s): V

NX_VOLUME

units of volume, example(s): m^3

NX_WAVELENGTH

units of wavelength, example(s): angstrom

NX_WAVENUMBER

units of wavenumber or Q, example(s): 1/nm | 1/angstrom