
#define FIGLIST marmslow marmrefl marmnear marmshots eikonal-t paraxial-tap \
  marm-tap paraxial-tp marm-tp lomarm-tap geol-tp geol-tap \
 shot-prep migex eikonal-cdp marm-cdp paraxial-cdp geol-slow \
 mig-shot-prof marm-adj  migex2 migex3 all-cdp comp-cdp

#define VPFILES [[ sub X X.v FIGLIST ]]

figures&: VPFILES

#define DATA ../Data

#define MARMDATA ../../Marmdata

#define PRECOMP ../Precomputed


DATA/truemarm.slow : MARMDATA/marmvel.H
	pushd DATA; cake truemarm.slow

DATA/geol.slow : MARMDATA/geol.vel
	pushd DATA; cake geol.slow

DATA/truemarm.fref : ../../Marmdata/marmvel.H ../../Marmdata/marmdens.H
	pushd DATA; cake truemarm.fref

DATA/eikonal-mig3-cdp.H DATA/eikonal-stack3.H :  DATA/eikonal_ttmap
	pushd DATA; cake eikonal-stack3.H eikonal-mig3-cdp.H

DATA/%-stack%1.H : DATA/rectpar_% DATA/locpar_% DATA/ttpar_% if % in geol marm lomarm
	pushd DATA;  cake %-stack%1.H 


DATA/%-mig%1-cdp.H: DATA/rectpar_% DATA/locpar_% DATA/ttpar_% if % in geol marm
	pushd DATA;  cake %-mig%1-cdp.H

	

$================================================

marmslow.v3: DATA/truemarm.slow
	Window <DATA/truemarm.slow j1=4 f2=500 j2=4 n2=437 >tmp.H
	Byte <tmp.H allpos=y | Ta2vplot label1=Depth label2=Distance title="Marmousi Slowness Model"  >/dev/null out=marmslow.v3

geol-slow.v3: DATA/geol.slow
	Window < DATA/geol.slow n2=560 f2=160 >tmp.H
	Byte <tmp.H allpos=y | Ta2vplot label1=Depth label2=Distance title="Simplified Marmousi Slowness Model"  >/dev/null out=geol-slow.v3
	Rm tmp.H

marmrefl.v3: DATA/truemarm.fref
	Window <DATA/truemarm.fref j1=4 f2=500 j2=4 n2=437 >tmp.H
	Byte <tmp.H | Ta2vplot label1=Depth label2=Distance title="Marmousi Filtered Reflectivity"  >/dev/null out=marmrefl.v3
	Rm tmp.H

marmnear.v3 :  MARMDATA/marmnear.H
	Byte <MARMDATA/marmnear.H | Ta2vplot title="Marmousi Near Offset Section" label1=Time label2=Distance >/dev/null out=marmnear.v3
	
marmshots.v :  MARMDATA/rawshots.H
	Byte <MARMDATA/rawshots.H | Ta2vplot title="Shot Gather" label1=Time label2=Offset >/dev/null out=tmp.v
	vppen tmp.v gridnum=3,1 vpstyle=n >tmp2.v
	vppen tmp2.v xscale=.5 yscale=1.2 vpstyle=n rotate=-90 | vppen vpstyle=n align=lb > marmshots.v
	rm tmp.v tmp2.v
	
shot-prep.v3 :  MARMDATA/prep-refl.H MARMDATA/rawshots.H
	Window <MARMDATA/rawshots.H n3=1 >tmp1.H
	Byte <tmp1.H | Ta2vplot title="Before" label1=Time label2=Offset >/dev/null out=tmp.v
	Window <MARMDATA/prep-refl.H n3=1 >tmp1.H
	Byte <tmp1.H | Ta2vplot title="After" label1=Time label2=Offset >/dev/null out=tmp2.v
	vppen tmp.v tmp2.v vpstyle=n >shot-prep.v3
	rm tmp.v tmp2.v 
	Rm tmp1.H

shot-prep.v: shot-prep.v3
	vppen shot-prep.v3  gridnum=2,1 vpstyle=n >tmp3.v
	vppen tmp3.v xscale=.5 yscale=1.2 vpstyle=n rotate=-90 | vppen vpstyle=n align=lb > shot-prep.v
	rm tmp3.v

$=================================================
$ Migration stacks
$=================================================

eikonal-t.v3: DATA/eikonal-stack3.H
	Byte < DATA/eikonal-stack3.H | Ta2vplot label2=Depth label1=Distance title="FD Eikonal, time only"  transp=n >/dev/null out=eikonal-t.v3

marm-tp.v3: DATA/marm-stack4.H
	Byte < DATA/marm-stack4.H | Ta2vplot label2=Depth label1=Distance title="Band-limited, time/phase"  transp=n >/dev/null out=marm-tp.v3

marm-adj.v3: DATA/marm-stack6.H
	Byte < DATA/marm-stack6.H | Ta2vplot label2=Depth label1=Distance title="Band-limited, ajoint modeling"  transp=n >/dev/null out=marm-adj.v3

marm-tap.v3: DATA/marm-stack.H
	Byte < DATA/marm-stack.H | Ta2vplot label2=Depth label1=Distance title="Band-limited, time/amp/phase, 10-60Hz."  transp=n >/dev/null out=marm-tap.v3 titlesz=8

lomarm-tap.v3: DATA/lomarm-stack.H
	Byte < DATA/lomarm-stack.H | Ta2vplot label2=Depth label1=Distance title="Band-limited, time/amp/phase, 10-35Hz."  transp=n >/dev/null out=lomarm-tap.v3 titlesz=8

geol-tap.v3: DATA/geol-stack.H
	Byte < DATA/geol-stack.H | Ta2vplot label2=Depth label1=Distance title="Band-limited time/amp/phase"  transp=n >/dev/null out=geol-tap.v3

geol-tp.v3: DATA/geol-stack4.H
	Byte < DATA/geol-stack4.H | Ta2vplot label2=Depth label1=Distance title="Band-limited time/phase"  transp=n >/dev/null out=geol-tp.v3

paraxial-tap.v3: PRECOMP/paraxial-stack.HH
	Byte < PRECOMP/paraxial-stack.HH | Ta2vplot label2=Depth label1=Distance title="Paraxial rays, time/amp/phase"  transp=n >/dev/null out=paraxial-tap.v3

paraxial-tp.v3: PRECOMP/paraxial-stack4.HH
	Byte < PRECOMP/paraxial-stack4.HH | Ta2vplot label2=Depth label1=Distance title="Paraxial rays, time/phase"  transp=n >/dev/null out=paraxial-tp.v3


%.v : %.v3
	vppen %.v3 scale=.5 vpstyle=n rotate=-90 | vppen vpstyle=n align=lb > %.v

mig-shot-prof.v3: PRECOMP/shot_prof.H
	 Byte <  PRECOMP/shot_prof.H  | Ta2vplot label1=Depth label2=Distance title="Shot profile migration"  >/dev/null out=mig-shot-prof.v3

$====
$ compare 
$====

#define THEBOX  min2=2000 max2=3000 min1=5500 max1=8500

migex.v1: DATA/truemarm.fref DATA/eikonal-stack3.H DATA/marm-stack.H PRECOMP/paraxial-stack.HH
	Window < DATA/truemarm.fref min1=2000 max1=3000 min2=5500 max2=8500 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Reflectivity" >/dev/null out=tmp1.v
	Window < DATA/eikonal-stack3.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="First arrivals" transp=n >/dev/null out=tmp2.v
	Window < PRECOMP/paraxial-stack.HH THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Maximum amplitude" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v tmp2.v tmp3.v tmp4.v gridnum=2,2 vpstyle=n >migex.v1

migex.v3: DATA/truemarm.fref DATA/eikonal-stack3.H DATA/marm-stack.H PRECOMP/paraxial-stack.HH
	Window < DATA/truemarm.fref min1=2000 max1=3000 min2=5500 max2=8500 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Reflectivity" >/dev/null out=tmp1.v
	Window < DATA/eikonal-stack3.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="First arrivals" transp=n >/dev/null out=tmp2.v
	Window < PRECOMP/paraxial-stack.HH THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Maximum amplitude" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v tmp2.v tmp3.v tmp4.v vpstyle=n >migex.v3

$=================================================

#define THEBOX2  min2=1200 max2=3000 min1=4000 max1=8500

migex2.v1: PRECOMP/shot_prof.H DATA/eikonal-stack3.H DATA/marm-stack4.H PRECOMP/paraxial-stack4.HH
	Window < PRECOMP/shot_prof.H  min1=1200 max1=3000 min2=4000 max2=8500  >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Shot profile" >/dev/null out=tmp1.v
	Window < DATA/eikonal-stack3.H THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="First arrivals" transp=n >/dev/null out=tmp2.v
	Window < PRECOMP/paraxial-stack4.HH THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Paraxial" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack4.H THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v tmp2.v tmp3.v tmp4.v gridnum=2,2 vpstyle=n >migex2.v1

migex2.v3: PRECOMP/shot_prof.H DATA/eikonal-stack3.H DATA/marm-stack4.H PRECOMP/paraxial-stack4.HH
	Window < PRECOMP/shot_prof.H  min1=1200 max1=3000 min2=4000 max2=8500  >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Shot profile" >/dev/null out=tmp1.v
	Window < DATA/eikonal-stack3.H THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="First arrivals" transp=n >/dev/null out=tmp2.v
	Window < PRECOMP/paraxial-stack4.HH THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Paraxial" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack4.H THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v tmp2.v tmp3.v tmp4.v vpstyle=n >migex2.v3

migex4.v3: DATA/truemarm.fref PRECOMP/shot_prof.H DATA/marm-stack.H PRECOMP/paraxial-stack.HH
	Window < PRECOMP/shot_prof.H  min1=1200 max1=3000 min2=4000 max2=8500  >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Shot Profile" >/dev/null out=tmp1.v
	Window < DATA/truemarm.fref min1=1200 max1=3000 min2=4000 max2=8500 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Reflectivity"  >/dev/null out=tmp2.v
	Window < PRECOMP/paraxial-stack.HH THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Paraxial" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack.H THEBOX2 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v tmp2.v tmp3.v tmp4.v vpstyle=n >migex4.v3
	
$=================================================
migex3.v: DATA/truemarm.fref  DATA/marm-stack.H PRECOMP/paraxial-stack.HH
	Window < DATA/truemarm.fref min1=2000 max1=3000 min2=5500 max2=8500 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Reflectivity" >/dev/null out=tmp1.v
	Window < PRECOMP/paraxial-stack.HH THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Paraxial" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v  tmp3.v tmp4.v gridnum=1,3 vpstyle=n | vppen vpstyle=n yscale=.6 >migex3.v

migex3.v3: DATA/truemarm.fref  DATA/marm-stack.H PRECOMP/paraxial-stack.HH
	Window < DATA/truemarm.fref min1=2000 max1=3000 min2=5500 max2=8500 >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Distance label1=Depth title="Reflectivity" >/dev/null out=tmp1.v
	Window < PRECOMP/paraxial-stack.HH THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Paraxial" transp=n >/dev/null out=tmp3.v
	Window < DATA/marm-stack.H THEBOX >tmp.H
	Byte <tmp.H | Ta2vplot  label2=Depth label1=Distance title="Band-limited" transp=n >/dev/null out=tmp4.v
	vppen tmp1.v  tmp3.v tmp4.v vpstyle=n  >migex3.v3

$=================================================
	

$=================================================
$ Migration CDP gathers
$=================================================

#define CDPPLOT  transp=n label1=Offset label2=Depth 
#define CDPGRID  gridnum=3,2 vpstyle=n yscale=1.5

eikonal-cdp.v3: DATA/eikonal-mig3-cdp.H
	Transp <DATA/eikonal-mig3-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="FD Eikonal" | Vppen vpstyle=n >/dev/null out=eikonal-cdp.v3

eikonal-cdp.v: DATA/eikonal-mig3-cdp.H
	Transp <DATA/eikonal-mig3-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="FD Eikonal" | Vppen CDPGRID >/dev/null out=eikonal-cdp.v

marm-cdp.v3: DATA/marm-mig4-cdp.H
	Transp <DATA/marm-mig4-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Band-limited" | Vppen vpstyle=n >/dev/null out=marm-cdp.v3

marm-cdp.v: DATA/marm-mig4-cdp.H
	Transp <DATA/marm-mig4-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Band-limited" | Vppen CDPGRID >/dev/null out=marm-cdp.v

