$#define DEBUG
#include <SEP.defs>
#define BINDIR ../../Bin/MTYPE
#define LIBDIR ../../Lib/MTYPE
#define BLASLIB LIBDIR/libblas.a
#define CHECKLIBS LIBDIR/libmartin.a  BLASLIB
#define MYLIBS  -lsepattr LIBDIR/libmartin.a
#define DATA ./Data
#define WHERE ../../Data/Pem50


Test: CHECKLIBS Test.o vectpow.o atoiv.o crunching.o
	LD LDOPTS Test.o  vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o Test

default&:  CHECKLIBS 


progs&: EqualizePre5 EqualizePre5a EqualizePre5b EqualizePre5i EqualizePre6 Efilter Sort Count Count6 

test&:
	Window <WHERE/l1xx.data.h >junk  f3=0 n3=5 n1=10
	Count <junk sxbias=55. debug=1 >/dev/null 

diagnose&:
	Count <WHERE/l1xx.data.h sxbias=55. >/dev/null 

inspect&:
	Count <WHERE/l1xx.data.h sxbias=55. >DATA/normxx.h recifile=DATA/recixx.h scdfile=DATA/scdxx.h

Philtrei BINDIR/Philtrei: Philtrei.o subxquizit.o
	FC LDOPTS Philtrei.o subxquizit.o SEPLIB SYSLIB -o BINDIR/Philtrei

Xquizitav BINDIR/Xquizitav: Xquizitav.o subxquizit.o contran.o cgstep.o contrunc.o shapertruncav.o shaper.o adjnull.o advance.o
	FC LDOPTS Xquizitav.o subxquizit.o  contran.o cgstep.o contrunc.o shapertruncav.o shaper.o adjnull.o advance.o SEPLIB SYSLIB -o BINDIR/Xquizitav

Xquizits BINDIR/Xquizits: Xquizits.o subxquizit.o contran.o cgstep.o contrunc.o shapertrunc.o shaper.o adjnull.o advance.o
	FC LDOPTS Xquizits.o subxquizit.o  contran.o cgstep.o contrunc.o shapertrunc.o shaper.o adjnull.o advance.o SEPLIB SYSLIB -o BINDIR/Xquizits

Xquiziti BINDIR/Xquiziti: Xquiziti.o subxquizit.o
	FC LDOPTS Xquiziti.o subxquizit.o SEPLIB SYSLIB -o BINDIR/Xquiziti

Xquizit BINDIR/Xquizit: Xquizit.o subxquizit.o
	FC LDOPTS Xquizit.o subxquizit.o SEPLIB SYSLIB -o BINDIR/Xquizit

Kill BINDIR/Kill: Kill.o checknull.o
	FC LDOPTS Kill.o checknull.o SEPLIB SYSLIB -o BINDIR/Kill

Notching BINDIR/Notching: Notching.o subnotching.o
	FC LDOPTS Notching.o subnotching.o SEPLIB SYSLIB -o BINDIR/Notching

Dot& BINDIR/Dot:    Dot.o  uniformr.o crunching.o  CHECKLIBS
	FC LDOPTS Dot.o uniformr.o crunching.o MYLIBS SEPLIB FLIB2 SYSLIB FLIB2 -o BINDIR/Dot

EqualizePre: CHECKLIBS EqualizePre.o   symmlq.o vectpow.o atoiv.o crunching.o getdata.o putdata.o database.o
	LD LDOPTS EqualizePre.o  symmlq.o vectpow.o atoiv.o crunching.o  getdata.o putdata.o database.o MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB FLIB2 -o BINDIR/EqualizePre

EqualizePre2: CHECKLIBS EqualizePre2.o constrain.o symmlqcon.o  symmlq.o vectpow.o atoiv.o crunching.o getdata.o putdata.o database.o
	LD LDOPTS EqualizePre2.o  constrain.o symmlqcon.o  symmlq.o vectpow.o atoiv.o crunching.o  getdata.o putdata.o database.o MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB FLIB2 -o BINDIR/EqualizePre2

