Reduction of Coarse Grid Positions to BAT Coordinates

BAT Cal Memo 2003-03-10

10 Mar 2003

C. Markwardt

Reduction of Coarse Grid Positions to BAT Coordinates

Summary

The BAT coarse grid test involves measuring the positions of a rad
source using both the BAT imaging system and a theodolite system.  The
first step in analyzing the data is to reduce the data into the
BAT_X/Y/Z coordinate system, which I perform in this memo.
Significant sources of uncertainty include: statistical error in BAT_X
direction; position of active element within the Ba-133 rad source.

Coarse grid position variance (rms, test 1):
   e(BAT_X) = 0.038 cm   e(BAT_Y) = 0.006 cm   e(BAT_Z) = 0.003 cm


Details

One formal test of the BAT imaging system is the so-called "coarse
grid" test.  This test involves measuring the position of a
radioactive source using the BAT imaging array, while measuring it at
the same time with a precision theodolite system.

In principle the theodolite system is capable of measuring positions
to within 0.001", but this depends on the viewing geometry.  The BAT
imaging system has a formal point spread function of about 20 arcmin
(FWHM), but in principle one can centroid to finer than this.  This
will depend on understanding the various systematic effects, and so it
is very important to obtain accurate (and precise) source positions.

A rule of thumb is that 1 mm of position uncertainty translates to 1
arcmin of angular uncertainty, at the 3 m height of the source holder
above the detector array.


There were two coarse grid tests:

   Coarse grid test 1 - dense grid covering ~1/3rd field of view
   Coarse grid test 2 - sparse grid covering outlying points

Because of access issues, it was not possible to place a source at all
parts of the BAT field of view (see Figure 2 for coverage).

Technique

The technique is straightforward.  I apply a translation and rotation
to the measured points to bring them into alignment with the known
mask positions.  The mask positions are determine from drawings
supplied by Danielle Vigneau (Mech. Eng.).

BAT mask fiducial locations

Figure 1. BAT mask fiducial locations

In the figure top panel, +Y = +BAT_X is to the right, +Z = +BAT_Y is
upward.  In the bottom panel, +Y = +BAT_X is to the right, +X = +BAT_Z
is upward.

The positions are given in inches with respect to the geometric center
of the CZT array (at the centerplane of the CZT).  These are the
positions of the top plane of the fiducial sockets. Hubbs targets are
inserted into these sockets, whose reference point is 0.500" above the
top plane of the fiducial location.  Thus, the coordinates of the
Hobbs target reference points are:

               X (in)      Y (in)     Z (in)
  MASK::-Y   41.536000  -44.875000   -0.714000   "left"
  MASK::+Y   41.536000   44.875000   -0.714000   "right"
  MASK::-Z   41.536000   -2.249000  -21.125000   "front"
  MASK::+Z   41.536000   -2.249000   21.125000   "back"

These coordinates are in inches, and use the "mask coordinates" which
are parallel to the spacecraft X/Y/Z system, with X=0 origin at the
centerplane of the CZT.

I used IDL to find the best fit translation and rotation that
transforms the measured coordinates for the mask targets into the
nominal coordinates.  The IDL procedures that I used were XFORMTHEO
and XFORM3D (see Appendix 2).

In addition to finding the best fit rotation, a by-product of the
solution is knowledge of the RMS variations in the coordinates.  This
is the r.m.s. of the measured+transformed points with respect to
the nominal position, in BAT coordinate system.

Coarse Grid Test 1
   e(BAT_X) = 0.038 cm   e(BAT_Y) = 0.006 cm   e(BAT_Z) = 0.003 cm

The error in the BAT_X direction is the largest, reflecting the fact
that this coordinate is the least well determined by two theodolites
at small angles and large distances.  While we have multiple
measurements of the mask target positions, we do not have multiple
measurements of the science calibration targets, so the e(BAT_X)
uncertainty is definitely applicable as a systematic uncertainty.

The transformation parameters are (in inches and degrees):
Line 1 X Transl.     Y Translate     Z translate     Z Euler Ang     Y Euler Ang     X Euler Ang
Line 2 Error of "    Error in "      Error in "      Error in "      Error in "      Error in "

Coarse Grid Test 1  
      -520.20389      -182.45503      -89.655283      -1.1887589      -134.92795       181.43071
    0.0023169783    0.0067686951     0.011390975   0.00061955064   0.00055350192   0.00087584069

Coarse Grid Test 2
       3136.1210       4.2677258       463.63296       60.489185      -116.04819       103.98896
     0.015535112     0.054679412      0.10375757    0.0015525568    0.0013275487    0.0020262842

The quoted errors assume delta(chi^2) = 1.  See XFORM3D (Appendix 2)
for the usage of these quantities.


Once the transformation parameters are solved for, then it is
straightforward to apply the inverse transform to the measured science
calibration target coordinates, to convert to BAT coordinates.  These
coordinates, and their uncertainties, are listed in Appendix 1.

