The Solar Isotope Spectrometer (SIS) is designed to provide high resolution measurements of the isotopic composition of energetic nuclei from He to Ni (Z=2 to 28) over the energy range from ~10 to ~100 MeV/nucleon. For more information about the SIS instrument, visit the SIS Home Page, at Caltech.
ACE Level 2 data are suitable for serious scientific study and are made available to the scientific community for that purpose. The data are organized by instrument (there are 9 science instruments aboard the spacecraft), and by time-averaging periods. Data from each instrument are stored in separate HDF data files, and separate HDF files also contain the data from the different averaging periods. For SIS, the averaging periods are
All level 2 data records for all ACE instruments contain timing information in the same format. The format of the timing information is described here.
In cooperation with the SIS team, a subset of the full SIS dataset was identified as being appropriate for inclusion in the SIS Level 2 data. This subset consists of the fluxes of 9 elements, in 8 energy bands. The energy bands are different for each element. The SIS team delivers these fluxes in 256-second averages in ASCII text format to the ASC, and the ASC performs the longer-term time averaging and the HDF formatting.
The first step in implementing these data in HDF is to define a SIS Level 2 data record. The ASC uses the C programming language, so this record is defined by a C data structure. The data structure for the SIS hourly averages is shown here:
struct SIS_data_1hr { /* UT time at the start of the averaging period */ int32 year; /* integer year */ int32 day; /* integer day of year */ int32 hr; /* hour of day */ int32 min; /* min of hour */ float32 sec; /* seconds */ float64 fp_year; /* floating point year */ float64 fp_doy; /* floating point Day of Year */ float64 ACEepoch; /* UT time in sec since 00:00:00 1/1/96 */ float32 flux_He[NUMBER_OF_ENERGY_BANDS]; /* He flux in eight energy ranges, * particles/(cm2 Sr sec MeV/nucleon) */ float32 flux_C[NUMBER_OF_ENERGY_BANDS]; /* Carbon flux */ float32 flux_N[NUMBER_OF_ENERGY_BANDS]; float32 flux_O[NUMBER_OF_ENERGY_BANDS]; float32 flux_Ne[NUMBER_OF_ENERGY_BANDS]; float32 flux_Mg[NUMBER_OF_ENERGY_BANDS]; float32 flux_Si[NUMBER_OF_ENERGY_BANDS]; float32 flux_S[NUMBER_OF_ENERGY_BANDS]; float32 flux_Fe[NUMBER_OF_ENERGY_BANDS]; float32 cnt_He[NUMBER_OF_ENERGY_BANDS]; /* He counts in eight energy ranges,to be used * for computing statistical uncertainties in the fluxes */ float32 cnt_C[NUMBER_OF_ENERGY_BANDS]; float32 cnt_N[NUMBER_OF_ENERGY_BANDS]; float32 cnt_O[NUMBER_OF_ENERGY_BANDS]; float32 cnt_Ne[NUMBER_OF_ENERGY_BANDS]; float32 cnt_Mg[NUMBER_OF_ENERGY_BANDS]; float32 cnt_Si[NUMBER_OF_ENERGY_BANDS]; float32 cnt_S[NUMBER_OF_ENERGY_BANDS]; float32 cnt_Fe[NUMBER_OF_ENERGY_BANDS]; int32 solar_activity_flag; /* = 0 less than threshold */ /* = 1 greater than threshold */ };The data structures for the other time-averages are exactly the same, except for the name of the data structure.
To ease the pain, the ASC has developed a perl program - hdfgen - which takes a C-structure as input and generates all the HDF API calls needed to read and write the entire C structure. The user interacts with the data at the level of read_Cstruct and write_Cstruct instead of the individual data element level that the HDF API requires. Use of hdfgen helps to reduce software development time and minimize coding errors. Read all about this nifty perl program here.
Skipping the details, the hdfgen routines create two basic HDF building blocks - Vgroups and Vdatas. Vgroups are generic grouping elements allowing a user to associate related objects within an HDF file. As Vgroups can contain other Vgroups, it is possible to build a hierarchical file. Vdatas are generic list objects. Data is organized into "fields" within each Vdata. Each field is identified by a unique "field name". The type of each field may be any of the basic number types that HDF supports. Fields of different types may exist within the same Vdata. hdfgen can also handle SDS objects, but we don't use them for ACE level 2 data.
For SIS Level 2 hourly-average data, the hdfgen routines create a Vgroup labelled "VG_SIS_data_1hr". Within the Vgroup, a Vdata called "SIS_data_1hr" is defined whose fields correspond to the elements of the C data structure listed above. Data processing programs write data to the HDF files by repeatedly filling up the C data structure and then calling a hdfgen-created routine to write a new record to the Vdata.
A second Vdata is also defined for SIS, in which we record the energy ranges, in MeV/nucleon, for each element (the energy ranges are different for each element). Of course, we only write one record to this Vdata.
A third Vdata is also defined for SIS, which is only used by our web-based data browser. This Vdata records a mapping between Year/Day_of_year and record number in the SIS_data_1hr Vdata. This information enables us to give users the option to subset data based on Date rather than record number. This Vdata contains one record per day, so a user can't subset the data into chunks smaller than one day (unless she resorts to using record numbers to perform the subsetting).
We use HDF File Annotations and Object Annotations to record metadata within HDF files. Both kinds of annotations are basically containers into which one can dump ASCII-formatted information.
The hdfgen routines automatically add an object annotation whenever a Vdata or an SDS is defined in an HDF file. The object annotation containes a copy of the C data structure used as input by hdfgen, and is added to the Vgroup containing the Vdata (or SDS).
File annotations are used to record global information about the dataset. At least three file annotations are added to each ACE Level 2 data file:
HDF also provides Attributes, which can be set for either a Vdata, or for any of the fields within a Vdata. In the future, the ASC may utilize HDF attributes to record information such as the physical units associated with the data contained within a Vdata field, etc.
Email Address: ad@srl.caltech.edu
Last Updated: 23 November, 1999