/* symmetric cgstep method   constrained  */

EqualizePre3: CHECKLIBS EqualizePre3.o cgstep.o  vectpow.o atoiv.o crunching.o getdata.o putdata.o database.o
	LD LDOPTS EqualizePre3.o  cgstep.o  vectpow.o atoiv.o crunching.o  getdata.o putdata.o database.o MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB FLIB2 -o BINDIR/EqualizePre3

EqualizePre4: CHECKLIBS EqualizePre4.o  vectpow.o atoiv.o crunching.o getdata.o putdata.o database.o
	LD LDOPTS EqualizePre4.o   vectpow.o atoiv.o crunching.o  getdata.o putdata.o database.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB FLIB2 -o BINDIR/EqualizePre4

EqualizePre5& BINDIR/EqualizePre5: CHECKLIBS EqualizePre5.o  vectpow.o atoiv.o crunching.o
	LD LDOPTS EqualizePre5.o   vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o BINDIR/EqualizePre5

EqualizePre5a: CHECKLIBS EqualizePre5a.o  vectpow.o atoiv.o crunching.o
	LD LDOPTS EqualizePre5a.o vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o BINDIR/EqualizePre5a

$ identical to 5a but reads planes at a time, not traces
EqualizePre5b: CHECKLIBS EqualizePre5b.o  vectpow.o atoiv.o crunching.o
	LD LDOPTS EqualizePre5b.o vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o BINDIR/EqualizePre5b

EqualizePre5i: CHECKLIBS EqualizePre5i.o  vectpow.o atoiv.o crunching.o
	LD LDOPTS EqualizePre5i.o vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o BINDIR/EqualizePre5i

EqualizePre6: CHECKLIBS EqualizePre6.o  vectpow.o atoiv.o crunching.o
	LD LDOPTS EqualizePre6.o   vectpow.o atoiv.o crunching.o -lsepclass MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB -o BINDIR/EqualizePre6

/*
EqualizePre4: CHECKLIBS EqualizePre4.o cgstep.o ident.o  vectpow.o atoiv.o crunching.o getdata.o putdata.o database.o
	LD LDOPTS EqualizePre4.o  cgstep.o ident.o  vectpow.o atoiv.o crunching.o  getdata.o putdata.o database.o MYLIBS SEPLIB BLASLIB FLIB2 SYSLIB FLIB2 -o BINDIR/EqualizePre4
*/

Count& BINDIR/Count: Count.o CHECKLIBS 
	LD LDOPTS Count.o  MYLIBS SEPLIB SYSLIB -o BINDIR/Count

Count6& BINDIR/Count6: Count6.o  CHECKLIBS 
	LD LDOPTS Count6.o MYLIBS SEPLIB SYSLIB -o BINDIR/Count6

Countcompress& BINDIR/Countcompress: Countcompress.o CHECKLIBS 
	LD LDOPTS Countcompress.o  MYLIBS SEPLIB SYSLIB -o BINDIR/Countcompress


Efilter: CHECKLIBS Efilter.o  atoiv.o crunching.o
	LD LDOPTS Efilter.o  atoiv.o crunching.o MYLIBS SEPLIB SYSLIB -o BINDIR/Efilter

Sort: CHECKLIBS Sort.o
	LD LDOPTS Sort.o  MYLIBS SEPLIB SYSLIB  -o BINDIR/Sort


testdb: testdb.o database.o atoiv.o
	LD LDOPTS testdb.o database.o atoiv.o SEPLIB MYLIBS FLIB2 SYSLIB FLIB2 -o testdb


MYPROG&: MYPROG.o  MYDEP
	LD LDOPTS MYPROG.o MYDEP MYLIBS FLIB2  SYSLIB FLIB2 -o BINDIR/MYPROG

Genheadspike: Genheadspike.o hval.o
	 FC Genheadspike.o hval.o -lsep -o BINDIR/Genheadspike

