====== S800 data format from Event Filter (S800 Filter) ====== The purpose of the S800 filter is to parse data from the S800 Event Builder, and reformat them in separated data packets, with an [[#General packet structure|specific structure]]. Data from the S800 filter are encapsulated as Ring Items (RI) and, as such, will include a [[http://docs.nscl.msu.edu/daq/newsite/nscldaq-11.2/c185.html|Ring-Item Header]], a [[http://docs.nscl.msu.edu/daq/newsite/nscldaq-11.2/x214.html|Body Header]], and a Body, where the real parsed data are included. Ring Items emitted from the S800 filter are pushed into a [[http://docs.nscl.msu.edu/daq/newsite/nscldaq-11.2/c43.html|Ring-Buffer]] called **s800filter**. This page describes the data format assembled in the __Body__ of the S800 Filter RI. The data is written in a series of 16-bit unsigned integers, subsequently referred to as ''words''. Regardless of what modules are being read, the Body of the S800 Filter RI will always include four 16-bit words, followed by a series of [[#General packet structure|data packets]]. The structure of the whole Body is described in the diagram below: ^ Body Length 1 ^ Body Length 2 ^ S800 Data Tag ^ S800 Data Version ^ Data Packet 1 ^ Data Packet 2 ^ ... | * **Body Length 1**: Number of words in body (self inclusive) * **Body Length 2**: Number of words in body - 1 (self-inclusive) * **S800 Data Tag**: 0x5800 * **S800 Data Version**: 0x0005 ===== General packet structure ===== All data is written using the concept of "packets". The format of a packet is: ^ Length ^ Packet Tag ^ Packet Data | Length: a count of the number of words in the packet, inclusive of the length word itself Packet Tag: a predefined integer indicating the type of data found in the Packet Data Packet Data: the data themselves. These can be data read from the modules or a sub packet. Sub packets have identical structure to main packets. Using this format all data can be placed in nested packets, and coding decisions on how to unpack the Packet Data can be made by examination of the preceding Packet Tag. Packets (including sub packets) can also be skipped by jumping ahead Length words in the buffer. In this section, each 16-bit word sent by the Filter is described by a 16x3-table diagram. The first row includes the value, either in decimal or hexadecimal format, or a descriptive note. The second row shows the value in binary ("X"s are used to describe arbitrary values that vary from event to event). The last row shows the bit number. ===== Time-stamp packet ===== The timestamp is encoded in the [[S800 USB DAQ data format#Tag 0x5803: XLM72 time stamp module|XLMV72 time-stamp module]] for each event as a 64-bit word. The Event Filter parses it as a set of four consecutive 16-bit words. * **Packet Length** (self-inclusive) ^ 6 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5803 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **First 16-bit time-stamp word** ^ First 16-bits "chunk" of time-stamp ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Second 16-bit time-stamp word** ^ Second 16-bits "chunk" of time-stamp ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Third 16-bit time-stamp word** ^ Third 16-bits "chunk" of time-stamp ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Fourth 16-bit time-stamp word** ^ Fourth 16-bits "chunk" of time-stamp ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ===== Event-number packet ===== The event-number is given by the VMUSB scaler channels as a 48-bit word coded in two 32-bit words. The Event Filter parses it and re-formats it as a three 16-bit words. * **Packet Length** (self-inclusive) ^ 5 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5804 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **First 16-bit event-number word** ^ First 16-bits "chunk" of event-number ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Second 16-bit event-number word** ^ Second 16-bits "chunk" of event-number ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Third 16-bit event-number word** ^ Third 16-bits "chunk" of event-number ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ===== Trigger packet ===== The trigger packet includes a bit-pattern word (encoded by the [[S800 USB DAQ data format#Tag 0x2367: Trigger module|ULM trigger module]]), with information about what sources triggered the event, and their corresponding time from the [[S800 USB DAQ data format#Tag 0x7186: Phillips 7186 TDC module for time-of-flights|Phillips 7186 TDC]]. * **Packet Length** (self-inclusive) ^ A number from 2 to 7 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5801 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Trigger pattern** ^ ^^^^^^^^^^^ Bit pattern ^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | the encoding of the active bits is given by the following table: ^ Bit ^ Source | |0| S800 (from E1 up) | |1| Coincidence | |2| External 1 | |3| External 2 | |4| Secondary (e.g. GRETINA) | * **Trigger time** The time of each trigger source (except for "coincidences") is given by a word that look like: ^ ^^^ Ch ^ time ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | there can be up to four time words (depending on whether **time** is greater than 0), one for each channel. The channel number Ch is given by: ^ Ch ^ Source | | 8 | S800 (from E1 up) | | 9 | External 1 | | 10 | External 2 | | 11 | Secondary (e.g. GRETINA) | ===== Time-of-flight packet ===== The time-of-flight packet includes all the timing values encoded in the [[S800 USB DAQ data format#Tag 0x7186: Phillips 7186 TDC module for time-of-flights|Phillips TDC]] and the XFP-FP and OBJ-FP ToF from the ORTEC TACs encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]]. * **Packet Length** (self-inclusive) ^ A number from 2 to 10 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5802 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Time-of-flight values** The time-of-flight information for each channel is coded in words that look like: ^ ^^^ Ch ^ time ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Up to eight of these words can be present (depending on wheter **time** is greater than 0): six from the Phillips TDC, and two from the XFP-FP and OBJ-FP TACs. The channel number Ch is given by: ^ Ch ^ Source | | 6 | Phillips TDC time from the A1900 IM2 north scintillator (optional) | | 7 | Phillips TDC time from the A1900 IM2 south scintillator (optional) | | 12 | Phillips TDC time from the RF | | 13 | Phillips TDC time from the OBJ scintillator | | 14 | Phillips TDC time from the XFP scintillator | | 15 | Phillips TDC time from the LaBr (optional) | | 4 | XFP-FP time-of-flight from TAC | | 5 | OBJ-FP time-of-flight from TAC | Note that the time values from the Phillips TDC are subtracted by SpecTcl to the time from the S800 trigger E1 up (encoded in the [[#trigger packet|trigger packet]]) in order to calculate the corresponding time-of-flight. On the other hand, the times from the TACs (Ch 4 and 5) correspond to actual time-of-flight values. ===== Scintillator packet ===== The scintillator packet includes the energy (encoded in the [[S800 USB DAQ data format#Tag 0x4300: FERA module for plastic scintillator energies|FERA LeCroy module]]) and time (encoded in the [[S800 USB DAQ data format#Tag 0x7186: Phillips 7186 TDC module for time-of-flights|Phillips TDC]]) of the [[Detectors#Plastic scintillators|S800 FP scintillator]] signals. In the original configuration, there were 3 scintillators (E1, E2, and E3) which were later reduced to just one (E1) after the installation of the Hodoscope. * **Packet Length** (self-inclusive) ^ A number from 4 to 8 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5810 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energy and time values** The energy (from the FERA module) and time (from the Phillips TDC) are given by two consecutive words: ^ ^^^ Ch ^ ^ energy ^^^^^^^^^^| | 0 | 0 | 0 | X | 0 | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ^ ^^^ Ch ^ time ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | These words are sent by the Filter as long as **energy** is greater than 0 or **Ch** equals 2. The channel assignment given by the Filter is: ^ Channel ^ Source | | 0 | E1 up | | 1 | E1 down | | 2 | Empty | ===== Ion-Chamber packet ===== The Ion-chamber packet includes the energies of the [[Detectors#Ionization chamber|16 ion-chamber segments]] encoded in one of the [[S800 USB DAQ data format#Tag 0x7164: Phillips 7164 ADC module for ion chamber energies|Phillips 7164H ADC]]. * **Packet Length** (self-inclusive) ^ A number from 4 to 20 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5820 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Sub-packet "Energy" Length** (self-inclusive) ^ A number from 2 to 18 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Sub-packet "Energy" Tag** ^ 0x5821 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energy values** The energy (from the Phillips 7164H ADC module) is given by a series of words that look like: ^ ^^^ Ch ^ energy ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where Ch is the segment number (from 0 to 15, being segment 0 the most upstream). The Filter gives an energy word for each segment as long as **energy** is greater than 0. ===== CRDC packets ===== The Filter provides two CRDC packets: one for [[Detectors|Cathode Readout Drift Chambers (CRDC)|CRDC1]] and one for [[Detectors|Cathode Readout Drift Chambers (CRDC)|CRDC2]]. Each CRDC packet is divided in two sub-packets: the "Raw" sub-packet with information about the pads energies (encoded in the [[S800 USB DAQ data format#Tag 0xCFDC: XLM72V crdc1 pad readout module|CRDCs XLM72 modules]]), and the "Anode" sub-packet with anode energy and time information encoded in the CRDCs [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|Phillips ADC]]. In the following, we describe the structure of the packet provided by the Filter for each CRDC. * **Packet Length** (self-inclusive) ^ A number from 10 to 330 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5840 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **CRDC label** ^ 0x0000 or 0x0001 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where 0x0000 and 0x0001 identify CRDC1 and CRDC2, respectively. * **CRDC Sub-packet "Raw" Length** (self-inclusive) ^ A number from 3 to 323 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **CRDC Sub-packet "Raw" Tag** ^ 0x5841 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Global threshold** ^ 0x0000 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | This word is reserved for a global threshold; it is no longer used, so it is set to 0 * **Samples sub-packets** The Filter sends a series of sample sub-packets. Each sub-packet consists of two parts. The first part includes one 16-bit word with information about the **sample** and **channel** numbers: ^ control bit ^ sample ^^^^^^^^^ channel ^^^^^| | 1 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where **channel** is a number between 0 and 63, and refers to a group of four pads. The second part includes __up to four__ consecutive 16-bit words, each with a pad energy __greater than 0__: ^ control bit ^ empty ^^^ connector ^^ energy ^^^^^^^^^| | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | The **connector** number is related to the pad number (**pad**) according to: **pad** = **channel** + **connector** x 64 (where **connector** ranges from 0 to 3, and **channel** is given by the first word of the sample sub-packet). Note that the Filter processes information from connectors with energies greater than 0. * **CRDC Sub-packet "Anode" Length** (self-inclusive) ^ 4 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **CRDC Sub-packet "Anode" Tag** ^ 0x5845 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energy from Anode** The anode energy (encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]]) is given by: ^ empty ^^^^ energy ^^^^^^^^^^^| | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Time from Anode** The anode time (from an ORTEC TAC encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]]) is given by: ^ empty ^^^^ time ^^^^^^^^^^^| | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ===== Hodoscope packet ===== The Filter parses the [[Detectors#Hodoscope|Hodoscope]] information encoded in the two [[S800 USB DAQ data format#Tag 0x7165: Phillips 7164 ADC module for hodoscope energies 0 through 15|Phillips 7164 ADCs]] and re-formats the data in three packets, two with the energies of the two groups crystals (from 1 to 16 and from 17 to 32), and the third one with the hit pattern recorded in the [[S800 USB DAQ data format#Tag 0x4448: LeCroy4448 coincidence register module for hodoscope hit pattern|LeCroy 4448 coincidence-register module]]. Each of the **two first packets** look like: * **Packet Length** (self-inclusive) ^ A number from 3 to 19 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58B0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Hodoscope Sub-packet "Energy" Tag** ^ 0x0000 or 0x0001 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where 0x0000 labels the energy sub-packet of the first group of crystals from 1 to 16, and 0x00001 labels the second group of crystals from 17 to 32. * **Energy values** The energy from each of the two Phillips 7164H ADC modules is given by a series of words that look like: ^ ^^^ Ch ^ energy ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where Ch is the crystal number in the packet (from 0 to 15). The Filter gives an energy word for each crystal as long as **energy** is greater than 0. The **third hodoscope packet** with information from the coincidence register looks like: * **Packet Length** (self-inclusive) ^ 6 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58B0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Hodoscope Sub-packet "Hit-pattern" Tag** ^ 0x0002 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Hit pattern** ^ hit pattern of first 16 crystals ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ^ hit pattern of crystals 16 to 32 ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Time** The Hodoscope OR time (from an ORTEC TAC encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]]) is given by: ^ empty ^^^^ time ^^^^^^^^^^^| | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ===== TPPACs packet ===== The Filter parses and re-formats information from the [[Detectors#Tracking Parallel Plate Avalanche Counters (TPPAC)|Tracking PPACs]] encoded in the [[S800 USB DAQ data format#Tag 0x5870: XLM72V tracking ppac readout module|XLM72 TPPACs module]]. The new packet includes both TPPACs; its structure is very similar to that from the CRDCs. * **Packet Length** (self-inclusive) ^ A number from 5 to 325 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5870 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **TPPAC Sub-packet "Raw" Length** (self-inclusive) ^ A number from 3 to 323 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **TPPAC Sub-packet "Raw" Tag** ^ 0x5871 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Global threshold** ^ 0x0000 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | This word is reserved for a global threshold; it is no longer used, so it is set to 0 * **Samples sub-packets** The Filter sends a series of sample sub-packets. Each sub-packet consists of two parts. The first part includes one 16-bit word with information about the **sample** and **channel** numbers: ^ control bit ^ sample ^^^^^^^^^ channel ^^^^^| | 1 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where **channel** is a number between 0 and 63, and refers to a group of four pads. The second part includes __up to four__ consecutive 16-bit words, each with a pad energy __greater than 0__: ^ control bit ^ empty ^^^ connector ^^ energy ^^^^^^^^^| | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | The **connector** number is defined between 0 and 3, and it is related to the pad number (**pad**). The value 0 refers to the first 64 pads, and correspond to the strips in the dispersive direction of the first TPPAC. The value 1 is for pads between 63 and 127, and includes the strips in the non-dispersive direction of the first TPPAC. The value 2 corresponds to pads between 128 and 191, which are associated to the strips in the dispersive direction of the second TPPAC. Finally, the value 3 corresponds to pads between 191 to 256, and covers the strips in the non-dispersive direction of the second TPPAC. The value of **pad** is given by **index** + **connector** x 64, where **index** is depends on the value of **channel** and **connector** according to the table below, where the second column shows the index values for **connector**=0 or 2, and the third column corresponds to the index values for **connector**=1 or 3: ^channel^index^index| |0|30|0| |1|31|1| |2|28|2| |3|29|3| |4|26|4| |5|27|5| |6|24|6| |7|25|7| |8|22|8| |9|23|9| |10|20|10| |11|21|11| |12|18|12| |13|19|13| |14|16|14| |15|17|15| |16|14|16| |17|15|17| |18|12|18| |19|13|19| |20|10|20| |21|11|21| |22|8|22| |23|9|23| |24|6|24| |25|7|25| |26|4|26| |27|5|27| |28|2|28| |29|3|29| |30|0|30| |31|1|31| |32|33|63| |33|32|62| |34|35|61| |35|34|60| |36|37|59| |37|36|58| |38|39|57| |39|38|56| |40|41|55| |41|40|54| |42|43|53| |43|42|52| |44|45|51| |45|44|50| |46|47|49| |47|46|48| |48|49|47| |49|48|46| |50|51|45| |51|50|44| |52|53|43| |53|52|42| |54|55|41| |55|54|40| |56|57|39| |57|56|38| |58|59|37| |59|58|36| |60|61|35| |61|60|34| |62|63|33| |63|62|32| ===== OBJECT PIN packet ===== The OBJECT PIN packet includes the energy (encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]] measured in the S800 OBJ PIN detector. Note that for most of the experiments, this packet is empty (i.e. it only includes the packet-length and packet tag) because this detector is rarely used. * **Packet Length** (self-inclusive) ^ Either 2 or 3 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58A0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energy** The energy from the Phillips ADC is given by one word: ^ ^^^ Ch ^ energy ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | where **Ch** is the Phillips ADC channel reserved for the PIN detector (0). The energy words is sent by the Filter as long as **energy** is greater than 0. ===== Focal Plane PIN-stack packet ===== In some experiments, a stack of PIN detectors is included in the detector setup. The S800 DAQ can accommodate up to five different PIN detectors. Their energy are encoded in the [[S800 USB DAQ data format#Tag 0x7167: Phillips 7164 ADC module for CRDC anodes (energies and TAC)|S800 Phillips 7164H ADC]]. Note that for most of the experiments, this packet is empty (i.e. it only includes the packet-length and packet tag) because this detector stack is rarely used. * **Packet Length** (self-inclusive) ^ Either 2 or 7 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x5805 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energies PINs** The energy from each PIN detector encoded in the Phillips ADC is given by FIVE consecutive words with the following format: ^ ^^^ Ch ^ energy ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | here **Ch** is the Phillips ADC channel reserved for each of the PIN detector (from 10 to 14). The energy words is sent by the Filter as long as **energy** is greater than 0. ===== Galotte packet ===== The Galotte packet includes up to five time signals from the Galotte detector. These times are encoded in the [[S800 USB DAQ data format#Tag 0x7186: Phillips 7186 TDC module for time-of-flights|Phillips TDC]]. Note that for most of the experiments, this packet is empty (i.e. it only includes the packet-length and packet tag) because this detector is rarely used. * **Packet Length** (self-inclusive) ^ A number from 2 to 7 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58D0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Time values** The time information for each of the five detector channel is coded in words that look like: ^ ^^^ Ch ^ time ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Where **Ch** runs from 0 to 3. These words are sent by the Filter as long as **time** is greater than 0. ===== LaBr packet ===== The LaBr packet includes the energy (encoded in the [[S800 USB DAQ data format#Tag 0x4300: FERA module for plastic scintillator energies|FERA LeCroy module]]) and times (encoded in a Phillips TDC) from up to four LaBr detectors. Note that although there is a specific EVB tag for that Phillips TDC (0x7187), this module is currently not included in the S800 electronics. As a result, the data packet is empty (i.e. it only includes the packet-length and packet tag). * **Packet Length** (self-inclusive) ^ A number from 2 to 10 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58E0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Energy and time values** The energy (from the FERA module) and time (from the Phillips TDC) are given by two consecutive words for each LaBr: ^ ^^^ Ch ^ ^ energy ^^^^^^^^^^| | 0 | 0 | 0 | X | 0 | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ^ ^^^ Ch ^ time ^^^^^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Where **Ch** runs from 0 to 3. These words are sent by the Filter as long as **time** is greater than 0. ===== Mesytec TDC (MTDC) packet ===== The MTDC packet includes the multiple timing values [[S800 USB DAQ data format#Tag 0x0DDC: Mesytec MTDC-32 module |encoded in the Mesytec MTDC]]. The packet looks like: * **Packet Length** (self-inclusive) ^ A number from 2 to 10 ^^^^^^^^^^^^^^^| | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Packet Tag** ^ 0x58F0 ^^^^^^^^^^^^^^^| | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | * **Time values** Every time value encoded in the MTDC is sent by the Filter as a series of two 16-bit words: the first one provides information about the MTDC channel and the hit number; the second one gives the time value for that channel-hit. In the current version (Oct. 2015), the Filter processes up to 32 hits per channel. This value can be increased if necessary. ^ ^^^ hit ^^^^^ channel ^^^^^^^| | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ^ time ^^^^^^^^^^^^^^^| | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |