
# Pipeline for Target slit

GAIN := $(shell python -c 'import FITS;f=FITS.FITS("flat.fits");print f["newgain"];f.close()')
all: stage-overscan stage-ydist-copy stage-orders-copy stage-xdist-copy stage-subscat stage-combine stage-slitfn ../targ_slit

stage-overscan:
# Overscan Subtraction, Trimming, and Image Reorientation.
	echo Stage:  Overscan Subtraction, Trimming, and Image Reorientation.
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0001.fits slit_slit0001.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0002.fits slit_slit0002.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0003.fits slit_slit0003.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0004.fits slit_slit0004.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0005.fits slit_slit0005.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0006.fits slit_slit0006.fits
	touch stage-overscan

stage-ydist-copy: stage-overscan
# Copying the Y Distortion.
	echo Stage:  Copying the Y Distortion.
	copyrect -ydist lamp.fits slit_slit0001.fits
	copyrect -ydist lamp.fits slit_slit0002.fits
	copyrect -ydist lamp.fits slit_slit0003.fits
	copyrect -ydist lamp.fits slit_slit0004.fits
	copyrect -ydist lamp.fits slit_slit0005.fits
	copyrect -ydist lamp.fits slit_slit0006.fits
	touch stage-ydist-copy

stage-orders-copy: stage-ydist-copy
# Copy the Order Edges.
	echo Stage:  Copy the Order Edges.
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0001.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0002.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0003.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0004.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0005.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0006.fits
	touch stage-orders-copy

stage-xdist-copy: stage-orders-copy
# Copying the X Distortion.
	echo Stage:  Copying the X Distortion.
	copyrect -xdist lamp.fits slit_slit0001.fits
	copyrect -xdist lamp.fits slit_slit0002.fits
	copyrect -xdist lamp.fits slit_slit0003.fits
	copyrect -xdist lamp.fits slit_slit0004.fits
	copyrect -xdist lamp.fits slit_slit0005.fits
	copyrect -xdist lamp.fits slit_slit0006.fits
	touch stage-xdist-copy

stage-subscat: stage-xdist-copy
# Subtract the Scattered Light.
	echo Stage:  Subtract the Scattered Light.
	interOrder slit_slit0001.fits
	interOrder slit_slit0002.fits
	interOrder slit_slit0003.fits
	interOrder slit_slit0004.fits
	interOrder slit_slit0005.fits
	interOrder slit_slit0006.fits
	touch stage-subscat

stage-combine: stage-subscat
# Combine the Slit Frames.
	echo Stage:  Combine the Slit Frames.
	efits -p slit_slit0001o.fits slit_slit0002o.fits slit_slit0003o.fits slit_slit0004o.fits slit_slit0005o.fits slit_slit0006o.fits 'median([i1,i2,i3,i4,i5,i6])' median.fits

	touch stage-combine

stage-slitfn: stage-combine
# Get the 2D Image of the Slit Function.
	echo Stage:  Get the 2D Image of the Slit Function.
	efits flat.fits "1.0*greater(i1,0.25)" mask.fits
	modrect median.fits -xdist -ydist -rn 4.200000 -g ${GAIN} -check 31 -pct 40 -skycut 5 -mask mask.fits -ky 0 -kx 3 -dkx 4 -skyint 2048 -b 3 -extend -1.0 -new
	efits median.fits medianm.fits 'VTKDivide(i1,i2)' mediano.fits
	unrect -ydist -extend mediano.fits
	efits medianot.fits 'VTKMedian(VTKMirrorPad(i1,(-100,2148,0,1023),numret=1),63,3,numret=1)[::,100:2148]' medianotg.fits
	rerect -ydist -extend medianotg.fits
	ln -fs medianotgd.fits median_slitfn.fits
	touch stage-slitfn

../targ_slit:
	touch ../targ_slit

clean:
	rm -f slit_slit0001.fits slit_slit0002.fits slit_slit0003.fits slit_slit0004.fits slit_slit0005.fits slit_slit0006.fits slit_slit0001o.fits slit_slit0002o.fits slit_slit0003o.fits slit_slit0004o.fits slit_slit0005o.fits slit_slit0006o.fits median.fits

veryclean:
	rm -f stage-overscan stage-ydist-copy stage-orders-copy stage-xdist-copy stage-subscat stage-combine stage-slitfn