Genhead: Genhead.o hval.o
	 FC Genhead.o hval.o -lsep -o BINDIR/Genhead


jtwospikes.h&: 
	echo " 1 1 0 0 10 0 1 0 2 0 0 0 1 0 0 1 0 0 " >junk
	echo " 2 1 0 0 20 0 2 0 1 0 0 0 1 0 0 1 0 0 " >>junk
$	atoF <junk |Ritefloat >jhdr.h
	atoF <junk >jhdr.h
	echo "n1=18 n2=2 n3=1" >>jhdr.h
	echo "hdrkey1=SHOT hdrkey2=SEQNO" >>jhdr.h
	echo "hdrkey3=junk hdrkey4=junk hdrkey5=OFFSET hdrkey6=junk">>jhdr.h
	echo "hdrkey7=SHT-X hdrkey8=SHT-Y hdrkey9=REC-X hdrkey10=REC-Y" >>jhdr.h
	echo "hdrkey11=junk hdrkey12=junk">>jhdr.h
	echo "hdrkey13=SCOMPX hdrkey14=SCOMPY hdrkey15=SCOMPZ" >>jhdr.h
	echo "hdrkey16=RCOMPX hdrkey17=RCOMPY hdrkey18=RCOMPZ" >>jhdr.h
$	Spike  o2=1.5 d2=0.5 o3=0.01 d3=0.1 n1=250 n2=2 n3=1 k1=37,39,38 k2=1,2,1 k3=1,1,1 nsp=3 | Noise lo=-0.1 hi=0.1 |Ritefloat >jtwospikes.h
	Spike  o2=1.5 d2=0.5 o3=0.01 d3=0.1 n1=250 n2=2 n3=1 k1=37,39,38 k2=1,2,1 k3=1,1,1 nsp=3 | Noise var=0.0333  >jtwospikes.h
	echo "attrfile=jhdr.h" >>jtwospikes.h
	echo "o2=1.5 d2=0.5 o3=0.01 d3=0.1" >>jhdr.h

/*
	Spike  o2=1.5 d2=0.5 o3=0.01 d3=0.1 n1=250 n2=2 n3=1 k1=37,39,38 k2=1,2,1 k3=1,1,1 nsp=3  |Ritefloat >jtwospikes.h
*/

hdrtest&: 
	echo " 1 1 1 2 1 3 1 4 1 5 " >junk
	echo " 2 1 2 2 2 3 2 4 2 5 " >>junk
	echo " 3 1 3 2 3 3 3 4 3 5 " >>junk
	echo " 4 1 4 2 4 3 4 4 4 5 " >>junk
	echo " 5 1 5 2 5 3 5 4 5 5 " >>junk
	atoF <junk |Ritefloat >jhdr.h
	echo "n1=2 n2=5 n3=5 esize=4" >>jhdr.h
	echo "hdrkey1=SHOT hdrkey2=SEQNO label1=headers label2=shot label3=seqno" >>jhdr.h
	Spike  o2=1.5 d2=0.5 o3=0.01 d3=0.1 n1=15 n2=5 n3=5 k1=7,9,8 k2=1,2,1 k3=1,1,1 nsp=3 |Ritefloat |Window f2=3 n2=2 f3=1 n3=4 >j.h
	echo "o2=1.5 d2=0.5 o3=0.01 d3=0.1" >>jhdr.h
	echo "attrfile=jhdr.h" >>j.h

test0&: jtwospikes.h
	Window f2=0 n2=1 <jtwospikes.h >jnorm.h
	Window f2=1 n2=1 <jtwospikes.h >jreci.h
$	BINDIR/Xquiziti <jnorm.h in2=jreci.h >jequal.h lag=10 filt=filtxquiz.h
	BINDIR/Xquizits <jnorm.h in2=jreci.h >jequal.h lag=10 filt=filtxquiz.h

