#! /bin/csh -f
# onepatchcorr3d - to get local displacement between two volumes by 3d 
# cross-correlation at a single position
nohup
if ($#argv != 9) then
cat <<EOCAT
Usage: onepatchcorr  XSIZE YSIZE ZSIZE  XCEN YCEN ZCEN FILEA FILEB OUTPUT_FILE
Finds the displacement of the volume in FILEB relative to the volume in FILEA,
 in a local volume XSIZE by YSIZE by ZSIZE, centered at XCEN, YCEN, ZCEN, and
 places the displacement into OUTPUT_FILE
EOCAT
exit 1
endif

set tmpdir = /usr/tmp
if ($?IMOD_DIR) then
    setenv PATH "$IMOD_DIR/bin:$PATH"
    if (-e "$IMOD_DIR/bin/settmpdir") source "$IMOD_DIR/bin/settmpdir"
endif

@ nxl = $1; shift
@ nyl = $1; shift
@ nzl = $1; shift
@ xc = $1; shift
@ yc = $1; shift
@ zc = $1; shift
#
@ nxtap = ($nxl + 9) / 10
@ nytap = ($nyl + 9) / 10
@ nztap = ($nzl + 9) / 10
@ nxpad = ($nxl + 4) / 5
@ nypad = ($nyl + 4) / 5
@ nzpad = ($nzl + 4) / 5
#
set pad1 = "$tmpdir/pad1.$$"
set pad2 =" $tmpdir/pad2.$$"
set cortmp = "$tmpdir/corr3d.$$"
onintr clean
#
if (-e $argv[3]) \rm -f $argv[3]
tapervoledge >/dev/null <<HERESTRING
$argv[1]
$pad1
$nxl,$nyl,$nzl
$xc,$yc,$zc
$nxpad,$nypad,$nzpad
$nxtap,$nytap,$nztap
HERESTRING
tapervoledge >/dev/null <<HERESTRING
$argv[2]
$pad2
$nxl,$nyl,$nzl
$xc,$yc,$zc
$nxpad,$nypad,$nzpad
$nxtap,$nytap,$nztap
HERESTRING
set displ = `clip corr -3d -n 0 "$pad1" "$pad2" "$cortmp" | grep '^(' | sed '/.*(\(.*\)).*/s//\1/'`
echo $displ > $argv[3]

clean:
\rm -f "$cortmp"* "$pad1"* "$pad2"*
