# 3.2.1.2. 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.

- ISO8601
ISO8601 date/time stamp

- 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).

- NX_DATE_TIME
alias for the ISO8601 date/time stamp

- 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):

`m`

- 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`

- units of emittance (

- 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):

`m3`

- NX_WAVELENGTH
units of wavelength, example(s):

`angstrom`

- NX_WAVENUMBER
units of wavenumber or Q, example(s):

`1/nm`

|`1/angstrom`