The coverage of the coarse grid is shown in Figure 2:

Coarse test coverage map

Figure 2. Coarse imaging test coverage map.  Test 1 points are shown
with open circles, test 2 with closed circles.  The coordinates are
tangent-plane image coordinates, i.e. BAT_X/BAT_Z and BAT_Y/BAT_Z.



Rad Source Packaging

The Ba-133 source used in the coarse grid test is in a cylindrical
plastic package.  The coordinates in Appendix 1 do not
include the offset of the radioactive source within the package.  The
package diameter is 1", and the thickness is 0.250" (this is a type D
package from Isotope Products).

The position of the source within the package is less certain.
According to the package diagram in the Isotope Products catalog, the
active element is inserted in a 2 mm diameter hole at the center of
the disk, the hole being 0.125" deep.  However, the diagram also shows
that the bottom of the hole is 0.109" from the bottom of the package.
So there is an uncertainty of 0.016" in the bottom position of the
radioactive material.

The most important thing is knowing the centroid of the material
distribution.  A reasonable guess is
   delta_BAT_X = 0.000 cm
   delta_BAT_Y = 0.000 cm
   delta_BAT_Z = 0.318 +/- 0.020 cm

where the uncertainty in the last quantity is 0.5*(0.125" - 0.109").
Other uncertainties, not accounted for in the figure above, comes from
the thickness of the tape on the bottom of the package (sighting
crosshairs were drawn on the tape).

Conclusion

The largest errors are in the BAT_X direction, however, they appear to
be of order 0.4 mm, which, when translated to an angular scale is
about 0.4 arcmin.  My goal is < 1 arcmin systematics, so these
positional uncertainties appear acceptable, however it is possible
that some systematic error creeps into the theodolite positioning of
the Ba source.  Also, the internal construction of the rad source is a
big question mark.  For example, if the centroid of the active element
is shifted by ~0.5 mm, that should in principle be detectable in the
imaging data.  

Addendum

Jay Cummings writes: 
 > I was struck by the variations in the Z coordinate in the positions of
 > the source in the first coarse grid run.
 > 
 > The floor in the clean tent is not parallel to the mask nor detector
 > plane. But it probably is well approximated by a plane. Since the
 > suspension of the source did not change, I would guess that the
 > positions are also close to a plane. If we assume that the points for
 > coarse grid 1 lie in a plane, then the best Z is found by the formula
 > Z = 304.466 + X * 0.00166557 + Y * 0.00274414. This formula has
 > residuals less than +- 1 mm and FWHM about 0.8.

Revisions
10 Mar 2003 - initial draft
11 Mar 2003 - comments by Jay Cummings
28 May 2003 - editted Appendix 1 table to add more textual space


Appendix 1. Science Calibration Target Positions

Coarse Grid Test 1  
 Name              BAT_X     BAT_Y     BAT_Z      e(BAT_X    _Y    _Z)
 CG::CG01          40.7447   16.5619  304.3380    0.0381 0.0058 0.0025
 CG::CG01_REPEAT   40.6992   16.5728  304.3099    0.0381 0.0058 0.0025
 CG::CG02          40.6629   16.7954  304.3476    0.0381 0.0058 0.0025
 CG::CG03         -54.7734    8.0050  304.0317    0.0381 0.0058 0.0025
 CG::CG04        -143.1226   10.0928  304.4272    0.0381 0.0058 0.0025
 CG::CG05          87.2006  204.9343  305.5563    0.0381 0.0058 0.0025
 CG::CG06         -29.4386  207.5070  305.2114    0.0381 0.0058 0.0025
 CG::CG07        -159.5109  237.4792  304.7327    0.0381 0.0058 0.0025
 CG::CG08        -238.7809    9.5220  304.1754    0.0381 0.0058 0.0025
 CG::CG09        -230.9221   91.9899  304.2845    0.0381 0.0058 0.0025
 CG::CG10        -222.0668  170.1457  304.7570    0.0381 0.0058 0.0025
 CG::CG11        -317.3734  164.6950  303.6739    0.0381 0.0058 0.0025
 CG::CG12        -309.2267   88.9259  304.2202    0.0381 0.0058 0.0025
 CG::CG13        -400.8619   86.8602  303.6583    0.0381 0.0058 0.0025
 CG::CG14        -397.1351   13.5523  303.5765    0.0381 0.0058 0.0025
 CG::CG15        -303.7891    9.9056  304.3113    0.0381 0.0058 0.0025
 CG::CG16        -201.3873   10.2758  304.2670    0.0381 0.0058 0.0025
 CG::CG17        -121.1971    3.8839  304.6527    0.0381 0.0058 0.0025
 CG::CG18        -131.5669  -73.5478  304.1869    0.0381 0.0058 0.0025
 CG::CG19        -208.3268  -66.6773  303.6629    0.0381 0.0058 0.0025
 CG::CG20        -279.2001  -54.2265  304.1441    0.0381 0.0058 0.0025
 CG::CG21        -368.8480  -56.5610  303.9675    0.0381 0.0058 0.0025
 CG::CG22        -367.9240 -140.9265  304.0868    0.0381 0.0058 0.0025
 CG::CG23        -288.9594 -145.8804  303.6765    0.0381 0.0058 0.0025
 CG::CG24        -203.7159 -148.9651  303.5893    0.0381 0.0058 0.0025
 CG::CG25        -133.1253 -153.7754  304.1959    0.0381 0.0058 0.0025
 CG::CG26        -146.5422 -246.9448  303.5561    0.0381 0.0058 0.0025
 CG::CG27        -221.6667 -232.6142  303.0867    0.0381 0.0058 0.0025
 CG::CG28        -289.1483 -235.9436  303.0253    0.0381 0.0058 0.0025
 CG::CG30         -57.3503 -247.5705  303.5487    0.0381 0.0058 0.0025
 CG::CG31         -56.1783 -171.7273  303.9017    0.0381 0.0058 0.0025
 CG::CG32         -61.3489  -92.0022  303.9372    0.0381 0.0058 0.0025
 CG::CG33         -55.1563  -56.7809  304.2199    0.0381 0.0058 0.0025
 CG::CG34         -93.3140  -29.1904  304.1161    0.0381 0.0058 0.0025
 CG::CG35         -78.7296   56.3077  304.8173    0.0381 0.0058 0.0025
 CG::CG36        -151.9566   49.9993  304.5396    0.0381 0.0058 0.0025
 CG::CG37        -229.3290   61.8693  304.4157    0.0381 0.0058 0.0025
 CG::CG38        -202.2239  108.1830  303.9900    0.0381 0.0058 0.0025
 CG::CG39        -211.9865  -28.3697  304.2448    0.0381 0.0058 0.0025
			   	     
