
# 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/mage0005.fits slit_slit0005.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0006.fits slit_slit0006.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0031.fits slit_slit0031.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0032.fits slit_slit0032.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0033.fits slit_slit0033.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0034.fits slit_slit0034.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0035.fits slit_slit0035.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0036.fits slit_slit0036.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0037.fits slit_slit0037.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0038.fits slit_slit0038.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0039.fits slit_slit0039.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0040.fits slit_slit0040.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0041.fits slit_slit0041.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0042.fits slit_slit0042.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0043.fits slit_slit0043.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0044.fits slit_slit0044.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0045.fits slit_slit0045.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0046.fits slit_slit0046.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0047.fits slit_slit0047.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0048.fits slit_slit0048.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0049.fits slit_slit0049.fits
	magebias /data1/Data/MagE/processed_2d/../ut170530_31/mage0050.fits slit_slit0050.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_slit0005.fits
	copyrect -ydist lamp.fits slit_slit0006.fits
	copyrect -ydist lamp.fits slit_slit0031.fits
	copyrect -ydist lamp.fits slit_slit0032.fits
	copyrect -ydist lamp.fits slit_slit0033.fits
	copyrect -ydist lamp.fits slit_slit0034.fits
	copyrect -ydist lamp.fits slit_slit0035.fits
	copyrect -ydist lamp.fits slit_slit0036.fits
	copyrect -ydist lamp.fits slit_slit0037.fits
	copyrect -ydist lamp.fits slit_slit0038.fits
	copyrect -ydist lamp.fits slit_slit0039.fits
	copyrect -ydist lamp.fits slit_slit0040.fits
	copyrect -ydist lamp.fits slit_slit0041.fits
	copyrect -ydist lamp.fits slit_slit0042.fits
	copyrect -ydist lamp.fits slit_slit0043.fits
	copyrect -ydist lamp.fits slit_slit0044.fits
	copyrect -ydist lamp.fits slit_slit0045.fits
	copyrect -ydist lamp.fits slit_slit0046.fits
	copyrect -ydist lamp.fits slit_slit0047.fits
	copyrect -ydist lamp.fits slit_slit0048.fits
	copyrect -ydist lamp.fits slit_slit0049.fits
	copyrect -ydist lamp.fits slit_slit0050.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_slit0005.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0006.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0031.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0032.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0033.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0034.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0035.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0036.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0037.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0038.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0039.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0040.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0041.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0042.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0043.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0044.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0045.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0046.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0047.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0048.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0049.fits
	copyslit -fwhm 20.000000 -ydist -fft lamp.fits slit_slit0050.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_slit0005.fits
	copyrect -xdist lamp.fits slit_slit0006.fits
	copyrect -xdist lamp.fits slit_slit0031.fits
	copyrect -xdist lamp.fits slit_slit0032.fits
	copyrect -xdist lamp.fits slit_slit0033.fits
	copyrect -xdist lamp.fits slit_slit0034.fits
	copyrect -xdist lamp.fits slit_slit0035.fits
	copyrect -xdist lamp.fits slit_slit0036.fits
	copyrect -xdist lamp.fits slit_slit0037.fits
	copyrect -xdist lamp.fits slit_slit0038.fits
	copyrect -xdist lamp.fits slit_slit0039.fits
	copyrect -xdist lamp.fits slit_slit0040.fits
	copyrect -xdist lamp.fits slit_slit0041.fits
	copyrect -xdist lamp.fits slit_slit0042.fits
	copyrect -xdist lamp.fits slit_slit0043.fits
	copyrect -xdist lamp.fits slit_slit0044.fits
	copyrect -xdist lamp.fits slit_slit0045.fits
	copyrect -xdist lamp.fits slit_slit0046.fits
	copyrect -xdist lamp.fits slit_slit0047.fits
	copyrect -xdist lamp.fits slit_slit0048.fits
	copyrect -xdist lamp.fits slit_slit0049.fits
	copyrect -xdist lamp.fits slit_slit0050.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_slit0005.fits
	interOrder slit_slit0006.fits
	interOrder slit_slit0031.fits
	interOrder slit_slit0032.fits
	interOrder slit_slit0033.fits
	interOrder slit_slit0034.fits
	interOrder slit_slit0035.fits
	interOrder slit_slit0036.fits
	interOrder slit_slit0037.fits
	interOrder slit_slit0038.fits
	interOrder slit_slit0039.fits
	interOrder slit_slit0040.fits
	interOrder slit_slit0041.fits
	interOrder slit_slit0042.fits
	interOrder slit_slit0043.fits
	interOrder slit_slit0044.fits
	interOrder slit_slit0045.fits
	interOrder slit_slit0046.fits
	interOrder slit_slit0047.fits
	interOrder slit_slit0048.fits
	interOrder slit_slit0049.fits
	interOrder slit_slit0050.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_slit0005o.fits slit_slit0006o.fits slit_slit0031o.fits slit_slit0032o.fits slit_slit0033o.fits slit_slit0034o.fits slit_slit0035o.fits slit_slit0036o.fits slit_slit0037o.fits slit_slit0038o.fits slit_slit0039o.fits slit_slit0040o.fits slit_slit0041o.fits slit_slit0042o.fits slit_slit0043o.fits slit_slit0044o.fits slit_slit0045o.fits slit_slit0046o.fits slit_slit0047o.fits slit_slit0048o.fits slit_slit0049o.fits slit_slit0050o.fits 'median([i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16,i17,i18,i19,i20,i21,i22,i23,i24])' 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 lamp_lamp0007.fits blueflat_flat0016.fits blueflat_flat0017.fits blueflat_flat0018.fits blueflat_flat0019.fits blueflat_flat0020.fits blueflat_flat0016o.fits blueflat_flat0017o.fits blueflat_flat0018o.fits blueflat_flat0019o.fits blueflat_flat0020o.fits blueflat_flat0016oflt.fits blueflat_flat0017oflt.fits blueflat_flat0018oflt.fits blueflat_flat0019oflt.fits blueflat_flat0020oflt.fits redflat_redflat0001.fits redflat_redflat0002.fits redflat_redflat0005.fits redflat_redflat0006.fits redflat_redflat0031.fits redflat_redflat0032.fits redflat_redflat0033.fits redflat_redflat0034.fits redflat_redflat0035.fits redflat_redflat0036.fits redflat_redflat0037.fits redflat_redflat0038.fits redflat_redflat0039.fits redflat_redflat0040.fits redflat_redflat0041.fits redflat_redflat0042.fits redflat_redflat0043.fits redflat_redflat0044.fits redflat_redflat0045.fits redflat_redflat0046.fits redflat_redflat0047.fits redflat_redflat0048.fits redflat_redflat0049.fits redflat_redflat0050.fits redflat_redflat0001o.fits redflat_redflat0002o.fits redflat_redflat0005o.fits redflat_redflat0006o.fits redflat_redflat0031o.fits redflat_redflat0032o.fits redflat_redflat0033o.fits redflat_redflat0034o.fits redflat_redflat0035o.fits redflat_redflat0036o.fits redflat_redflat0037o.fits redflat_redflat0038o.fits redflat_redflat0039o.fits redflat_redflat0040o.fits redflat_redflat0041o.fits redflat_redflat0042o.fits redflat_redflat0043o.fits redflat_redflat0044o.fits redflat_redflat0045o.fits redflat_redflat0046o.fits redflat_redflat0047o.fits redflat_redflat0048o.fits redflat_redflat0049o.fits redflat_redflat0050o.fits redflat_redflat0001oflt.fits redflat_redflat0002oflt.fits redflat_redflat0005oflt.fits redflat_redflat0006oflt.fits redflat_redflat0031oflt.fits redflat_redflat0032oflt.fits redflat_redflat0033oflt.fits redflat_redflat0034oflt.fits redflat_redflat0035oflt.fits redflat_redflat0036oflt.fits redflat_redflat0037oflt.fits redflat_redflat0038oflt.fits redflat_redflat0039oflt.fits redflat_redflat0040oflt.fits redflat_redflat0041oflt.fits redflat_redflat0042oflt.fits redflat_redflat0043oflt.fits redflat_redflat0044oflt.fits redflat_redflat0045oflt.fits redflat_redflat0046oflt.fits redflat_redflat0047oflt.fits redflat_redflat0048oflt.fits redflat_redflat0049oflt.fits redflat_redflat0050oflt.fits slit_slit0001.fits slit_slit0002.fits slit_slit0005.fits slit_slit0006.fits slit_slit0031.fits slit_slit0032.fits slit_slit0033.fits slit_slit0034.fits slit_slit0035.fits slit_slit0036.fits slit_slit0037.fits slit_slit0038.fits slit_slit0039.fits slit_slit0040.fits slit_slit0041.fits slit_slit0042.fits slit_slit0043.fits slit_slit0044.fits slit_slit0045.fits slit_slit0046.fits slit_slit0047.fits slit_slit0048.fits slit_slit0049.fits slit_slit0050.fits slit_slit0001o.fits slit_slit0002o.fits slit_slit0005o.fits slit_slit0006o.fits slit_slit0031o.fits slit_slit0032o.fits slit_slit0033o.fits slit_slit0034o.fits slit_slit0035o.fits slit_slit0036o.fits slit_slit0037o.fits slit_slit0038o.fits slit_slit0039o.fits slit_slit0040o.fits slit_slit0041o.fits slit_slit0042o.fits slit_slit0043o.fits slit_slit0044o.fits slit_slit0045o.fits slit_slit0046o.fits slit_slit0047o.fits slit_slit0048o.fits slit_slit0049o.fits slit_slit0050o.fits median.fits

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

