      MAKE_DEPEND=yes
include ${SEPINC}/SEP.top
BINDIR =  ../Bin/${MTYPE}
SRCDIR = ../Src
RESDIR =  ../Figs
RESULTSER=
UPSTEXFLAGS = invras=y 
UF90LIBDIRS = /biondo/lib/genkir3d_v3/$(SEP_ARCH)
UF90LIBS = ${AUXLIBF90} -lgemops -lgenkir3d -lsepf90 -lsep3df90  -lsep3d \
-lsepconvertf90 -lsepconvert  -lsepauxf90 -lsepaux  ${SEPLIBF} ${SEPLIB}\
${MATHLIBF90} -lmp
UF90INCLUDES=-I/biondo/include/genkir3d_v3/$(SEP_ARCH)
UF90INCLUDES=-I. -I/biondo/include/genkir3d_v3/$(SEP_ARCH)
UF90DEFINES=-I.
OLEVEL=3
#RESULTSCR =stack
RESULTSER =christine-vel0  stack overlay.vel0 overlay.vel1 stack-comp sem-vel0


####################################################
####################################################
###################REFLECTORS#######################
####################################################
####################################################

reflectors: basement.zero   bottom.zero     floor.zero      over.zero       top.zero

${RESDIR}/stack.v:  mig.vel0.H	reflectors.vel0.H
	Window < mig.vel0.H j1=2 j3=4|Stack \
  | Grey title=" " out=a.v min1=0 max1=2.45 min2=0 max2=50000\
  label2="Cmpx(m)" label1="Time(s)" > /dev/null
	Graph < reflectors.vel0.H min1=0 max1=50000 min2=0 max2=2.45 out=b.v\
  wantframe=n wantaxis=n title=" " label1=" " label2=" " >/dev/null yreverse=y\
	plotfat=8
	Graph < reflectors.vel0.H min1=0 max1=50000 min2=0 max2=2.45 out=b.v\
  wantframe=n wantaxis=n title=" " label1=" " label2=" " >/dev/null yreverse=y\
	plotcol=0 out=c.v
	vp_Overlay a.v b.v  c.v>$@
	
${RESDIR}/christine-vel1.v: 	tau.vel1.wind.H
	Real < tau.vel1.wind.H |Grey out=$@ >/dev/null title=" " label1="Time(s)" label2="Cmpx(m)"\
   wantscalebar=y allpos=y bias=1480

GH = Graph min2=1250 max2=1750 transp=y wantframe=n title=" " wantaxis=n crowd=.9 transp=n yreverse=y
GY = Grey min1=1250 max1=1750 title=" " label1="Time(s)" label2="Cmp(x)" crowd=.9 wantaxis=n wantframe=n  allpos=y


stack0.H:	${BINDIR}/stack_it.x test.mig.H
	${BINDIR}/stack_it.x < test.mig.H >$@ t0=0 slope=.0

stack1.H:	 ${BINDIR}/stack_it.x mig.vel1.H
	${BINDIR}/stack_it.x < mig.vel1.H >$@ t0=0 slope=.0

${RESDIR}/stack-comp.v:	stack0.H stack1.H
	Cat < stack0.H stack1.H|Window min1=1 max1=2 min2=25000 max2=45000 >a.H
	Window < a.H n3=1|Grey label1="Time(s)" title="Vel0"\
  >/dev/null out=a.v clip=.367313  crowd=.85 label2=" "
	Window < a.H f3=1|Grey label1="Time(s)" label2=" " title="Final Stack"\
  >/dev/null out=b.v clip=.367313 title="Vel1" crowd=.85
	vp_OverUnderIso a.v b.v >$@

${RESDIR}/christine-vel0.v:	tau.vel0.wind.H
	Real < tau.vel0.wind.H |Grey out=$@ >/dev/null title=" " label1="Time(s)" label2="Cmpx(m)"\
   wantscalebar=y allpos=y bias=1480

GH = Graph min2=1250 max2=1750 transp=y wantframe=n title=" " wantaxis=n crowd=.9 transp=n yreverse=y
GY = Grey min1=1250 max1=1750 title=" " label1="Time(s)" label2="Cmp(x)" crowd=.9 wantaxis=n wantframe=n  allpos=y



${RESDIR}/sem-%.v:	sem_ref.%.H  sem_picks.%.H
	Window < sem_picks.$*.H n2=1 f2=0 |${GH} >a1.V  min1=175 max1=49650 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=1 |${GH} >a2.V min1=16350 max1=40975 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=2 |${GH} >a3.V min1=30575 max1=49600 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=3 |${GH} >a4.V min1=5100  max1=49050 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=4 |${GH} >a5.V min1=950 max1=49550 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=5 |${GH} >a6.V min1=16475 max1=49500 plotfat=15 plotcol=7
	Window < sem_picks.$*.H n2=1 f2=0 |${GH} >d1.V  min1=175 max1=49650 
	Window < sem_picks.$*.H n2=1 f2=1 |${GH} >d2.V min1=16350 max1=40975 
	Window < sem_picks.$*.H n2=1 f2=2 |${GH} >d3.V min1=30575 max1=496000
	Window < sem_picks.$*.H n2=1 f2=3 |${GH} >d4.V min1=5100  max1=490500
	Window < sem_picks.$*.H n2=1 f2=4 |${GH} >d5.V min1=950 max1=495500
	Window < sem_picks.$*.H n2=1 f2=5 |${GH} >d6.V min1=16475 max1=49500 
	Window < sem_ref.$*.H n3=1 f3=0 |${GY} >b1.V o2=175 d2=165.468 
	Window < sem_ref.$*.H n3=1 f3=1 |${GY} >b2.V o2=16350 d2=82.3578
	Window < sem_ref.$*.H n3=1 f3=2 |${GY} >b3.V o2=30575 d2=63.6288
	Window < sem_ref.$*.H n3=1 f3=3 |${GY} >b4.V o2=5100  d2=146.99
	Window < sem_ref.$*.H n3=1 f3=4 |${GY} >b5.V o2=950 d2=162.5251
	Window < sem_ref.$*.H n3=1 f3=5 |${GY} >b6.V o2=16475 d2=110.451
	Vppen < b2.V a2.V d2.V >c2.V vpstyle=n erase=o
	Vppen < b3.V a3.V d3.V>c3.V vpstyle=n erase=o
	Vppen < b4.V a4.V d4.V >c4.V vpstyle=n erase=o
	Vppen < b5.V a5.V d5.V >c5.V vpstyle=n erase=o
	Vppen < b6.V a6.V d6.V >c6.V vpstyle=n erase=o
	Vppen < c2.V c3.V c4.V c5.V c6.V size=r gridnum=1,5 >/dev/null out=$@ xscale=4
	

	

rays.%.H:  shoot.P %.H ${BINDIR}/shoot.x
	${BINDIR}/shoot.x  par=shoot.P raypar=ray_pz.$*.H\
	 raymod=ray_mz.$*.H >$@ < $*.H j1=4