Coarse Grid Test 2
 Name              BAT_X     BAT_Y     BAT_Z      e(BAT_X    _Y    _Z)
 CG::CG01         385.2340  -35.9348  414.0341    0.0203 0.0327 0.0025
 CG::CG02         377.9450 -122.9297  412.3428    0.0203 0.0327 0.0025
 CG::CG03         171.4089  234.4192  407.8505    0.0203 0.0327 0.0025
 CG::CG04         -68.5462 -282.3277  396.8209    0.0203 0.0327 0.0025
 CG::CG05        -210.8613 -277.5518  393.3666    0.0203 0.0327 0.0025
 CG::CG06         165.2865 -284.0973  391.6094    0.0203 0.0327 0.0025




Appendix 2. IDL Procedures used in fitting:

XFORM3D - general 3-D transformation (download)
XFORMTHEO - full theodolite to BAT_X/Y/Z transformation (download)
QTCOMPOSE - see Markwardt IDL Page
QTVROT - see Markwardt IDL Page

Scripts used to reduce the actual data:

Coarse Grid Test 1
    spawn, 'cat cg1_end_mask.txt | grep -v "//" ', ref_str
    ;; Exclude point 5, since it seems to be a more bogus measurement
    ref_str = [ref_str(0:4),ref_str(6:*)]
    
    spawn, 'cat cg1_end_cal.txt | grep -v "//" ', dat_str
    ;; Ignore point CG::CG29 because it is definitely bogus
    wh = where(strpos(dat_str, '::CG29 ') LT 0)
    dat_str = dat_str(wh)
    
    ;; Initial transformation parameters
    p0 = [80d, -190d, 520d, -1d, -135d, 180d]
    pos_err = [0.0022d, 0.0150d, 0.0010d]
    
    xformtheo, ref_str, dat_str, p0=p0, ptransform=ptransform1, $
      dptransform=dptransform1, pos_err=pos_err, $
      refpoints=refpoints1, datpoints=datpoints1
    
    
    end


Coarse Grid Test 2
    spawn, 'cat cg2_mask.txt | grep -v "//" ', ref_str

    spawn, 'cat cg2_cal.txt | grep -v "//" ', dat_str

    ;; Initial transformation parameters
    p0 = [3136d, 4.25d, 463d, 60d, -115d, 103d]
    pos_err = [0.0022d, 0.0150d, 0.0010d]
    
    xformtheo, ref_str, dat_str, p0=p0, ptransform=ptransform2, $
      dptransform=dptransform2, pos_err=pos_err, $
      refpoints=refpoints2, datpoints=datpoints2
    
    
    end


Data Files
  cg1_end_mask.txt - Test 1 - Mask targets only
  cg1_end_cal.txt  - Test 1 - Sci Cal targets only
  cg2_mask.txt     - Test 2 - Mask targets only
  cg2_cal.txt      - Test 2 - Sci Cal targets only