pro routine_fft_mass_dimm_ellip_all_nights,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,exam_date=exam_date If (not keyword_set(Date)) then Date='10' If (not keyword_set(exam_date)) then exam_date='1_31' If (not keyword_set(stats_sub_directory)) then stats_sub_directory='stats_'+exam_date+'/' 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=0 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 Date_later=Date root_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+'/ShackHartman/' stats_directory='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+$ '/ShackHartman/'+stats_sub_directory+'/' postscript_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/'+exam_date+'_figs/' nonfiducial=[1,2,3,4,5,6,7,8,9,13,14,17,18,19,20,21,22,23,24,25,$ 26,27,28,29,30,31,32,38,39,45,46,47,48,49,50,$ 51,52,53,54,55,63,64,71,72,73,74,75,$ 76,77,78,79,88,89,98,98,99,100,$ 101,102,103,113,114,123,124,125,$ 126,127,128,138,139,149,150,$ 151,152,163,164,174,175,$ 176,177,188,189,200,$ 201,210,213,214,225,$ 226,238,239,249,$ 251,261,262,263,264,265,266,$ 276,286,287,288,289,290,291,$ 301,302,303,304,305,306,307,308,309,$ 310,311,312,313,314,315,316,$ 317,318,319,320,321,322,323,324,325,$ 326,327,336,337,338,339,340,341,$ 351,361,362,363,364,365,366,$ 376,388,389,$ 401,413,414,425,$ 426,427,438,439,449,450,$ 451,452,454,463,464,473,474,475,$ 476,477,478,488,489,498,499,500,$ 501,502,503,504,513,514,522,523,524,525,$ 526,527,528,529,530,538,539,546,547,548,549,550,$ 551,552,553,554,555,556,563,564,570,571,572,573,574,575,$ 576,577,578,579,580,581,582,588,589,594,595,596,597,598,599,600,$ 601,602,603,604,605,606,607,608,609,610,613,614,617,618,619,620,621,$ 622,623,624,625]-1 ;Extra Index for the scale offset complement,findgen(626),nonfiducial,fiducial fitted=fiducial ;ARRAYS OF FILES offset_files=file_search(stats_directory+'*5132*sub_offsets.txt',count=num_stats_files) ;CONSTANTS kmax=12 num=25 grid_spots=625 index=findgen(625) DIMM_int=36 ;ARRAY REFERENCE 25x25=625 FOR GRID subx=2*indgen(num)-25 ;The x-reference numbers suby=indgen(num)-12 ;The y-reference numbers ;HUGE DATA CUBE x_offset_hor=complexarr(num_stats_files,num,num) y_offset_hor=complexarr(num_stats_files,num,num) x_offset_ver=complexarr(num_stats_files,num,num) y_offset_ver=complexarr(num_stats_files,num,num) ;ffts xfft_array=complexarr(num_stats_files,num,num) yfft_array=complexarr(num_stats_files,num,num) ;Correlations timee1=fltarr(num_stats_files-depth,num,num) timee2=fltarr(num_stats_files-depth,num,num) timee1num=fltarr(num_stats_files-depth,num,num) timee2num=fltarr(num_stats_files-depth,num,num) timeeden=fltarr(num_stats_files-depth,num,num) timee1_arr=fltarr(num,num) timee2_arr=fltarr(num,num) frame_e1=fltarr(num_stats_files) frame_e2=fltarr(num_stats_files) frame_e=fltarr(num_stats_files) frame_thetap=fltarr(num_stats_files) frame_thetam=fltarr(num_stats_files) frame_DIMM=fltarr(1) frame_e_DIMM=fltarr(1) ;Average Ellipticity frame_e1_av=fltarr(kmax) frame_e2_av=fltarr(kmax) frame_e_av=fltarr(kmax) ;Grid for partvelvec x_ref_col=12.5*subx+542 y_ref_col=25.0*suby+460 index=findgen(num*num) gridx=fltarr(num*num) gridy=fltarr(num*num) gridx(index)=x_ref_col(index mod num) gridy(index)=y_ref_col(index/num) ;Indices and such no_bins=8 a=findgen(13)+12 b=findgen(12) subn=[a,b] subm=subn ;Get coordinates for grid readcol,offset_files(0),xcoord,ycoord,format='x,f,x,f,x' ;Get times for each file ts stands for timestamp readcol,root_dir+'5-'+Date+'-Time_stamp.txt',yearts,monthts,datets,hrts,$ minutets,sects,file_namets,$ format='f,f,f,f,f,f,a' ;Get the DIMM numbers so we don't have to use the function over and over DIMM_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/DIMM/' readcol,DIMM_dir+'DIMM_numbers.txt',yeard,monthd,dated,hrd,minuted,secd,fwhm,$ meandx,mstrehlstrlt2,mstrehlstr2t2,$ format='(d,d,d,d,d,d,f,f,f,f)' ;Number of lines in file is 1539 DIMM=dblarr(5,1537) for i=0,1536 do begin juldate,[yeard(i),monthd(i),dated(i),hrd(i),minuted(i),secd(i)],jd DIMM(0,i)=fwhm(i) DIMM(1,i)=meandx(i) DIMM(2,i)=mstrehlstrlt2(i) DIMM(3,i)=mstrehlstr2t2(i) DIMM(4,i)=jd endfor ;FILL THE DATA CUBES dates=['10','11','12'] for date_index=0,2 do begin ;Do this for each date separately Date=dates(date_index) root_dir='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+'/ShackHartman/' stats_directory='/nfs/slac/g/ki/ki08/lsst/CPanalysis/2005-05-'+Date+$ '/ShackHartman/'+stats_sub_directory+'/' offset_files=file_search(stats_directory+'*5132*sub_offsets.txt',count=num_stats_files) ;Get times for each file ts stands for timestamp readcol,root_dir+'5-'+Date+'-Time_stamp.txt',yearts,monthts,datets,hrts,$ minutets,sects,file_namets,$ format='f,f,f,f,f,f,a' for file_number=0,num_stats_files-depth-1 do begin ;Take the results from the offset.txt files and fill the cube readcol,offset_files(file_number),x_offset,y_offset,format='X,X,f,X,f' ;Take in time stamp and look for range ;DIMM readings are spaced about 1:12 seconds apart so look for one ;in this interval ;Get upper limit if sects(file_number)+DIMM_int ge 60 then begin if minutets(file_number)+1 ge 60 then begin hr_upper=hrts(file_number)+1 min_upper=0 sec_upper=sects(file_number)-60+DIMM_int endif else begin hr_upper=hrts(file_number) min_upper=minutets(file_number)+1 sec_upper=sects(file_number)-60+DIMM_int endelse endif else begin hr_upper=hrts(file_number) min_upper=minutets(file_number) sec_upper=sects(file_number)+DIMM_int endelse ;Get lower limit if sects(file_number)-DIMM_int lt 0 then begin if minutets(file_number)-1 lt 0 then begin hr_lower=hrts(file_number)-1 min_lower=59 sec_lower=sects(file_number)+60-DIMM_int endif else begin hr_lower=hrts(file_number) min_lower=minutets(file_number)-1 sec_lower=sects(file_number)+60-DIMM_int endelse endif else begin hr_lower=hrts(file_number) min_lower=minutets(file_number) sec_lower=sects(file_number)-DIMM_int endelse if hr_lower ne hr_upper then begin region=where(((minuted gt min_lower) and (hrd eq hr_lower) $ and (datets(file_number) eq dated)) or $ ((minuted lt min_upper) and (hrd eq hr_upper) $ and (datets(file_number) eq dated))) endif else begin region=where(((minuted ge min_lower) and (hrd eq hr_lower) $ and (datets(file_number) eq dated)) and $ ((minuted le min_upper) and (hrd eq hr_upper) $ and (datets(file_number) eq dated))) endelse if region(0) ne -1 then begin startreg=region(0) stopreg=region(n_elements(region)-1) DIMM_Vals=DIMM(*,startreg:stopreg) endif else begin b=fltarr(5,1) DIMM_Vals=b endelse ;Obtain the difference ordered in COLUMN, ROW between centroid and grid point x_offset(where(x_offset eq -10))=0 y_offset(where(y_offset eq -10))=0 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) timee1num(file_number,*,*)=x_offset_ver(file_number,*,*)*$ x_offset_ver(file_number+depth,*,*)-$ y_offset_ver(file_number,*,*)*$ y_offset_ver(file_number+depth,*,*) timee2num(file_number,*,*)=(x_offset_ver(file_number,*,*)*$ y_offset_ver(file_number+depth,*,*)$ +x_offset_ver(file_number+depth,*,*)$ *y_offset_ver(file_number,*,*)) timeeden(file_number,*,*)=(x_offset_ver(file_number,*,*)^2+$ y_offset_ver(file_number,*,*)^2) timee1temp=timee1num(file_number,*,*) timee2temp=timee2num(file_number,*,*) timeedtemp=timeeden(file_number,*,*) frame_e1(file_number)=mean(timee1temp(where(timee1temp ne 0)))/$ mean(timeedtemp(where(timee1temp ne 0))) frame_e2(file_number)=mean(timee2temp(where(timee2temp ne 0)))/$ mean(timeedtemp(where(timee2temp ne 0))) frame_e(file_number)=sqrt(frame_e1(file_number)^2+frame_e2(file_number)^2) if frame_e2(file_number) < 0 then begin frame_thetap(file_number)=-asin(sqrt(.5*(1-sqrt(1-frame_e2(file_number)^2/$ frame_e(file_number)^2)))) endif else begin frame_thetap(file_number)=asin(sqrt(.5*(1-sqrt(1-frame_e2(file_number)^2/$ frame_e(file_number)^2)))) endelse ;Match the ellipticity with a DIMM measurement if DIMM_vals(0,0) gt 0 then begin print,DIMM_vals(*,0) if frame_DIMM(0) eq 0 then begin frame_DIMM(0)=DIMM_vals(0,0) frame_e_DIMM(0)=frame_e(file_number) endif else begin frame_DIMM=[frame_DIMM,DIMM_vals(0,0)] frame_e_DIMM=[frame_e_DIMM,frame_e(file_number)] endelse endif endfor endfor bin_max=1.4 bin_min=.5 bin_width=.1 no_bins=((bin_max-bin_min)+bin_width)/bin_width e_avg=fltarr(no_bins) DIMM_histogram=histogram(frame_DIMM,BINSIZE=bin_width,min=bin_min,max=bin_max,$ locations=loc_dimm_bins,reverse_indices=DIMM_ind) for i=0, no_bins-2 do begin rel_indices=DIMM_ind(DIMM_ind(i):DIMM_ind(i+1)-1) e_avg(i)=mean(frame_e_DIMM(rel_indices)) endfor set_plot,'ps' device,filename=Postscript_dir+'Mass_Dimm_E_Scatter_plot_All_nights'+$ Date_later+'.ps' loadct,0 ;load color table 39 device,/color ;allow color on the postscript device,ysize=8.5,/inches ;Height of plot in y device,xsize=11.0,/inches ;Width of plot in x device,yoffset=1.0,/inches ;Y position of lower left corner white='FFFFFF'x black='000000'x !P.CHARSIZE=1.0 !P.THICK=4. !p.multi=[0,1,1] lengthe=size(frame_DIMM) plot,frame_e_DIMM,frame_DIMM,psym=2,xtitle='ellipticity',ytitle='DIMM vals' xyouts,.2,.1,'Number of points='+strtrim(lengthe(1),2),/normal device,/close set_plot,'x' stop end