match.%.H:	rays.%.H reflectors.z.%.H ${BINDIR}/Matchray.x
	Real < reflectors.z.$*.H |Smooth rect1=2 > r.H
	Imag < reflectors.z.$*.H |Smooth rect1=10 > i.H
	Cmplx r.H i.H >ref.H
	$(BINDIR)/Matchray.x  <rays.$*.H >$@ par=Match.P \
  reflector=ref.H raypar=ray_pz.$*.H\
  raymod=ray_mz.$*.H raypar_match=ray_par_match.$*.H \
  pos_match=pos_match.$*.H location=location.$*.H \
  raymod_match=ray_mod_match.$*.H time_match=time_match.$*.H \
  time_ref=time_ref.$*.H


view.%.H:	max2.%.H ${BINDIR}/nice_pict.x
	${BINDIR}/nice_pict.x max=max2.$*.H  < scan.$*.H >$@ \
	outmax1=maxa1.$*.H outsec1=sec1.$*.H outmax2=maxa2.$*.H outsec2=sec2.$*.H \
	outmax3=maxa3.$*.H outsec3=sec3.$*.H outmax4=maxa4.$*.H outsec4=sec4.$*.H \
	outmax5=maxa5.$*.H outsec5=sec5.$*.H   


mig.wind.%.H:	mig.%.H
	Window < mig.$*.H >$@ j3=2

#overlay.%.H:	max2.%.H ${BINDIR}/overlay_it.x mig.wind.vel0.H
#	${BINDIR}/overlay_it.x <mig.wind.$*.H >$@ max_sem=max2.$*.H;

overlay.%.vel1.v:	 sem_picks.vel1.H ${BINDIR}/overlay2.x\
 mig.vel1.H   reflectors.vel1.H
	${BINDIR}/overlay2.x <mig.vel1.H >overlay.$*.vel1.H max_sem=sem_picks.vel1.H\
  reflectors=reflectors.vel1.H location=$* tmute=0 vmute=1000
	Window min2=$* n2=1  < mig.vel1.H |Grey out=a.v title=" " label1="Time(s)"\
  label2="Offset" >/dev/null min1=0 max1=2.46 min2=0 max2=1775 \
  title="CMP $*"  transp=n  label1=" " label2=" " title=" " yreverse=n \
	wantaxis=n crowd=.92 plotfat=12
	Graph < overlay.$*.vel1.H out=b.v min2=0 max2=2.46 min1=0 max1=1775 \
   yreverse=n >/dev/null color=0 plotfat=12 title=" " wantaxis=n wantframe=n\
  transp=y crowd=.92
	vp_Overlay a.v b.v >$@

overlay.%.vel0.v:	 sem_picks.vel0.H ${BINDIR}/overlay2.x  test.mig.H \
  reflectors.vel0.H
	${BINDIR}/overlay2.x <test.mig.H >overlay.$*.vel0.H max_sem=sem_picks.vel0.H\
  reflectors=reflectors.vel0.H location=$* tmute=0 vmute=1000
	Window min2=$* n2=1  < test.mig.H |Grey out=a.v title=" " label1="Time(s)"\
  label2="Offset" >/dev/null min1=0 max1=2.46 min2=0 max2=1775 \
  title="CMP $*"  transp=n  label1=" " label2=" " title=" " yreverse=n \
	wantaxis=n crowd=.92 plotfat=12
	Graph < overlay.$*.vel0.H out=b.v min2=0 max2=2.46 min1=0 max1=1775 \
   yreverse=n >/dev/null color=0 plotfat=9 title=" " wantaxis=n wantframe=n\
  transp=y crowd=.92 plotfat=12
	vp_Overlay a.v b.v >$@

${RESDIR}/overlay.%.v:	overlay.24000.%.v overlay.26000.%.v overlay.28000.%.v overlay.30000.%.v overlay.32000.%.v overlay.34000.%.v overlay.36000.%.v overlay.38000.%.v overlay.40000.%.v overlay.42000.%.v overlay.44000.%.v overlay.46000.%.v overlay.48000.%.v 
	vppen  overlay.48000.$*.v overlay.46000.$*.v overlay.44000.$*.v overlay.42000.$*.v overlay.40000.$*.v overlay.38000.$*.v overlay.36000.$*.v overlay.34000.$*.v overlay.32000.$*.v overlay.30000.$*.v overlay.28000.$*.v overlay.26000.$*.v overlay.24000.$*.v >$@ size=r gridnum=1,13 xscale=8

CO_MM= min1=0 max1=2.45 min2=0 max2=1800 min1=1 max1=1.5
CO_GY= Grey >/dev/null ${CO_MM}  
CO_GP=Graph >/dev/null ${CO_MM} wantframe=n title=" " yreverse=y transp=y

compare.%.vel0.v:	overlay.vel0.H mig.wind.vel0.H
	Window < mig.wind.vel0.H f3=$* n3=1 |  ${CO_GY} title="CMP $*" out=c1.v
	Window < overlay.vel0.H f3=$* n3=1 | ${CO_GP} out=c2.v
	vp_Overlay c1.v c2.v >$@

cmps.v: compare.25.vel0.v compare.75.vel0.v compare.125.vel0.v \
compare.175.vel0.v compare.225.vel0.v compare.275.vel0.v compare.325.vel0.v\
compare.375.vel0.v compare.425.vel0.v compare.475.vel0.v compare.525.vel0.v\
compare.575.vel0.v compare.625.vel0.v compare.675.vel0.v compare.725.vel0.v \
compare.775.vel0.v compare.825.vel0.v compare.875.vel0.v compare.925.vel0.v\
compare.975.vel0.v
	vp_Movie compare.25.vel0.v compare.75.vel0.v compare.125.vel0.v compare.175.vel0.v compare.225.vel0.v compare.275.vel0.v compare.325.vel0.v compare.375.vel0.v compare.425.vel0.v compare.475.vel0.v compare.525.vel0.v compare.575.vel0.v compare.625.vel0.v compare.675.vel0.v compare.725.vel0.v compare.775.vel0.v compare.825.vel0.v compare.875.vel0.v compare.925.vel0.v compare.975.vel0.v >$@
	

MINMAX= min2=.95 max2=1.05
GR = Graph  >/dev/null yreverse=y title=" " wantframe=n ${MINMAX}
CO= Contour >/dev/null ${MINMX} grid=y  d1num=.02 d2num=2. title=" " nc=9
movie.%.v:	view.%.H layer1.H layer2.H layer3.H layer4.H layer5.H
	${CO} out=c1.v < sec1.$*.H
	${CO} out=c2.v < sec2.$*.H
	${CO} out=c3.v < sec3.$*.H
	${CO} out=c4.v < sec4.$*.H
	${CO} out=c5.v < sec5.$*.H
	${GR} out=m1.v < maxa1.$*.H
	${GR} out=m2.v < maxa2.$*.H
	${GR} out=m3.v < maxa3.$*.H
	${GR} out=m4.v < maxa4.$*.H
	${GR} out=m5.v < maxa5.$*.H
	${GR} out=p1.v < layer1.H symbol="*" symbolsz=18
	${GR} out=p2.v < layer2.H  symbol="*" symbolsz=18
	${GR} out=p3.v < layer3.H symbol="*" symbolsz=18
	${GR} out=p4.v < layer4.H symbol="*" symbolsz=18
	${GR} out=p5.v < layer5.H symbol="*" symbolsz=18
	vp_Overlay c1.v m1.v p1.v >a1.v
	vp_Overlay c2.v m2.v  p2.v>a2.v
	vp_Overlay c3.v m3.v p3.v >a3.v
	vp_Overlay c4.v m4.v  p4.v>a4.v
	vp_Overlay c5.v m5.v p5.v >a5.v
	vp_Movie a1.v a2.v a3.v a4.v a5.v >$@
	
	


