Removing Warm ACIS Data
![[CXC Logo]](../../imgs/cxc-logo.gif)
CIAO 4.12 Science Threads
Overview
Synopsis:
![[TIP]](../../imgs/tip.png)
Most users will benefit more from the increased exposure time than will suffer from the degraded spectral resolution. Users following this thread should proceed with that in mind.
Users should only do this if they have a large number of counts and are trying to measure the width of spectral features (absorption or emission lines) to a very high degree of accuracy.
If users choose to filter warm ACIS data, they are strongly encouraged to perform their analysis both with and without the warm data to evaluate the impact to their specific science goals.
Timing analysis and imaging analysis, including source detection, are not affected by changes in focal plane temperature. The effect of warm temperatures on dispersed spectra from the HETG and LETG is still under investigation; concerned users should repeat their analysis both with and without any data from warm time periods.
This thread may be used to remove time periods when the ACIS Focal Plane temperature is warm and the user is attempting to extract spectra from line-rich, high count sources.
Purpose:
To remove times when the ACIS focal plane temperature is warm which may degrade the CCD spectral resolution.
Related Links:
Last Update: 13 Aug 2019 - swapped FP_TEMP and time offset axis-labels, fixed figure
Contents
- Get Started
- Plot Focal Plane Temperature Values
- Choose Good Time Intervals (GTIs)
- Inspect GTI file
- Apply GTI to Event File
- Parameter files:
- History
- Images
Get Started
Download the sample data: 13480 (ACIS-I, SPT-CLJ0151-5954)
unix% download_chandra_obsid 13480 evt2,mtl
The mission timeline file is stored in the secondary/ directory. For the rest of this thread we assume that both the event file and mtl files have been moved to be in the same directory.
Plot Focal Plane Temperature Values
The ACIS focal plane temperature (FP_TEMP) varies by no more than 1 °C during most observations. For those datasets where ACIS is coming out of perigee, ACIS can be especially warm and may take some time to cool to its nominal set-point temperature.
We begin by plotting the FP_TEMP vs time. FP_TEMP is stored in the mission timeline file in Kelvin. To make the plot more legible, we plot time-offset from the first record.
We can add a second axis to the plot and also plot the distance from Chandra to the Earth. The resulting plot is shown in Figure 1.
% python from pycrates import read_file import matplotlib.pyplot as plt mtl=read_file("acisf13480_000N002_mtl1.fits.gz[cols time,fp_temp,Dist_SatEarth]") times = mtl.get_column("time").values time_offset = (times - times[0]) / 1000.0 # sec -> ksec fp_temp = mtl.get_column("fp_temp").values dist = mtl.get_column("dist_satearth").values / 1000 # meters -> km p = plt.plot(time_offset,fp_temp) p[0].set_marker("o") p[0].set_markersize(1) p[0].set_linestyle('None') plt.xlabel("Time offset since {:.3f} [ksec]".format(times[0])) plt.ylabel("FP_TEMP [k]") plt.title("OBS_ID : 13480") ll=plt.axhline(154.5) ll.set_linestyle(":") # -- Add 2nd axis ax2=plt.twinx() plt.subplots_adjust(right=0.85) p = plt.plot(time_offset,dist) p[0].set_marker("None") p[0].set_color("brown") ax2.set_ylabel("Distance [km]", color="brown") ax2.tick_params(axis="y", colors="brown") ax2.yaxis.label.set_color('brown') plt.savefig("fptemp.png")
Figure 1: FP_TEMP and Distance vs Time
![[Thumbnail image: ]](fptemp.300.png)
[Version: full-size]
![[Print media version: ]](fptemp.png)
Figure 1: FP_TEMP and Distance vs Time
Plot of ACIS focal plane temperature (black) and distance (brown) vs. time. The horizontal line at 154.5K is the temperature limit chosen (see below). Chandra's orbit continues to evolve, but at the time of this observation its apogee height was roughly 145,000 km and its perigee height was 3,900 km; however, science operations do not resume until Chandra has cleared the radiation zone at a height around 70,000 km.
For roughly the first 20ksec the FP_TEMP value is decreasing as Chandra moves higher in its orbit until it reaches its nominal set-point temperature of 153.5 K (-119.7 °C).
Choose Good Time Intervals (GTIs)
We can time filter the event file with a custom good time interval created using the dmgti tool
In this example we choose a limit of 154.5K which is approximately the warmest temperature used to calibrate the ACIS response matrix.
unix% pset dmgti infile=acisf13480_000N002_mtl1.fits.gz unix% pset dmgti outfile=fp_temp.gti unix% pset dmgti userlimit="fp_temp<154.5" unix% dmgti Input MTL file (acisf13480_000N002_mtl1.fits.gz): Output GTI file (fp_temp.gti): User defined limit string (fp_temp<154.5):
The userlimit parameter is a dmmath expression that should evaluate to TRUE when the data are GOOD. In this example we want to know the times when the FP_TEMP value is less than 154.5.
Inspect GTI file
We can now use dmlist to inspect the good time intervals.
unix% dmlist fp_temp.gti blocks,subspace -------------------------------------------------------------------------------- Dataset: fp_temp.gti -------------------------------------------------------------------------------- Block Name Type Dimensions -------------------------------------------------------------------------------- Block 1: PRIMARY Null Block 2: FILTER Table 1 cols x 0 rows Block 3: GTI Table 2 cols x 4 rows -------------------------------------------------------------------------------- Data subspace for block FILTER: Components: 1 Descriptors: 1 -------------------------------------------------------------------------------- --- Component 1 --- 1 TIME Real8 TABLE GTI 442365829.0019089580:442365847.6019091010 442365903.4019095302:442365918.9019096494 442365956.1019099355:442365971.6019100547 442365990.2019101977:442400837.3021782041
This shows us that there are 4 time intervals during which the FP_TEMP is less than 154.5 K. The first three are very short, followed by the final long interval covering to the end of the observation.
Apply GTI to Event File
The good time interval filter can be applied using the "@" dmfiltering datamodel syntax.
unix% dmcopy "acisf13480N002_evt2.fits.gz[@fp_temp.gti]" good_events.fits
We can check the output file to verify that the times have been appropriately recomputed.
unix% dmkeypar acisf13480N002_evt2.fits.gz ONTIME echo+ 50052.600384951 unix% dmkeypar good_events.fits ONTIME echo+ 34896.700268388
We can see that roughly 15ksec, or almost 30% of the time has been removed from the observation using this filter criterion.
This file can now be used in spectral analysis and the correct exposure times will be used when making response files.
Users are strongly encouraged to perform their spectral analysis both with and without filtering the warm times.
Parameters for /home/username/cxcds_param/dmgti.par infile = acisf13480_000N002_mtl1.fits.gz Input MTL file outfile = fp_temp.gti Output GTI file userlimit = fp_temp<154.5 User defined limit string (mtlfile = none) Optional output smoothed/filtered MTL file (lkupfile = none) Lookup table defining which MTL columns to check against (NONE|none|<filename>) (smooth = yes) Smooth the input MTL data? (clobber = no) Clobber output file if it exists? (verbose = 0) Debug level (mode = ql)
Parameters for /home/username/cxcds_param/dmlist.par infile = fp_temp.gti Input dataset/block specification opt = blocks,subspace Option (outfile = ) Output file (optional) (rows = ) Range of table rows to print (min:max) (cells = ) Range of array indices to print (min:max) (verbose = 0) Debug Level(0-5) (mode = ql)
Parameters for /home/username/cxcds_param/dmcopy.par infile = acisf13480N002_evt2.fits.gz[@fp_temp.gti] Input dataset/block specification outfile = good_events.fits Output dataset name (kernel = default) Output file format type (option = ) Option - force output type (verbose = 0) Debug Level (clobber = no) Clobber existing file (mode = ql)
Parameters for /home/username/cxcds_param/dmkeypar.par infile = good_events.fits Input file name keyword = ONTIME Keyword to retrieve exist = yes Keyword existence value = )rval -> 45315.80034852 Keyword value rval = 45315.80034852 Keyword value -- real ival = 0 Keyword value -- integer sval = Keyword value -- string bval = no Keyword value -- boolean datatype = real Keyword data type unit = s Keyword unit comment = Sum of GTIs Keyword comment (echo = no) Print keyword value to screen? (mode = ql)
History
02 Aug 2012 | Initial version. |
03 Dec 2012 | Review for CIAO 4.5; no changes |
25 Nov 2013 | Reviewed for CIAO 4.6. No changes. |
16 Dec 2014 | Reviewed for CIAO4.7. Increased visibility of this being an advanced thread to optimize specific science goals. |
28 Mar 2019 | Replaced chips plots with matplotlib. |
13 Aug 2019 | swapped FP_TEMP and time offset axis-labels, fixed figure |