;xy_offsets
;
;PURPOSE:
;	This script will return the difference in coordinates between a 
;	ShackHartman image centroid and the corresponding point on the 
;	reference grid
;
;	Since the center of the grid seems to be drifting 

pro newest_cn_linear_depth_no_text,Date=Date,stats_directory=stats_directory,$
	x_center_file=x_center_file,y_center_file=y_center_file,$
	depth=depth,x_off=x_off,y_off=y_off,mag_cut=mag_cut


If (not keyword_set(Date)) then Date='10'
If (not keyword_set(stats_directory)) then stats_directory='stats'
If (not keyword_set(x_center_file)) then x_center_file='newest_x_centers.txt'
If (not keyword_set(y_center_file)) then y_center_file='newest_y_centers.txt'
If (not keyword_set(depth)) then depth=1
If (not keyword_set(postscript_dir)) then postscript_dir='distorted_postscripts'
If (not keyword_set(x_off)) then x_off=0
If (not keyword_set(y_off)) then y_off=0
If (not keyword_set(mag_cut)) then mag_cut=17
stats_directory='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+$
	  '/ShackHartman/'+stats_directory+'/'
postscript_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/final_report_figs/'
Cor_directory='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+$
          '/ShackHartman/correlations/'
;FOR GENERAL PURPOSE
;image_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/final_report_figs/'
;FOR LATEX FILE
image_dir= '/afs/slac/u/ki/lances/latex/'
;ARRAYS OF FILES
offset_files=file_search(stats_directory+'*5132*newest_offsets.txt',count=num_stats_files)

;CONSTANTS
num=25
grid_spots=625
index=findgen(625)
separation=findgen(25)*.163

;HUGE DATA CUBE
x_offset_hor=fltarr(num_stats_files,grid_spots)
y_offset_hor=fltarr(num_stats_files,grid_spots)
x_offset_ver=fltarr(num_stats_files,grid_spots)
y_offset_ver=fltarr(num_stats_files,grid_spots)
bolo_mag_avg=fltarr(num_stats_files)

;Correlations
Cxt_full=fltarr(num_stats_files,num,depth)
Cxl_full=fltarr(num_stats_files,num,depth)
Cyt_full=fltarr(num_stats_files,num,depth)
Cyl_full=fltarr(num_stats_files,num,depth)


;FILL THE DATA CUBES
for file_number=0,num_stats_files-1 do begin

	;Take the results from the offset.txt files and fill the cube
	readcol,offset_files(file_number),x_offset,y_offset,bolo_mags,$
	format='X,X,f,X,f,x,x,f'
  	print,offset_files(file_number)	
	;Obtain the difference ordered in COLUMN, ROW between centroid and grid 	point
	x_offset_hor(file_number,*)=x_offset
	y_offset_hor(file_number,*)=y_offset

	;Obtain the difference ordered in ROW, COLUMN
	x_offset_ver(file_number,*)=x_offset((index mod 25)*25+index/25)
	y_offset_ver(file_number,*)=y_offset((index mod 25)*25+index/25)
  	
	;Take in Magnitudes to make cuts
	bolo_mag_avg(file_number)=mean(bolo_mags(where(bolo_mags ne -10)))

endfor
	
;DATA CUBEs are now in place. Begin the covariance