%.tau.H:	%.H ${BINDIR}/vel_convert.x
	${BINDIR}/vel_convert.x < $*.H >$@ d1_out=.005 n1_out=500


reflectors.z.%.H:	reflectors.%.H %.tau.H ${BINDIR}/vel_convert.x
	${BINDIR}/vel_convert.x < $*.tau.H  >/dev/null d1_out=.005 n1_out=500 \
	ray_traj=reflectors.$*.H ray_traj_out=reflectors.z.$*.H
   	

diff_out.%.H: match.%.H max2.%.H ${BINDIR}/create_times.x diff.%.P
	${BINDIR}/create_times.x  location=location.$*.H  par=diff.$*.P\
	ray_traj=match.$*.H ray_traj_out=ray_traj.$*.H  time_match=time_match.$*.H\
	ray_mod=ray_mod_match.$*.H ray_mod_out=ray_mod.$*.H \
	ray_par=ray_par_match.$*.H ray_par_out=ray_par.$*.H \
	max_sem=max2.$*.H time_mod_out=time_model.$*.H time_cor_out=time_cor.$*.H >$@\
	time_ref=time_ref.$*.H  time_ref_out=ref_time.$*.H weight_out=weight.$*.H\
	reflector=ref.$*.H

diff_out2.%.H: match.%.H sem_picks.%.H ${BINDIR}/create_new_times.x diff.%.P
	${BINDIR}/create_new_times.x  location=location.$*.H  par=diff.$*.P\
	ray_traj=match.$*.H ray_traj_out=ray_traj.$*.H  time_match=time_match.$*.H\
	ray_mod=ray_mod_match.$*.H ray_mod_out=ray_mod.$*.H \
	ray_par=ray_par_match.$*.H ray_par_out=ray_par.$*.H \
	max_sem=sem_picks.$*.H time_mod_out=time_model.$*.H time_cor_out=time_cor.$*.H >$@\
	time_ref=time_ref.$*.H  time_ref_out=ref_time.$*.H weight_out=weight.$*.H\
	reflector=ref.$*.H ref_in=reflectors.$*.H
	
	

scan.%.H:	${BINDIR}/Slow_scan.x  scan.P reflectors.%.H mig.%.H
#	Window < mig.$*.H > a.H j3=2
#	Real < reflectors.$*.H > r.H
#	Imag < reflectors.$*.H | Add  add=-.020 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.-4.H
#	Imag < reflectors.$*.H | Add  add=-.015 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.-3.H
#	Imag < reflectors.$*.H | Add  add=-.010 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.-2.H
#	Imag < reflectors.$*.H | Add  add=-.005 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.-1.H
#	Imag < reflectors.$*.H | Add  add=.000 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.0.H
#	Imag < reflectors.$*.H | Add  add=.005 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.1.H
#	Imag < reflectors.$*.H | Add  add=.010 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.2.H
#	Imag < reflectors.$*.H | Add  add=.015 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.3.H
#	Imag < reflectors.$*.H | Add  add=.020 >i.H; Cmplx r.H i.H >ref.H
#	${BINDIR}/Slow_scan.x ref=ref.H < a.H  par=scan.P>b.H
#	< b.H Envelope >a.4.H
	Add scale=1,1,1,1,1,1,1,1,1 a.-4.H a.-3.H a.-2.H a.-1.H a.0.H a.1.H a.2.H a.3.H a.4.H >$@	

max.%.H:	${BINDIR}/find_max.x  max.P  scan.%.H
	<scan.$*.H Window min1=.96 max1=1.04 | ${BINDIR}/find_max.x  par=max.P  > $@

max2.%.H:	${BINDIR}/find_max.x  max2.P  scan.%.H layer1.H layer2.H layer3.H layer4.H layer5.H
	<scan.$*.H Window min1=.96 max1=1.04>b.H
	<b.H  ${BINDIR}/find_max.x  par=max2.P  > $@ layer1=layer1.H \
  layer2=layer2.H layer3=layer3.H layer4=layer4.H layer5=layer5.H

layer%.H:	layer%.HH
	Dd esize=8 < layer$*.HH >$@

reflectors.old.vel0.H:	basement.H bottom.H floor.H over.H top.H
#	Cat axis=2 basement.H bottom.H floor.H over.H top.H >$@
	Cat axis=2 floor.H over.H top.H bottom.H basement.H >$@

%.H:	%.zero
	${BINDIR}/to_seplib.x < $*.zero junk.HH 2
 	Dd esize=4 < junk.HH | ${BINDIR}/reflector_create.x >$@ n1=300
	

%.H:	%.txt
	${BINDIR}/to_seplib.x < $*.txt junk.HH 2
	Dd esize=4 < junk.HH | ${BINDIR}/reflector_create.x   n1=300 >a.H
	Real <a.H >r.H ; Imag < a.H |Smooth rect1=5>i.H;Cmplx r.H i.H >$@

sem.%.vel0.H:	sem.%.vel0.pk sem_ref.vel0.H ${BINDIR}/create_sem.x\
  ${BINDIR}/to_seplib.x
	Window < reflectors.vel0.H f2=$* n2=1 >ref.H
	${BINDIR}/to_seplib.x < sem.$*.vel0.pk junk.HH 2
	Dd esize=4 < junk.HH  |${BINDIR}/create_sem.x n1=300 >a.H\
	sem=sem_ref.vel0.H reflector=ref.H 
	Real <a.H >r.H ; Imag < a.H |Smooth rect1=5>i.H;Cmplx r.H i.H >$@

sem.%.vel1.H:	sem.%.vel1.pk sem_ref.vel1.H ${BINDIR}/create_sem.x \
  ${BINDIR}/to_seplib.x
	Window < reflectors.vel1.H f2=$* n2=1 >ref.H
	${BINDIR}/to_seplib.x < sem.$*.vel1.pk junk.HH 2
	Dd esize=4 < junk.HH  |${BINDIR}/create_sem.x n1=300 >a.H\
	sem=sem_ref.vel1.H reflector=ref.H 
	Real <a.H >r.H ; Imag < a.H |Smooth rect1=5>i.H;Cmplx r.H i.H >$@

reflectors.vel0.H:	sea.vel.H over.vel0.H top.vel0.H bottom.vel0.H \
  basement1.vel0.H basement2.vel0.H
	Cat sea.vel.H over.vel0.H top.vel0.H bottom.vel0.H  basement1.vel0.H basement2.vel0.H>$@ axis=2

#reflectors.vel1.H:	sea.vel1.H over.vel1.H top.vel1.H bottom.vel1.H \
#  basement1.vel1.H basement2.vel1.H
#	Cat sea.vel1.H over.vel1.H top.vel1.H bottom.vel1.H  basement1.vel1.H basement2.vel1.H>$@ axis=2
#

reflectors.vel1.H:	reflectors.vel0.H
	cp reflectors.vel0.H $@

reflectors.vel2.H:	reflectors.vel0.H
	cp reflectors.vel0.H $@

