*** Handout for the Merging Chandra Observations talk *** Chandra Workshop, October 21 2008 *** Doug Burke The data for the two observations can be found in /data/ciao_demo/workshop/merge/8003/ /data/ciao_demo/workshop/merge/8004/ and the directories contain the primary and secondary products as downloaded from the Chandra archive (after uncompressing all the *.gz files). ***) Processing history % cd /data/ciao_demo/workshop/merge % ./view_headers.csh 8003/primary/acisf08003N002_evt2.fits Results for 8003/primary/acisf08003N002_evt2.fits OBS_ID 8003 OBJECT C-COSMOS2-5 DETNAM ACIS-012367 GRATING NONE READMODE TIMED DATAMODE VFAINT SIM_X -0.78090834371673 SIM_Y 0 SIM_Z -233.58743446083 RA_NOM 149.96212233138 DEC_NOM 2.4258260588124 ROLL_NOM 255.20867508024 TSTART 291923683.90656 DATE-OBS 2007-04-02T17:54:43 EXPOSURE 47035.092747303 ASCDSVER 7.6.11 DATE 2007-08-09T10:38:32 FP_TEMP 154.57475281 CTI_CORR yes CTI_APP PPPPPBPBPP CTIFILE acisD2002-08-01ctiN0006.fits TGAINCOR T TGAINFIL acisD2007-02-01t_gain_biN0002.fits RAND_SKY 0.5 RAND_PI 1 % ./view_headers.csh 8004/primary/acisf08004N001_evt2.fits Results for 8004/primary/acisf08004N001_evt2.fits OBS_ID 8004 OBJECT C-COSMOS2-6 DETNAM ACIS-012367 GRATING NONE READMODE TIMED DATAMODE VFAINT SIM_X -0.78090834371673 SIM_Y 0 SIM_Z -233.58743446083 RA_NOM 149.8397480906 DEC_NOM 2.4826716343592 ROLL_NOM 68.608566081951 TSTART 280981575.19992 DATE-OBS 2006-11-27T02:26:15 EXPOSURE 15727.889754555 ASCDSVER 7.6.9 DATE 2006-11-27T17:51:29 FP_TEMP 154.57475281 CTI_CORR yes CTI_APP is missing CTIFILE acisD2002-08-01ctiN0005.fits TGAINCOR T TGAINFIL acisD2006-05-01t_gainN0002.fits RAND_SKY 0.5 RAND_PI 1 The script that created this output is: % cat view_headers.csh #!/bin/csh -f # # Usage: # view_headers.csh # # Aim: # Prints out some useful header keyword values from an event # file (could actually be any file that retains this information). # set progname = $0 set progname = ${progname:t} if ( $#argv != 1 ) then echo "Usage: $progname " exit 1 endif set infile = $1 echo "Results for $infile" punlearn dmkeypar foreach k ( OBS_ID OBJECT DETNAM GRATING READMODE DATAMODE \ SIM_X SIM_Y SIM_Z RA_NOM DEC_NOM ROLL_NOM TSTART DATE-OBS EXPOSURE \ ASCDSVER DATE FP_TEMP CTI_CORR CTI_APP CTIFILE TGAINCOR TGAINFIL \ RAND_SKY RAND_PI ) dmkeypar "infile=$infile" keyword=$k echo=no >& /dev/null if ( $status == 0 ) then set val = `pget dmkeypar value` printf " %8s %s\n" $k "$val" else printf " %8s is missing\n" $k endif end This could also have been written as #!/usr/bin/env python """ Usage: view_headers.py Aim: Prints out some useful header keyword values from an event file (could actually be any file that retains this information). """ import sys import pycrates as p def print_obs_headers(filename): "Print out useful header information from a file" print "Results for %s" % filename cr = p.read_file(filename) if cr == None: raise IOError, "Unable to read data from %s" % filename for key in ["OBS_ID", "OBJECT", "DETNAM", "GRATING", \ "READMODE", "DATAMODE", "SIM_X", "SIM_Y", "SIM_Z", \ "RA_NOM", "DEC_NOM", "ROLL_NOM", "TSTART", \ "DATE-OBS", "EXPOSURE", "ASCDSVER", "DATE", "FP_TEMP", \ "CTI_CORR", "CTI_APP", "CTIFILE", "TGAINCOR", "TGAINFIL", \ "RAND_SKY", "RAND_PI"]: if p.key_exists(cr,key) == 1: print " %8s %s" % (key, p.get_keyval(cr,key)) else: print " %8s is missing" % key if __name__ == "__main__": for arg in sys.argv[1:]: print_obs_headers(arg) ***) A quick look at the aspect solutions % prism 8003/primary/pcadf291923882N002_asol1.fits and plot up various columns, or % cd 8003/primary % chips chips-1> make_figure("pcadf291923882N002_asol1.fits[cols ra,dec]",["line.style","none", "symbol.style","point"]) etc ***) Quick light curve analysis % mkdir -p 8003/lcurve 8004/lcurve % cd 8003 % punlearn dmextract % pset dmextract infile= primary/acisf08003N002_evt2.fits"[ccd_id=0,energy=300:8000][bin time=::1000]" % pset dmextract outfile= lcurve/ccd0.300-8000.d1000.lc % pset dmextract opt=ltc1 % dmextract Input event file (primary/acisf08003N002_evt2.fits[ccd_id=0,energy=300:8000][bin time=::1000]): Enter output file name (lcurve/ccd0.300-8000.d1000.lc): % cd lcurve % dmlist ccd0.300-8000.d1000.lc cols -------------------------------------------------------------------------------- Columns for Table Block LIGHTCURVE -------------------------------------------------------------------------------- ColNo Name Unit Type Range 1 TIME_BIN channel Int4 1:49 S/C TT corresponding to mid-exposure 2 TIME_MIN s Real8 291923683.9065600038:291972198.6963700056 Minimum Value in Bin 3 TIME s Real8 291923683.9065600038:291972198.6963700056 S/C TT corresponding to mid-exposure 4 TIME_MAX s Real8 291923683.9065600038:291972198.6963700056 Maximum Value in Bin 5 COUNTS count Int4 - Counts 6 STAT_ERR count Real8 -Inf:+Inf Statistical error 7 COUNT_RATE count/s Real8 -Inf:+Inf Rate 8 COUNT_RATE_ERR count/s Real8 -Inf:+Inf Rate Error 9 EXPOSURE s Real8 -Inf:+Inf Time per interval % cd ../../8004 % punlearn dmextract % pset dmextract infile= primary/acisf08004N001_evt2.fits"[ccd_id=1,energy=300:8000][bin time=::1000]" % pset dmextract outfile= lcurve/ccd1.300-8000.d1000.lc % pset dmextract opt=ltc1 % dmextract Input event file (primary/acisf08004N001_evt2.fits[ccd_id=1,energy=300:8000][bin time=::1000]): Enter output file name (lcurve/ccd1.300-8000.d1000.lc): How to look at what has been done to a file? % dmlist lcurve/ccd1.300-8000.d1000.lc subspace -------------------------------------------------------------------------------- Data subspace for block LIGHTCURVE: Components: 1 Descriptors: 27 -------------------------------------------------------------------------------- --- Component 1 --- 1 TIME_BIN Int4 1:18 2 TIME_MIN Real8 280981575.1999199986:280998776.7507299781 3 TIME Real8 TABLE GTI1 280982605.5999161601:280983629.9951298833 280983633.2360505462:280989833.2889730334 280989836.5299732685:280998535.1998568177 4 TIME_MAX Real8 280981575.1999199986:280998776.7507299781 5 COUNTS Int4 DEFAULT 6 STAT_ERR Real8 0: 1.797693135E+308 7 COUNT_RATE Real8 0: 1.797693135E+308 8 COUNT_RATE_ERR Real8 0: 1.797693135E+308 9 EXPOSURE Real8 DEFAULT 10 ccd_id Int2 1:1 11 node_id Int2 0:3 12 expno Int4 3:319,321:2233,2235:4919 13 chipx Int2 1:1024 14 chipy Int2 1:1024 15 tdetx Int2 1:8192 16 tdety Int2 1:8192 17 detx Real4 0.50: 8192.50 18 dety Real4 0.50: 8192.50 19 x Real4 0.50: 8192.50 20 y Real4 0.50: 8192.50 21 pha Int4 0:36855 22 pha_ro Int4 0:36855 23 energy Real4 300.0: 8000.0 24 pi Int4 1:1024 25 fltgrade Int2 0:255 26 grade Int2 0:0,2:2,3:3,4:4,6:6 27 phas Int2 -4096:4095 % dmhistory lcurve/ccd1.300-8000.d1000.lc Tool name to extract history (): TOOL :dmextract infile="primary/acisf08004N001_evt2.fits[ccd_id=1,energy=300:8000][bin time=::1000]" outfile="lcurve/ccd1.300-8000.d1000.l c" bkg="" error="gaussian" bkgerror="gaussian" bkgnorm="1" exp="" bkgexp="" sys_err="0" opt="ltc1" defaults="/export/local/ciao-4.0/data/cxo .mdb" wmap="" clobber="no" verbose="0" Plot the curves - nb tab completion is great when you have long file names. In this example we will use the python version of ChIPS. % cd .. % chips chips-1> make_figure("8003/lcurve/ccd0.300-8000.d1000.lc[cols time,count_rate]",["symbol.style","none"]) print_window("lcurve.8003",["format","png"]) chips-2> add_window() chips-3> make_figure("8004/lcurve/ccd1.300-8000.d1000.lc[cols time,count_rate]",["symbol.style","none"]) print_window("lcurve.8004",["format","png"]) chips-4> delete_window() chips-5> add_curve("8004/lcurve/ccd1.300-8000.d1000.lc[cols time,count_rate]",["symbol.style","none","line.color","red"]) print_window("lcurve.error",["format","png"]) Oops; times are not congruent here. chips-6> clear() chips-7> a = read_file("8003/lcurve/ccd0.300-8000.d1000.lc") chips-8> b = read_file("8004/lcurve/ccd1.300-8000.d1000.lc") chips-9> xa = get_colvals(a,"time") chips-10> ya = get_colvals(a,"count_rate") chips-11> xb = get_colvals(b,"time") chips-12> yb = get_colvals(b,"count_rate") chips-13> xa = (xa - xa[0]) / 1000.0 chips-14> xb = (xb - xb[0]) / 1000.0 chips-15> add_curve(xa,ya,["symbol.style","none"]) chips-16> add_curve(xb,yb,["symbol.style","none","line.color","red"]) chips-17> set_plot_xlabel (r"\Delta t (ks)") chips-18> set_plot_ylabel ("Count rate (s^{-1})") chips-19> add_label (5, 1, "Obsid: 8003") chips-20> add_label (5, 0.8, "Obsid: 8004", ["color","red"]) chips-21> print_window("lc.compare",["fittopage",True]) chips-22> print_window("lc.compare",["format","png"]) What times should we exclude from OBSID 8003? -> can use lc_clean/analyze_ltcrv but going for a simple solution % chips chips-1> make_figure("8003/lcurve/ccd0.300-8000.d1000.lc[cols time,count_rate]") chips-2> pick() (2.91961e+08,0.321054) chips-3> a = get_pick() chips-4> a [array([ 2.91961443e+08]), array([ 0.32446051]), array([2], dtype=uint32)] chips-5> add_vline(a[0]) chips-6> a[0] array([ 2.91961443e+08]) chips-7> a[0][0] 291961442.573 If you have the commands in a file called plot_lcurves2.py you can say % chips chips-1> execfile("plot_lcurves2.py") In this case this plots up the two light curves in the same plot, restricting the time range to exclude the flare. ***) Create images for wavdetect I will use the 0.5 to 7 keV energy range for images, bin using the native pixel size (0.492 arcseconds), but what area (sky range) to use? We can use the Field Of View files (*fov1*) from the archive. % dmlist 8003/primary/acisf08003_000N002_fov1.fits blocks -------------------------------------------------------------------------------- Dataset: 8003/primary/acisf08003_000N002_fov1.fits -------------------------------------------------------------------------------- Block Name Type Dimensions -------------------------------------------------------------------------------- Block 1: PRIMARY Null Block 2: FOV Table 6 cols x 6 rows % dmlist 8003/primary/acisf08003_000N002_fov1.fits cols -------------------------------------------------------------------------------- Columns for Table Block FOV -------------------------------------------------------------------------------- ColNo Name Unit Type Range 1 POS(X,Y)[12] pixel Real8(12) -Inf:+Inf Position 2 SHAPE String[16] Region shape type 3 R[2] pixel Real8(2) -Inf:+Inf Radius 4 ROTANG[2] pixel Real8(2) -Inf:+Inf Angle 5 COMPONENT Int2 - Component number 6 CCD_ID Int2 - CCD ID -------------------------------------------------------------------------------- World Coord Transforms for Columns in Table Block FOV -------------------------------------------------------------------------------- ColNo Name 1: EQPOS(RA ) = (+149.9621)[degree] +TAN[(-0.000136667)* (POS(X)-(+4096.50))] (DEC) (+2.4258 ) (+0.000136667) ( (Y) (+4096.50)) We can use these regions as filters to create images: % mkdir images % cd 8003/primary % dmcopy acisf08003N002_evt2.fits"[energy=500:7000,ccd_id=0,sky=region(acisf08003_000N002_fov1.fits[ccd_id=0])][bin sky=::1]" ../../images/ccd0.8003.fits % cd ../../8004/primary % dmcopy acisf08004N001_evt2.fits"[energy=500:7000,ccd_id=1,sky=region(acisf08004_000N001_fov1.fits[ccd_id=1])][bin sky=::1]" ../../images/ccd1.8004.fits Note that I did not use the time filter from the light-curve analysis. Oops. Does this matter? Hard to tell (without repeating the analysis using the filter and comparing the results). % cd ../../imags % dmlist ccd\* blocks -------------------------------------------------------------------------------- Dataset: ccd0.8003.fits -------------------------------------------------------------------------------- Block Name Type Dimensions -------------------------------------------------------------------------------- Block 1: EVENTS_IMAGE Image Int2(1284x1286) Block 2: GTI0 Table 2 cols x 2 rows -------------------------------------------------------------------------------- Dataset: ccd1.8004.fits -------------------------------------------------------------------------------- Block Name Type Dimensions -------------------------------------------------------------------------------- Block 1: EVENTS_IMAGE Image Int2(1376x1359) Block 2: GTI1 Table 2 cols x 3 rows ***) wavdetect runs And finally we get to run wavdetect. We use a reasonable spread of scales, since the ccd's are close to the nominal aim point, and we only really want to use point sources for matching. % cd /data/ciao_demo/workshop/merge/ % mkdir -p wavdetect/8003 wavdetect/8004 % punlearn wavdetect % set o = wavdetect/8003/quick % pset wavdetect infile=images/ccd0.8003.fits % pset wavdetect outfile=$o.src % pset wavdetct scellfile=$o.scell % pset wavdetect imagefile=$o.img % pset wavdetect defnbkgfile=$o.nbkg % pset wavetect regfile=$o.reg % pset wavdetect scales="1 2 4 8 16" % wavdetect OR % ./run_wavdetect.csh 8003 images/ccd0.8003.fits % ./run_wavdetect.csh 8004 images/ccd1.8004.fits where run_wavdetect.csh is a simple shell script which looks like % cat run_wavdetect.csh #!/bin/csh -f if ( $#argv != 2 ) then echo "Usage: $0 obsid image" exit 1 endif set obsid = $1 set in = $2 set odir = wavdetect/$obsid if ( ! -d $odir ) then echo "Unable to find $odir" echo 1 endif set o = $odir/quick punlearn wavdetect pset wavdetect infile=$in pset wavdetect outfile=$o.src pset wavdetect scellfile=$o.scell pset wavdetect imagefile=$o.img pset wavdetect defnbkg=$o.nbkg pset wavdetect reg=$o.reg pset wavdetect scales="1 2 4 8 16" wavdetect mode=h There are FITS and ASCII versions of the regions: % head wavdetect/8003/quick.reg ellipse(4634.408066,3693.058321,2.576983,0.976171,85.734617) ellipse(4261.283066,3789.683321,1.299038,0.000000,90.000000) ellipse(4426.732433,3799.559904,4.633716,3.536966,151.487969) ellipse(4261.949733,4069.599988,2.328024,0.911211,59.678877) ellipse(4708.283066,4216.183321,1.299038,0.000000,90.000000) ellipse(4405.783066,3377.120190,13.287681,10.400419,147.395394) ellipse(4505.283066,3580.433321,1.897367,1.897367,45.000000) ellipse(4507.140209,3882.433321,2.885079,1.750450,38.952621) ellipse(4793.425923,3970.004750,2.478325,1.518842,53.349622) ellipse(4853.440961,3974.854374,13.177367,8.909498,174.931271) We can view the detections using ds9 (either the ASCII or FITS output): % ds9 images/ccd0.8003.fits -region wavdetect/8003/quick.src We can look at how "strong" these sources are: % dmlist wavdetect/8003/quick.src"[cols net_counts]" data,clean # NET_COUNTS 7.3552327156 3.9557163715 163.7007293701 5.7686872482 3.6718592644 206.5972290039 4.3513164520 11.3747224808 6.2913961411 67.5312042236 18.4500942230 7.5916938782 4.5342168808 75.7433471680 41.7829551697 27.3925666809 6.1199393272 10.2816286087 32.5249748230 11.4054422379 27.0434741974 10.8837165833 14.7479944229 12.4783611298 13.8614091873 18.8329334259 10.4425182343 ***) Reproject aspect http://cxc.harvard.edu/ciao/threads/reproject_aspect/ Going to convert obsid 8004 onto the aspect solution of 8003, since the latter is the longer. Luckily we only have a single asol file per obsid, which makes things a little-bit easier. % dmkeypar images/ccd0.8003.fits exposure echo+ 47038.292698449 % dmkeypar images/ccd1.8004.fits exposure echo+ 15721.489911643 % punlearn reproject_aspect % pset reproject_aspect infile= wavdetect/8004/quick.src"[net_counts=10:]" % pset reproject_aspect refsrcfile= wavdetect/8003/quick.src"[net_counts=10:]" % pset reproject_aspect updfile= 8004/primary/pcadf280982355N001_asol1.fits % pset reproject_aspect outfile= 8004/primary/asol1.reproj.fits % pset reproject_aspect wcsfile= images/ccd0.8003.fits % reproject_aspect verbose=2 Input file with duplicate srcs (wavdetect/8004/quick.src[net_counts=10:]): Input file with reference srcs (wavdetect/8003/quick.src[net_counts=10:]): Either input asol file, or file with WCS to be updated (8004/primary/pcadf280982355N001_asol1.fits): Output asol file (8004/primary/asol1.reproj.fits): reproject_aspect cmd_str is: wcs_match infile=wavdetect/8004/quick.src[net_counts=10:] refsrcfile=wavdetect/8003/quick.src[net_counts=10:] outfile=- wcsfile=images/ccd0.8003.fits logfile=stderr radius=12 residlim=2 residfac=0 residtype=0 clobber=no verbose=2 mode=ql | wcs_update infile=8004/primary/pcadf280982355N001_asol1.fits outfile=8004/primary/asol1.reproj.fits transformfile=- wcsfile="" logfile=STDOUT deltax = 0 deltay = 0 rotang = 0 scalefac = 1 clobber=no verbose=2 mode=ql input (dup) src file : wavdetect/8004/quick.src[net_counts=10:] input ref src file : wavdetect/8003/quick.src[net_counts=10:] input wcsfile : images/ccd0.8003.fits debug level : 2 Opening wcsfile: images/ccd0.8003.fits input infile : 8004/primary/pcadf280982355N001_asol1.fits input transform file : - input wcsfile : output outfile : 8004/primary/asol1.reproj.fits debug level : 2 xfmTableFilename is: - asp values from images/ccd0.8003.fits are: 149.962 2.426 0.000 ref WCS values are: wcrpix 4096.500 4096.500 wcrval 149.962 2.426 wcdlt -0.00013667 0.00013667 xfmTableFilename is: - radius in arcsec, radius in sky pixels are: 12.000 24.390 residlim in arcsec, residlim in sky pixels are: 2.000 4.065 Opened dup srcs file: wavdetect/8004/quick.src[net_counts=10:] Opened ref srcs file: wavdetect/8003/quick.src[net_counts=10:] 8 common sources found between: wavdetect/8003/quick.src[net_counts=10:] wavdetect/8004/quick.src[net_counts=10:] After deleting poor matches, 8 sources remain Transform elements are: delta_x(sky pix): 1.250266 delta_y(sky pix): 1.006494 rotation(deg.): -0.016687 scale factor: 0.998765 Source Residuals ---------------- Ref# Dup# Ref RA Ref Dec. Prior Transfm Resid Incl Resid Resid Ratio 0 1 149.91695 2.38524 0.34 0.57 1.11 Y 1 0 149.91982 2.32751 0.89 0.49 0.73 Y 3 3 149.85858 2.40920 0.86 0.38 1.07 Y 4 6 149.87091 2.41741 0.96 0.40 0.85 Y 5 8 149.86821 2.33090 1.11 0.79 0.85 Y 6 9 149.88418 2.33809 1.79 1.92 1.73 Y 9 2 149.85025 2.39846 0.55 0.87 1.59 Y 11 10 149.87186 2.34281 1.62 1.41 1.27 Y Source Residuals, before/after transform (arcsec), and percentage improvement: Average Residuals: 1.014508 0.854031 15.82% Maximum Residuals: 1.788912 1.920708 -7.37% Source Residual Ratios, before/after transform, and percentage improvement: Average Residual Ratios: 1.465885 1.153123 21.34% Maximum Residual Ratios: 2.411561 1.734757 28.06% xfm file columns xfm data were: XFMA11 0.996816 XFMA12 -0.000664 XFMA21 -0.000082 XFMA22 1.000713 XFMT1 1.248722 XFMT2 1.005251 del_x 1.250266 del_y 1.006494 scale_factor 0.998765 alpha -0.016687 xfm file columns wcs data were: asp[0] 149.962122 asp[1] 2.425826 asp[2] 0.000000 wcrpix[0] 4096.500000 wcrpix[1] 4096.500000 wcdlt[0] -0.000137 wcdlt[1] 0.000137 num_asolInFiles: 1 num_asolOutFiles: 1 Transform scale_factor: 0.998765 Transform rotation angle (deg): -0.016687 Transform x translation (pixels): 1.250266 Transform y translation (pixels): 1.006494 The new aspect solution can be compared to the old one using the dmdiff tool (here we restrict to the first few rows): % dmdiff 8004/primary/pcadf280982355N001_asol1.fits 8004/primary/asol1.reproj.fits"[#row=1:5]" Infile 1: 8004/primary/pcadf280982355N001_asol1.fits Infile 2: 8004/primary/asol1.reproj.fits[#row=1:5] ----------------------- HEADER VALUE DIFFERENCES ----------------------- Message: Keyword: Value(s): Diff: -------- ------- --------- ----- Values are not equal CHECKSUM dFM3dEJ0dEJ0dEJ0 UaOqWSMnUYMnUYMn # dmdiff (CIAO 4.0): WARNING: CHECKSUM comments are different. # dmdiff (CIAO 4.0): comment1= "HDU checksum updated 2006-11-27T17:12:18" # dmdiff (CIAO 4.0): comment2= "HDU checksum updated 2008-10-16T14:56:01" Values are not equal DATASUM 1385954508 2486077890 # dmdiff (CIAO 4.0): WARNING: DATASUM comments are different. # dmdiff (CIAO 4.0): comment1= "data unit checksum updated 2006-11-27T17:10:50" # dmdiff (CIAO 4.0): comment2= "data unit checksum updated 2008-10-16T14:56:01" Values are not equal TSTOP 280998538.950723 280998538.95072 -3.45707e-06 Values are not equal MJD_OBS 54066.1105988132 54066.110598813 -1.96451e-10 Values are not equal SIM_X -0.780908343716727 -0.78090834371673 -2.9976e-15 Values are not equal SIM_Z -233.587434460829 -233.58743446083 -9.9476e-13 Values are not equal PITCHAMP 0.00710296630859375 0.0071029663085938 +5.0307e-17 Values are not equal HISTNUM 248 260 +12 # dmdiff (CIAO 4.0): WARNING: Datasets have different number of subspace columns. infile1: 20 column(s) infile2: 21 column(s) Skipping detailed subspace comparison. TABLE NAME: ASPSOL ----------------------- TABLE VALUE DIFFERENCES ----------------------- # dmdiff (CIAO 4.0): WARNING: infile1 contains 63149 more row(s) than infile2. infile1=63154 infile2=5. Proceeding anyway, comparing only the first 5 rows of each file. Message: Row:Cell: Column: Value(s): Diff: -------- --------- ------- --------- ----- Values are not equal 1 ra 149.844489946753 149.844318905412 -0.000171041 (-0.000114 %) Values are not equal 1 dec 2.48174522148039 2.48188276010155 +0.000137539 (+0.00554 %) Values are not equal 1 roll 68.608359129337 68.591672246773 -0.0166869 (-0.0243 %) Values are not equal 2 ra 149.844483929078 149.844312887748 -0.000171041 (-0.000114 %) Values are not equal 2 dec 2.48165775334132 2.48179529196262 +0.000137539 (+0.00554 %) Values are not equal 2 roll 68.6016924556722 68.5850055731082 -0.0166869 (-0.0243 %) Values are not equal 3 ra 149.844469975336 149.844298934003 -0.000171041 (-0.000114 %) Values are not equal 3 dec 2.48166816152186 2.48180570014119 +0.000137539 (+0.00554 %) Values are not equal 3 roll 68.6017162618383 68.5850293792743 -0.0166869 (-0.0243 %) Values are not equal 4 ra 149.844459065639 149.844288024304 -0.000171041 (-0.000114 %) Values are not equal 4 dec 2.48167704020382 2.48181457882158 +0.000137539 (+0.00554 %) Values are not equal 4 roll 68.6017427181562 68.5850558355922 -0.0166869 (-0.0243 %) Values are not equal 5 ra 149.844444521995 149.844273480656 -0.000171041 (-0.000114 %) Values are not equal 5 dec 2.48169133721926 2.48182887583492 +0.000137539 (+0.00554 %) Values are not equal 5 roll 68.6017721102483 68.5850852276844 -0.0166869 (-0.0243 %) ***) reproject the events % cd /data/ciao_demo/workshop/merge/8004/primary % punlearn reproject_events % pset reproject_events infile= acisf08004N001_evt2.fits % pset reproject_events match= ../../8003/primary/acisf08003N002_evt2.fits % pset reproject_events aspect= asol1.reproj.fits % pset reproject_events outfile= repro2.fits % reproject_events Input dataset/block specification (acisf08004N001_evt2.fits): Output dataset/block specification (repro2.fits): Match file (../../8003/primary/acisf08003N002_evt2.fits): % dmdiff acisf08004N001_evt2.fits repro2.fits"[#row=1:5]" Infile 1: acisf08004N001_evt2.fits Infile 2: repro2.fits[#row=1:5] ----------------------- HEADER VALUE DIFFERENCES ----------------------- Message: Keyword: Value(s): Diff: -------- ------- --------- ----- Values are not equal CHECKSUM He4CJd29Hd2AHd29 ZkCAiiC8ZiCAfiC5 # dmdiff (CIAO 4.0): WARNING: CHECKSUM comments are different. # dmdiff (CIAO 4.0): comment1= "HDU checksum updated 2006-11-27T17:52:39" # dmdiff (CIAO 4.0): comment2= "HDU checksum updated 2008-10-16T18:06:47" Values are not equal DATASUM 3795861349 4226604844 # dmdiff (CIAO 4.0): WARNING: DATASUM comments are different. # dmdiff (CIAO 4.0): comment1= "data unit checksum updated 2006-11-27T17:51:40" # dmdiff (CIAO 4.0): comment2= "data unit checksum updated 2008-10-16T18:06:47" # dmdiff (CIAO 4.0): WARNING: SIM_X units are different. # dmdiff (CIAO 4.0): unit1= "" # dmdiff (CIAO 4.0): unit2= "mm" # dmdiff (CIAO 4.0): WARNING: SIM_X comments are different. # dmdiff (CIAO 4.0): comment1= "SIM focus pos (mm)" # dmdiff (CIAO 4.0): comment2= "SIM value" # dmdiff (CIAO 4.0): WARNING: SIM_Y units are different. # dmdiff (CIAO 4.0): unit1= "" # dmdiff (CIAO 4.0): unit2= "mm" # dmdiff (CIAO 4.0): WARNING: SIM_Y comments are different. # dmdiff (CIAO 4.0): comment1= "SIM orthogonal axis pos (mm)" # dmdiff (CIAO 4.0): comment2= "SIM value" # dmdiff (CIAO 4.0): WARNING: SIM_Z units are different. # dmdiff (CIAO 4.0): unit1= "" # dmdiff (CIAO 4.0): unit2= "mm" # dmdiff (CIAO 4.0): WARNING: SIM_Z comments are different. # dmdiff (CIAO 4.0): comment1= "SIM translation stage pos (mm)" # dmdiff (CIAO 4.0): comment2= "SIM value" Values are not equal RA_NOM 149.8397480906 149.96212233138 +0.122374 # dmdiff (CIAO 4.0): WARNING: RA_NOM units are different. # dmdiff (CIAO 4.0): unit1= "" # dmdiff (CIAO 4.0): unit2= "deg" Values are not equal DEC_NOM 2.4826716343592 2.4258260588124 -0.0568456 # dmdiff (CIAO 4.0): WARNING: DEC_NOM units are different. # dmdiff (CIAO 4.0): unit1= "" # dmdiff (CIAO 4.0): unit2= "deg" Values are not equal HISTNUM 493 528 +35 Values are not equal ONTIME 15929.599940658 15929.5999406576 -3.83807e-10 Values are not equal ONTIME3 15929.599940658 15929.5999406576 -3.83807e-10 Values are not equal ONTIME6 15929.599940658 15929.5999406576 -3.83807e-10 Values are not equal ONTIME7 15929.599940658 15929.5999406576 -3.83807e-10 Values are not equal ONTIME2 15923.117980123 15923.1179801226 -4.32919e-10 Values are not equal ONTIME1 15923.11801976 15923.1180197597 -3.45608e-10 Values are not equal ONTIME0 15926.358970344 15926.3589703441 +6.73026e-11 Values are not equal LIVETIME 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal LIVTIME3 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal LIVTIME6 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal LIVTIME7 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal LIVTIME2 15721.489872508 15721.4898725077 -3.11047e-10 Values are not equal LIVTIME1 15721.489911643 15721.4899116429 -1.30967e-10 Values are not equal LIVTIME0 15724.68982336 15724.6898233595 -4.8567e-10 Values are not equal EXPOSURE 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal EXPOSUR3 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal EXPOSUR6 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal EXPOSUR7 15727.889754555 15727.8897545555 +4.74756e-10 Values are not equal EXPOSUR2 15721.489872508 15721.4898725077 -3.11047e-10 Values are not equal EXPOSUR1 15721.489911643 15721.4899116429 -1.30967e-10 Values are not equal EXPOSUR0 15724.68982336 15724.6898233595 -4.8567e-10 # dmdiff (CIAO 4.0): WARNING: Datasets have different number of subspace columns. infile1: 16 column(s) infile2: 17 column(s) Skipping detailed subspace comparison. TABLE NAME: EVENTS ----------------------- TABLE VALUE DIFFERENCES ----------------------- # dmdiff (CIAO 4.0): WARNING: infile1 contains 104080 more row(s) than infile2. infile1=104085 infile2=5. Proceeding anyway, comparing only the first 5 rows of each file. # dmdiff (CIAO 4.0): WARNING: Pcrval are not equal for column sky, axis 0. pcrval1 = 149.84 pcrval2 = 149.962 # dmdiff (CIAO 4.0): WARNING: Wcrval are not equal for column sky, axis 0. wcrval1 = 149.84 wcrval2 = 149.962 Message: Row:Cell: Column: Value(s): Diff: -------- --------- ------- --------- ----- Values are not equal 1 detx 3099.34594726562 3099.52758789062 +0.181641 (+0.00586 %) Values are not equal 1 dety 6166.60791015625 6166.45703125 -0.150879 (-0.00245 %) Values are not equal 1 x 5661.8681640625 6557.015625 +895.147 (+15.8 %) Values are not equal 1 y 5794.14208984375 6211.53564453125 +417.394 ( +7.2 %) Values are not equal 2 detx 3725.21362304688 3725.0810546875 -0.132568 (-0.00356 %) Values are not equal 2 dety 5462.67529296875 5462.916015625 +0.240723 (+0.00441 %) Values are not equal 2 x 5234.85498046875 6130.560546875 +895.706 (+17.1 %) Values are not equal 2 y 4954.5634765625 5372.212890625 +417.649 (+8.43 %) Values are not equal 3 detx 4379.8046875 4379.28662109375 -0.518066 (-0.0118 %) Values are not equal 3 dety 6393.92578125 6394.35693359375 +0.431152 (+0.00674 %) Values are not equal 3 x 6340.75390625 7236.625 +895.871 (+14.1 %) Values are not equal 3 y 4684.9248046875 5103.4267578125 +418.502 (+8.93 %) Values are not equal 4 detx 4626.12353515625 4625.85791015625 -0.265625 (-0.00574 %) Values are not equal 4 dety 6226.6826171875 6226.458984375 -0.223633 (-0.00359 %) Values are not equal 4 x 6274.9248046875 7170.38671875 +895.462 (+14.3 %) Values are not equal 4 y 4394.56298828125 4812.560546875 +417.998 (+9.51 %) Values are not equal 5 detx 4448.5048828125 4448.0947265625 -0.410156 (-0.00922 %) Values are not equal 5 dety 6211.7509765625 6211.572265625 -0.178711 (-0.00288 %) Values are not equal 5 x 6196.20947265625 7091.59765625 +895.388 (+14.5 %) Values are not equal 5 y 4554.4853515625 4972.6064453125 +418.121 (+9.18 %)