'sxipi' calculates a pulse invariant (PI), a value proportional to the X-ray energy, for each event in an SXI event list by applying several pulse height corrections and a grade assignment. There are 5 major steps in this task:
1. Video board temperature (or even-odd column) correction
2. Charge trail correction
3. Charge transfer inefficiency (CTI) correction
4. Grade assignment and PHA summation;
5. PHA to PI conversion (gain correction)
In Step 1, differences in PHAS between even and odd CCD columns are corrected. Each CCD chip is associated with two circuit boards (ASICs) where the raw pixel output is amplified and digitized. To speed up the signal processing, one of the ASICs reads signals transferred from the even-RAWX pixels, while the other reads those from the odd-RAWX pixels. The conversion of analog to digital signal can differ for different ASICs, and this conversion depends on the temperature of the video board at the location of the ASIC. This step removes those differences, correcting the pixel pulse height values so they are on the same scale for a given event. The video board temperature is read from the HK file specified by the parameter 'hkfile', with other parameters 'hkext', 'hkcolstem', and 'hkvideoid' specifying where in the file that information is. Step 1 can be turned on and off with the 'evnoddcor' parameter.
In Steps 2 and 3, the task corrects the pulse height information of individual pixels to account for charge lost during the transfer. When the detected events are transferred for readout, some amount of charge is trapped by defects in the CCD chips, which are mainly caused by radiation damage. Some of the trapped charge is released immediately after a one-pixel transfer, resulting in a 'trail' into the following pixel. Long-timescale charge traps release the charge in pixels outside of the event island, effectively losing this information. Charge injection was developed as a way to mitigate CTI by periodically filling traps with rows of 'sacrificial' charge. As a result, the CTI strongly depends on the configuration of charge injection, and the task reads that configuration information from the event file header keywords. Step 2 can be turned on and off with the 'chtrailcor' parameter, and Step 3 with the 'cticor' parameter.
The CTI calibration for SXI depends on the event GRADE, however this information is not calculated until Step 4. If the parameter 'ctigrade=yes', the GRADE column of the input event list is used in the CTI correction. If 'ctigrade=no', the GRADE column is ignored. Proper CTI correction requires an initial run of sxipi with 'ctigrade=no' to populate the GRADE column, and then a second run of sxipi with 'ctigrade=yes' on the output file of the first run. The parameter 'copygrade' can be used to copy the original GRADE and PHA columns to GRADE_COPY and PHA_COPY columns before they are overwritten, to compare results with and without grade-dependent CTI correction.
In Step 4, a GRADE is assigned to each event based on the number and position of surrounding pixels whose pulse height exceeds the split threshold. These pulse heights are recorded for individual 3x3 pixels in the PHAS column, and the hit pattern of the outer 5x5 (16 pixel) ring is also used by way of the P_OUTER_MOST column. The total event pulse height amplitude (PHA) is calculated by summing up the PHAS in the pattern. Step 4 is always performed and cannot be turned off.
In the default usage, the split threshold is energy-dependent, optimized depending on the tentative PHA value. A split threshold is optimized for each event in the following way: (1) a tentative GRADE is assigned using an initial fixed split threshold; (2) a tentative summed PHA is calculated; (3) the optimum split threshold is determined; and (4) the final GRADE assignment and PHA value are determined. There are 4 parameters related to this optimization process, 'spthiter', 'spthcaldb', 'spthoffset', and 'spthslope'. The default values of the first two parameters are both 'yes'. In this case, the values in the last two parameters are ignored, and the split threshold optimization proceeds normally. In the case of 'spthcaldb=no', the values of 'spthoffset' and 'spthslope' are read and used, instead of the CALDB values, for the optimization. If 'spthiter=no', the iteration described above is not performed, and a constant split threshold from CALDB (if 'spthcaldb=yes') or 'spthoffset' (if 'spthcaldb = no') is used for the grade assignment. The 'spthslope' parameter is ignored in both cases with 'spthiter=no'.
In Step 5, PHA is converted to PI using the gain correction table. PI is directly proportional to the X-ray energy, with 1 PI channel = 6 eV for SXI. Step 5 can be turned on and off with the 'gaincor' parameter. If turned off, PHA is simply copied to PI.
Bad pixels in the surrounding 3x3 ring can alter the grade and final PI of an event, possibly causing bad (e.g. particle) events to migrate to good events, thus losing information about the true event pulse height. The 'badpixopt' parameter, along with the PHAS_MASK column (see the sxiflagpix help) can be used to mitigate this by specifying how events with bad pixels should be graded and summed. There are three options, which are listed in the parameter description below.
For debugging and calibration purposes, the corrections in Steps 1-3 and 5 can be turned on or off independently using the 'evnoddcor', 'chtrailcor', 'cticor', and 'gaincor' parameters. Event grades and summed PHA values are always calculated. Furthermore, the intermediate results from each correction can be included in the output by specifying 'debugcol=yes'. Any of these debugging columns or the PHAS or PHA column can then be used as the starting point for another run of sxipi with the 'startcol' parameter. It is important to note that any corrections turned on with 'evnoddcor', 'chtrailcor', 'cticor', and 'gaincor' are performed regardless of the 'startcol', and so it is possible to perform the same correction twice. If 'startcol=PHA', then all corrections that are enabled are applied to the PHAS column, but the gain correction in Step 5 is applied to the PHA column in the input file. For processing of normal science data, these features should not be used, and these parameters should be kept at their default values of 'yes'.
This task sets the following STATUS flags if an event satisfies certain conditions, shown in the table below. See the 'sxiflagpix' help file for a full list of STATUS flags.
=========================================================================== flag description =========================================================================== 26 (sxipi - general) PHAS < event threshold 27 (sxipi - vtevnodd) Video temperature is out of range 28 (sxipi - vtevnodd) Lack of video temp HK at time close to the event 29 (sxipi - chtrail/CTI) Correction value is negative 30 (sxipi - general) Null value by correction process ---------------------------------------------------------------------------
sxipi infile=ah_sxi_input.evt outfile=ah_sxi_output.evt hkfile=ah123456789sxi.hk
sxipi infile=ah_sxi_input.evt outfile=ah_sxi_output.evt hkfile=ah123456789sxi.hk \ cticor=no
sxipi infile=ah_sxi_input.evt outfile=ah_sxi_output.evt hkfile=ah123456789sxi.hk \ spthiter=no spthcaldb=no spthoffset=20
sxipi infile=ah_sxi_input.evt outfile=ah_sxi_output.evt hkfile=ah123456789sxi.hk \ debugcol=yes
sxipi infile=ah_sxi_sxipi1_debug.evt outfile=ah_sxi_sxipi2_debug_onlychtrail.evt \ hkfile=ah123456789sxi.hk startcol=PHAS_EVENODD evnoddcor=no chtrailcor=yes \ cticor=no debugcol=yes
sxipi infile=ah_sxi_input.evt outfile=ah_sxi_output_onlygain.evt \ hkfile=ah123456789sxi.hk evnoddcor=no chtrailcor=no cticor=no \ debugcol=yes