sem_picks.vel1.H:	sem.0.vel1.H sem.1.vel1.H sem.2.vel1.H sem.3.vel1.H sem.4.vel1.H sem.5.vel1.H
	Cat sem.0.vel1.H sem.1.vel1.H sem.2.vel1.H sem.3.vel1.H sem.4.vel1.H sem.5.vel1.H axis=2 >$@

sem_picks.vel0.H:	sem.0.vel0.H sem.1.vel0.H sem.2.vel0.H sem.3.vel0.H sem.4.vel0.H sem.5.vel0.H
	Cat sem.0.vel0.H sem.1.vel0.H sem.2.vel0.H sem.3.vel0.H sem.4.vel0.H sem.5.vel0.H axis=2 >$@

mig.vel0.H:	  test.mig.H
	Transp plane=23  blk=10000 < test.mig.H >$@
	echo o2=0 d2=50 >>mig.vel0.H

sem.%.H: mig.%.H sem.%.P
	< mig.$*.H NMO inv=1 par=sem.$*.P |\
  Velan par=sem.$*.P >$@

sem.vel1.H: mig.vel1.H sem.vel1.P
	< mig.vel1.H Transp plane=23 | NMO inv=1 par=sem.vel1.P |\
  Velan par=sem.vel1.P >$@

sem.vel2.H: mig.vel2.H sem.vel2.P
	< mig.vel2.H Transp plane=23 | NMO inv=1 par=sem.vel2.P |\
  Velan par=sem.vel2.P >$@

sem_ref.%.H:	sem.%.H reflectors.%.H  ${BINDIR}/make_sem_pan.x
	${BINDIR}/make_sem_pan.x < sem.$*.H ref=reflectors.$*.H >$@ d3=25


%.wind.H:	%.H
	Window<$*.H  j1=2 j2=2 | Clip  $*.wind.H clip=1515 to=1488>a.H
	Window < a.H n1=42 >b.H
	Window < a.H f1=42|Smooth rect1=10 rect2=30 >c.H
	Cat axis=1 b.H c.H >$@
	

tau.%.wind.H:	%.wind.H ${BINDIR}/vel_convert.x
	${BINDIR}/vel_convert.x  < $*.wind.H   par=tau_convert.P  >$@

tau_angles.vel0.H: vel0.wind.H tau_convert.P ${BINDIR}/vel_convert.x \
 ${BINDIR}/Find_slopes.x
	${BINDIR}/vel_convert.x  < vel0.wind.H   par=tau_convert.P |Real >a.H
	${BINDIR}/Find_slopes.x < a.H ang=1 |Clip chop=greater clip=50 to=0 | \
   Clip chop=less clip=-50 to=0 |Smooth rect1=5 rect2=5 >$@
#	${BINDIR}/find_slopes.x < tau_reflectors.$*.H par=tau_slope.P |Smooth rect1=5 rect2=3>	$@	

tau_angles.vel1.H:	tau_angles.vel0.H
	cp tau_angles.vel0.H $@

#tau.vel0:	vel0.wind.H tau_angles.vel0.H rays_up.vel0.H diff_out.vel0.H tau_convert.P
tau.%:	%.wind.H tau_angles.%.H rays_up.%.H diff_out2.%.H tau_convert.P \
  ${BINDIR}/vel_convert.x
	${BINDIR}/vel_convert.x  < $*.wind.H > tau.H  par=tau_convert.P\
		ray_traj=ray_traj.$*.H ray_traj_out=tau.ray_traj.$*.H \
		ray_mod=ray_mod.$*.H ray_mod_out=tau.ray_mod.$*.H 
	${BINDIR}/vel_convert.x  < $*.wind.H > tau.H  par=tau_convert.P\
		ray_traj=rays_up.$*.H ray_traj_out=tau.rays_up.$*.H \
		ray_mod=ray_mod_up.$*.H ray_mod_out=tau.ray_mod_up.$*.H 
	
rays_up%.${VELOCITY}.H:	ray_up.P reflectors.z.${VELOCITY}.H ${VELOCITY}.H
	Window < reflectors.z.${VELOCITY}.H f2=$* n2=1  |\
	${BINDIR}/up_shoot.x > s.H par=ray_up.P
	Imag < s.H |Smooth rect1=10 >i.H; Real < s.H >r.H; Cmplx r.H i.H >sources.H
	${BINDIR}/shoot.x par=ray_up.P < ${VELOCITY}.H  sources=sources.H \
   raymod=ray_mod_up$*.${VELOCITY}.H   >$@ 

rays_up.%.H:	ray_up.P reflectors.%.H  %.H
	${MAKE} $(addsuffix .$*.H, $(addprefix rays_up, ${LAYERS})) VELOCITY=$*
	Cat axis=2  $(addsuffix .$*.H, $(addprefix rays_up, ${LAYERS})) |Transp plane=23 >$@
	Cat axis=2  $(addsuffix .$*.H, $(addprefix ray_mod_up, ${LAYERS})) |Transp plane=23 >ray_mod_up.$*.H
	echo o2=1000 d2=100 >>$@

#tau.% tau.%.wind.H

vel1.H: tomo.vel0.H ${BINDIR}/vel_convert.x
	Smooth rect1=4 rect2=4 < tomo.vel.vel0.H >b.H; Cmplx b.H tomo.vel.vel0.H |\
	${BINDIR}/vel_convert.x  d1_out=.025 n1_out=125|\
  Transp | Interp dtout=.05| \
  Transp | Smooth rect1=4 rect2=4  |Scale dscale=1000 >$@
	echo d1=25 d2=50 >>$@

vel2.H: tomo.vel1.H  ${BINDIR}/vel_convert.x
	Smooth rect1=4 rect2=4 < tomo.vel.vel1.H >b.H; Cmplx b.H tomo.vel.vel1.H |\
	${BINDIR}/vel_convert.x  d1_out=.025 n1_out=125|\
  Transp | Interp dtout=.05| \
  Transp | Smooth rect1=2 rect2=2  |Scale dscale=1000 >a.H
	echo d1=25 d2=50 >>a.H
	Cp out=stdout a.H vel2.H


#	Real < ray_traj.$*.H  |Scale dscale=.001 >r.H
#	Imag < ray_traj.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >traj.H
#	Real < ray_mod.$*.H  |Scale dscale=.001 >r.H
#	Imag < ray_mod.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >mod.H
#	< $*.wind.H  Scale dscale=.001 >v0.H
#	Real < rays_up.$*.H  |Scale dscale=.001 >r.H
#	Imag < rays_up.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >rup.H
#	Real < ray_mod_up.$*.H  |Scale dscale=.001 >r.H
#	Imag < ray_mod_up.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >mup.H
tomo.%.H  : Tomo.%.P   ${BINDIR}/Tomo.x
	Real < tau.ray_traj.$*.H  |Scale dscale=.001 >r.H
	Imag < tau.ray_traj.$*.H  >i.H; Cmplx r.H i.H >traj.H
	Real < tau.ray_mod.$*.H  |Scale dscale=.001 >r.H
	Imag < tau.ray_mod.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >mod.H
	Real < tau.$*.wind.H  |Scale dscale=.001 >r.H
	Imag < tau.$*.wind.H   >i.H; Cmplx r.H i.H >v0.H
	Real < tau.rays_up.$*.H  |Scale dscale=.001 >r.H
	Imag < tau.rays_up.$*.H   >i.H; Cmplx r.H i.H >rup.H
	Real < tau.ray_mod_up.$*.H  |Scale dscale=.001 >r.H
	Imag < tau.ray_mod_up.$*.H  |Scale dscale=.001 >i.H; Cmplx r.H i.H >mup.H
	echo d2=.1   >>v0.H
	echo d2=.1  o2=1. >>rup.H
	$(BINDIR)/Tomo.x par=Tomo.$*.P   >$@  Vel0=v0.H \
	R_traj=traj.H R_rpar=ray_par.$*.H zero_off=rup.H\
	R_mod=mod.H  R_time_ref=ref_time.$*.H \
  zero_off_mod=mup.H\
	R_time_tot=time_model.$*.H R_time_0=time_model.$*.H\
	R_time=time_cor.$*.H  Vel_tomo=tomo.vel.$*.H   \
	weight=weight.$*.H angles=tau_angles.$*.H ref=ref.$*.H

