The data are in an HDS (Hierarchical Data System [Starlink Project]) structure, somewhat analogous to a directory structure. It differs from a directory structure in that a “directory” can actually be an array. Each element of the array will have the same set of sub-directories. Since the structure is like a directory tree, the order of variables listed below is not meaningful. Furthermore, variables can be added or removed in the future. Therefore, this list amounts to a list of the data we think we want, and of the names we have agreed to give them.
In addition to the natural array dimensions such as spectral channel
number, point number, etc., we use one more to label the real and
imaginary parts of a complex number, indicated by “[R/I]
”.
The uncertainties for complex numbers have three components, which may
be the major axis, minor axis, and position angle of the error ellipse.
For locations, we use three-element vectors with “East, North, Up” as the order of the elements
For directions, we use two-element vectors with the first element () being the angle from the zenith, and the second element () being the angle in the horizontal plane, measured from east through north.
We have not specified the units in the database description.
For lengths, we will use meters. Time stamps are offsets from 0 h UT
of DataSet.Date
. For time stamps and sample intervals, we will
use milliseconds. We use <_integer>
(which is int*4, with a
range of +/-2e9, or +/-68 days) for time stamps, and <_double>
for times (e.g., start and stop times).
The format for the descriptions is:
VariableName [IndexLimit(source)][ ... ] <Data type>
So, for instance,
ComplexVis[NumPoint][NumBaseline(beam)][NumSpecChan(beam)][R/I]
under ScanData.PointData.OutputBeam[NumOutBeam]
is a
four-dimensional array, with the first dimension ranging from 0 to
NumPoint - 1
, the second from 0 to NumBaseline(beam) - 1
(where NumBaseline can differ from one beam combiner output beam to
another), and the third ranging from 0 to NumSpecChan(beam) - 1
.
In the fourth index, 0 corresponds to the real part and 1 to the imaginary
part. In this example, [NumPoint]
could have been indicated as
[NumPoint(scan)]; however, we suppress listing the source of the parameter
if that source is in the same object as the indexed variable. In this
example, the variable NumScan is in the ScanData object that contains
ComplexVis, so the source for NumPoint is suppressed, but NumOutBeam is
in the GenConfig object, so the source for NumBaseline is indicated.
We use the C convention, where the last index listed is the most rapidly varying.
Tables are not part of the HDS system, but they are easily implemented.
A table, such as ScanData, is simply a structure like any other,
containing a set of substructures, each of which is an array. What makes
it a table is our agreement that the items (a primitive, a structure,
or a sub-array) pointed to by the first index of each array correspond
with one another, e.g., PointData[1]
(where PointData[]
is itself a complicated structure) was taken between StartTime[1]
and StopTime[1]
while we observed StarID[1]
, and so on.
We use two kinds of table here: <Table>
and <ExtTable>
.
Both are slightly different from the table type described in the previous
paragraph. Both types contain one integer scalar quantity giving the
number of rows (e.g., NumData), followed by the contents of the table,
i.e., one or more arrays of variables for which the first index runs
from 1 to (NumData - 1). The <ExtTable>
(extended table) type
also allows array variables whose first index does not correspond with
row number. However, the primitives that make up that variable must be
array primitives whose first index does correspond with row number.
Session Format <_char> Date <_char> SystemID <_char> ObserverLog <_char> ConstrictorLog <_char> GeoParms Latitude <_double> Longitude <_double> Altitude <_double> EarthRadius <_double> J2 <_double> LeapSeconds <_integer> EarthRotation <_double> GenConfig InstrCohInt <_double> BeamCombinerID <_integer> NumLaserP2P <_integer> P2PLaunchPlate [NumLaserP2P] <_integer> P2PRetroPlate[NumLaserP2P] <_integer> MasterPlateID <_char*> NumPlate <_integer> Plate [NumPlate] NumCluster <_integer> PlateEmbedded <_integer> PlateID <_char*> PlateLoc [3] <_double> PlateLocErr [3] <_double> InputBeam <Table> NumSid <_integer> StationID [NumSid] <_char> SiderostatID [NumSid] <_integer> DelayLineID [NumSid] <_integer> BCInputID [NumSid] <_integer> StarTrackerID [NumSid] <_integer> StationCoord [NumSid][4] <_double> four coords incl delay OutputBeam <Table> NumOutBeam <_integer> SpectrometerID [NumOutBeam] <_char> NumBaseline [NumOutBeam] <_integer> NumSpecChan [NumOutBeam] <_integer> FringeMod [MaxNumBaseline][NumOutBeam] <_integer> BaselineID [MaxNumBaseline][NumOutBeam] <_char> Wavelength [MaxNumSpecChan][NumOutBeam] <_double> WavelengthErr [MaxNumSpecChan][NumOutBeam] <_double> ChanWidth [MaxNumSpecChan][NumOutBeam] <_double> ChanWidthErr [MaxNumSpecChan][NumOutBeam] <_double> Triple <Table> NumTriple <_integer> OutputBeam [NumTriple][3] <_integer> Baseline [NumTriple][3] <_integer> NumSpecChan [NumTriple] <_integer> SpecChan [NumTriple][3] <_integer> SidMetConfig [NumPlate] NumLaser <_integer> CountsPerWaveln <_integer> LaserWavelength <_double> SampleInterval <_integer> IFBox [NumLaser] <_integer> Channel [NumLaser] <_integer> Theta [NumLaser] <_integer> ThetaErr [NumLaser] <_integer> Phi [NumLaser] <_integer> PhiErr [NumLaser] <_integer> LaunchInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> RetroInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> OptAnchConfig [NumPlate][MaxNumCluster] NumLaser <_integer> CountsPerWaveln <_integer> LaserWavelength <_double> SampleInterval <_integer> IFBox [NumLaser] <_integer> Channel [NumLaser] <_integer> Theta [NumLaser] <_integer> ThetaErr [NumLaser] <_integer> Phi [NumLaser] <_integer> PhiErr [NumLaser] <_integer> LaunchInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> RetroInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> Pier2PierConfig NumLaser <_integer> CountsPerWaveln <_integer> LaserWavelength <_double> SampleInterval <_integer> IFBox [NumLaser] <_integer> Channel [NumLaser] <_integer> Theta [NumLaser] <_integer> ThetaErr [NumLaser] <_integer> Phi [NumLaser] <_integer> PhiErr [NumLaser] <_integer> LaunchInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> RetroInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> ExtCatEyeConfig [NumPlate] NumLaser <_integer> CountsPerWaveln <_integer> LaserWavelength <_double> SampleInterval <_integer> IFBox [NumLaser] <_integer> Channel [NumLaser] <_integer> Theta [NumLaser] <_integer> ThetaErr [NumLaser] <_integer> Phi [NumLaser] <_integer> PhiErr [NumLaser] <_integer> LaunchInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> RetroInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> PlateExpConfig [NumPlate] NumLaser <_integer> CountsPerWaveln <_integer> LaserWavelength <_double> SampleInterval <_integer> IFBox [NumLaser] <_integer> Channel [NumLaser] <_integer> Theta [NumLaser] <_integer> ThetaErr [NumLaser] <_integer> Phi [NumLaser] <_integer> PhiErr [NumLaser] <_integer> LaunchInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> RetroInfo [NumLaser] NumGlass <_integer> NumAirGap <_integer> Loc [3] <_double> LocErr [3] <_double> GlassThick [NumGlass] <_double> GlassThickErr [NumGlass] <_double> GlassCode [NumGlass] <_integer> ExFrac [NumGlass] <_double> ExFracErr [NumGlass] <_double> AirGapThick [NumAirGap] <_double> AirGapThickErr [NumAirGap] <_double> MetAirTempConf [NumPlate] NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> MetSolidTmpConf [NumPlate] NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> MetPressConf [NumPlate] NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> MetHumConf [NumPlate] NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> LabAirTempConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> LabSolidTmpConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> LabPressConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> LabHumConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> DLPressConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> FBPressConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> WxAirTempConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> WxPressConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> WxHumConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> WindSpeedConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> WindDirConf NumSensor <_integer> SampleInterval <_integer> Chain [NumSensor] <_integer> BRAD [NumSensor] <_integer> Offset [NumSensor] <_double> OffsetErr [NumSensor] <_double> Scale [NumSensor] <_double> ScaleErr [NumSensor] <_double> Cross [NumSensor] <_double> Loc [NumSensor][3] <_double> LocErr [NumSensor][3] <_double> BGScanData <ExtTable> NumBGScan <_integer> ScanID [NumBGScan] <_integer> Time [NumBGScan] <_double> RA [NumBGScan] <_double> Dec [NumBGScan] <_double> OutputBeam [NumOutBeam] <ExtColumn> Rate [NumBGScan][NumSpecChan(beam)] <_real> ScanData <Table> NumScan <_integer> ScanID [NumScan] <_integer> StartTime [NumScan] <_double> StopTime [NumScan] <_double> Code [NumScan] <_integer> NumPoint [NumScan] <_integer> StarID [NumScan] <_char> WASA_Image [NumScan] intensity and position(s) of stars in field NumCoh [NumScan] <_integer> instr. coh. int.s per CONSTRICTOR coh. int. NumIncoh [NumScan] <_integer> PointData [NumScan] <ExtTable> NumPoint <_integer> Time [NumPoint] <_double> time of mid-point SoftDelay [NumPoint][NumSid] <_double> InputBeam [NumSid] FDLPos [NumPoint] <_double> FDLPosErr [NumPoint] <_double> NATJitter [NumPoint] <_real> NATJitterErr [NumPoint] <_real> OutputBeam [NumOutBeam] <ExtColumn> SoftDelay [NumPoint][NumBaseline(beam)] <_real> SoftDelayErr [NumPoint][NumBaseline(beam)] <_real> DelayJitter [NumPoint][NumBaseline(beam)] <_real> VisSq [NumPoint][NumBaseline(beam)][NumSpecChan(beam)] <_real> VisSqErr [NumPoint][NumBaseline(beam)][NumSpecChan(beam)] <_real> ComplexVis [NumPoint][NumBaseline(beam)][NumSpecChan(beam)][R/I] <_real> ComplexVisErr [NumPoint][NumBaseline(beam)][NumSpecChan(beam)][A/B/C] <_real> PhotonRate [NumPoint][NumSpecChan(beam)] <_real> PhotonRateErr [NumPoint][NumSpecChan(beam)] <_real> Triple [NumTriple] <ExtColumn> ComplTriple [NumPoint][NumTripleChan][R/I] <_real> ComplTripleErr [NumPoint][NumTripleChan][R/I] <_real> SidMetData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumLaser(plate)] <_integer> OptAnchData [NumPlate][MaxNumCluster] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumLaserMax(plate,cluster)] <_integer> Pier2PierData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumLaser(plate)] <_integer> ExtCatEyeData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumLaser(plate)] <_integer> PlateExpData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumLaser(plate)] <_integer> MetAirTempData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor(plate)] <_word> MetSolidTmpData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor(plate)] <_word> MetPressureData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor(plate)] <_word> MetHumidityData [NumPlate] NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor(plate)] <_word> LabAirTempData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> LabSolidTmpData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> LabPressData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> LabHumData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> DLPressData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> FBPressData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> WxAirTempData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> WxPressureData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> WxHumidityData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> WindSpeedData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word> WindDirData NumData <_integer> TimeStamp [NumData] <_integer> Data [NumData][NumSensor] <_word>