|
June 1996 Event Format
Format used to record event data in June 1996 level 1 trigger run
The data is written using the 32 bit EPIO package and is largely structured as 16-bit words. Physical recordsThe data is written as logical records, which this document discusses. These are encapsulated on the tape within physical records which have a standard EPIO format physical record header. The physical record header should be transparent if the tapes are read using EPIO. However, for reference, the physical record header consists of the following twelve 32 bit longwords: Longword Physical record length in 16-bit words, always 16380 Longword Physical record header length in words, always 24 Longword Physical record number on tape Longword Displacement of next logical record start Longword Run number Longword Physical record type, always 0 Longword Physical record identifier field = 522144444 Longword Physical record identifier field again = 522144444 Longword Number of empty physical record headers following this one Longword Tape format version number = 8012 Longword Logical record word length, always 32 Longword Length of standard physical record header, always 24 The physical records always have the first longword set to indicate they are 16380 words long even when they are not. For example, the first physical record is empty apart from a physical record header followed by a longword -1 to indicate end data in this physical record. The physical record number starts at zero and increases monotonically during the run. For more information, you should get hold of a copy of the EPIO User's Guide; which is CERN program library long write-up I101. User HeaderAll event records start with a common header, the first four words of which are the standard EPIO header, which has the following format: Word Event Length Word Event Type (1100,1001, etc) Word Event Header Length (in words - currently 18 for events) Word Event Sequence Number An Event Length of -1 means that this is the last logical record in the current physical record on the tape, otherwise it is the real length of the logical event record. The Event Header Length is the length of the user header, in words, which is always 18 word for this run. The Event Sequence Number rises monotonically for each logical record written during the run. The only "interesting" entry in this is the Event Type, which indicates what type of event record this is. After the standard EPIO header, there follows the following "user" data. Word Run number Word Event number Word Interrupt register contents Word Burst number Word Event in burst Word Time (bits 0:7 secs, 8:15 mins) Word Time (bits 0:15 hours) Word Date (bits 0:7 day , 8:15 month) Word Date (bits 0:7 year) Word Day number (bits 0:15 day number, 0=Sunday) Word Number of words of fixed length (e.g. CAMAC) Word Number of FADC words Word Number of TXM words Word Number of CPM words Run numberThis indicates the current run, and is usually incremented for each new run although other steps are of course possible. Event numberThis is the number of the event within the run. The first event is event 1. Interrupt register contentsThe least significant bit, bit 0 is set when there is an interrupt due to a physics event (and thus an event record is to be written) and bit 1 set when there is an End of Burst signal. Thus, the user header interrupt register field should contain a 1 when it is part of a normal physics event record and 2 if it is part of an End of Burst record. Burst numberThis is beam spill number within the run. It is incremented at the end of the burst. Event in burstAs the DAQ software is unable to discriminate between the sources of different triggers, and random triggers will be assumed to have come from the current burst. Number of words of fixed-length dataThis is the number of CAMAC words which are in the record, if it contains an event record. Number of FADC wordsThis is the number of FADC words in the record, if it contains an event record. Time, Date and Day numberThis is a time stamp for when the record was written. It has the following format. The least significant byte of the time is the number of seconds since midnight; the next is the number of minutes and the following one is the number of hours. For example if the time field contains 927755 decimal (=E280B hexadecimal), then this represents hour E hexadecimal, minute 28 hexadecimal, second B hexadecimal - i.e. the record was written at 14:40:11. The date works in a similar fashion, with the day being represented by the least significant byte; the month by the next least significant byte and the year by the next two bytes. For example, 130745860 decimal = 7CB0604 hexadecimal, which can be interpreted as 4 June (i.e. month 6) 1995 (7CB hexadecimal). The weekday is represented by the third byte of the weekday word, with 0 representing a Sunday. For example, 100 hexadecimal means it was a Monday. The rest of the record depends upon the Event Type field in the header. It can take the following values: ID EVENT = 1001 which means it is a physics event record ID EOB = 1002 which means it is an end of burst record ID SOR = 1100 which means it is a start of run record ID EOR = 1101 which means it is an end of run record There are additional values for Start of Burst and comment records defined in Spider, but we do not currently use them (but see the note on End of Burst records below). Start and End of run recordsThese have the same format and contain the same data. The only difference is the different Event Type values. One is written at the start of a run and the other at the end. They are always the last logical record in a physical record. They have the following format (...[3] means that it is an array of 3 elements each of a word or whatever): Data relating to the TXM modules ... Word Bitmask of TXM Modules not wanted Word Bitmask of TXM modules not used. Word Number of TXM slices wanted (same for all cards) Word First slice offset (same for all cards) Word Bitmask of TXM memory types to read char Xilinx configuration filenames[12][9] Word Flag - configuration of Xilinx enabled char Lookup table filenames[12][9] Word Flag - Load lookup table enabled Word Flag - Run TXM modules in test mode (i.e. use LUT as data source) Word Flag - Xilinx mode Data relating to the Flash ADC cards... Longword Bitmask of FADC modules used[2] Word FADC slices wanted Word FADC first slice offset Word FADC playback enable Word FADC preload data Word FADC DAC values[9] char FADC preloaded data filenames[12][9] Data relating to the CFM modules ... Word Number of slices to readout from CFM Word Offset of first slice to readout from CFM (negative value) Word CFM threshold settings[36] char Comment string[80] Word End of physical record marker (= -1) See description! Explanation of the first part of the headerNumber of slices to readout from CPMThis value is set to between 0 and 248, and represents the number of sets of memories RAM and FIFO to read out. Each memory is written 25 ns after the previous one, hence the concept of successive time slices. Offset of first slice to readout from CPMWord Clock module register settings[12] Word CPM threshold settings[36] Explanation of the TXM dataThe TXM data is taken from parameters set before the start of the run in a shared memory section. This memory area is used for communication between the user interface and the DAQ producer process. Bitmask of TXM modules not wantedThe system contains a maximum of 9 TXM cards, each with a Xilinx FPGA processing 4 channels of data. The first two entries are words relating to the overall control of the cards. They have the same format - each bit refers to a single module As the initialisation relates to the configuration of the card as a whole, each bit relates to a group of 4 channels. Note that the normal state is to initialise everything, so these longwords should usually be all zero if everything was working when data was written. Bitmask of TXM channels not to readoutThis is similar to the above, except that the memories on the TXM card are paired up in the following fashion. As the card is accessed as 16 bit data, a read to its memory access register will return data from a pair of channels, such as channels 0 and 1. Thus, pairs of bits are examined and if either is ZERO then that channel pair is read out. Number of TXM slices wantedThis is the number of successive memory addresses to read from the BCID card. Each one represents the data at a successive 25 ns interval. TXM first slice offsetThis is the number of successive memory addresses to read from the TXM card. Each one represents the data at a successive 25 ns interval. TXM first slice offsetWhen the system is stopped for readout to start, it commences at the memory location corresponding to a certain interval before the current time. This is done by starting to access the memory at an address which is offset from the one which was written immediately before the system was halted. This offset represents the interval, in units of 25 ns. Bitmask of TXM memory types to readThe TXM boards have two memories per channel, excluding look-up tables. This bitmask indicates which memories to read out. The following bits are used: 001 Input memory 010 Output memory Thus, if the mask contains 3, then the TXM data portion of the event records will contain input and output memory contents. TXM Xilinx configuration filenameAs part of the initialisation, each Xilinx FPGA can be downloaded with a configuration program. This field contains the null terminated filenames to be used for each card. If the suffix is not present, then .bit is assumed. The Xilinxes are only downloaded if the corresponding modules is present and required in the readout. As the DAQ code is largely written in C, all of the strings follow the C string convention of being null terminated with any unused characters following the null containing arbitrary junk. TXM lookup table filenameThis null-terminated string contains the name of the file which contains the lookup table values. The file contains all of the tables for all channels of all cards in a simple, but tedious, ASCII format. It is downloaded only into the cards present and wanted, when the run is started. Flag - Run TXM cards in test mode (i.e. use LUT as data source)This flag can be set to help debug the TXM cards. It indicates that the TXM cards are being run in test mode, in which the lookup table memory is used as a source of fake data which is clocked through the Xilinxes instead of real data being used. This allows the Xilinxes to be tested without the need for an external data source. Xilinx modeThis is used to set the Xilinx operation mode. There are two signals into the Xilinx chips which control the mode - the Peak Finder Override (PFO) and the FIF Filter Enable (FFE) signals. The mode can take the following values: 0 FFE=1 PFO=0 1 FFE=0 PFO=1 ("transparent mode" - Data passed unchanged) 2 FFE=0 PFO=0 3 FFE=1 PFO=1 indicates that the Peak Finder Override and FIR Filter Enable bits on the FPGA control registers should be set so that the Xilinxes passed the input data through themselves without modifying it. Again, this function is only used for debugging and testing of the software and hardware and should not be enabled during a "normal" run. FADC dataThe flash ADC data is conceptually very similar to the TXM data. Each card handles 4 channels, and each channel has only one 256 byte memory instead of three. The bitmask and slice settings are similar in function to the TXM cards and need no further description only to say that the initialisation of a card occurs if any of the four channels on it are enabled. FADC playback enableFor diagnostic purposes, the memories on the cards can be preloaded with fake data and the cards will play it back through the digital outputs. The normal operation is for the analogue inputs to be digitised to be recorded in the memories and sent out on the digital outputs. This flag having a non-zero value indicates that the playback mode was selected for this run. FADC preload dataThis flag indicates that data was preloaded into those cards which were initialised. The filename is in the "FADC preloaded data filenames" field. The file contains the preload data which can be used for all cards. FADC DAC valuesThis is an array of 12 words which contains the D/A converter bias offsets which were loaded into each card that was initialised. Note that these are byte values, although recorded in words. Comment stringHolds an optional, null-terminated comment string. If there is no comment, then the first character is a null. End of physical recordAlways -1. Note On 7 June we slightly changed the format of run start and end records so that this word was not counted as part of the record length in the header. This is because we were having problems reading the tapes with EPIO and now believe that this word is considered by EPIO to be the start of the next logical record on the tape. A value of -1 for the record length has a special meaning - it means that there is no more data in the physical record. End of Burst recordsThe End of Burst record is written at the end of the spill. It just contains a "user" header with the interrupt register field set to 2, and the burst number incremented. Important note: During running, we discovered that the End of Burst signal was plugged into the Start of Burst port on the interrupt register. This means that when there is an End of Burst signal, the computer considers it to be a Start of Burst. The only difference is that the computer writes a Start of Burst data type field instead of an End of Burst and increments the Burst Number field. For End of Burst it does not increment the Burst Number. So, rather than increasing the number of different tape formats for this run, we just revised this document so that the Start of Burst data type gets renamed to End of Burst! In the running program, the source code still thinks it is writing Start of Burst records. The only complication is that the Burst Number gets incremented at the end of the burst. Event recordsThese have the following format:
CAMAC dataTen words of CAMAC data, which is: Word Interrupt register Word Microscaler channel 1 Word Microscaler channel 2 Word Microscaler channel 3 Word Pattern unit Word TDC channel 0 Word TDC channel 1 Word TDC channel 2 Word TDC channel 3 Word Switch register Interrupt registerThe CAMAC crate has an EC218 Interrupt Register unit in it which is used to generate interrupts to the computer to indicate that it a physics event has occurred and that it is therefore to readout the various modules; or to write and end of burst record. The least significant bit, bit 0 is set when there is an interrupt due to a physics event (and thus an event record is to be written) and bit 1 set when there is an end of burst signal. Thus, the user header interrupt register field should contain a 1 when it is part of a normal physics event record and two if it is part of a start of burst record. Microscaler channel 1The microscaler card is just a CAMAC module with a set of registers which are incremented each time that a pulse is detected on a corresponding input port. The registers can also be zeroed by the computer. The first channel records the number of S3.S4 and random triggers seen since the start of the run. Microscaler channel 2This records the number of S3.S4 and randoms gated seen since the start of the run. Microscaler channel 3This records the number of "event" acknowledgements that the computer has issued since the start of the run. The function of these signals is to reset everything after an event has been processed and make the system ready to receive the next trigger. One acknowledgement is issued when the run starts and then one each time that the computer has finished processing an event. Thus, this number should be equal to the number of events so far processed + 1. This information was not recorded in this word last year. TDC channelsThere are four words of TDC (=Time to Digital Converter) timing data. Only the first TDC channel (Channel 0) is used, so the last three contain meaningless values. The TDC is the time between a trigger being received and the next 40 MHz clock tick, so always falls in a 25 nanosecond range. The start of this range is not defined but can be determined statistically by looking through a large number of events (i.e. there is a propagation delay through the NIM logic so the lowest TDC value seen is not zero but some initial offset. The TDC card has its range is set to 0.25 nanoseconds per unit. Switch register settingsThere is a manually set switch register which is usually changed to mark when some change is done during a run, or at the start of a run. The current value in this register is recorded in the last CAMAC word written BCID dataThe BCID readout appears on the tape after the CAMAC readout, and has the following format: BCID channel data BCID channel data ... (for as many channels as selected for readout) BCID card status data BCID card status data ... (for as many BCID cards as selected for readout - max 3) The format of a BCID channel data block is as follows: Word 0xBC10 OR'ed with the memory type (range 1-3) Word card number (range 0-2) Word channel pair (range 0-5) Word slices wanted (i.e. how many slices are being read out) Word first slice offset (negative number) Word Slices for this pair of channels[slices wanted] memory type is 1 for input memory, 2 for output memory and 3 for LUT memory The channels are read out in ascending card number. Within that, they are read by ascending channel pair and within that by ascending memory type. e.g. card 0, channel pair 0 (i.e. channels 0 and 1), input memory card 0, channel pair 0 (i.e. channels 0 and 1), output memory card 0, channel pair 0 (i.e. channels 0 and 1), LUT memory card 0, channel pair 1 (i.e. channels 2 and 3), input memory card 0, channel pair 1 (i.e. channels 2 and 3), output memory card 0, channel pair 1 (i.e. channels 2 and 3), LUT memory ... card 2, channel pair 0 (i.e. channels 0 and 1), input memory card 2, channel pair 0 (i.e. channels 0 and 1), output memory card 2, channel pair 0 (i.e. channels 0 and 1), LUT memory The format of a BCID card status data block is as follows. If there is more than one of them, then they are ordered in ascending card number. These blocks always come after the last BCID channel data blocks. Any card which is read out will contribute one of these. The registers are read when the event is read out. Word 0xBC20 Word Card number (0-2) which the block refers to Word Module ID register Word Control and status register Word FPGA control register The FPGA control register is laid out as follows: Bit 0 Peak Finder Override select flag Bit 1 FIR Filter Enable select flag Bit 2-3 Unused (read as zero) Bit 4-5 FPGA number selected for current operation (range 0-2) Bit 6-7 Unused (read as zero) Bit 8 (Not) Clear Program (1 = good) Bit 9 Trigger readback of selected FPGA reading back (read as zero) Bit 10 RAM Clock Trigger (read as zero) Bit 11 RAM Clock status (0 = good) Bit 12 Not Initialised (0 = good) Bit 13 All FPGAs on card Loaded (1 = good) Bit 14 Readback In Progress (0 = good) Bit 15 Loaded - selected FPGA is loaded (1 = good) FADC dataThe FADC readout appears on the tape after the BCID data, and has the following format: FADC card data FADC card data ... (for as many cards as selected for readout) In ascending FADC card number The FADC card data has the following format: Word 0xFADC Word card number [0-8] Word Control and Status Register Word Counter at start of readout Word Slices wanted (i.e. how many slices were read out) Word First slice offset (negative number) Word pairs FADC data (packed as bytes - first Word = channels 0 & 1, second = 2 & 3) If any channel on a card is selected for readout, then all of the channels on the card are actually read out. If there is a VME, clock absent or similar error when reading out a card, then only 6 words are written in the event record for that card - but the second three words (Slices wanted onwards) will be zero. It should be possible to determine the reason for the error by looking at the CSR word. The FADC data is read out as 32-bit longwords, with each byte representing one channel of FADC data. CPM dataApart from the CF00 check word and the number of slices, it has the same format as for last year. The current format is: wordCF00 hexadecimal word Number of slices requested Then, for each slice in turn: word RAM data[20] word FIFO data[9] And then word Energy sum[9] The number of slices is easily found from the header. For the latest versionThis document is available via http://hepwww.rl.ac.uk/atlas/l1/home.html |
This page was last updated on
16 December, 2013 |