AidaTLU Satellite#
Name |
AidaTLU |
|---|---|
Description |
Satellite for the AIDA-2020 TLU using a Python-based control software |
Category |
Readout Systems |
Language |
Python |
Website |
Description#
The AIDA-2020 Trigger Logic Unit is designed to provide flexible trigger configurations in test beam setups (doi.org/10.48550/arXiv.2005.00310).
The Python-based control software for the AIDA-2020 TLU provides a comprehensive interface for controlling the TLU. The software establishes a connection to the hardware and allows for easy configuration of different trigger setups. Information about each individual trigger signal is saved in a compressed (blosc) and human-readable HDF5 format.
The satellite connects the AIDA-2020 TLU to the Constellation control and data acquisition framework.
Building#
After installing IPbus with Python bindings (uhal), install the Aida-TLU package with the constellation requirement.
pip install .[constellation]
A more detailed description of the prerequisites can also be found here.
Usage#
Add the chosen cactus library path, where the default install location is /opt/cactus/:
export LD_LIBRARY_PATH=<install_location>/lib
You also need to start the control hub:
<install_location>/bin/controlhub_start
Finally, start the satellite with:
SatelliteAidaTLU -g testbeam -n TLU
Note
The TLU configuration resets during launching and landing. This means DUT interface signals (e.g. clock signals) are disrupted during these transitions.
Parameters#
Configuration |
Description |
Type |
Default Value |
|---|---|---|---|
|
(Optional) Generates internal triggers with a given frequency given in Hz. |
Integer |
0 |
|
(Required) Specify the operation mode of the DUT interface ( |
List |
None |
|
(Required) Threshold setting of each individual trigger input channel given in V. |
List |
None |
|
(Required) Trigger Logic configuration accepts a Python expression for the trigger inputs. The logic is set by using the variables for the input channels |
String |
None |
|
(Optional) TLU can trigger on a rising or falling edge. Set to |
String |
|
|
(Required) Stretches each individual trigger input by a given number of clock cycles (corresponds to |
List |
None |
|
(Required) Delays each individual trigger input by a given number of clock cycles (corresponds to |
List |
None |
|
(Optional) Enable the LEMO clock output. |
String |
False |
|
(Required) Sets the four PMT control voltages in V |
List |
None |
|
(Optional) Specify a custom clock configuration. If no path is provided, the TLU uses the default configuration. |
String |
None |
The default clock configuration can be found in aidatlu/misc/aida_tlu_clk_config.txt.
Configuration Example#
An example configuration for the AIDA-TLU satellite which could be dropped into a Constellation configuration as a starting point:
[satellites.AidaTLU]
internal_trigger_rate = 0
dut_interfaces = ['aida', 'aida', 'eudet', 'off']
trigger_threshold = [-0.1, -0.1, -0.1, -0.1, -0.1, -0.1]
trigger_inputs_logic = 'CH1 and CH2'
trigger_polarity = 'falling'
trigger_signal_stretch = [2, 2, 2, 2, 2, 2]
trigger_signal_delay = [0, 0, 0, 0, 0, 0]
enable_clock_lemo_output = false
pmt_power = [0.8, 0.8, 0.0, 0.0]
Metrics#
The following metrics are distributed by this satellite and can be subscribed to. Timed metrics provide an interval in units of time, triggered metrics in number of calls.
Metric |
Description |
Value Type |
Metric Type |
Interval |
|---|---|---|---|---|
|
Trigger rate after trigger logic (before DUT veto) in Hertz |
Integer |
|
1s |
|
Outgoing trigger rate to the devices (after DUT veto) in Hertz |
Integer |
|
1s |
|
Total number of pre veto trigger |
Integer |
|
1s |
|
Total number of post veto trigger |
Integer |
|
1s |
|
Total number that trigger input 1 received a valid signal |
Integer |
|
1s |
|
Total number that trigger input 2 received a valid signal |
Integer |
|
1s |
|
Total number that trigger input 3 received a valid signal |
Integer |
|
1s |
|
Total number that trigger input 4 received a valid signal |
Integer |
|
1s |
|
Total number that trigger input 5 received a valid signal |
Integer |
|
1s |
|
Total number that trigger input 6 received a valid signal |
Integer |
|
1s |
Data#
This satellite sends the raw data read from the TLU FIFO, consisting of six 32bit words with the following data:
event type:
(word0 >> 28) & 0xftrigger flag, input 0:
(word0 >> 16) & 0x1trigger flag, input 1:
(word0 >> 17) & 0x1trigger flag, input 2:
(word0 >> 18) & 0x1trigger flag, input 3:
(word0 >> 19) & 0x1trigger flag, input 4:
(word0 >> 20) & 0x1trigger flag, input 5:
(word0 >> 21) & 0x1timestamp:
((word0 & 0x0000ffff) << 32) + word1fine timestamp, input 0:
(word2 >> 24) & 0xfffine timestamp, input 1:
(word2 >> 16) & 0xfffine timestamp, input 2:
(word2 >> 8) & 0xfffine timestamp, input 3:
word2 & 0xfffine timestamp, input 4:
(word4 >> 24) & 0xfffine timestamp, input 5:
(word4 >> 16) & 0xffevent number:
word3
Framework Parameters#
This satellite inherits the following framework parameters from its base classes:
Parameters inherited from TransmitterSatellite#
Parameter |
Type |
Description |
Default Value |
|---|---|---|---|
|
Unsigned integer |
Timeout in seconds to send the BOR message. The satellite will attempt for this interval to send the message and goes into |
10 |
|
Unsigned integer |
Timeout in seconds to send the EOR message. The satellite will attempt for this interval to send the message and goes into |
10 |
|
Unsigned integer |
Timeout in seconds to send the data message. The satellite will attempt for this interval to send the message and goes into |
10 |
|
Unsigned integer |
Threshold for sending data messages in KiB. The satellite will only send queued data records after the combined payload size of the data records has reached this threshold. |
128 |
|
Unsigned integer |
Size of the queue for the data records. Small values might lead to performance issues, large values lead to larger memory usage. |
32768 |
|
String |
License this data is recorded under. Defaults to the Open Data Commons Attribution License. This information will be added to the run metadata. |
|
Parameters inherited from Satellite#
Autonomous Operation#
Parameter |
Type |
Description |
Default Value |
|---|---|---|---|
|
Unsigned integer |
Maximum interval in seconds between heartbeats to be sent to other Constellation components. The time between heartbeat is adjusted automatically according to the number of nodes in the Constellation but will never exceed this value. |
|
|
Role name |
Role this satellite should take in the Constellation. Accepted values are |
|
Transition Orchestration#
Parameters to control autonomous transition orchestration of satellites:
Parameter |
Type |
Description |
Default Value |
|---|---|---|---|
|
Unsigned integer |
Timeout in seconds to wait for all conditions to be satisfied for conditional transitioning |
|
|
List of strings |
List of canonical names of remote satellites for conditional transitioning in |
- |
|
List of strings |
List of canonical names of remote satellites for conditional transitioning in |
- |
|
List of strings |
List of canonical names of remote satellites for conditional transitioning in |
- |
|
List of strings |
List of canonical names of remote satellites for conditional transitioning in |
- |
|
List of strings |
List of canonical names of remote satellites for conditional transitioning in |
- |
Framework Metrics#
This satellite inherits the following framework metrics from its base classes:
Metrics inherited from DataSender#
Metric |
Description |
Value Type |
Metric Type |
Interval |
|---|---|---|---|---|
|
Amount of bytes transmitted during current run |
Integer |
|
10s |
|
Number of data records transmitted during current run |
Integer |
|
10s |
Metrics inherited from Satellite#
None