Space Radiation Laboratory

Galileo Heavy Ion Counter

HIC Collect and Compress Routine

In Phase 2, HIC realtime data are collected by a CDS program for a period of time that depends on readout rate: 50 RIM (at 1 bps), 25 RIM (2 bps), or 10 RIM (5 bps), where 1 RIM = 91 minor frames and 1 mf = 2/3 sec. At the end of the collection period, another portion of the program compresses the data into their output format.

The output (before packet headers are added) consists of up to 375 bytes of binary data in two blocks. A dump of simulated data is attached as Appendix A. For details about packet headers, see MOS-GLL-3-310 (ECR 35559), Flight Software Requirements, Appendix, p. 5-47; and 625-610: SIS 2244-05 P2, Instrument Packet File. The present description is of the HIC data only.

The first block, of 143 bytes, contains rate data arranged in a predetermined format. There are 57 rate "words" of 2 1/2 bytes each, and 1/2 byte of filler (0x0) at block's end. The first byte of each rate word is a counter of the number of times that rate was read out. The rest of the word (1 1/2 bytes) gives the sum of the rate counts from those readouts, in log-compressed form. The compression scheme is the same as that in the SRD.

Several types of rate are subdivided, i.e., have more than one rate word in the output block. Each successive rate word within a type represents data taken in a later portion of the collection period. The 57 rate words appear in the following order:

10 words of DUBL ("A" rates, for ten successive time divisions)
6 words of TRPL ("B" rates, for six successive time divisions)
6 words of WDSTP ("C" rates, for six successive time divisions)
6 words of WDPEN ("D" rates, for six successive time divisions)
10 words of LETB ("E" rates, for ten successive time divisions)
6 words of LE1 ("G" rates, for six successive time divisions)
1 word of LE5 ("F" rates, MUXN=10)
1 word of LE3 ("F" rates, MUXN=11)
1 word of LE4 ("F" rates, MUXN=12)
1 word of LE2 ("F" rates, MUXN=13)
6 words of LB1 ("H" rates, MUXN=10, for six successive time divisions)
1 word of LB2 ("H" rates, MUXN=11)
1 word of LB3 ("H" rates, MUXN=12)
1 word of LB4 ("H" rates, MUXN=13)

(Slant data, from "F" and "H" rates with MUXN<10 or MUXN>13, are discarded.)

Thus for the longest collection period (50 RIM), we can distinguish ~5-min changes in the DUBL and LET B rates and ~9-min changes in the five rates that have six divisions each. At higher data rates (collection periods of 25 RIM or 10 RIM), the time resolution is proportionally better.

The second block, of up to 232 bytes, contains event data arranged in a flexible format. The contents of this block can vary considerably depending on the number and kind of events that were observed. Events have no time divisions.

The events are divided into fourteen types and kept, during the collection period, in fourteen different arrays. Each collection array can hold up to 20 or 32 events, depending on type. The array numbers determine the order in which events are output. Event types are distinguished in the output block not by absolute position (as are the rates) but by header words.

Each string of event information begins with a one-byte header. The first half- byte contains the event array number, i.e., the type. The second half-byte is a counter that gives the number of events in the string for that type, less one; i.e., counter = counts - 1. If no events were observed for a given type, no string is output. Each event type has a characteristic word length, so the header also gives the length of the event string. Each type also has a characteristic meaning assigned to each bit in its word. For details, see Appendix B.

After all the output events comes an event counter array, which consists of a leading 'f' followed by six numbers of 1 1/2 bytes each. These show the total number of events counted in the collection period for each of six kinds of event: DUBL, TRPL, WDSTP, WDPEN, LETB, and null (tag word = 0).

The fourteen event types are distributed among the five non-null kinds as follows: DUBL, type 9; TRPL, types 5 and 12; WDSTP, types 1, 6, 13, and 14; WDPEN, types 7 and 8; and LETB, types 2, 3, 4, 10, and 11. Counts in this array include "caution" events, those whose caution bit in the tag word is set.

