#! /bin/sh
#set -x
demo=decon4

deconparams=deconparams4
fold=8
space=3		# 3 null traces between panels
tpow=1		# gain power before examining autocorrelations
		# tpow=2 would often be better for field data


###PURPOSE###
# We use the same data described in the first demo.  But here
# we illustrate how to set up a series of tests to determine the
# optimal length for spiking deconvolution.

# First make the synthetic data for the deconvolution demo.
######START OF MODEL######
I=${CWPROOT}/include
L=${CWPROOT}/lib

make

./traces |
suaddhead ns=512 |
sushw key=dt a=4000 |
suaddnoise sn=200 |
suconv filter=1152,-384,-904,288,174,-34,-12 >modeldata

rm traces
######END OF MODEL######

# Plot the model
supswigp <modeldata title="Model Data: 64ms reverbs" \
	label1="Time (sec)" label2="Trace" >${demo}.1.eps

# Plot the autocorrelation with gain
sugain <modeldata tpow=$tpow |
suacor ntout=31 |
supswigp title="Autocorrelation (with gain)" \
	label1="Time (sec)" label2="Trace" >${demo}.2.eps

#!# Determine range of decon parameters (use milliseconds to run loop)
gapmin=4 gapmax=4
lenmin=8 lenmax=64
gapincrement=0 gapexpand=1
lenincrement=0 lenexpand=2
tmin=0.5 tmax=1.0	# auto-corr window

panelnumber=0  # test panel number


### Determine ns, and dt from data (for sunull)
nt=`sugethw ns <modeldata | sed 1q | sed 's/.*ns=//'`
dt=`sugethw dt <modeldata | sed 1q | sed 's/.*dt=//'`

### Convert dt to seconds from header value in microseconds
dt=`bc -l <<-END
	scale=3
	$dt / 1000000
END`

# Loop over deconvolution parameters
>deconpanel  # zero output files

# zeroth panel is w/o decon
cp modeldata deconpanel
sunull ntr=$space nt=$nt dt=$dt >>deconpanel

echo "Test minlag maxlag tmin tmax" >$deconparams
gap=$gapmin
len=$lenmin
while [ $gap -le $gapmax -a $len -le $lenmax ]
do
	panelnumber=`expr $panelnumber + 1`
	minlag=`bc -l <<-END
		scale=5; $gap / 1000
	END`
	maxlag=`bc -l <<-END
		scale=5; $minlag + $len / 1000
	END`

	sugain <modeldata tpow=$tpow |
	supef minlag=$minlag maxlag=$maxlag \
		mincorr=$tmin maxcorr=$tmax >>deconpanel
	sunull ntr=$space nt=$nt dt=$dt >>deconpanel

	echo "$panelnumber $minlag $maxlag $tmin $tmax" >>$deconparams
	gap=`bc <<-END
		scale=5
		$gap*$gapexpand + $gapincrement
	END`
	len=`bc -l <<-END
		scale=5
		$len*$lenexpand + $lenincrement
	END`
done


echo "The parameter values are recorded in $deconparams"

### Plot deconvolution test panels
f2=0
d2=`bc -l <<-END
	scale=5
	1/($fold + $space)
END`

### Additional display gaining and plot
### Some might like tpow=1 pbal=1 instead of gpow=.5, etc.
suresamp tmin=0.38 nt=55 <deconpanel |
sugain  gpow=.5 |
supswigp f2=$f2 d2=$d2 title="Deconvolution Test"  \
	label1="Time (s)"  label2="Deconvolution Test Number" >${demo}.3.eps

echo 
echo "Output PostScript files:"

echo -n "     "
for i in ${demo}.*.eps
do
	 echo -n "$i "
done
echo
echo "You may view these with your PostScript Previewer"

exit 0
