diff --git a/applications/NXmx.nxdl.xml b/applications/NXmx.nxdl.xml
index 02ec76cbbe..dab8e0b9af 100644
--- a/applications/NXmx.nxdl.xml
+++ b/applications/NXmx.nxdl.xml
@@ -764,6 +764,19 @@
plate, CMOS, ...
+
+
+
+ Group containing the description and metadata for a single channel from a multi-channel
+ detector.
+
+ Given an :ref:`NXdata` group linked as part of an NXdetector group that has an axis with
+ named channels (see the example in :ref:`NXdata </NXdata@default_slice-attribute>`),
+ the NXdetector will have a series of NXdetector_channel groups, one for each channel,
+ named CHANNELNAME_channel.
+
+
+
diff --git a/base_classes/NXdetector.nxdl.xml b/base_classes/NXdetector.nxdl.xml
index a6bb0b8c68..aee91bd13b 100644
--- a/base_classes/NXdetector.nxdl.xml
+++ b/base_classes/NXdetector.nxdl.xml
@@ -421,6 +421,18 @@
+
+
+ Group containing the description and metadata for a single channel from a multi-channel
+ detector.
+
+ Given an :ref:`NXdata` group linked as part of an NXdetector group that has an axis with
+ named channels (see the example in :ref:`NXdata </NXdata@default_slice-attribute>`),
+ the NXdetector will have a series of NXdetector_channel groups, one for each channel,
+ named CHANNELNAME_channel.
+
+
+
Spectral efficiency of detector with respect to e.g. wavelength
diff --git a/base_classes/NXdetector_channel.nxdl.xml b/base_classes/NXdetector_channel.nxdl.xml
new file mode 100644
index 0000000000..8cfc2ca87a
--- /dev/null
+++ b/base_classes/NXdetector_channel.nxdl.xml
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+ These symbols will be used below to illustrate the coordination of the rank and sizes of datasets and the
+ preferred ordering of the dimensions. Each of these are optional (so the rank of the datasets
+ will vary according to the situation) and the general ordering principle is slowest to fastest.
+ The type of each dimension should follow the order of scan points, detector output (e.g. pixels),
+ then time-of-flight (i.e. spectroscopy, spectrometry). Note that the output of a detector is not limited
+ to single values (0D), lists (1D) and images (2D), but three or higher dimensional arrays can be produced
+ by a detector at each trigger.
+
+
+ Rank of the ``data`` field associated with this detector
+ number of scan points
+ number of detector pixels in the slowest direction
+ number of detector pixels in the second slowest direction
+ number of detector pixels in the third slowest direction
+
+
+
+ Description and metadata for a single channel from a multi-channel detector.
+
+ Given an :ref:`NXdata` group linked as part of an NXdetector group that has an axis with named channels (see the
+ example in :ref:`NXdata </NXdata@default_slice-attribute>`), the NXdetector will have a series of NXdetector_channel groups, one for each
+ channel, named CHANNELNAME_channel.
+
+ Example, given these axes in the NXdata group::
+
+ @axes = ["image_id", "channel", ".", "."]
+
+ And this list of channels in the NXdata group::
+
+ channel = ["threshold_1", "threshold_2", "difference"]
+
+ The NXdetector group would have three NXdetector_channel groups::
+
+ detector:NXdetector
+ ...
+ threshold_1_channel:NXdetector_channel
+ threshold_energy = float
+ flatfield = float[i, j]
+ pixel_mask = uint[i, j]
+ flatfield_applied = bool
+ pixel_mask_applied = bool
+ threshold_2_channel:NXdetector_channel
+ threshold_energy = float
+ flatfield = float[i, j]
+ pixel_mask = uint[i, j]
+ flatfield_applied = bool
+ pixel_mask_applied = bool
+ difference_channel:NXdetector_channel
+ threshold_energy = float[2]
+
+
+
+ Energy at which a photon will be recorded
+
+
+
+
+ True when the flat field correction has been applied in the
+ electronics, false otherwise.
+
+
+
+
+ Response of each pixel given a constant input
+
+
+
+
+
+
+
+
+
+ Errors of the flat field correction data.
+ The form flatfield_error is deprecated.
+
+
+
+
+
+
+
+
+
+ True when the pixel mask correction has been applied in the
+ electronics, false otherwise.
+
+
+
+
+
+ Custom pixel mask for this channel. May include nP as the first dimension for
+ masks that vary for each scan point.
+
+
+
+
+
+
+
+
+
+
+ The value at which the detector goes into saturation.
+ Especially common to CCD detectors, the data
+ is known to be invalid above this value.
+
+ For example, given a saturation_value and an underload_value, the valid
+ pixels are those less than or equal to the saturation_value and greater
+ than or equal to the underload_value.
+
+ The precise type should match the type of the data.
+
+
+
+
+
+ The lowest value at which pixels for this detector would be reasonably
+ measured. The data is known to be invalid below this value.
+
+ For example, given a saturation_value and an underload_value, the valid
+ pixels are those less than or equal to the saturation_value and greater
+ than or equal to the underload_value.
+
+ The precise type should match the type of the data.
+
+
+