When rates are very low, all observed events are output and the event block is very short. When rates are very high, details of some events will be lost because of the limited size of the output block: 232 bytes will hold only about 60 events plus the counters.

If the event arrays are quite full, the program outputs sixteen events from each type, starting with number one, until it has no more room. For this situation, only events of types 1-5 will be output in detail; the rest will be lost, as in the Appendix A dump. Since the program outputs the first sixteen events of each type, events from the beginning of the collection period are favored ever more heavily as rates climb.

Appendix A: Hex Dump of Output Block for Sparse Events (event block short)

Bar = first rate counter of each series, or event type's header.
 x = filler nybble (always 0x0)

octal      data
         __                                                rates
0000000  8880 8988 1897 8179 8818 9881 8978 1798 8189 8818
0000024  9781 7988 18ed 7edf d7fd fd7f dfd7 fdfd 7fdf c7fc
         __                                   __
0000050  ed73 1fd7 3dfd 73df d73d fd73 dfc7 3ded 76df d77d
0000074  fd77 dfd7 7dfd 77df c77c 8872 a977 3c98 73e9 873e
0000120  9773 c987 3e98 73e9 773c 9873 e987 3eed 6b1f d6bd
                                  __    __    __    ___
0000144  fd6b dfd6 bdfd 6bdf c6bd 5e76 b5e6 815d 68b5 d697
         __                                   __    ___
0000170  0f85 20f8 5210 8601 0860 1086 0108 605e 6b05 d6ba
         __    x__                               __
0000214  5d6c 5012 ab9b 9c65 ab9b 9c65 ab9b 9c65 525c 66d5 events (@ 0217)
0000240  4e5c 66d5 4e5c 66d5 4e62 9cfc f652 9cfc f652 9cfc
              __                   x__                   x
0000264  f652 72fc a9af ca9a fca9 a082 bcab 5bca b5bc ab50
         __                                             __
0000310  924c 24c2 f0fb 794c 24c2 f0fb 794c 24c2 f0fb 79c2
0000334  3185 a89d 3185 a89d 3185 a89d d217 2670 ca17 2670
                     __                               _
0000360  ca17 2670 cae2 19c3 d8a5 19c3 d8a5 19c3 d8a5 f003
0000404  0060 0c00 6001 17b0 

Appendix B: Event Construction

The table below gives details of how each event type is compressed into its word. The tag word is discarded for all types but #9 since the array number gives much of the relevant information. The "maximum number of events" is the highest number that the program will put into that collection array.

A "small" event has all zeroes in the first half-byte of each of its PHA words. Other events are "big." A "caution" event is one whose caution bit (last bit of tag word) is set. Consult the SRD, Table 6 (p.8), for detector correspondence to PHA words for the various event types.

Bit Source
Max #
Event Type PHA3 PHA2 PHA1
1 32 32 big LE1 WDSTP top 11 top 10 top 11
2 8 32 LETB single -- -- top 8
3 20 20 big LETB double -- top 10 top 10
4 32 20 big LETB triple top10 top 11 top 11
5 32 20 big TRPL top 10 top 11 top 11
6 32 20 big !LE1 WDSTP top 11 top 10 top 11
7 20 20 LE1 WDPEN top 10 top 10 --
8 20 20 !LE1 WDPEN top 10 top 10 --
9 48 32 DUBL and "caution" all all all plus tag word
10 (a) 20 20 small LETB double -- bot 10 bot 10
11 (b) 32 20 small LETB triple bot 10 bot 11 bot 10
12 (c) 32 20 small TRPL bot 10 bot 11 bot 11
13 (d) 32 20 small LE1 WDSTP bot 11 bot 10 bot 11
14 (e) 32 20 small !LE1 WDSTP bot 11 bot 10 bot11

Note that the following pairs of event types have the same construction (there are only 9 different schemes): 1 & 6; 4 & 5; 7 & 8; 11 & 12; 13 & 14.

Back to Galileo HIC SRD Section 3.
Next Section