MCA-1K Data Server Reference

MCA-1K

Introduction

USB driver

MCA-1K Device

Data structures

Overview

Module Constants

ARM Data structures

Version

Status

Controls

Calibration

Histogram

Time Histogram

Two-channel Logger

API

Overview

MCA-1K Data Structures

Summary

The file mca1k_data.py contains definitions for data classes. Each data class describes one set of control data or acquired data as shown in the table below. All classes have the same structure: They contain data and a set of standardized functions which the API level uses when executing commands. The data objects transient. They created, used and then discarded during the execution of a command. The data object functions mostly serve to translate between human-readable data in Si units and the bit-fields and register contents on board the MCA-1K.

Data structures

The mca1k_data.py module defines all data classes used for communication. The common structure of all data classes is explained in the table below.

MCA-1K Data Class Structure
AttributeDescription
registersOn board data are stored in registers as arrays of data. 'registers' is a copy of that array.
fields'fields' is a dictionary where the various components of the registers and any bit fields are stored by name.
user'user' is a dictionary where data are stored as physical quantities in SI units. Since this is not meaningful for all data, 'user' may only capture a subset of all data. On the other hand, when reading data, 'user' may present an enhanced set of data containing evaluated data; eg when reading count rates.
wr_typeIdentifies the device to write to; here always ARM.
rd_typeIdentifies the device to read from; here always ARM.
cmd_addrAn ID that tells the MCA-1K device which data section is being addressed; cf the Data Classes tables below.
data_typeTells the device driver what kind of data are being transmitted; they can be 'H', 'I' and 'f' for unsigned int16, unsigned int32 and float32 data.
num_itemsNumber of data items to transmit between host and MCA-1K.
num_bytesNumber of bytes to transmit between host and MCA-1K.
MCA-1K data class attributes.
MCA-1K Data Class Functions
FunctionDescription
registers_2_fieldsConvert FPGA control register values into a control register dictionary which has names for the bit fields.
fields_2_registessCompute the values of the control registers from the fields dictionary.
fields_2_userConvert a few field values into physical quantities in SI units.
user_2_fieldsConvert user values from physical quantities in SI units into numerical fields
add_to_cmd_out_list(mca)If a command requires auxiliary data to be sent with it (up to 14 unsigned int16) those could be copied from a designated member of an mca object. The standard MCA-1K software does not use this feature.
MCA-1K data class functions.
MCA-1K Data Classes
NameDescription
arm_versionVersion and serial number information for FPGA and ARM firmware and software.
arm_statusStatus information (unsigned int32) from the slow-control system, including temperatures, operating voltage, etc.
arm_ctrlParameters (float32) to set the SiPM operating voltage, apply gain stabilization and more.
arm_calCalibration data (float32) used by the gain stabilization; eg a voltage vs temperature lookup table.
arm_histoRaw statistics and histogram data in two banks: One for sample data and for a background spectrum that can be subtracted from the sample data. From the raw statistics we determine, elapsed run time, count rates and the like.
Table of MCA-1K data structures.