procedure btc_getchipscales(filename,scalename) # btc_getchipscales -- find chip-to-chip photometric scalings for BTC images # This program will fail if the ITERMEAN keyword is not in all image headers! # 010730: explicit parameters added for iteravg string filename {prompt="File of root names of BTC image sets"} string scalename {prompt="Root name for output scaling files"} string extension="fits" {prompt="Image extension"} bool getscales {yes,prompt="Get individual image set scalings?"} bool avgscales {yes,prompt="Average lots of scalings together?"} bool savescales {yes,prompt="Accept and save average scaling?",mode="q"} bool echog {yes,prompt="Beep when task is done?"} struct *name begin string root, image, scales, extn, scale_name real avgmean, chipscale bool get_scales, avg_scales, save_scales name = filename scale_name = scalename extn = extension get_scales = getscales avg_scales = avgscales # -- cycle through images if (get_scales) { print ("Output to "//scale_name//"_chipscales:") while (fscan (name, root) != EOF) { # -- find average itermean hsel (root//"_?."//extn, "itermean", yes) | average | scan (avgmean) # -- get itermean for all 4 images in the set and divide by average itermean scales="" for (i=1; i<=4; i+=1) { image = root//"_"//i//"."//extn hsel (image, "itermean", yes) | scan (chipscale) chipscale=chipscale/avgmean scales = (scales//" "//chipscale) } # -- output print (root//scales) print (root//scales, >> scale_name//"_chipscales") } } # -- average lots of image set scalings together chip-by-chip while (avg_scales) { print ("Average scalings, RMS uncertainty and # of images used for chips 1-4:") fields (scale_name//"_chipscales",2) | iteravg (nsig=5, maxiter=10, >> scale_name//"_chipscalesavg") fields (scale_name//"_chipscales",3) | iteravg (nsig=5, maxiter=10, >> scale_name//"_chipscalesavg") fields (scale_name//"_chipscales",4) | iteravg (nsig=5, maxiter=10, >> scale_name//"_chipscalesavg") fields (scale_name//"_chipscales",5) | iteravg (nsig=5, maxiter=10, >> scale_name//"_chipscalesavg") type (scale_name//"_chipscalesavg") print (" ") print ("If the above is unacceptable, answer `n' and the "//scale_name//"_chipscales") print ("file will be displayed for editing and the iterative average re-run.") save_scales=savescales if(save_scales){ print ("Saving to file "//scale_name//"_chipscalesavg") avg_scales=no } else { avg_scales=yes del (scale_name//"_chipscalesavg", ver-) vi (scale_name//"_chipscales") } } if(echog)beep end