Remove the ACIS Readout Streak
CIAO 4.16 Science Threads
Overview
Synopsis:
While ACIS reads out a frame, it is still taking data. Photons detected during the readout are clocked out in the wrong row and so have incorrect CHIPY values. For a bright source, you get a streak along the entire column of the source, as shown in the Get Started section. Events above a source occur as a frame is being read out. Events below the source occur when the previous frame is being read out.
Note that the streak events can be used for spectral extraction, as described in the Extract a Spectrum from the ACIS Readout Streak thread.
Purpose:
To remove the streak from the image (for cosmetic reasons and so that it doesn't affect source detection), and to retain the streak photons.
Related Links:
- Analysis Guide: ACIS Data Preparation
Last Update: 13 Jan 2022 - Reviewed for CIAO 4.14. No changes.
Contents
- Get Started
- Get Source Location
- Create a Background Spectrum
- Run acisreadcorr
- Examine the Results
- Caveats
- Parameter files:
- History
-
Images
- Figure 1: ACIS readout streak
- Figure 2: Getting the source location from ds9
- Figure 3: Region for background spectrum
- Figure 4: Choosing dy for the observation
- Figure 5: Event file with streak removed (used background spectrum)
- Figure 6: Comparison of original and filled event files
- Figure 7: Event file with streak removed (without background spectrum)
- Figure 8: Photons flagged by acisreadcorr
Get Started
Download the sample data: 1712 (ACIS-S, 3C273)
unix% download_chandra_obsid 1712 evt2,asol
Figure 1 shows the prominent readout streak on the S3 chip, which will be removed by running this thread. There may also be streaks on the S4 chip, which are due to a flaw in the serial readout of the chips; use the tool destreak to remove those streaks.
[Version: full-size]
Figure 1: ACIS readout streak
Get Source Location
acisreadcorr uses the source position to determine which events may have a misplaced CHIPY value. There are several ways to estimate the source position:
-
With ds9:
unix% ds9 acisf01712N005_evt2.fits &
From the ds9 display (Figure 2), we can estimate that the center of the source is at (4082.25,4076.25).
[Version: full-size]
Figure 2: Getting the source location from ds9
-
With dmstat:
The value obtained from visual inspection with ds9 can be improved by computing the centroid with dmstat. Here we filter the event file and bin it into an image around the location of the source. Even though the source is completely cratered, the centroid can often be a robust estimate for the source location.
unix% punlearn dmstat dmstat "acisf01712N005_evt2.fits[sky=circle(4082.25,4076.25,20)][bin sky=1]" centroid+ sig- med- EVENTS_IMAGE(x, y) min: 0 @: ( 4083.75 4056.75 ) max: 162 @: ( 4085.75 4078.75 ) cntrd[log] : ( 20.365025631 20.422719799 ) cntrd[phys]: ( 4082.1150256 4076.1727198 ) good: 1264 null: 336
A radius of 20 was chosen to enclose most of the wings of the PSF but to avoid the jet. The source location is given as (4082.1,4076.2).
-
From a catalog:
use the known source position from SIMBAD, NED, or another reputable source.From SIMBAD, the known position for 3C 273 is (RA,DEC) = (12:29:06.700, +02:03:08.60).
dmcoords is used to to convert (RA,Dec) to sky(x,y) coordinates.
unix% punlearn dmcoords unix% dmcoords acisf01712N005_evt2.fits op=cel celfmt=hms ra=12:29:06.700 dec=+02:03:08.60 unix% pget dmcoords x y 4082.181976564152 4076.110245719566
The celfmt=hms is used to indicate that the coordinates are provided in sexagesimal format.
The source position in sky pixels is (4082.2, 4076.1). This value will be used in the rest of the thread.
Create a Background Spectrum
Removing all the photons from the affected area would leave a black streak instead of a bright one. We wish instead to leave the background photons where they are. For this reason, it is possible to input a background PI spectrum. The tool then attempts to leave background photons - consistent with the given PI spectrum and distributed evenly in time - where the streak once was.
First, we need to select a background region. This can be from any area of the chip that doesn't contain any bright regions; Figure 3 shows the region used. For help on rotating regions in ds9, see this FAQ.
[Version: full-size]
Figure 3: Region for background spectrum
To save the regions, follow these steps:
- Region → Save Regions... → Save As "bkg.reg".
- After choosing "OK" in the region filename dialog, a format dialog is opened. Set the format to "CIAO" and the coordinate system to "Physical".
The resulting file will look something like this:
unix% more bkg.reg # Region file format: CIAO version 1.0 rotbox(4410.92,4353.0555,389.55054,66.92414,24.719781)
The tool dmextract is now used to create the spectrum of this region:
unix% punlearn dmextract unix% pset dmextract infile="acisf01712N005_evt2.fits[sky=region(bkg.reg)][bin pi=1:1024:1]" unix% pset dmextract outfile=bkg_pi.fits unix% dmextract Input event file (acisf01712N005_evt2.fits[sky=region(bkg.reg)][bin pi=1:1024:1]): Enter output file name (bkg_pi.fits):
The contents of the parameter file may be checked using plist dmextract.
NOTE: if your observation was taken with a subarray defined, read the Observations Using Subarrays caveat before proceeding.
The background spectrum should be binned to be the same size as your event file. If you were to bin this example to 1:1023:1, for instance, it may cause photons with PI=1024 to be attributed to the source erroneously. Changing the binning is only a concern if you have filtered your event file such that there are no longer 1024 channels of PI.
Run acisreadcorr
The dx and dy parameters may need to be adjusted before running the tool. The default value for dx (2 pixels), or a number close to it, should be fine for on-axis point sources. dy can be estimated by drawing a circle in ds9 and finding the diameter (Figure 4). These values determine the width of the region to be cleaned and how close to get to the source, respectively.
[Version: full-size]
Figure 4: Choosing dy for the observation
Now we have all the necessary information to run acisreadcorr. The same aspect solution list file, @pcad_asol1.lis, is used:
unix% cat pcad_asol1.lis pcadf01712_001N001_asol1.fits unix% punlearn acisreadcorr unix% pset acisreadcorr infile=acisf01712N005_evt2.fits unix% pset acisreadcorr outfile=acis_1712_corr_evt2.fits unix% pset acisreadcorr aspect=@pcad_asol1.lis unix% pset acisreadcorr x=4082.2 y=4076.1 unix% pset acisreadcorr dx=5 dy=50 unix% pset acisreadcorr bkg=bkg_pi.fits unix% acisreadcorr Input dataset/block specification (acisf01712N005_evt2.fits): Output dataset/block specification (acis_1712_corr_evt2.fits): Aspect file (@pcad_asol1.lis): Sky X position (pixels) (4082.2): Sky Y position (pixels) (4076.1):
The contents of the parameter file may be checked using plist acisreadcorr.
Examine the Results
The newly created file can be viewed in ds9:
unix% ds9 acis_1712_corr_evt2.fits &
as seen in Figure 5.
[Version: full-size]
Figure 5: Event file with streak removed (used background spectrum)
The new event file is compared to the original event file in Figure 6.
[Version: full-size]
Figure 6: Comparison of original and filled event files
Figure 7 shows an image of a nearly identical acisreadcorr run. The only difference is that a background spectrum was not supplied to the tool (i.e. bkg=""). The streak has been removed and a stripe of zero counts replaces it.
[Version: full-size]
Figure 7: Event file with streak removed (without background spectrum)
dmcopy may be used to see which photons were flagged by the tool. Status bit 22 marks photons identified as background and bit 21 marks out-of-time source events. In the following filters, the bits are numbered from the right, starting at zero:
unix% dmcopy "acis_1712_corr_evt2.fits[status=xxxxxxxxxx10xxxxxxxxxxxxxxxxxxxxx]" \ flag_bkg.fits unix% dmcopy "acis_1712_corr_evt2.fits[status=xxxxxxxxxx01xxxxxxxxxxxxxxxxxxxxx]" \ flag_source.fits
Displaying these event files side-by-side produces Figure 8.
[Version: full-size]
Figure 8: Photons flagged by acisreadcorr
Caveats
Observations Using Subarrays
There is a bug in the current version of acisreadcorr such that so that it does not work correctly on observations that used a subarray. A subarray is a defined region of the CCD in which data will be taken, rather than the entire chip. Since the readout time is scaled by the fraction of the chip used, a common case in which observers decide to use a subarray is to reduce pileup (i.e. the data are read out faster). See the Frame Times & Subarrays section of the POG for details.
Users can check if the observation was done in subarray mode by checking the NROWS keyword. Any value less than 1024 indicates a subarray was used.
unix% dmkeypar acis_repro_evt2.fits NROWS echo+ 128
The bug comes into play when a background spectrum is used (bkg parameter). The workaround is to modify the BACKSCAL header keyword with dmhedit. Specifically, it needs to be multiplied by:
1024 / (subarray delta y)
For example, a 1/8 subarray has delta y = 128, so the ratio is:
1024 / 128 = 8
Then modify the background file created in the Create a Background Spectrum step.
NOTE: the observation in this thread does not use a subarray; this background file is used for illustrative purposes only:
unix% dmkeypar bkg_pi.fits BACKSCAL echo+ 0.00038847826236539 calculate new value: 0.00038847826236539 * 8 = 0.00310782609892312 unix% dmhedit infile=bkg_pi.fits filelist="" operation=add \ key=BACKSCAL value=0.00310782609892312 unit="[pixel]" comment="Fractional area" unix% dmkeypar bkg_pi.fits BACKSCAL echo+ 0.0031078260989231
The BACKSCAL keyword has been properly updated, so the thread may be continued from the Run acisreadcorr step.
Parameters for /home/username/cxcds_param/dmextract.par #-------------------------------------------------------------------- # # DMEXTRACT -- extract columns or counts from an event list # #-------------------------------------------------------------------- infile = acisf01712N005_evt2.fits[sky=region(bkg.reg)][bin pi=1:1024:1] Input event file outfile = bkg_pi.fits Enter output file name (bkg = ) Background region file or fixed background (counts/pixel/s) subtraction (error = gaussian) Method for error determination(poisson|gaussian|<variance file>) (bkgerror = gaussian) Method for background error determination(poisson|gaussian|<variance file>) (bkgnorm = 1.0) Background normalization (exp = ) Exposure map image file (bkgexp = ) Background exposure map image file (sys_err = 0) Fixed systematic error value for SYS_ERR keyword (opt = pha1) Output file type: pha1 (defaults = ${ASCDS_CALIB}/cxo.mdb -> /soft/ciao/data/cxo.mdb) Instrument defaults file (wmap = ) WMAP filter/binning (e.g. det=8 or default) (clobber = no) OK to overwrite existing output file(s)? (verbose = 0) Verbosity level (mode = ql)
Parameters for /home/username/cxcds_param/acisreadcorr.par infile = acisf01712N005_evt2.fits Input dataset/block specification outfile = acis_1712_corr_evt2.fits Output dataset/block specification aspect = @pcad_asol1.lis Aspect file x = 4088.1 Sky X position (pixels) y = 4083 Sky Y position (pixels) (dx = 5) Chip X tolerance diameter (pixels) (dy = 50) Chip Y tolerance diameter (pixels) (bkg = bkg_pi.fits) Background PI spectrum file (bgroup = 10) Min counts for PI group (geompar = geom) Parameter file for Pixlib Geometry files (random = 0) random seed (0 use time) (verbose = 0) Debug Level(0-5) (clobber = no) Clobber existing file (mode = ql)
History
16 Dec 2004 | updated for CIAO 3.2: default value of bgroup parameter is changed to 10 |
12 Dec 2005 | updated for CIAO 3.3: default value of dmextract error and bkgerror parameters is "gaussian" |
01 Dec 2006 | reviewed for CIAO 3.4: no changes |
24 Jul 2007 | improved quality of images |
23 Jan 2008 | updated for CIAO 4.0: filename and screen output updated for reprocessed data (version N003 event file) |
24 Jun 2008 | updated image display to place figures inline with text |
12 Jan 2009 | updated for CIAO 4.1: updated source position based on version N003 event file; added example of getting source position from a catalog |
17 Jul 2009 | added a link to the Extract a Spectrum from the ACIS Readout Streak thread |
04 Feb 2010 | updated for CIAO 4.2: changes to the ds9 region file format menu |
13 Jan 2011 | reviewed for CIAO 4.3: no changes |
09 Jan 2012 | reviewed for CIAO 4.4: no changes |
03 Dec 2012 | Review for CIAO 4.5; updated file version numbers; |
25 Nov 2013 | Reviewd for CIAO 4.6. Updated caption in Figure 5. Added example to get subarray info in the Caveat section. |
16 Dec 2014 | Reviewed for CIAO 4.7; no changes. |
20 Dec 2016 | Review for CIAO 4.9. Updated section on using dmstat to compute the centroid. |
09 Aug 2021 | Updated for repro5 data, CIAO 4.13, CALDB 4.9.5. |
13 Jan 2022 | Reviewed for CIAO 4.14. No changes. |