System configuration

As described in Chapter VI, the system configuration is not yet automatically produced by the control system. Neither is the system.config file, which is used by CONSTRICTOR for system configuration information, used to control the NPOI configuration. Ideally, the system configuration file is deposited in the same directory used for the observing list the day before observing. A script on sextans automatically transfers this file to the proper system area. If this is not done, the file system.config can always be placed in the directory where CONSTRICTOR is run, and will be loaded automatically, overriding any system configuration embedded in the raw data stream.

The system configuration is supposed to be written by the control system into the SYS_CONFIG packet stored in the raw data stream. This however is not currently implemented and instead the text packet, in KEYIN format, is fetched from disk (file system.config). Therefore, the stored system configuration can be wrong, if the configuration file was out of date. In this case, placing this file in the current directory for CONSTRICTOR will cause the software to load this file automatically and use it instead of the SYS_CONFIG packet. Make sure this file does not exist in the current directory if you want to use the SYS_CONFIG packet instead.

Here is an example of a system configuration.

MAX_WAV=16
MAX_FRFREQ=6
MAX_SID=4

Latitude = 35.0966666666667
Longitude = -111.535
Altitude = 2200.66

TDTminusUTC = 60.184
UT1minusUTC = 0

InstrCohInt = 2

NumBin = 64
BeamcombinerID = 2

InputBeam.NumSid = 6
InputBeam.StationID = "E02", "AC0", "AE0", "AW0", "W07", "AN0"
InputBeam.SiderostatID = 6, 1, 2, 3, 5, 4
InputBeam.Stroke = -1.0e-6, -3.0e-6, -3.0e-6, +3.0e-6, +2.0e-6, +2.0e-6
InputBeam.FDLTankID = 1, 2, 3, 4, 5, 6
InputBeam.BCInputID = 1, 2, 3, 4, 5, 6
InputBeam.StationCoord(01:04) =   5.599326,  -1.792619,   0.010397,   8.429653
InputBeam.StationCoord(05:08) =  -0.499984,  -5.639917,   0.000035,  13.415900
InputBeam.StationCoord(09:12) =  16.989235, -12.896476,  -0.001264,  31.406569
InputBeam.StationCoord(13:16) = -20.389907, -15.497607,  -0.000635,  27.541854
InputBeam.StationCoord(17:20) = -44.203123, -32.988367,  -0.081429,  56.867758
InputBeam.StationCoord(21:24) =  -0.627300,  17.212581,  -0.008760,  20.285819

OutputBeam.NumOutBeam = 2
OutputBeam.BCOutputID = 2, 3
OutputBeam.APDArrayID = 2, 3
OutputBeam.NumSid = 4, 4
OutputBeam.NumBiasFreq = 1, 3
OutputBeam.NumSpecChan = 16, 16
OutputBeam.BiasMod(01:06) = 8, 7, 10, 5, 3, 5
OutputBeam.BiasMod(07:12) = 1, 7, 10, 8, 3, 5
OutputBeam.StationID(01:04) = 1, 3, 4, 6
OutputBeam.StationID(05:08) = 1, 2, 4, 5

OutputBeam.Wavelength(01:04) = 849.4e-9, 820.9e-9, 793.9e-9, 768.3e-9
OutputBeam.Wavelength(05:08) = 744.2e-9, 722.9e-9, 701.5e-9, 683.1e-9
OutputBeam.Wavelength(09:12) = 664.6e-9, 648.9e-9, 617.7e-9, 603.5e-9
OutputBeam.Wavelength(13:16) = 590.7e-9, 577.9e-9, 566.5e-9, 556.6e-9

OutputBeam.Wavelength(17:20) = 849.4e-9, 820.9e-9, 793.9e-9, 768.3e-9
OutputBeam.Wavelength(21:24) = 744.2e-9, 722.9e-9, 701.5e-9, 683.1e-9
OutputBeam.Wavelength(25:28) = 664.6e-9, 648.9e-9, 617.7e-9, 603.5e-9
OutputBeam.Wavelength(29:32) = 590.7e-9, 577.9e-9, 566.5e-9, 556.6e-9

