application definition, extends NXobject


This is the application definition for x-ray or neutron tomography raw data.

In tomography a number of dark field images are measured, some bright field images and, of course the sample. In order to distinguish between them images carry a image_key.


These symbols will be used below to coordinate datasets with the same shape.

nFrames: Number of frames

xSize: Number of pixels in X direction

ySize: Number of pixels in Y direction

Groups cited:

NXdata, NXdetector, NXentry, NXinstrument, NXmonitor, NXsample, NXsource


entry: (required) NXentry

title: (optional) NX_CHAR

start_time: (optional) NX_DATE_TIME

end_time: (optional) NX_DATE_TIME

definition: (required) NX_CHAR

Official NeXus NXDL schema to which this file conforms

Obligatory value: NXtomo

instrument: (required) NXinstrument

SOURCE: (optional) NXsource

type: (optional) NX_CHAR

name: (optional) NX_CHAR

probe: (optional) NX_CHAR

Any of these values: neutron | x-ray | electron

detector: (required) NXdetector

data: (required) NX_INT (Rank: 3, Dimensions: [nFrames, xSize, ySize])

image_key: (required) NX_INT (Rank: 1, Dimensions: [nFrames])

In order to distinguish between sample projections, dark and flat images, a magic number is recorded per frame. The key is as follows:

  • projection = 0

  • flat field = 1

  • dark field = 2

  • invalid = 3

x_pixel_size: (optional) NX_FLOAT {units=NX_LENGTH}

y_pixel_size: (optional) NX_FLOAT {units=NX_LENGTH}

distance: (optional) NX_FLOAT {units=NX_LENGTH}

Distance between detector and sample

x_rotation_axis_pixel_position: (optional) NX_FLOAT

y_rotation_axis_pixel_position: (optional) NX_FLOAT

sample: (required) NXsample

name: (required) NX_CHAR

Descriptive name of sample

rotation_angle: (required) NX_FLOAT (Rank: 1, Dimensions: [nFrames]) {units=NX_ANGLE}

In practice this axis is always aligned along one pixel direction on the detector and usually vertical. There are experiments with horizontal rotation axes, so this would need to be indicated somehow. For now the best way for that is an open question.

x_translation: (optional) NX_FLOAT (Rank: 1, Dimensions: [nFrames]) {units=NX_LENGTH}

y_translation: (optional) NX_FLOAT (Rank: 1, Dimensions: [nFrames]) {units=NX_LENGTH}

z_translation: (optional) NX_FLOAT (Rank: 1, Dimensions: [nFrames]) {units=NX_LENGTH}

control: (optional) NXmonitor

data: (required) NX_FLOAT (Rank: 1, Dimensions: [nFrames]) {units=NX_ANY}

Total integral monitor counts for each measured frame. Allows a to correction for fluctuations in the beam between frames.

data: (required) NXdata

data: link (suggested target: /NXentry/NXinstrument/detector:NXdetector/data)

rotation_angle: link (suggested target: /NXentry/NXsample/rotation_angle)

image_key: link (suggested target: /NXentry/NXinstrument/detector:NXdetector/image_key)

Hypertext Anchors

List of hypertext anchors for all groups, fields, attributes, and links defined in this class.

NXDL Source: