#define MARMDATA ../../Marmdata

#define CMBINDIR ../../Bin/CM
#define BINDIR ../../Bin/MTYPE

#include <SEP.defs>

#ifdef ISsun4


eikonal.time : marm.slow BINDIR/TTmaps eikonal_ttmap CMBINDIR/CMTransp 
	time BINDIR/TTmapsdn < marm.slow par=eikonal_ttmap >tmp1.H
	CMBINDIR/CMTransp <tmp1.H plane=12 >temp.H
	CMBINDIR/CMTransp <temp.H plane=23 >eikonal.time
	Rm temp.H tmp1.H

BINDIR/TTmaps: if not exist BINDIR/TTmaps
	pushd ../../MarmTT/Src; cake TTmaps
	
%.psl:  %.slow locpar_% CMBINDIR/CMTransp
	time CMBINDIR/Polvel2 <%.slow par=locpar_% >%.tmp1.H
        time CMBINDIR/CMTransp <%.tmp1.H >%.psl plane=23
	Rm %.tmp1.H

%.ptt: %.psl ttpar_% CMBINDIR/Mttmaps 
	time CMBINDIR/Mttmaps <%.psl par=ttpar_% >%.ptt cosamp=y
	Rm %.psl

%.time:  %.ptt CMBINDIR/CMWindow CMBINDIR/CMTransp CMBINDIR/Rectmaps2
	time CMBINDIR/CMWindow <%.ptt n3=1 f0=1 >%.tmp1.H
        time CMBINDIR/CMTransp <%.tmp1.H >%.tmp2.H plane=23
	Rm %.tmp1.H
	time CMBINDIR/Rectmaps2 <%.tmp2.H  par=rectpar_% >%.tmp3.H
	Rm %.tmp2.H
        time CMBINDIR/CMTransp <%.tmp3.H >%.time plane=23 
	
%.amp:  %.ptt CMBINDIR/CMWindow CMBINDIR/CMTransp CMBINDIR/Rectmaps2
	time CMBINDIR/CMWindow <%.ptt n3=1 f3=1 >%.tmp1.H
        time CMBINDIR/CMTransp <%.tmp1.H >%.tmp2.H plane=23
	Rm %.tmp1.H
	time CMBINDIR/Rectmaps2 <%.tmp2.H  par=rectpar_% >%.tmp3.H 
	Rm %.tmp2.H
        time CMBINDIR/CMTransp <%.tmp3.H >%.amp plane=23
	Rm %.tmp3.H

%.phase:  %.ptt CMBINDIR/CMWindow CMBINDIR/CMTransp CMBINDIR/Rectmaps2
	time CMBINDIR/CMWindow <%.ptt n3=1 f3=2 >%.tmp1.H
        time CMBINDIR/CMTransp <%.tmp1.H >%.tmp2.H plane=23
	Rm %.tmp1.H
	time CMBINDIR/Rectmaps2 <%.tmp2.H  par=rectpar_% >%.tmp3.H
	Rm %.tmp2.H
        time CMBINDIR/CMTransp <%.tmp3.H >%.phase plane=23
	Rm %.tmp3.H

%.time2 : %.time CMBINDIR/Surf2depth if cando %.time 
	time CMBINDIR/Surf2depth <%.time submin=2000 submax=8975 >%.time2
	Rm %.time

%.amp2 : %.amp CMBINDIR/Surf2depth if cando %.amp
	time CMBINDIR/Surf2depth <%.amp submin=2000 submax=8975 >%.amp2
	Rm %.amp

%.phase2 : %.phase  CMBINDIR/Surf2depth if cando %.phase
	time CMBINDIR/Surf2depth <%.phase submin=2000 submax=8975 >%.phase2
	Rm %.phase


CMBINDIR/% : if not exist CMBINDIR/%
	pushd ../Src; cake %

$ migration inversion 
$=====================
%-mig.H %-stack.H: %.time2 %.amp2 %.phase2 MARMDATA/prep-refl.H CMBINDIR/KMigdn
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 amaps=%.amp2 phmaps=%.phase2 >%-mig.H  stack=%-stack.H mute=9 vmute=1440

$ migration inversion (no phase)
$==============================
%-mig2.H %-stack2.H : %.time2  %.amp2 MARMDATA/prep-refl.H  CMBINDIR/KMigdn  
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 amaps=%.amp2 >%-mig2.H stack=%-stack2.H mute=9 vmute=1440

$ migration, times only (amp=1)
$==============================
%-mig3.H %-stack3.H : %.time2  MARMDATA/prep-refl.H   CMBINDIR/KMigdn 
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 >%-mig3.H stack=%-stack3.H mute=9 vmute=1440

$ migration, times and phase (amp=1)
$===================================
%-mig4.H %-stack4.H : %.time2  %.phase2 MARMDATA/prep-refl.H   CMBINDIR/KMigdn 
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 phmaps=%.phase2 >%-mig4.H stack=%-stack4.H mute=9 vmute=1440


$ migration, apply sqrt(amp) (after agc)
$===================================
%-mig5.H %-stack5.H : %.time2 %.phase2 %.amp2 MARMDATA/prep-refl.H   CMBINDIR/KMigdn 
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 phmaps=%.phase2 >%-mig5.H stack=%-stack5.H mute=9 vmute=1440 ampopt=2

$ migration, true adjoint 
$===================================
%-mig6.H %-stack6.H : %.time2 %.phase2 %.amp2  MARMDATA/prep-refl.H   CMBINDIR/KMigdn 
	time CMBINDIR/KMigdn <MARMDATA/prep-refl.H tmaps=%.time2 phmaps=%.phase2 amaps=%.amp2 >%-mig6.H stack=%-stack6.H mute=9 vmute=1440 ampopt=1

$selected cdps
$========================

%-mig%1-cdp.H: %-mig%1.H
	Window <%-mig%1.H n2=6 j2=50 >%-mig%1-cdp.H

#endif

$========================================
$ subsampled velocity models
$========================================

#define INV_ARGS log=yes scale=-1. exp=yes

truemarm.slow : MARMDATA/marmvel.H
	Add MARMDATA/marmvel.H INV_ARGS >truemarm.slow

truemarm.imp : MARMDATA/marmvel.H MARMDATA/marmdens.H
	Add MARMDATA/marmvel.H MARMDATA/marmdens.H mode=product >truemarm.imp

truemarm.ref: truemarm.imp
	CMBINDIR/Imp2Ref <truemarm.imp >truemarm.ref

fimp.H: fimppar
	Wavelet par=fimppar >fimp.H

truemarm.fref: truemarm.ref fimp.H
 	Filter <truemarm.ref filter=fimp.H >truemarm.fref

marm.slow : truemarm.slow smoothpar_marm velpar_marm
	Smooth < truemarm.slow par=smoothpar_marm | Window par=velpar_marm >marm.slow

geol.slow : MARMDATA/geol.vel
	Add MARMDATA/geol.vel INV_ARGS >geol.slow 

clean&:
	-Rm *.time *.amp *.phase tmp*.H temp*.H
	-Rm *-stack*.H   *-mig*.H
	