OutputBeam.WavelengthErr(01:04) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(05:08) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(09:12) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(13:16) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9

OutputBeam.WavelengthErr(17:20) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(21:24) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(25:28) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.WavelengthErr(29:32) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9

OutputBeam.ChanWidth(01:04) = 31.3e-9,  28.9e-9,  26.7e-9,  24.7e-9
OutputBeam.ChanWidth(05:08) = 22.9e-9,  21.3e-9,  19.8e-9,  18.5e-9
OutputBeam.ChanWidth(09:12) = 17.2e-9,  16.1e-9,  15.1e-9,  14.2e-9
OutputBeam.ChanWidth(13:16) = 13.4e-9,  12.7e-9,  12.0e-9,  11.3e-9

OutputBeam.ChanWidth(17:20) = 31.3e-9,  28.9e-9,  26.7e-9,  24.7e-9
OutputBeam.ChanWidth(21:24) = 22.9e-9,  21.3e-9,  19.8e-9,  18.5e-9
OutputBeam.ChanWidth(25:28) = 17.2e-9,  16.1e-9,  15.1e-9,  14.2e-9
OutputBeam.ChanWidth(29:32) = 13.4e-9,  12.7e-9,  12.0e-9,  11.3e-9

OutputBeam.ChanWidthErr(01:04) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(05:08) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(09:12) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(13:16) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9

OutputBeam.ChanWidthErr(17:20) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(21:24) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(25:28) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9
OutputBeam.ChanWidthErr(29:32) = 0.1e-9, 0.1e-9, 0.1e-9, 0.1e-9

Note the OutputBeam.NumSid and OutputBeam.StationID parameters; these parameters replace the old OutputBeam.FringeMod and OutputBeam.InputPair parameters which specified the baselines and their modulations directly. Even though CONSTRICTOR still understands the old parameters, the new ones are easier to use since CONSTRICTOR will compute the combinations and their modulations amplitudes automatically from the list of stations in each spectrometer and their strokes. OutputBeam.StationID tells which stations are in a given spectrometer, by giving its index in the InputBeam.StationID array (starting with 1). (That means that th values specified should always be smaller or equal to the number of stations used, a common mistake!)

MAX_SID, like the other MAX parameters, is used to tell CONSTRICTOR the number of places allocated, but not necessarily used, for the specifications in the KEYIN style system configuration. For example, OutputBeam.StationID in the KEYIN file is a one-dimensional array (KEYIN does not recognize more than one dimension), but needs to be converted to a two-dimensional array which specifies for each output beam what stations it contains. The MAX_SID parameter is used to determine where in the KEYIN vector the next output beam section begins (here: after the first 4 numbers).

Similarly, the MAX_FRFREQ is used to decode the OutputBeam.BiasMod numbers. Again, the actual number of baselines can be less (but not more of course) than this parameter allows.

Also note that the FDLTankID numbers are used to determine at which position in the FDL_POSITION packet one can find the delay data for a given station. (This is only true for 6-station data; in the case of the 3-station data all three delay lines occupy the first three dimensions in the FDL_POSITION packet.) The same holds for SiderostatID, which actually should have been called SidCon numbers. This is because NAT, SidModel, and Motor counts are stored in the order of SidCon IDs, not in the station order. CONSTRICTOR uses SiderostatID to put the data into the right place. Here for example, the E02 NAT data is not the first entry in its packet, but the sixth.

One word on the BeamCombinerID. It is one for the 3-station combiner, 2 for the 6-station combiner, and 3 for the 6-station combiner used for astrometry. The only difference between the last two cases is whether or not the white light ($\alpha$ Lab) fringe modulation needs to be doubled. If BeamCombinerID$=$3, then the modulation has to doubled.