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 Structure: arm_ctrl

Summary

The arm_ctrl data structure is used to control all aspects of the MCA-1K operation. The documentation applies to PMT and SiPM-based MCA-1K systems, such as the PMT-1000 and the SiPM-1000.

Data structure

For arm_ctrl these are the 'register' and 'field' data in use. All register data are 32-bit floats (float32).

arm_ctrl registers and fields — Operation and calibration
Register number and field nameDescription
AC0: gain_stabilizationBit field governing gain stabilization, cf 'user' table below.
AC1: peltierEither fixed Peltier power (0 to 100%) or maximum power; To allow a host control loop (only in SiPM-based systems with a Peltier controller; eg SiPM-1010).
AC2: temp_ctrl0 → Use ARM temperature sensor; 1 → Use external temperature sensor; [4:7]=> (0→ no Peltier cooling; 1→ constant cooling power; 2→ control loop)
AC3: temp_targetReserved; In SiPM-based systems with a Peltier cooler, this field has the target temperature.
AC4: temp_periodUpdate period for temperature measurements
AC5: temp_weightWeight for geometric averaging: Purpose is noise reduction or matching thermal relaxation
AC6: cal_tempTemperature (in deg C) at which the detector was calibrated
AC7: cal_ovOperating voltage when the detector was calibrated
AC8: cal_dgDigital gain when the detector was calibrated (reserved for future use)
AC9: cal_targetTarget value for ROI or LED measured response; used with gain_stab=2,3
AC10: cal_roi_low
AC11: cal_roi_high
[roi_low : roi_high] => Region of interest used when gain-stabilizing on ROI (reserved for future use).
All arm_ctrl registers and fields concerning operation settings and calibration
arm_ctrl registers and fields — Count rate measurement
Register number and field nameDescription
AC12: run_modeRun mode is a bit field
AC13: run_actionRun_action is a bit field, with self-clearing bits; cf 'user' table below.
AC13[0]: clear_statisticsClear data for the active counter bank.
AC14: run_time_sampleRequested run time for sample counting; 0→ forever
AC15: run_time_bckRequested run time for background counting; 0→ forever
AC16: alarm_thrAlarm threshold for foreground vs bck; If the probability of the foreground data being caused by the accepted background is less than this, an alarm will be raised (AS7[2])
AC17: roi_lowROI for count rate and alarming purpose
AC18: roi_highROI for count rate and alarming purpose.
arm_ctrl registers and fields concerning count rate measurements.
arm_ctrl registers and fields — time-slice operation
Register number and field nameDescription
AC19: ts_periodCurrently fixed at 100ms.
AC20: ts_resetSet to 2 to reset the time-slice (Portal Monitor) alarm system.
AC21: ts_LSummation length for alarm computation
AC22: ts_HHistory length for alarms; maximum length of alarm before resetting
AC23: ts_waitMinimum wait time until we will accept alarms, having sufficient background accuracy
AC24: ts_BBackground averaging length
AC25: ts_epsAlarm threshold for time-slice system
AC26: trigger_widthOutput pulse width, for alarms.
AC27: trigger_thresholdTrigger threshold in V; typ 0.015V, range 0..3V
AC28: integration_timeA measure of the light-collection time, in units of CPU clock cycles of 1/48MHz. Use 23 for NaI.
AC29: led_widthA measure of the LED pulse with, in units of 6CPU clock cycles, ie 6/48MHz. Use 5 to 10.
AC30: cal_eventsNumber of events to average to create a new LED or ROI average. Use 1000 with an LED.
xctrl_0Logger control. xctrl_0[7:0] ⇒ Logger dwell time in multiples of 50ms time slices. Set to 0 to turn logger off. xctrl_0[15:8] ⇒ Input data source for logger channel 0; xctrl_0[23:16] ⇒ Input data source for logger channel 1. Input data source is arm_status[] index - for example 4 for CPU temperature. There are two computed data source: 256 ⇒ number of events recorded during dwell time; 257 ⇒ number of events falling into the alarm ROI recorded during dwell time;
AC32 to AC38: reservedReserved values for use with custom data acquistion modes acq_type > 3
arm_ctrl registers and fields concerning the time-slice subsystem
arm_ctrl — user entries
Register number and field nameDescription
gs_modeAC0[0:3]; 0→OFF, 1→LUT, ie use lookup table for temperature correction, 2→LED, Use an LED and the LED lookup table;
histogram_runAC12[0]; Activate acquiring counting and histogram data
acq_typeAC12[3:1]; Type of data acquisition: 0→ standard histogram, 1→ Counting only, 2→ Histogram with noise suppression, 3→ Arrival times, 4→ neutron detectors.
active_bankAC12[4]; Select which bank will be active: 0→ foreground, 1→ background.
read_clearAC12[5]; 1→ Enable read_and_clear feature for counting. When enabled a histogram and counter bank is set to zero after a data read.
two_bankAC12[6]; Enable automatic selection of the inactive bank for reading and clearing. User then toggles active bank when desired.
histo_2kAC12[7]; Use one 2K×32 sample histogram (no background histogram)
sample_alarmAC12[8]; Compute alarm probability for foreground vs background
time_sliceAC12[9]; Activate time slice system and dynamic alarming. Performs alarm computations 10 times per second; for portal monitors and backpacks.
clear_statisticsAC13[0]; Self-clearing action; clears the time and event counter of the targeted bank. Targeted bank is active_bank if two_bank=0. It is the inactive bank if two_bank=1.
clear_histogramAC13[1]; Self-clearing action; clears the histogram of the targeted bank. Targeted bank is active_bank if two_bank=0. It is the inactive bank if two_bank=1.
clear_alarmAC13[2]; Self-clearing action; Clears a persisent alarm output on trigger_out; eg from a portal monitor alarm.
clear_loggerAC13[3]; Self-clearing action; Reset the logger to begin recording data at index 0.
The arm_ctrl user dictionary is used to pack and unpack bit fields.