test0.1&:
	Window f2=0 n2=1 < jtwospikes.h | Bandpass flo=10 fhi=30 >j1.h
	Window f2=1 n2=1 < jtwospikes.h | Bandpass flo=5 fhi=50>j2.h
$	BINDIR/Xquiziti <j1.h in2=j2.h >jequal.h lag=10 filt=filtxquiz.h
	BINDIR/Xquizits <j1.h in2=j2.h >jequal.h lag=10 filt=filtxquiz.h

test0.4&: jtwospikes.h
	Window f2=0 n2=1 < jtwospikes.h | Bandpass flo=10 fhi=30 >j1.h
	Window f2=1 n2=1 < jtwospikes.h | Bandpass flo=5 fhi=50>j2.h
	Merge axis=2 space=n j1.h j2.h  >jtwoband.h
	BINDIR/EqualizePre5 restart=n par=parfile.spike <jtwoband.h >jequal.h
$
$	BINDIR/Count <jtwoband.h recifile=jreciband.h >jnormband.h scdfile=scdband.H
$	time BINDIR/EqualizePre5a restart=d par=parfile.spike <jnormband.h recifile=jreciband.h scdfile=scdband.H >jequal.h
$
	Graph <filtermovie |Tube

test0.5&: jtwospikes.h
	BINDIR/Count <jtwospikes.h recifile=jrecispikes.h >jnormspikes.h scdfile=scdspike.H
	time BINDIR/EqualizePre5b restart=d par=parfile.spike <jnormspikes.h recifile=jrecispikes.h scdfile=scdspike.H >jequal.h
	Graph <filtermovie |Tube
	time BINDIR/EqualizePre5i restart=d par=parfile.spike <jnormspikes.h recifile=jrecispikes.h scdfile=scdspike.H >jequal.h
	Graph <filtermovie |Tube

test0.6&:
	Window f3=19 n3=1 < filtermovie >filter1
	BINDIR/Efilter scdfile=scdspike.H filter1=filter1 < jnormspikes.h >jequal2.H par=parfile.spike
	BINDIR/Efilter scdfile=scdspike.H filter1=filter1 < jrecispikes.h >jequal3.H par=parfile.spike

test1&: jtwospikes.h
	BINDIR/EqualizePre5 restart=n par=parfile.spike <jtwospikes.h >jequal.h
/*	Graph <filter1 |Tube*/

test2&:
	BINDIR/EqualizePre restart=y scdfile=junkscd par=parfile.spike <jtwospikes.h >jequal.h

test3:
	BINDIR/Count <jtwospikes.h scdfile=junkscd >/dev/null
	Efilter <jtwospikes.h par=parfile.spike scdfile=junkscd >jequal2.h 

test4&: /*jtwospikes.h*/
	BINDIR/EqualizePre2 damp=0. restart=n par=parfile.spike <jtwospikes.h >jequal2.h

test5&: /*jtwospikes.h*/
	BINDIR/EqualizePre3 restart=n par=parfile.spike <jtwospikes.h >jequal2.h

test6&: /*jtwospikes.h*/
	BINDIR/EqualizePre4 restart=n par=parfile.spike <jtwospikes.h >jequal2.h

test7&: /*jtwospikes.h*/
	BINDIR/EqualizePre4 restart=n damp=0.5 par=parfile.spike <jtwospikes.h >jequal2.h



LIBDIR/%:  if not {{ cd ../../Lib ; cake -q MTYPE/% }}
	( cd ../../Lib ; cake  MTYPE/% )

clean&:
	-RM_CMD *.x *.o  a.out core j*
	-/bin/rm -f crunchingfix.f constrain.f  vectpowfix.f
	-/bin/rm -f Kill.f checknull.f subxquizit.f Xquizit.f
	-/bin/rm -f Xquizits.f adjnull.f advance.f cgstep.f  contran.f  contrunc.f shaper.f shapertrunc.f  Xquiziti.f  Philtrei.f 


#include <SEP.obj.rules>

/* #include <SEP.prog.rules> */