paraxial-cdp.v3: PRECOMP/paraxial-mig4-cdp.HH
	Transp <PRECOMP/paraxial-mig4-cdp.HH plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Paraxial" | Vppen vpstyle=n >/dev/null out=paraxial-cdp.v3

paraxial-cdp.v: PRECOMP/paraxial-mig4-cdp.HH
	Transp <PRECOMP/paraxial-mig4-cdp.HH plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Paraxial" | Vppen CDPGRID >/dev/null out=paraxial-cdp.v

geol-cdp.v: DATA/geol-mig4-cdp.H
	Transp <DATA/geol-mig4-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Simplified model" | Vppen CDPGRID >/dev/null out=geol-cdp.v

geol-cdp.v3: DATA/geol-mig4-cdp.H
	Transp <DATA/geol-mig4-cdp.H plane=23 > junkdn
	Byte <junkdn | Ta2vplot CDPPLOT title="Simplified model" | Vppen vpstyle=n >/dev/null out=geol-cdp.v3

all-cdp.v3:  PRECOMP/paraxial-mig4-cdp.HH DATA/marm-mig4-cdp.H DATA/eikonal-mig3-cdp.H 
	Window <DATA/eikonal-mig3-cdp.H n2=1 f2=3 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="FD Eikonal">/dev/null out=tmp1.v
	Window <PRECOMP/paraxial-mig4-cdp.HH n2=1 f2=3 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Paraxial" >/dev/null out=tmp2.v
	Window <DATA/marm-mig4-cdp.H n2=1 f2=3 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Band-limited" >/dev/null out=tmp3.v
	vppen vpstyle=n tmp1.v tmp2.v tmp3.v >all-cdp.v3

all-cdp2.v3: DATA/marm-mig4-cdp.H DATA/geol-mig4-cdp.H
	Window <DATA/marm-mig4-cdp.H n2=1 f2=3 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="True model" >/dev/null out=tmp1.v
	Window <DATA/geol-mig4-cdp.H n2=1 f2=3 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Simplified model" >/dev/null out=tmp2.v
	vppen vpstyle=n tmp1.v tmp2.v >all-cdp2.v3

$all-cdp.v: all-cdp.v3
$	vppen all-cdp.v3 vpstyle=n rotate=-90 xscale=.8 yscale=1.5 | vppen vpstyle=n align=lb | vppen gridnum=1,3 > all-cdp.v

$all-cdp2.v: all-cdp2.v3
$	vppen all-cdp2.v3 vpstyle=n rotate=-90 xscale=.8 yscale=1.5 | vppen vpstyle=n align=lb > all-cdp2.v

all-cdp.v:  PRECOMP/paraxial-mig4-cdp.HH DATA/marm-mig4-cdp.H DATA/eikonal-mig3-cdp.H 
	Window <DATA/eikonal-mig3-cdp.H min3=1300 max3=2800 n2=1 f2=4 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="FD Eikonal">/dev/null out=tmp1.v
	Window <PRECOMP/paraxial-mig4-cdp.HH n2=1 f2=4 min3=1300 max3=2800 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Paraxial" >/dev/null out=tmp2.v
	Window <DATA/marm-mig4-cdp.H n2=1 f2=4 min3=1300 max3=2800 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Band-limited" >/dev/null out=tmp3.v
	vppen vpstyle=n gridnum=3,1 yscale=2 tmp1.v tmp2.v tmp3.v >all-cdp.v


comp-cdp.v3:  DATA/geol-mig4-cdp.H DATA/marm-mig4-cdp.H 
	Window <DATA/geol-mig4-cdp.H n2=1 f2=4 min3=1000 max3=3000 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="Simplified model" >/dev/null out=tmp2.v
	Window <DATA/marm-mig4-cdp.H n2=1 f2=4 min3=1000 max3=3000 >junkdn
	Byte <junkdn  | Ta2vplot CDPPLOT title="True model" >/dev/null out=tmp3.v
	vppen vpstyle=n tmp2.v tmp3.v >comp-cdp.v3

comp-cdp.v:  comp-cdp.v3
	vppen vpstyle=n gridnum=2,1 yscale=2  comp-cdp.v3 >comp-cdp.v


clean&:
	-Rm tmp*.H junkdn
	-rm tmp*.v
