ACIS Users Guide, Rev. A |
This section provides an example Timed Exposure Science Run.
This section describes the example set of parameters and reasons why the parameters were chosen. This section follows the field descriptions provided in Section 4.1.4.1.
For the purposes of this example, assume that the user assigns a unique parameter block id of 0x635231a2 to the paramter block.
This example uses all 4 Imaging CCDs and the two center spectrosocpy CCDs, of which CCD_S3 is a back-side CCD. According to the CCD-lab, the backside CCDs have marginally better performance if their images are held in the CCD framestore for longer periods of time. In order to take advantage of this, CCD_S3 is configured for the first FEP (see Section 4.1.1.2).
The FEP selection array is configured as:
fepCcdSelect[FEP_0] := CCD_S3 fepCcdSelect[FEP_1] := CCD_I0 fepCcdSelect[FEP_2] := CCD_I1 fepCcdSelect[FEP_3] := CCD_I2 fepCcdSelect[FEP_4] := CCD_I3 fepCcdSelect[FEP_5] := CCD_S2
For this example, assume that the source is expected to produce no more than about 80 events per second (including background events which "sneak" through the filters) across all CCDs, and that we don't want to spend the time to send the entire bias map. The event rate for this example is low enough to support Timed Exposure Faint with bias mode, so we choose:
fepMode := FEP_TE_MODE_EV3x3 bepMode := BEP_TE_MODE_FAINTBIAS
For this example, we're not doing on-chip summing, not using a subarray, using the maximum of 30 overclocks per output node, and using a normal video gain. Assume that all of the video chains are working and will be used. The minimum, normal integration time for 6 CCDs is 3.3 seconds (see Section 4.1.1.2). For this example, assume that the source is diffuse enough and the spacecraft dither rate is fast enough to avoid pileup with the 80 counts/second, given a 3.3 second static integration time. This leads to the following:
primaryExposure := 33 secondaryExposure := 0 dutyCycle := 0 onChip2x2Summing := 0 subarrayStartRow := 0 subarrayRowCount := 1023 overclockPairsPerNode := 15 outputRegisterMode := QUAD_FULL ccdVideoResponse[FEP_0] := 0 ccdVideoResponse[FEP_1] := 0 ccdVideoResponse[FEP_2] := 0 ccdVideoResponse[FEP_3] := 0 ccdVideoResponse[FEP_4] := 0 ccdVideoResponse[FEP_5] := 0
Each video board channel has a characteristic video offset value. The offset value is tuned to provide a decent dynamic range, while avoiding clipping the measurment below zero or above 4095. These offsets may be adjusted by the maintainers over the life of the mission. The video offsets provided in the parameter blocks in ROM, and used during calibration are provided in TBD. The offset parameters are indexed by the FEP using the particular CCD, so the mapped parameters are as follows:
CCD_S3 fep0VideoOffset[ONODE_A] := 79 fep0VideoOffset[ONODE_B] := 79 fep0VideoOffset[ONODE_C] := 79 fep0VideoOffset[ONODE_D] := 77 CCD_I0 fep1VideoOffset[ONODE_A] := 87 fep1VideoOffset[ONODE_B] := 86 fep1VideoOffset[ONODE_C] := 76 fep1VideoOffset[ONODE_D] := 89 CCD_I1 fep2VideoOffset[ONODE_A] := 83 fep2VideoOffset[ONODE_B] := 69 fep2VideoOffset[ONODE_C] := 79 fep2VideoOffset[ONODE_D] := 83 CCD_I2 fep3VideoOffset[ONODE_A] := 86 fep3VideoOffset[ONODE_B] := 65 fep3VideoOffset[ONODE_C] := 82 fep3VideoOffset[ONODE_D] := 89 CCD_I3 fep4VideoOffset[ONODE_A] := 76 fep4VideoOffset[ONODE_B] := 68 fep4VideoOffset[ONODE_C] := 79 fep4VideoOffset[ONODE_D] := 80 CCD_S2 fep5VideoOffset[ONODE_A] := 90 fep5VideoOffset[ONODE_B] := 86 fep5VideoOffset[ONODE_C] := 79 fep5VideoOffset[ONODE_D] := 94
For this example, the observation is going to re-compute the bias, but not send it. The algorithm will use "Whole-Frame" mode, with 5 conditioning exposures followed by 11 approximation-to-mean exposures. The low-pixel elimination feature will not be used. The event rejection threshold for the backside CCD, CCD_S3, will be 26 ADU above the the approximated bias level, and will be 50 ADU for all of the front-side CCDs. The pixel rejection threshold for the approximation-to-mean stage will be maintained at 20 ADU above the current bias approximation for all of the CCDs. In order to allow the video board temperatures to settle, and to effectively flush the charge from the CCDs, the system will ignore the first 30 exposures prior to starting the bias computation. The current bad pixel and Timed Exposure column lists will be applied to the bias maps once the maps have been computed. This leads to the following parameters:
ignoreBadPixelMap := 0 ignoreBadColumnMap := 0 recomputeBias := 1 trickleBias := 0 ignoreInitialFrames := 30 CCD_S3 biasAlgorithmId[FEP_0] := FEP_BIAS_1 biasArg0[FEP_0] := 5 biasArg1[FEP_0] := 16 biasArg2[FEP_0] := 0 biasArg3[FEP_0] := 26 biasArg4[FEP_0] := 20 biasCompressionSlotIndex[FEP_0] := 255 CCD_I0 biasAlgorithmId[FEP_1] := FEP_BIAS_1 biasArg0[FEP_1] := 5 biasArg1[FEP_1] := 16 biasArg2[FEP_1] := 0 biasArg3[FEP_1] := 50 biasArg4[FEP_1] := 20 biasCompressionSlotIndex[FEP_1] := 255 CCD_I1 biasAlgorithmId[FEP_2] := FEP_BIAS_1 biasArg0[FEP_2] := 5 biasArg1[FEP_2] := 16 biasArg2[FEP_2] := 0 biasArg3[FEP_2] := 50 biasArg4[FEP_2] := 20 biasCompressionSlotIndex[FEP_2] := 255 CCD_I2 biasAlgorithmId[FEP_3] := FEP_BIAS_1 biasArg0[FEP_3] := 5 biasArg1[FEP_3] := 16 biasArg2[FEP_3] := 0 biasArg3[FEP_3] := 50 biasArg4[FEP_3] := 20 biasCompressionSlotIndex[FEP_3] := 255 CCD_I3 biasAlgorithmId[FEP_4] := FEP_BIAS_1 biasArg0[FEP_4] := 5 biasArg1[FEP_4] := 16 biasArg2[FEP_4] := 0 biasArg3[FEP_4] := 50 biasArg4[FEP_4] := 20 biasCompressionSlotIndex[FEP_4] := 255 CCD_S2 biasAlgorithmId[FEP_5] := FEP_BIAS_1 biasArg0[FEP_5] := 5 biasArg1[FEP_5] := 16 biasArg2[FEP_5] := 0 biasArg3[FEP_5] := 50 biasArg4[FEP_5] := 20 biasCompressionSlotIndex[FEP_5] := 255
For this example, the Front End Processors will select a candidate event center if the center pixel values are 20 ADU above their bias levels for the back-side CCD (CCD_S3), and 38 ADU for the remaining front-side CCDs. The event's split threshold is 13 ADU above the pixel bias values for all of the CCDs. In this example, the system will only accept events whose grade codes map to ASCA grades 0, 2, 3, 4 and 6 (unsplit, vertical splits, left and right horizontal splits, and L-square corner splits). No window filters or pulse height filters will be applied.
This leads to the following event selection parameters:
lowerEventAmplitude := 0 eventAmplitudeRange := 65535 gradeSelections[0,2,8,10,11,12, 16,17,18,22,34,48,49,50,54,64, 65,68,69,72,76,80,81,104,108, 130,136,138,140,162,208,209] := 1 all other gradeSelections[] := 0 windowSlotIndex := 255 (no windows) CCD_S3 fep0Threshold[ONODE_A..ONODE_D] := 20 fep0SplitThreshold[ONODE_A..ONODE_D] := 13 CCD_I0 fep1Threshold[ONODE_A..ONODE_D] := 38 fep1SplitThreshold[ONODE_A..ONODE_D] := 13 CCD_I1 fep2Threshold[ONODE_A..ONODE_D] := 38 fep2SplitThreshold[ONODE_A..ONODE_D] := 13 CCD_I2 fep3Threshold[ONODE_A..ONODE_D] := 38 fep3SplitThreshold[ONODE_A..ONODE_D] := 13 CCD_I3 fep4Threshold[ONODE_A..ONODE_D] := 38 fep4SplitThreshold[ONODE_A..ONODE_D] := 13 CCD_S2 fep5Threshold[ONODE_A..ONODE_D] := 38 fep5SplitThreshold[ONODE_A..ONODE_D] := 13
The following is the resulting parameter block, where the grade selection bit-map has been expressed as a series of 32-bit words:
loadTeBlock: CMDOP_LOAD_TE { teBlockSlotIndex := not-yet specified checksum := 65458 parameterBlockId := 0x635231a2 fepCcdSelect[FEP_0..FEP_5] := CCD_S3, CCD_I0, CCD_I1, CCD_I2, CCD_I3, CCD_S2 fepMode := FEP_TE_MODE_EV3x3 bepPackingMode := BEP_TE_MODE_FAINTBIAS onChip2x2Summing := 0 ignoreBadPixelMap := 0 ignoreBadColumnMap := 0 recomputeBias := 1 trickleBias := 0 subarrayStartRow := 0 subarrayRowcount := 1023 overclockPairsPerNode := 15 outputRegisterMode := FULL ccdVideoResponse[FEP_0..FEP_5] := 0,0,0,0,0,0 primaryExposure := 33 secondaryExposure := 0 dutyCycle := 0 fep0EventThreshold[ONODE_A..ONODE_D] := 20,20,20,20 fep1EventThreshold[ONODE_A..ONODE_D] := 38,38,38,38 fep2EventThreshold[ONODE_A..ONODE_D] := 38,38,38,38 fep3EventThreshold[ONODE_A..ONODE_D] := 38,38,38,38 fep4EventThreshold[ONODE_A..ONODE_D] := 38,38,38,38 fep5EventThreshold[ONODE_A..ONODE_D] := 38,38,38,38 fep0SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 fep1SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 fep2SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 fep3SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 fep4SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 fep5SplitThreshold[ONODE_A..ONODE_D] := 13,13,13,13 lowerEventAmplitude := 0 eventAmplitudeRange := 65535 gradeSelections[0..255] := 0x00471d05, 0x00470004, 0x00031133, 0x00001100, 0x00001d04, 0x00000004, 0x00030000, 0x00000000 windowSlotIndex := 255 histogramCount := 0 biasCompressionSlotIndex[FEP_0..FEP_5] := 255,255,255,255,255,255 rawCompressionSlotIndex := 255 ignoreInitialFrames := 30 biasAlgorithmId[6] := FEP_BIAS_1, FEP_BIAS_1, FEP_BIAS_1, FEP_BIAS_1, FEP_BIAS_1, FEP_BIAS_1 biasArg0[FEP_0..FEP_5] := 5,5,5,5,5,5 biasArg1[FEP_0..FEP_5] := 16,16,16,16,16,16 biasArg2[FEP_0..FEP_5] := 0,0,0,0,0,0 biasArg3[FEP_0..FEP_5] := 26,50,50,50,50,50 biasArg4[FEP_0..FEP_5] := 20,20,20,20,20,20 fep0VideoOffset[ONODE_A..ONODE_D] := 79,79,79,77 fep1VideoOffset[ONODE_A..ONODE_D] := 87,86,76,89 fep2VideoOffset[ONODE_A..ONODE_D] := 83,69,79,83 fep3VideoOffset[ONODE_A..ONODE_D] := 86,65,82,89 fep4VideoOffset[ONODE_A..ONODE_D] := 76,68,79,80 fep5VideoOffset[ONODE_A..ONODE_D] := 90,86,79,94 deaLoadOverride := 0 fepLoadOverride := 0 }
This example assumes that both BEPs are powered, that the Side-A DEA Power supply has power, that all the FEPs have power (and were powered for over 7 minutes), but that the state of the video board power is unknown to the ground scheduling algorithm. This example also assumes that all of the hardware and software is operating properly, that the system configuration parameters (other than the video board power) are in a stable, known state, and that the focal plane temperature is at its normal operating temperature (i.e. about -120oC).
The user first issues a command which powers off video boards not used for the run, and powers on the boards required for the run. In this example, CCDs I0 - I3 and S2 and S3 are to be used. This leads to the following "Change System Configuration" command (see Section 3.3.3):
changeConfigSetting: CMDOP_CHANGE_SYS_ENTRY { entries[] = { itemId = SYSSET_DEA_POWER itemValue = 0x0cf } }
If all of the board power settings were changed by the command, the command will take about 11 seconds to execute. If all of the boards were already in their desired state, the command will take less than 1 second to execute.
For this example, the parameter block will be loaded into Timed Exposure slot 3, by setting the teBlockSlotIndex in the parameter set shown in Section 5.4.1.8 to a value of 3, and issuing the command. Since no windows are being used, no window parameter block command is needed for the run. Upon receipt of the command, the block will be loaded in under 1 second (see Section 4.1.4.1 ). The instrument is now ready to start a run.
The user starts the run using a "Start Science" command, specifying slot 3 (see Section 4.1.5):
startScience: CMDOP_START_TE { blockSlotIndex = 3 }
Given that 6 CCDs are being configured and the PRAM/SRAM load is a standard load, the system will take on the order of 2 minutes to configure the system, acquire and dump the DEA housekeeping information, and start clocking the CCDs:
setup time := 30 seconds to load video registers + 1 minute to acquire and dump DEA housekeeping + 11 seconds to flush CCD charge + ~1 second of additional overhead ~= 1.7 minutes
Once the system is configured, the FEPs will be commanded to re-compute the bias. Assuming that the whole-frame algorithm keeps up with the incoming images, the bias computation will take about 3 minutes:
bias time := (30 ignored frames + 16 bias frames) * 3.3 seconds/frame := 2.53 minutes
For this example, the bias maps are not telemetered.
After the bias maps have been computed, the instrument will stop the sequencers, prepare the FEPs for data processing, and re-start the CCD sequencers. The FEPs will automatically discard the first two exposures, and then start data processing. The first exposure records will appear about 10 seconds after data processing starts (3.3 seconds/ frame * 2 ignore frames + 1 exposure frame). Every 3.3 seconds, each FEP will produce zero or more Faint-with-Bias data packets followed by 1 Faint-with-Bias exposure record. The data packets and exposure records from the various FEPs are interleaved in time. If the event rate climbs such that one or more of the FEPs gets backlogged, their data packets and exposure records may be sent later than those for FEPs which are not backlogged.
NOTE: If the system's buffers fill, some FEPs may drop exposures, whereas others might not.
Once the desired observation time has elapsed, the user stops the run by issuing a "Stop Science" command packet:
stopScience: CMDOP_STOP_SCIENCE { No additional parameters are required }
After receiving the command, the system will command the FEPs to finish up their current exposures.
Once the FEPs have been instructed to stop, the BEP will poll the FEPs until they've finished their current exposure, and drained their FEP to BEP ring-buffers. In this example, the event rate doesn't exceed the telemetry rate, and therefore, the ring-buffers and telemetry buffers are fairly empty. If the last image had just started arriving at the FEPs when they were instructed to stop, the image transfer time will dominate the time to finish the run. For this example, this is about 3.3 seconds.
Once the run completes, the BEP will produce a "Science Report" telemetry packet. Assume for this example, that the observation was scheduled for about 4 hours, that nothing went wrong, and that telemetry was never saturated (i.e. no frames were dropped). Under these conditions, the "Science Report" might look as follows:
scienceReport: TTAG_SCI_REPORT { runStartTime = 0x054379a2 (~biasStartTime + 2.5 minutes) parameterBLockId = 0x635231a2 windowBlockId = 0xffffffff biasStartTime = 0x045bd8c2 biasParameterId = 0x635231a2 (same as parameterBlockId) exposuresProduced = 4364 (largest exposure number @ ~4 hours @ 3.3 seconds/frame) exposuresSent = 26166 (first 2 exposures are never sent, 6 FEPs sending) biasErrorCount = 0 fepErrorCodes[6] = FEP_CMD_NOERR, FEP_CMD_NOERR, FEP_CMD_NOERR, FEP_CMD_NOERR, FEP_CMD_NOERR, FEP_CMD_NOERR ccdErrorFlags[6] = 0,0,0,0,0,0 deaInterfaceErrorFlag = 0 terminationCode = SMTERM_STOPCMD }