#tomo.%.H  : Tomo.%.P   tau.vel0.wind.H
#	$(BINDIR)/Tomo.x par=Tomo.$*.P   >$@  Vel0=tau.$*.wind.H \
#	R_traj=tau.ray_traj.$*.H R_rpar=ray_par.$*.H zero_off=tau.rays_up.$*.H\
#	R_mod=tau.ray_mod.$*.H  R_time_ref=ref_time.$*.H \
#  zero_off_mod=tau.ray_mod_up.$*.H\
#	R_time_tot=time_model.$*.H R_time_0=time_model.$*.H\
#	R_time=time_cor.$*.H  Vel_tomo=tomo.vel.$*.H   \
#	weight=weight.$*.H angles=tau_angles.$*.H


prep.%:	%.wind.H angles.%.H rays_up.%.H parse_rays.%.H


####################################################
####################################################
#####################DATA###########################
####################################################
####################################################


input2.H:	cmps-input.H create.P grid2.P
	Create3d  < cmps-input.H >junka.H par=create2.P
	Headermath < junka.H >junkb.H par=create2.P
	Sort3d < junkb.H >$@ par=grid2.P

input.H:	cmps-datum.H create.P grid.P
#	Transp plane=23 < cmps-datum.H>a.H core=100000
#	<a.H Transp plane=12 >b.H core=100000
#	<b.H Transp plane=23 >a.H core=100000
#	Pad < a.H  n1out=257 >c.H core=100000
#	Window < c.H f1=1 n1=255 |Reverse which=1 |Conj >d.H
#	Cat c.H d.H  axis=1  >b.H
#	Cfft < b.H |Real  >before.H
#	echo d1=.0048828125 >>before.H 
	<before.H Mute tmute=.0 vmute=1.7 | \
	Create3d  >junk.H par=create.P
	Headermath < junk.H >junk2.H par=create.P
	Sort3d < junk2.H >$@ par=grid.P 

vel_new.H:	${BINDIR}/fix_vel.x  vel0.HH
	Interp dtout=4 < vel0.HH  |Scale dscale=.001 >$@
	echo o1=0. d1=.004 o2=0. d2=.05 >>$@
#	Window < cmps-input.H n2=1 >a.H j3=2
#	${BINDIR}/fix_vel.x < vel0.HH > $@ data=a.H

scan.H:	cmps-input.H velan.P	
	Velan < cmps-input.H >$@ par=velan.P

input.local.H: input.H
	Cp3d input.H input.local.H


####################################################
####################################################
##################MIGRATION##i######################
####################################################
####################################################

