;find_center
;
;PURPOSE:
;	find_center will read in the listed coordinates from the files 
;	of type [filename]_mag.txt and try to find the center of the 
; 	coordinate grid     

pro find_all_center_all_letter, Directory=Directory, y_center=y_center,$
	x_center=x_center, stats_directory=stats_directory,$
	letter=letter,file_number=file_number

If (not keyword_set(Directory)) then Directory='/a/pippin01/Volumes/u08/lsst/CPanalysis/2005-05-10/ShackHartman/'
If (not keyword_set(letter)) then letter=['a','b','c','d','e','f','g','h','i']
If (not keyword_set(file_number)) then file_number='20'
If (not keyword_set(x_center)) then x_center=[542.5]
If (not keyword_set(y_center)) then y_center=[466]
If (not keyword_set(stats_directory)) then stats_directory='stats_temp'

jpeg_dir=Directory+'jpegs/'

;Loop through 100 images and obtain the fitted center for each
num=25
num_of_files=100
letters=N_elements(letter)
X_centers=fltarr(letters*(num_of_files))
Y_centers=fltarr(letters*(num_of_files))
Point_indices_arr=intarr(letters*(num_of_files)) 
Num_of_iraf_points_arr=intarr(letters*(num_of_files))
mag_arr=[0]
sharp_arr=[0]

for letter_ind=0,letters-1 do begin

	for file_number=1,num_of_files do begin

	if (file_number lt 10) then filename=Directory+stats_directory+'/hr5132'+letter(letter_ind)+'_'+$
        string(file_number,format='(I1)')+'_stats.txt'
        if file_number ge 10 and file_number lt 100 then filename=$
        Directory+stats_directory+'/hr5132'+letter(letter_ind)+'_'+string(file_number,format='(I2)')+'_stats.txt'
        if file_number ge 100 and file_number lt 1000 then filename=$
        Directory+stats_directory+'/hr5132'+letter(letter_ind)+'_'+string(file_number,format='(I3)')+'_stats.txt'


	;The x coordinates are symmetric about a point that is not a ShackHartman image
	;The y coordinates are symmetric about a ShackHartman image
	subx=2*indgen(num)-25
	suby=indgen(num)-12

	index=findgen(num*num)

	fullx=fltarr(num*num)
	fully=fltarr(num*num)

	;y is constant for 25 entries; x increases for 25 entries and repeats
	;i.e., scan is along x followed by y
	fullx(index)=subx(index mod num)
	fully=rebin(suby,num*num)

	readcol,filename,num_of_iraf_points,format='d',numline=1
	readcol,filename,x_coord,y_coord,mag,sharp,format='X,f,f,X,X,f,f',$
	skipline=1

	point_indices=where(x_coord ne -1)

	;Temporary Vectors
	x_coord=x_coord(point_indices)
	y_coord=y_coord(point_indices)
	fullx=fullx(point_indices)
	fully=fully(point_indices)
	mag_arr=[mag_arr,mean(mag(point_indices))]
	sharp_arr=[sharp_arr,mean(sharp(point_indices))]
	
	x_fit=curvefit(fullx,x_coord,weights,x_center,/noderivative,function_name='linear_function_x',yerror=xerror)
	y_fit=curvefit(fully,y_coord,weights,y_center,/noderivative,function_name='linear_function_y',yerror=yerror)

	;Cumulative Vectors
	X_centers(letter_ind*(num_of_files-1)+file_number)=x_center
	Y_centers(letter_ind*(num_of_files-1)+file_number)=y_center
	Point_indices_arr(letter_ind*(num_of_files-1)+file_number)=N_elements(point_indices)
	Num_of_iraf_points_arr(letter_ind*(num_of_files-1)+file_number)=$
					num_of_iraf_points

	print,FORMAT='(%"%s\t%d\t\t%f\t\t%f")',letter(letter_ind),file_number,x_center,y_center

	;Errors at each point
	y_err=y_coord-y_fit
	x_err=x_coord-x_fit

	endfor

endfor

;These arrays contain zero as their initial element.  Get rid of it
mag_arr=mag_arr(where(mag_arr ne 0))
sharp_arr=sharp_arr(where(sharp_arr ne 0))

set_plot,'Z'

device, set_resolution=[8000,6000]
device, set_font='Courier'


white='FFFFFF'x
black='000000'x
!P.CHARSIZE=10
!P.CHARTHICK=15.
!X.THICK=20.
!Y.THICK=20.
!P.THICK=20.


!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,y_centers,psym=1,title="Y Center Coordinate for files hr5132 "+letter(0)+'-'+letter(letters-1),$
        xtitle="File Number",ytitle="Y Coordinate",background=white,color=black, $
	yrange=[min(y_centers)-10,max(y_centers)+10],$
	POSITION=[0.10,0.10,0.9,0.9]

jpgimg=tvrd()
write_jpeg,jpeg_dir+'all_x_centers.jpg',congrid(jpgimg, 1600, 1200, /interp, /center), quality=100
erase

!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,x_centers,psym=1,title="X Center Coordinate for files hr5132 "+letter(0)+'-'+letter(letters-1),$
        xtitle="File Number",ytitle="X Coordinate",background=white,color=black, $
        yrange=[min(x_centers)-10,max(x_centers)+10],$
	POSITION=[0.10,0.10,0.9,0.9]

jpgimg=tvrd()
write_jpeg,jpeg_dir+'all_y_centers.jpg',congrid(jpgimg, 1600, 1200, /interp, /center), quality=100
erase
                       
                                           
device,/close
set_plot,'X'
stop

!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,mag_arr,psym=1,title="Average Magnitude for files hr5132 "+letter(0)+'-'+letter(letters-1),$
        xtitle="File Number",ytitle="Average Magnitude",background=white,$
	color=black,yrange=[min(mag_arr)-.2,max(mag_arr)+.2],$
        POSITION=[0.10,0.10,0.9,0.9]

!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,sharp_arr,psym=1,$
	title="Average Sharpness for files hr5132 "+letter(0)+'-'+letter(letters-1),$
        xtitle="File Number",ytitle="Average Sharpness",background=white,$
        color=black,yrange=[min(sharp_arr)-.2,max(sharp_arr)+.2],$
        POSITION=[0.10,0.10,0.9,0.9]

!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,Point_indices_arr,psym=1,$
        title="Number of Points Fitted for files hr5132 "+letter(0)+$
	'-'+letter(letters-1),$
        xtitle="File Number",ytitle="Number of Points",background=white,$
        color=black,yrange=[min(Point_indices_arr)-10,max(Point_indices_arr)+10],$
        POSITION=[0.10,0.10,0.9,0.9]

!p.multi=[0,1,1]
plot,findgen(letters*(num_of_files-1))+1,Num_of_iraf_points_arr,psym=1,$
        title="Number of Points Found by IRAF for files hr5132 "+letter(0)+$
        '-'+letter(letters-1),$
        xtitle="File Number",ytitle="Number of Points",background=white,$
        color=black,yrange=[min(Point_indices_arr)-10,max(Point_indices_arr)+10],$
        POSITION=[0.10,0.10,0.9,0.9]

device,/close

set_plot,'X'

end