;Loop through all of the files in the 
for file_number=0,num_stats_files-depth do begin

  ;CORRELATIONS
  Cxl=fltarr(num,depth)
  Cxt=fltarr(num,depth)
  Cyl=fltarr(num,depth)
  Cyt=fltarr(num,depth)

     for time=0, depth-1 do begin

	for spacing=0, num-1 do begin
	
	  Cxl_arr=fltarr(num*num)
       	  Cxt_arr=fltarr(num*num)
	  Cyl_arr=fltarr(num*num)
	  Cyt_arr=fltarr(num*num)

	  ;SCAN FIRST ALONG THE ROWS
	
	  for column_index=0, num-1 do begin
	     for row_index=0, num -1 do begin
		 spot_index=column_index*num+row_index
			
		 ;If we have reached the edge, start on the next row
		 If (row_index+spacing) ge num then break
		 ;Check to see if both have valid values
		 If (x_offset_hor(file_number,spot_index) ne -10) and $
		    (x_offset_hor(file_number+time,spot_index+spacing) ne -10) $
		    then begin
		    ;add offset in to tweek the plots
		    Cxl_arr(spot_index)=(x_offset_hor(file_number,spot_index)+x_off)*$
		    (x_offset_hor(file_number+time,spot_index+spacing)+x_off)
		    Cxt_arr(spot_index)=(y_offset_hor(file_number,spot_index)+y_off)*$
                    (y_offset_hor(file_number+time,spot_index+spacing)+y_off)
		    ;print,FORMAT='(%"%i\t%i\t")',spot_index,spot_index+spacing
	
		 endif

	      endfor
	   endfor
		
	   correlated=where(Cxl_arr ne 0)
	   If correlated(0) ne -1 then begin
		Cxl(spacing,time)=mean(Cxl_arr(correlated))
		Cxt(spacing,time)=mean(Cxt_arr(correlated))
	   endif else begin
		print,'no correlations',file_number
		Cxl(spacing,time)=-10
		Cxt(spacing,time)=-10
	   
	   endelse
		
	   ;printf,xcor,FORMAT='(%"%f\t%f\t%i")',Cxl(spacing-1),Cxt(spacing-1),N_elements(correlated)
		
	
           ;SCAN SECOND ALONG Y

           for column_index=0, num-1 do begin
               for row_index=0, num -1 do begin
                   spot_index=column_index*num+row_index
	
        	   ;If we have reached the edge, start on the next row
                   If (row_index+spacing) ge num then break
                   ;Check to see if both have valid values
                   If (y_offset_ver(file_number,spot_index) ne -10) and $
                   (y_offset_ver(file_number+time,spot_index+spacing) ne -10) $
		   then begin

                   Cyl_arr(spot_index)=(y_offset_ver(file_number,spot_index)+y_off)*$
                   (y_offset_ver(file_number+time,spot_index+spacing)+y_off)
                   Cyt_arr(spot_index)=(x_offset_ver(file_number,spot_index)+x_off)*$
                   (x_offset_ver(file_number+time,spot_index+spacing)+x_off)
                   ;print,FORMAT='(%"%i\t%i\t")',spot_index,spot_index+spacing

          	   endif

                   endfor
            endfor

            correlated=where(Cyl_arr ne 0)
            If correlated(0) ne -1 then begin
                 Cyl(spacing,time)=mean(Cyl_arr(correlated))
                 Cyt(spacing,time)=mean(Cyt_arr(correlated))
            endif else begin
                 print,'no correlations',file_number
		 Cyl(spacing,time)=-10
                 Cyt(spacing,time)=-10
            endelse

            ;printf,ycor,FORMAT='(%"%f\t%f\t%i")',Cyl(spacing-1),Cyt(spacing-1),N_elements(correlated)

     	  endfor
	
	endfor	
	;partvelvec,x_offset(fitted),y_offset(fitted),gridx(fitted),$
	;	gridy(fitted),yrange=[150,800],xrange=[200,850]

	;close,xcor
	;free_lun,xcor		
	;close,ycor
	;free_lun,ycor
	
	If (bolo_mag_avg(file_number) lt mag_cut) then begin
          Cxt_full(file_number,*,*)=Cxt
	  Cxl_full(file_number,*,*)=Cxl
	  Cyt_full(file_number,*,*)=Cyt
	  Cyl_full(file_number,*,*)=Cyl
	endif else begin
	  Cxt_full(file_number,*,*)=-10
          Cxl_full(file_number,*,*)=-10
          Cyt_full(file_number,*,*)=-10
          Cyl_full(file_number,*,*)=-10
	endelse


endfor	
		

Cxt_means=fltarr(num,depth)
Cxl_means=fltarr(num,depth)
Cyt_means=fltarr(num,depth)
Cyl_means=fltarr(num,depth)

for m=0, depth-1 do begin
	
   get_lun,correlations
   openw,correlations,stats_directory+'Mag_'+strtrim(mag_cut,2)+'Depth_'+$
	 string(strtrim(m,2))+'Correlations.txt'
   printf,correlations,$
   FORMAT='(%"%s\t%s\t%s\t%s")','Long. X Cor.','Trans. X Cor.','Long. Y Cor.','Trans. Y Cor'

   for n=0, num-1 do begin

	cxt_temp=cxt_full(*,n,m)        	
        inc_cxt=where((cxt_temp ne 0) and (cxt_temp ne -10))
        Cxt_means(n,m)=mean(Cxt_temp(inc_cxt))
	cxl_temp=cxl_full(*,n,m)
        inc_cxl=where((cxl_temp ne 0) and (cxl_temp ne -10))
        Cxl_means(n,m)=mean(Cxl_temp(inc_cxl))
	cyt_temp=cyt_full(*,n,m)
        inc_cyt=where((cyt_temp ne 0) and (cyt_temp ne -10))
        Cyt_means(n,m)=mean(Cyt_temp(inc_cyt))
	cyl_temp=cyl_full(*,n,m)
        inc_cyl=where((cyl_temp ne 0) and (cyl_temp ne -10))
        Cyl_means(n,m)=mean(Cyl_temp(inc_cyl))
	printf,correlations,FORMAT='(%"%f\t%f\t%f\t%f")',$
	       Cxl_means(n,m),Cxt_means(n,m),Cyl_means(n,m),Cyt_means(n,m)
	
   endfor
   close,correlations
   free_lun,correlations