mig.H:	input.local.H  travel.vel0.H mig.para.P mig.P ${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para.P in=input.local.H out=$@ travel=travel.vel0.H

small.H:	input.H
	< input.H  /marie/bin/SGI64/Halfdif_it.x   >$@


small2.H:	input.H travel2.vel0.H 
	Window3d < input.H par=wind.P >c.H synch_data n3=1
	<c.H Halfint conj=1 inv=1   >$@ 

small3.H:	input2.H  
	Window3d < input2.H par=wind.P >c.H synch_data n3=1
	< c.H Bandpass fhi=50 >$@ 
	
small4.H:	input2.H  
	< input2.H Bandpass fhi=50 | /marie/bin/SGI64/Halfdif_it.x >$@ 
	
test2.mig.H:	small2.H input.H travel2.vel0.H mig.P ${BINDIR}/Mig_scale_2d.x
	/bob/bin/SGI64/Mig_scale_2d.x <small2.H travel=travel2.vel0.H par=mig.P o_off=50 d_off=150 >$@ velocity=vel0.H

test4.mig.H:	small3.H travel3.vel0.H mig3.P ${BINDIR}/Mig_scale_2d.x
	/bob/bin/SGI64/Mig_scale_2d.x <small3.H travel=travel3.vel0.H par=mig3.P o_off=400 d_off=150 >$@ velocity=vel.H

test3.mig.H:	small.H input.H travel2.vel0.H mig.P ${BINDIR}/Mig_scale_2d.x \
 ${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para2.P in=small.H out=$@ travel=travel2.vel0.H velocity=vel0.H

test5.mig.H:	small4.H input.H travel3.vel0.H mig2.P ${BINDIR}/Mig_scale_2d.x\
  mig.para3.P ${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para3.P in=small4.H out=$@ travel=travel3.vel0.H velocity=vel0.H

test.mig.H:	small.H input.H travel2.vel0.H mig.P ${BINDIR}/Mig_scale_2d.x \
	${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para.P in=small.H out=$@ travel=travel2.vel0.H velocity=vel0.H

mig.vel1.H:	  travel2.vel1.H mig.P ${BINDIR}/Mig_scale_2d.x ${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para.P in=small.H out=$@ travel=travel2.vel1.H velocity=vel1.H
	echo d3=50 o3=0 >>$@

mig.vel2.H:	  travel2.vel2.H mig.P ${BINDIR}/Mig_scale_2d.x ${BINDIR}/Paralize.x
	${BINDIR}/Paralize.x mig.para.P in=small.H out=$@ travel=travel2.vel2.H velocity=vel2.H
	echo d3=50 o3=0 >>$@


travel3.vel0.H:	vel0.HH travel2.P ${BINDIR}/Extend_it.x
	Scale < vel0.HH dscale=1000 |\
  Vconvert invelopt=1 outvelopt=2 intype=1 outtype=1  inpar=1 outpar=2 \
	o1out=0. d1out=.025 n1out=250 >s.H
	echo  d1=25 o2=0 d2=50 >>s.H
	${BINDIR}/Extend_it.x < s.H >slow.H par=extend.P
	Vconvert invelopt=2 outvelopt=1 intype=1 outtype=1  inpar=2 outpar=2 \
	o1out=0. d1out=25. n1out=250 >vel.H <slow.H
#	MTTmaps < slow.H   par=travel2.P |Window n3=1 >tt.H
#	${BINDIR}/travel_times_mid.x < tt.H >g.H par=tt_mid.P
	${BINDIR}/vel_convert.x <vel.H >/dev/null travel=g.H travel_out=jj.H \
		d1_out=.02 n1_out=330 
	Window min1=4.0 < jj.H >$@
	



####################################################
####################################################
##################TRAVELTIME#i######################
####################################################
####################################################

eikonal_raw.%.H:	%.H eikonal.P
	${BINDIR}/Extend_it.x < $*.H a.H beg2=100 end2=100 >a.H
	<a.H ${BINDIR}/Extend_it.x  >vel.H  par=eikonal.P 
	${BINDIR}/travel_aperture.x  par=eikonal.P <vel.H >$@
	
travel.vel0.H:	eikonal_raw.vel0.H  tt.grid.P
	Sort3d par=tt.grid.P < eikonal_raw.vel0.H >b.H
	Window3d < b.H >$@ infill_data=yes
#	${BINDIR}/make_travel_table.x < eikonal_raw.vel0.H >$@ data=input.H

travel2.%.H:	tt.para.P  %.H ${BINDIR}/Paralize.x ${BINDIR}/window_sucks.x \
	${BINDIR}/travel_times_mid.x ${BINDIR}/Extend_it.x ${BINDIR}/vel_convert.x
	${BINDIR}/Extend_it.x < $*.H   >v.H beg2=205 end2=415
	Window <$*.H f2=5 n2=1039  |\
	${BINDIR}/Extend_it.x   >v.H beg2=204 end2=413
	<v.H Interp dtout=5|Transp |Interp dtout=5 |Transp > vel.H
	${BINDIR}/Paralize.x tt.para.P in=vel.H out=alltt.H 
	echo  o2=-4000 o3=-4000 d3=100 gff="-1" hff="-1"  >>alltt.H
	${BINDIR}/window_sucks.x <alltt.H j1=5 j2=10 >a.H
	<a.H    ${BINDIR}/travel_times_mid.x par=tt_mid.P >g.H
	Window < vel.H j1=5 j2=10 >hold.H
	${BINDIR}/vel_convert.x < hold.H >/dev/null travel=g.H travel_out=$@ \
    n1_out=125 d1_out=.02




####################################################
####################################################
##################VELOCITY FILES####################
####################################################
####################################################


#This makes the initial velocity model. It takes the first trace
#from the correct model (something close to a v(z)) and replicates it
vel0.H:  vel_new.H ${BINDIR}/Extend_it.x
#	Spike > a.H o1=0 d1=.004 n1=1000 n2=1050 d2=.05 o2=0. mag=1.488
#	Cat axis=1 a.H vel0.HH >b.H
	Window< vel_new.H  |${BINDIR}/Extend_it.x  end1=500 >a.H 
	Vconvert invelopt=1 outvelopt=1 intype=1 outtype=1  inpar=1 outpar=2<a.H \
	o1out=2.973540 d1out=.025 n1out=125 |Scale dscale=1000. >$@
#	o1out=0.0 d1out=.025 n1out=250 |Scale dscale=1000. >$@
	echo o1=0. d1=25 o2=0 d2=50 >>$@


compile:	${BINDIR}/expand_it.x  ${BINDIR}/travel_aperture.x \
   ${BINDIR}/Extend_it.x ${BINDIR}/Mig_scale_2d.x ${BINDIR}/make_travel_table.x\
		${BINDIR}/vel_convert.x ${BINDIR}/travel_times_mid.x \
    ${BINDIR}/reflector_create.x ${BINDIR}/to_seplib.x \
    ${BINDIR}/make_sem_pan.x







########################################################################
##################       OLD       #####################################
########################################################################
########################################################################



LAYERS = 0 1 2 3 4 5

#################################
######DEPTH REFLECTORS###########
#################################

reflector.0.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=2.7 |Window f1=15 n2=1 j1=2 n1=590 >$@

reflector.1.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=3.0 |Window f1=15 n2=1 j1=2 n1=590>$@

reflector.2.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=3.2 |Window f1=15 n2=1 j1=2  n1=590>$@

reflector.3.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=3.4 |Window f1=15 n2=1 j1=2  n1=590>$@

reflector.4.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=3.6 |Window f1=15 n2=1 j1=2  n1=590>$@

reflector.5.H:  dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${BINDIR}/make_layer.x < dome_vel.H  vel=3.99 |Window f1=15 n2=1 j1=2  n1=590>$@
#	${BINDIR}/make_layer.x < dome_vel.H  vel=2.99 |Window f1=60 n2=1 j1=16 n1=590 >$@



reflectors.vel_cor.H:	 dome_vel.H ${BINDIR}/make_layer.x vel_cor.H
	${MAKE} $(addsuffix .H, $(addprefix reflector.,${LAYERS} )) 
	Cat axis=2 $(addsuffix .H, $(addprefix reflector.,${LAYERS}))  >$@
	${RM} $(addsuffix .H, $(addprefix reflector.,${LAYERS} ))  

#This creates the surface.  Basically using Vel to create a linear
#v(z) model.  Get rid of this, it is to confusing.
#Also, note: Surface needs to extend further than Refl-flat (or what
#ever the correct depth surface is) because we shoot from the correct reflector
#to the surface, and then attempt to shoot back to the reflectors time position
#if we do not cross this time position for all locations MatchRay.h will give
#an error
surface.H: surf.P 
	Vel par=surf.P >Sz.h
	Vel par=surf.P >Sx.h vr1=-2 smooth1=21.99 vr2=21.99
	Cmplx Sx.h Sz.h >$@
	${RM} Sx.h Sz.h




####################################################
####################################################
##################TRAVELTIME#i######################
####################################################
####################################################

eikonal_raw.%.H:	%.H eikonal.P
	${BINDIR}/Extend_it.x < $*.H a.H beg2=100 end2=100 >a.H
	<a.H ${BINDIR}/Extend_it.x  >vel.H  par=eikonal.P 
	${BINDIR}/travel_aperture.x  par=eikonal.P <vel.H >$@

####################################################
####################################################
##################VELOCITY FILES####################
####################################################
####################################################


#This makes the initial velocity model. It takes the first trace
#from the correct model (something close to a v(z)) and replicates it



vel3.H: tomo.vel2.H ${BINDIR}/expand_it.x expand.P
	Smooth rect1=2 rect2=2 < tomo.vel.vel2.H >junk1.H
	< junk1.H  ${BINDIR}/expand_it.x par=expand.P > junk2.H
	< junk2.H Smooth rect1=1 rect=1 > $@

vel4.H: tomo.vel3.H ${BINDIR}/expand_it.x expand.P
	Smooth rect1=2 rect2=2 < tomo.vel.vel3.H >junk1.H
	< junk1.H  ${BINDIR}/expand_it.x par=expand.P > junk2.H
	< junk2.H Smooth rect1=1 rect=1 > $@



####################################################
####################################################
#############CORRECT VELOCITY ACTIONS###############
####################################################
####################################################

rays.%.H:	 shoot.P %.H
	${BINDIR}/shoot.x  par=shoot.P raypar=ray_pz.$*.H\
	raymod=ray_mz.$*.H >$@ < $*.H j1=4
    

#Find the rays that cross the correct depth reflector
#Matchz contains the matching rays????
match.%.H: rays.%.H Match.P reflectors.%.H
	$(BINDIR)/Matchray.x  <rays.$*.H >$@ par=Match.P \
	reflector=reflectors.$*.H raypar=ray_pz.$*.H\
	raymod=ray_mz.$*.H raypar_match=ray_par_match.$*.H \
	pos_match=pos_match.$*.H location=location.$*.H \
	raymod_match=ray_mod_match.$*.H time_match=time_match.$*.H  time_ref=time_ref.$*.H


parse_rays.%.H: ${BINDIR}/parse_rays.x parse.%.P match.%.H match.vel_cor.H
	${BINDIR}/parse_rays.x par=parse.$*.P  >$@\
	position=pos_match.$*.H  position_c=pos_match.vel_cor.H \
	location=location.$*.H   location_c=location.vel_cor.H \
	raypar=ray_par_match.$*.H raypar_c=ray_par_match.vel_cor.H \
	raymod=ray_mod_match.$*.H raymod_out=parse.ray_mod.$*.H\
	rtraj=match.$*.H rtraj_out=parse.match.$*.H\
	correct=time_match.vel_cor.H correct_out=parse.time_correct.$*.H \
	model=time_match.$*.H model_out=parse.time_model.$*.H \
	time_ref=time_ref.$*.H time_ref_out=parse.time_ref.$*.H \
	raypar_out=parse.ray_par.$*.H diff=diff.$*.H diff_out=diff_out.$*.H  \
	position_out=parse.mod_position.$*.H position_c_out=parse.cor_position.$*.H



time_up.cor.%.H :  vel_cor.H Zoff.P reflectors.vel_cor.H Tmin.%.P\
   surface.H
	#This shoots rays from the surface in depth
	Window < reflectors.vel_cor.H f2=$* n2=1 >ref.H
	${BINDIR}/shoot.x < vel_cor.H > ray_up$*.H par=Zoff.P \
	raypar=ray_pz_up$*.H raymod=ray_mz_up$*.H sources=ref.H zero_offset=-1
#	$(BINDIR)/Raypath.x  <vel_cor.spline.H > ray_up$*.H par=Zoff.P \
#  Raypar=ray_pz_up$*.H Raymod=ray_mz_up$*.H Source=ref.H
	$(BINDIR)/MatchRay.x  <ray_up$*.H >/dev/null cross_only=1 par=Tmin.$*.P \
	Refl=surface.H Raypar=ray_pz_up$*.H Raymod=ray_mz_up$*.H  \
	Time_cross=$@ Xv_cross=xcross_up$*.H P_cross=pcross_up$*.H \
	Dip_cross=dipcross_up$*.H
#	${RM} ref.H ray_up$*.H


time_up.H:	 vel_cor.spline.H Zoff.P reflectors.vel_cor.H surface.H
	${MAKE} $(addsuffix .H, $(addprefix time_up.cor.,${LAYERS} )) 
	Cat axis=2 $(addsuffix .H, $(addprefix dipcross_up,${LAYERS} )) >a.H
	<a.H  Add scale=-1> dipcross_up.H
	Cat axis=2 $(addsuffix .H, $(addprefix ray_mz_up,${LAYERS})) > \
			ray_mz_up.H
	Cat axis=2 $(addsuffix .H, $(addprefix ray_pz_up,${LAYERS}))  >\
			ray_pz_up.H
	Cat axis=2 $(addsuffix .H, $(addprefix pcross_up,${LAYERS}))  > a.H
	Real <a.H | Smooth.x nwind1=3  >r.H #1
	Imag <a.H | Smooth.x nwind1=7 >i.H  #5
	Cmplx  r.H i.H >pcross_up.H
	Cat axis=2 $(addsuffix .H, $(addprefix xcross_up,${LAYERS}))>a.H
	Real < a.H  | Smooth.x nwind1=11 >r.H
	Imag < a.H > i.H 
	Cmplx r.H i.H >xcross_up.H
	Cat axis=2 $(addsuffix .H, $(addprefix time_up.cor.,${LAYERS}  )) | \
	Smooth.x nwind1=11 >	$@	
	${RM} r.H i.H a.H	
	${RM} $(addsuffix .H, $(addprefix dipcross_up,${LAYERS})) 
	${RM} $(addsuffix .H, $(addprefix ray_mz_up,${LAYERS})) 
	${RM} $(addsuffix .H, $(addprefix ray_pz_up,${LAYERS}))
	${RM} $(addsuffix .H, $(addprefix pcross_up,${LAYERS}))
	${RM} $(addsuffix .H, $(addprefix xcross_up,${LAYERS}))
	${RM} $(addsuffix .H, $(addprefix time_up.cor.,${LAYERS})) 






####################################################
####################################################
############ITTERATION VELOCITY ACTIONS#############
####################################################
####################################################

#CREATE SLOPES (REDO TO BE A FUNCTION OF THE MODEL)
angles.%.H: reflectors.%.H slope.P
	${BINDIR}/find_slopes.x < reflectors.$*.H par=slope.P |Smooth rect1=5 rect2=3>	$@	





#This shoots rays from the surface using the current velocity model
pseudo_surf.${VELOCITY}.%.H:  ${VELOCITY}.spline.H Zoff.P  time_up.H Tmin.%.P
	@echo MAKE $@
	Window f2=$* n2=1 < xcross_up.H >x_up.H
	Window f2=$* n2=1 < pcross_up.H >a.H
	Add scale=-1 a.H >p_up.H
	${BINDIR}/p_to_ang.x < p_up.H >angles.H
	${BINDIR}/shoot.x < ${VELOCITY}.H >ray_path.H par=Zoff.P \
  raypar=ray_par.H raymod=ray_mod.H sources=x_up.H angles=angles.H

#	$(BINDIR)/Raypath.x  <${VELOCITY}.spline.H >ray_path.H par=Zoff.P zero_offset=-1\
#	Raypar=ray_par.H Raymod=ray_mod.H \
#	Source=x_up.H Psrc=p_up.H
	#PSEUDO_SURF
	Window <xcross_up.H    f2=$* n2=1  |Real > x.H
	Window <time_up.H      f2=$* n2=1        > t.H
	Window <dipcross_up.H  f2=$* n2=1        > dip.H
	Cmplx x.H t.H >Rt.H
	< ray_path.H  $(BINDIR)/MatchRay.x >Tz.H cross_only=1 cross_time=1  \
	par=Tmin.$*.P Refl=Rt.H Raypar=ray_par.H \
	Raymod=ray_mod.H Time_cross=time.H Xv_cross=z.H  P_cross=pcross.H \
  Dip_cross=dipcross.H
#	par=Tmin.$*.P Refl=Rt.H Dip_refl=dip.H Raypar=ray_par.H \
#	Window <z.H f1=1 | Real >zr.H
#	Window <z.H f1=1 | Imag | /biondo/bin/${MTYPE}/GSmooth nwind1=25 >zi.H
#	Cmplx zr.H zi.H > $@
	Cp z.H $@
#	${RM} zi.H zr.H x.H  Rt.H  ray_path.H ray_par.H ray_mod.H dip.H t.H 
#	${RM} z.H z.H pcross.H dipcross.H Tz.H p_up.H x_up.H time.H 


#MAKE THE pseudo surfaces
reflectors.%.H:  time_up.H Tmin.P
	${MAKE} $(addsuffix .H, $(addprefix pseudo_surf.$*.,${LAYERS} )) VELOCITY=$*
	Cat axis=2  $(addsuffix .H, $(addprefix pseudo_surf.$*.,${LAYERS})) > $@
	${RM}   $(addsuffix .H, $(addprefix pseudo_surf.$*.,${LAYERS})) 





#CREATE SPLINES FOR RAYTRACING
%.spline.H: %.H
	< $*.H  ${BINDIR}/Splintab2.x >$@

ray.%.H : %.spline.H ray_z.P
	$(BINDIR)/Raypath.x <$*.spline.H >$@ par=ray_z.P Raypar=ray_par.big_$*.H \
	Raymod=ray_mod.big_$*.H

##CREATE A WINDOWED VERSION OF THE MODEL
#%.wind.H: %.H wind.P
#	Window < $*.H > $@ par=wind.P
#
vel0.wind.H: vel0.H	
	Window < vel0.H >vel0.wind.H j1=4 j2=8

vel_cor.wind.H: vel_cor.H	
	Window < vel_cor.H >vel_cor.wind.H j1=4 j2=8


	
tau.%:	%.wind.H tau_angles.%.H rays_up.%.H parse_rays.%.H tau_convert.P
	${BINDIR}/vel_convert.x  < $*.wind.H > tau.$*.wind.H  par=tau_convert.P\
		ray_traj=parse.match.$*.H ray_traj_out=tau.match.$*.H \
		ray_mod=parse.ray_mod.$*.H ray_mod_out=tau.ray_mod.$*.H 
	${BINDIR}/vel_convert.x  < $*.wind.H > tau.$*.wind.H  par=tau_convert.P\
		ray_traj=rays_up.$*.H ray_traj_out=tau.rays_up.$*.H \
		ray_mod=ray_mod_up.$*.H ray_mod_out=tau.ray_mod_up.$*.H 
#	${BINDIR}/vel_convert.x  < vel_cor.wind.H > tau.vel_cor.wind.H  par=tau_convert.P
	
	
#tau.
#tau.match
#tau.ray_mod
#tau.rays_up
#tau.ray_mod_up


tau_tomo2.%.H  : Tau_tomo.%.P  tau_wind_it.%.P
	${BINDIR}/wind_it.x    par=tau_wind_it.$*.P time_ref=parse.time_ref.$*.H \
 time_match=parse.time_model.$*.H ray_traj=tau.match.$*.H \
  ray_mod=tau.ray_mod.$*.H  time_correct=parse.time_correct.$*.H \
	zero_off=tau.rays_up.$*.H  zero_off_mod=tau.ray_mod_up.$*.H \
  ray_par=parse.ray_par.$*.H  time_ref_out=time_ref.H  \
 time_match_out=time_model.H ray_traj_out=match.H \
  ray_mod_out=ray_mod.H  time_correct_out=time_correct.H  >aa \
	zero_off_out=zero_off.H  zero_off_mod_out=zero_off_mod.H \
  ray_par_out=ray_par.H weight=parse_rays.$*.H weight_out=weight.H
	$(BINDIR)/Tau_tomo.x par=Tau_tomo.$*.P   >$@  Vel0=tau.$*.wind.H \
	R_traj=match.H R_rpar=ray_par.H zero_off=zero_off.H\
	R_mod=ray_mod.H  R_time_ref=time_ref.H zero_off_mod=zero_off_mod.H\
	R_time_tot=time_model.H R_time_0=time_model.H\
	R_time=time_correct.H  Vel_tomo=tau_tomo.vel.$*.H   \
	weight=weight.H angles=tau_angles.$*.H


tomo.%.H  : Tomo.%.P  wind_it.%.P
	${BINDIR}/wind_it.x    par=wind_it.$*.P time_ref=parse.time_ref.$*.H \
 time_match=parse.time_model.$*.H ray_traj=parse.match.$*.H \
  ray_mod=parse.ray_mod.$*.H  time_correct=parse.time_correct.$*.H \
	zero_off=rays_up.$*.H  zero_off_mod=ray_mod_up.$*.H \
  ray_par=parse.ray_par.$*.H  time_ref_out=time_ref.H  \
 time_match_out=time_model.H ray_traj_out=match.H \
  ray_mod_out=ray_mod.H  time_correct_out=time_correct.H  >aa \
	zero_off_out=zero_off.H  zero_off_mod_out=zero_off_mod.H \
  ray_par_out=ray_par.H weight=parse_rays.$*.H weight_out=weight.H
	Extend_it.x beg2=0 end2=0  < $*.wind.H > vel_0.H
	Extend_it.x beg2=0 end2=0  < angles.$*.H > angles.H
	$(BINDIR)/Tomo.x par=Tomo.$*.P   >$@  Vel0=vel_0.H \
	R_traj=match.H R_rpar=ray_par.H zero_off=zero_off.H\
	R_mod=ray_mod.H  R_time_ref=time_ref.H zero_off_mod=zero_off_mod.H\
	R_time_tot=time_model.H R_time_0=time_model.H\
	R_time=time_correct.H  Vel_tomo=tomo.vel.$*.H \
	weight=weight.H angles=angles.H ref=ref.$*.H






#${BINDIR}/MatchRay.x ${BINDIR}/shoot.x \
#  ${BINDIR}/Match_Ray.x ${BINDIR}/Matchray.x ${BINDIR}/Mm.x ${BINDIR}/parse_rays.x ${BINDIR}/Splintab2.x ${BINDIR}/Raypath.x ${BINDIR}/p_to_ang.x ${BINDIR}/Tomo.x ${BINDIR}/wind_it.x ${BINDIR}/find_slopes.x ${BINDIR}/sources_up.x ${BINDIR}/vel_convert.x

${BINDIR}/Raypath.x: Raypath.o bcucof.o findvel.o parax2d.o rksuite.o velocitn.o

GRAPH=Graph >/dev/null min1=2 max1=18 min2=0 max2=5 yreverse=y wantaxis=n title=" "  wantframe=n plotcol=7 plotfat=12 yll=1.25 xur=11.2 yur=8.98 xll=2.1


GREY=Grey >/dev/null min1=0 max1=5 min2=2 max2=18  title=" " allpos=y bias=1.8\
 wantscalebar=y color=v bias=2.  clip=2. label1="Depth(km)" label2="X Position(km" axiscol=0

${RESDIR}/depth-overlay-vel-cor.v:	vel_cor.wind.H reflectors.vel_cor.H
	${GREY} < vel_cor.wind.H out=a.v
	${GRAPH} < reflectors.vel_cor.H out=b.v
	vp_Overlay a.v b.v >$@

${RESDIR}/depth-overlay-%.v:	%.wind.H reflectors.%.H
	${GREY} < $*.wind.H out=a.v
	${GRAPH} < reflectors.$*.H out=b.v
	vp_Overlay a.v b.v >$@

${RESDIR}/depth-angles.v:	angles.vel0.H
	${GREY} <angles.vel0.H color=I bias=0. allpos=n out=$@





##########################
#OTHER RULES/DEFINITIONS##
##########################

.PRECIOUS:  reflectors.%.H match.%.H time_up.%.H \
rays.%.H  %.wind.H %.spline.H   bad_rays.%.H parse_rays.%.H\
ray.%.H match_rays.${VELOCITY}.%.H match_big_rays.%.H helix_tomo.%.H \
rays_up.%.H


clean:	jclean
	${RM} *.o *.mod log* *.sw* core

b_clean: jclean

include ${SEPINC}/SEP.bottom
