HDF5 File Structure
The files generated by EPICS are an HDF5 data format which can be interpreted via dedicted viewers or through scripts. HDFView is a useful tool to get an overview of the data you have generated.
Various names of the data are not clear and therefore are described below.
The overall structure is:
<File Name> └─Entry ├─ data | └─ data └─instrument ├─NDAttributes | ├─DTFactor | ├─DTPercent | ├─EventWidth | ├─SCA0 | ├─SCA1 | ├─SCA2 | ├─SCA3 | ├─SCA4 | ├─SCA5 | ├─SCA6 | └─SCA7 ├─Detector └─Performance
Data
The histogram data is stored within the data sturcture, this is an array of integers from bin 0 to 4096 relating to the number of events that occured in that energy range. By default each bin is 10 eV but can be changed during calibration.
Scaler Data
The file is structured as a 3 dimmensional 0-indexed array of
Frame x Channel x Bin
Therefore a 100 frame scan for 8 channels will have the dimensions:
100 x 8 x 4096
The Scaler data for the first frame on the second channel will be stored in:
<file name>['entry']['data']['data'][0][1]
This is an array of length 4096 containing the spectrum histogram.
NDAttributes
Various parameters from the scan are stored for each channel and frame to provide additional information about the scan conditions.
These parameters are stored seperatley for each channel in the format:
CHAN<n><Parameter>
where n is the channel and Parameter is one of the values listed below. Each array will be a 0-indexed array with length equal to the number of frames in the scan
DTFactor
Dead time factor is the the input count rate (ICR) divided by the output count rate (OCR).
CHAN<n>DTFactor
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
DTPercent
Dead time percent is the calculated from the amount of time the system is not counting during the scan based on the event width and the input count rate (ICR)
CHAN<n>DTPercent
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
EventWidth
Provides information about the configured event width per channel and frame.
SCA0
This is the ‘time’ scaler, in clock ticks for each frame of the scan. The Xspress 3 clock is 80 Mhz, therefore each clock tick is 12.5 ns.
CHAN<n>SCA0
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA1
This is the ‘reset tick’ scaler and specifies how many clock ticks the resets caused to be made dead during the frame.
CHAN<n>SCA1
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA2
This is the ‘reset count’ scaler, this is the number of resets that occured within the frame.
CHAN<n>SCA2
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA3
This is the ‘all event’ scaler, and is what the system has determined as all the photon events. This is commonly refered to as the Input Count Rate (ICR).
CHAN<n>SCA3
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA4
This is the ‘all good’ scaler, and is what the system has determined as all the photon events that have been processed and placed into the energy bins. This is commonly refered to as the Output Count Rate (OCR).
CHAN<n>SCA4
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA5
This is the ‘Window 0’ scaler, this counts the number of events in the first configured window. By default there is no window defined.
CHAN<n>SCA5
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA6
This is the ‘Window 1’ scaler, this counts the number of events in the first configured window. By default there is no window defined.
CHAN<n>SCA6
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.
SCA7
This is the ‘Pileup’ scaler, this is a counter for the number of events that get rejected as pileup events i.e. events that happenend before the system was ready to recieve the next event.
CHAN<n>SCA7
will be an 1 dimensional 0-indexed array of length the number of frames in the scan.