Viewing contents of file '../idllib/astron/contrib/varosi/code/allpro/check_mag_fact.pro'
function check_Mag_Fact, image_List, size_im, size_imsc, ALL_MAGS=all_mags,  $
							TAG_IMAGE=tag_image, $
						      TAG_SIZE_IM=tag_size,  $
						     TAG_SIZE_SIM=tag_size_ims
;code written by Frank Varosi NASA/GSFC 1989.
;F.V.1990, mod to handle case when image data is not in structure, just sizes.
;F.V.1991, mod to handle magnification < 1.
;F.V.1991, keyword /ALL_MAGS for when image data is not in structure.
;F.V.1992, keywords TAG_* to get flags about image data structure.

if N_tags( image_List ) GT 0 then begin

	tags = tag_names( image_List )
	tag_image = max( tags EQ "IMAGE" )

	if (tag_image) then begin

		size_im = size( image_List(0).Image )
		size_imsc = size( image_List(0).Imscaled )

		sim = size_im(1)
		simsc = size_imsc(1)

		if ( simsc GE sim ) then return, fix( simsc/sim ) $
		   else return, 1.0/fix( sim/float( simsc ) )

	 endif else begin

		tag_size = max( tags EQ "SIZE_IMAGE" )
		tag_size_ims = max( tags EQ "SIZE_IMSCALED", tag_size_ims )

		if (tag_size) then begin
			size_im = image_List.Size_Image
			sim = reform( size_im(1,*) ) > 1
		  endif else sim = [-1]

		if (tag_size_ims) then begin
			size_imsc = image_List.Size_Imscaled
			simsc = reform( size_imsc(1,*) ) > 1
		  endif else simsc = -sim

		if keyword_set( all_mags ) then begin

			wg = where( [simsc] GE [sim], ng )
			wl = where( [simsc] LT [sim], nl )

			if (nl GT 0) then begin
				Magf = fltarr( nl+ng )
				Magf(wl) = 1.0/fix( sim(wl)/float( simsc(wl) ))
			  endif else Magf = intarr( ng )

			if (ng GT 0) then Magf(wg) = fix( simsc(wg) / sim(wg) )
			return, Magf

		  endif else begin

			if ( simsc(0) GE sim(0) ) then			$
					return, fix( simsc(0)/sim(0) )  $
				  else	return, 1.0/fix( sim(0)/float(simsc(0)))
		   endelse
	   endelse

   endif else return,(0)
end