Last modified: 1 November 2022


CIAO 1.1.5 Release Notes


We regret to announce that a serious bug has been found in the filtering code used in dmcopy and dmmerge. The effect of this bug is that compound filters, such as separate good time intervals for each CCD chip on ACIS, are not handled correctly.

In most cases, the good time intervals for the separate ACIS chips are not very different, and only a few events are incorrectly filtered. However, if complicated filters have been applied by the user the bug may cause large errors in the number of events allowed through.

The code works correctly in the case of a single good time intervals list. Unfortunately you can't filter the flt1.fits file to get a GTI file for a single chip, but you can filter the evt2.fits file on CCD_ID to get the time filters for a single chip; the filtered evt2.fits file can be used in place of the flt1.fits file, since its subspace now contains the GTIs for a single chip


Make new evt1.fits file, e.g.

  acis_process_events old_evt1.fits  new_evt1.fits (parameters...)

Make single-chip event file with desired good time intervals

  dmmerge "old_evt2.fits[ccd_id=7]"  outfile=old_evt2_ccd7.fits

Verify good time intervals made correctly

  dmlist old_evt2_ccd7.fits subspace

Filter new event file using single-chip time filter (will pass only ccd_id=7 events)

  dmmerge "new_evt1.fits[@old_evt2_ccd7.fits]" new_evt2_ccd7.fits

Inspect number of events in result

  dmlist new_evt2_ccd7.fits blocks

As a temporary fix, a beta version of the new CIAO 2.0 dmcopy tool, which does not have this bug, has been released in the CIAO1.1.5 patch.

CIAO 1.1.5 upgrade

These enhancements apply to dmcopy, dmmerge and dmlist only in CIAO1.1.5. They will be extended to the remaining CIAO tools in the CIAO2.0 release.

Major bug fix: The filter

   dmcopy  "acis_evt1.fits[@flt1.fits]" ...


   dmmerge "acis_evt1.fits[@flt1.fits]" ...

did not correctly handle the different good time intervals for different chips in earlier CIAO versions. This bug is now fixed.

Also, the ONTIME and LIVETIME and EXPOSURE keywords were not updated after a time filter by the earlier versions of dmcopy, which meant that you had to use dmmerge even when filtering a single file on the filter file. This is now fixed, so that dmcopy will now update the time intervals.

A number of minor bugs have also been fixed.

Extra functionality:

Support for filtering on table columns of bit and string datatype has been added. The bit filtering is useful for filtering on the STATUS column in event files. The syntax is

dmcopy "acis_evt1.fits[status=1x01x0]" ...

dmcopy "acis_evt1.fits[status!=1x01x0]" ...

where the bit pattern 1x01x0 matches the rightmost 6 bits in the status variable with values


(in other words, the x is a wild card matching 0 or 1); all leftward bits must be zero. To filter requiring the leftmost two bits of a 16-bit status word to be zero, the string status=00xxxxxxxxxxxxxx would be needed. Only the operators = and != are supported.

Changed functionality:

dmcopy binning on a table which is filtered on the binning axes now shrinks the image to surround the filtered region. dmcopy evt.fits[sky=circle(4300,4200,100)][bin sky] will make a 100x100 image. The command [binf sky] will make the full image replicating the older behaviour.

Experimental functionality:

As part of the CIAO 2.0 development process, we've added some extra experimental features in CIAO 1.1.5. These features are not guaranteed to work, but you may wish to try them out and give us feedback.