endfor

set_plot,'z'

erase
device, set_font='Courier'
device,set_resolution=[700,600]
!p.charsize=.8
!p.charthick=1.2
!x.thick=2
!y.thick=2
!p.thick=3
!p.noerase=0

;For Presentation

device,set_resolution=[1400,1200]
!p.charsize=3
!p.charthick=5
!x.thick=4
!y.thick=4
!p.thick=3.5
!p.noerase=0


white='FFFFFF'x
black='000000'x
red='FF0000'x

!P.multi=[0,1,1]

plot,separation,Cxt_means(*,0),psym=2,$
               xtitle="Aperture Separation (meters)",ytitle="Covariance",$
               background=white,color=black,$
               yrange=[-1,2],$
               POSITION=[0.10,0.10,0.9,0.9],symsize=2
	       
;Over Plot the various separations in time and also generate legends

for i=1,depth-1 do begin

        oplot,separation,Cxt_means(*,i),psym=i,color=25*i,symsize=2

endfor

!p.charsize=2
!p.charthick=3.5
!x.thick=4
!y.thick=4
!p.thick=3
!p.noerase=0

!p.charsize=3
!p.charthick=5

jpgimg=tvrd()
tvlct,reds,greens,blues,/get
write_png,image_dir+'Transverse_Linear_Temporal_X_No_Text'+Date+'-2005.png',$
jpgimg,reds,greens,blues

erase

!p.multi=[0,1,1]
;***************FIFTH PLOT
!p.charsize=3
!p.charthick=5
!x.thick=4
!y.thick=4
!p.thick=3.5
!p.noerase=0

plot,separation,Cxl_means(*,0),psym=2,$
               xtitle="Aperture Separation (meters)",$
	       ytitle="Covariance (Pixels Squared)",$
               background=white,color=black,$
               yrange=[-1,2],$
               POSITION=[0.10,0.10,0.9,0.9],symsize=2

for i=1,depth-1 do begin

        oplot,separation,Cxl_means(*,i),psym=i,color=25*i,symsize=2

endfor

!p.charsize=2
!p.charthick=3.5
!x.thick=4
!y.thick=4
!p.thick=3
!p.noerase=0

jpgimg=tvrd()
tvlct,reds,greens,blues,/get
write_png,image_dir+'Longitudinal_Linear_Temporal_X_No_Text'+Date+'-2005.png',$
jpgimg,reds,greens,blues

erase

!p.multi=[0,1,1]
!p.charsize=3
!p.charthick=5
!x.thick=4
!y.thick=4
!p.thick=3.5
!p.noerase=0

plot,separation,Cyl_means(*,0),psym=2,$
               xtitle="Aperture Separation (meters)",ytitle="Covariance (Pixels Squared)",$
               background=white,color=black,$
               yrange=[-1,2],$
               POSITION=[0.10,0.10,0.9,0.9],symsize=2

for i=1,depth-1 do begin

        oplot,separation,Cyl_means(*,i),psym=i,color=25*i,symsize=2

endfor

!p.charsize=2
!p.charthick=3.5
!x.thick=4
!y.thick=4
!p.thick=3
!p.noerase=0

jpgimg=tvrd()
tvlct,reds,greens,blues,/get
write_png,image_dir+'Longitudinal_Linear_Temporal_Y_No_Text'+Date+'-2005.png',$
jpgimg,reds,greens,blues

erase

!p.multi=[0,1,1]
!p.charsize=3
!p.charthick=5
!x.thick=4
!y.thick=4
!p.thick=3.5
!p.noerase=0

plot,separation,Cyt_means(*,0),psym=2,$
               xtitle="Aperture Separation (meters)",ytitle="Covariance (Pixels Squared)",$
               background=white,color=black,$
               yrange=[-1,2],$
               POSITION=[0.10,0.10,0.9,0.9],symsize=2

oplot,.163*(findgen(24)+1),.5*(.163*(findgen(24)+1))^(-1./3),color=black
for i=1,depth-1 do begin

        oplot,separation,Cyt_means(*,i),psym=i,color=25*i,symsize=2

endfor

!p.charsize=2
!p.charthick=3.5
!x.thick=4
!y.thick=4
!p.thick=3
!p.noerase=0

jpgimg=tvrd()
tvlct,reds,greens,blues,/get
write_png,image_dir+'Transverse_Linear_Temporal_Y_No_Text'+Date+'-2005.png',$
jpgimg,reds,greens,blues


set_plot,'X'

stop

end



