;***************************************************************** ;******************** EXTINCTION CORRECTION ********* ;***************************************************************** pro extinction, photin, photout, SHOWPLOT=showplot COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON JDandAIRMASS, result_jd, airmass COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON COLOR, colors dim=size(photin) ;*** dim(1)=image# dim(2)=star# Nimage=dim(1) Nstar=dim(2) wset,DRAW2_Id range=[min(photin(*,0)-mean(photin(*,0)))*4,max(photin(*,0)-mean(photin(*,0)))*4] coef=dblarr(Nstar,2) weigth=dblarr(Nstar) for i=0.,Nstar-1 do begin coef(i,*)=LADFIT(airmass,photin(*,i)-mean(photin(*,i)),ABSDEV=absdev,/DOUBLE) weigth(i)=1/absdev if keyword_set(showplot) then begin if (i eq 0) then begin plot,airmass,photin(*,i)-mean(photin(*,i)),psym=4,xtitle='Airmass',ytitle='instr. mag - average instr. mag',title='Bouguer Plot',xstyle=1, ystyle=2,yrange=range endif else begin oplot,airmass,photin(*,i)-mean(photin(*,i)),psym=4,color=65000/Nstar*i endelse ;print,coef(i,0),coef(i,1),weigth(i) endif endfor weigth=weigth*use_comp ;**** eliminate not used stars k=total(coef(*,1)*weigth)/total(weigth) ccoef=LADFIT(colors,coef(*,1),/DOUBLE) ;*** color dependence of ext.coef if keyword_set(showplot) then xyouts,0.15,0.8,'k ='+strtrim(string(ccoef(0)),2)+'+ color x '+strtrim(string(ccoef(1)),2),/NORMAL,charsize=1.3 ;*********** do the correction m2=m1-k*X **************************** for i=0.,Nimage-1 do begin for j=0., Nstar-1 do begin ck=POLY(colors(j),ccoef) photout(i,j)=photin(i,j)-ck*airmass(i) endfor endfor return end ;******************************************************************************** ;****** computes the COMPARISON CURVE and substract from actual star ********* ;******************************************************************************** pro comparison, SHOWPLOT=showplot COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON JDandAIRMASS, result_jd, airmass COMMON PHOTO, photometry, var, comp, skyval COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON INFO_STATE, state photout=photometry if (use_extinc eq 1) then begin if keyword_set(showplot) then begin extinction, photometry, photout, /SHOWPLOT endif else begin extinction, photometry, photout endelse endif dim=size(photout) ;*** dim(1)=image# dim(2)=star# Nimage=dim(1) Nstar=dim(2) comp=dblarr(Nimage) var=dblarr(Nimage) array=dblarr(Nstar-1) ;********* weigthed mean *************** weigth=dblarr(Nstar) Dvalue=dblarr(Nstar) photout_m=photout offset=mean(photout(*,0))-offset_DEFAULT for i=0, Nstar-1 do begin photout_m(*,i)=photout_m(*,i)-mean(photout_m(*,i)) ptp=dblarr(Nimage-1) for j=1.,Nimage-1 do begin ptp(j-1)=(photout(j,i)-photout(j-1,i))^2 endfor sig=stddev(photout(*,i)) if (sig ne 0.) then Dvalue(i)=sig/sqrt(2*mean(ptp)) else Dvalue(i)=1. endfor counts=10^(0.4*(photout_m)) if keyword_set(showplot) then begin print,'*********************** STAR ',var_id+1,'**************************' print,'offset ',offset print,'star# mean mag weight DValue weight/DValue' print,'--------------------------------------------------------------------------' endif for i=0, Nstar-1 do begin sig=variance(counts(*,i)) if (sig ne 0.) then weigth(i)=1/sig else weigth(i)=0. ;*** weigth=1/varianz if keyword_set(showplot) then print,i+1,mean(photout(*,i)),weigth(i),Dvalue(i),weigth(i)/Dvalue(i) endfor weigth=weigth/Dvalue ;**** include Dvalue weigth(var_id)=0. weigth=weigth*use_comp ;**** eliminate not used stars weigth=weigth/total(weigth) ;**** normalize to 1 for i=0.,Nimage-1 do begin comp(i)=2.5*alog10(total(counts(i,*)*weigth));/total(weigth)) if (use_offset eq 1) then begin var(i)=photout(i,var_id)-comp(i)-offset endif else begin var(i)=photout(i,var_id)-comp(i) endelse endfor if keyword_set(showplot) then begin print,'final weigth in %' for i=0, Nstar-1 do begin print,i+1,weigth(i)*100 endfor print,'---------------------------------------------' WIDGET_CONTROL, state.status_text, SET_VALUE='mean '+string(format='(f7.3)',mean(var))+'mag +/-'+string(format='(f5.1)',stddev(var)*1e3)+'mmag Dvalue='+string(format='(f5.2)',Dvalue(var_id)) x=result_jd-min(result_jd) a=POLY_FIT(x,comp,3,yfit=fit) res=comp-fit sigma_comp=stddev(res) comp_smooth=smooth(comp,3) wset,DRAW3_Id sub_array=extrac(photout,0,0,Nimage,1) sub_array=sub_array-mean(sub_array) ymin=5*min(sub_array) ymax=5*max(sub_array) xaxis=(result_jd-floor(min(result_jd))) xmin=min(xaxis) xmax=max(xaxis) plot,xaxis,sub_array, yrange=[ymin,ymax], xstyle=1;, psym=2 for i=1.,Nstar-1 do begin sub_array=extrac(photout,0,i,Nimage,1) sub_array=sub_array-mean(sub_array) oplot,xaxis,sub_array, color=65000/Nstar*i;, psym=2 endfor oplot,xaxis,(comp-mean(comp)), psym=2 oplot,xaxis,(comp_smooth-mean(comp_smooth)), psym=4 xyouts,xmin+0.05*(xmax-xmin),ymax-0.1*abs(ymax-ymin),'Cp +/- '+string(format='(f5.1)',sigma_comp*1e3)+'mmag',charsize=1.3 endif return end ;***************************************************************** ;******************** DEFINE APERTUR-RADII ****************** ;***************************************************************** pro define_apradius COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON RADII, apradii COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT apphot, phot mi=min(phot(2,*),hellster) print,'star# mean mag apertur' print,'-----------------------------------' for i=0,stars-1 do begin if (i ne hellster) then begin dm=phot(2,i)-phot(2,hellster) if (phot(2,i) lt 99) then begin apradii(i,0)=apertur_DEFAULT-round(dm*anu_fact_DEFAULT) endif else begin apradii(i,0)=apertur_DEFAULT/2. endelse endif else begin apradii(i,0)=apertur_DEFAULT endelse print,i+1,phot(2,i),fix(apradii(i,0)) endfor apradii(*,1)=apradii(*,0)+1 apradii(*,2)=apradii(*,1)+sky_wi_DEFAULT return end ;***************************************************************** ;******************** AP Phot ******************************* ;***************************************************************** pro apphot, phot COMMON DATA, im, im_size, jd, airm, expt COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADII, apradii phot=dblarr(3,stars) breite=max(apradii(*,2))*2+5 for i=0,stars-1 do begin sub_im=extrac(im, coord_array(0,i)-breite/2,coord_array(1,i)-breite/2, breite, breite) ap_r=apradii(i,0) sky_in=apradii(i,1) sky_out=apradii(i,2) apertur, sub_im, 0, ap_r, counts, star_px apertur_sky, sub_im, sky_in, sky_out, sky counts_cor=(counts-sky*star_px)/expt ;*** correct for sky and normalize to 1 sec exposure time if (counts_cor gt 0) then begin mag=20-2.5*alog10(counts_cor) endif else begin print,'counts are less then zero for star ',i+1,counts,sky,coord_array(0,i),coord_array(1,i) mag=99.999 endelse phot(0,i)=counts phot(1,i)=sky phot(2,i)=mag endfor return end ;***************************************************************** ;******************** APERTUR **************************** ;***** bestimmt die counts innerhalb eines Kreisringes *********** ;***************************************************************** pro apertur, im, r_in, r_out, counts, px_nr dim=size(im) Nx=dim(1) Ny=dim(2) rmask=dblarr(Nx,Ny) for x=0,Nx-1 do begin for y=0,Ny-1 do begin rmask(x,y)=sqrt((x-Nx/2)^2+(y-Ny/2)^2) endfor endfor inside=where((rmask le r_out) and (rmask ge r_in),px_nr) if (px_nr gt 0) then counts=total(im[inside]) else counts=0. return end ;***************************************************************** ;******************** APERTUR SKY ************************* ;***** bestimmt die sky-counts innerhalb eines Kreisringes ******* ;***************************************************************** pro apertur_sky, im, r_in, r_out, counts COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id dim=size(im) Nx=dim(1) Ny=dim(2) skyim=dblarr(Nx,Ny) rmask=dblarr(Nx,Ny) for x=0,Nx-1 do begin for y=0,Ny-1 do begin rmask(x,y)=sqrt((x-Nx/2)^2+(y-Ny/2)^2) endfor endfor inside=where((rmask le r_out) and (rmask ge r_in)) if (inside(0) ne -1) then begin skyim(inside)=im(inside) i=0. cnt=1. stat=0. while ((cnt ne 0.) and (i le 5)) do begin nonzero=where(skyim ne 0.) if (nonzero(0) gt -1) then begin arr=skyim(nonzero) stat=moment(arr, sdev=sdev) settozero=where((abs(skyim-median(arr)) ge 3*sdev) and (skyim ne 0.), cnt) if (cnt ne 0) then skyim(settozero)=0. endif i=i+1 endwhile counts=stat(0) endif else begin counts=0. endelse return end ;***************************************************************** ;******************** PLOT STAR CONTOUR *********************** ;***************************************************************** pro star_plot COMMON DATA, im, im_size, jd, airm, expt COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADII, apradii COMMON PHOTO, photometry, var, comp, skyval breite=max(apradii(*,2))*2+5 sub_im=extrac(im, coord_array(0,star_nr)-breite/2,coord_array(1,star_nr)-breite/2, breite, breite) r_ap=apradii(star_nr,0) r_sky_in=apradii(star_nr,1) r_sky_out=apradii(star_nr,2) dim=size(sub_im) Nx=dim(1) Ny=dim(2) rmask=dblarr(Nx,Ny) ap_im=sub_im sky_im=sub_im for i=0., Nx-1 do begin for j=0., Ny-1 do begin rmask(i,j)=sqrt((j-Ny/2)^2+(i-Nx/2)^2) endfor endfor if (r_ap ne r_sky_in) then sub_im(where((rmask gt r_ap) and (rmask lt r_sky_in) or (rmask gt r_sky_out)))=0. sky_im(where((rmask gt r_sky_out) or (rmask lt r_sky_in)))=0. ap_im(where(rmask gt r_ap))=0. wset, DRAW2_Id case show_aperture of 0:shade_surf, sub_im, charsize=2, ax=60 1:shade_surf, ap_im, charsize=2, ax=60 2:shade_surf, sky_im, charsize=2, ax=60 endcase xyouts,0.05,0.20,/norm,'#'+string(format='(i3)',star_nr+1), charsize=1.5 xyouts,0.05,0.15,/norm,'x/y '+string(format='(i4)',coord_array(0,star_nr))+'/'+string(format='(i4)',coord_array(1,star_nr)), charsize=1.3 xyouts,0.05,0.10,/norm,'Apertur '+string(format='(i2)',apradii(star_nr,0))+' px', charsize=1.3 xyouts,0.05,0.05,/norm,'Sky '+string(format='(f6.1)',skyval(star_nr))+' cnt/px', charsize=1.3 return end ;***************************************************************** ;******************** CENTER ***************************** ;***************************************************************** pro center, sub_im, select_coord, center_coord dim=size(sub_im) Nx=dim(1) Ny=dim(2) sub_gauss=GAUSS2DFIT(sub_im,a, /tilt) center_coord(0)=(a(4)-Nx/2+select_coord(0)) center_coord(1)=(a(5)-Ny/2+select_coord(1)) return end ;***************************************************************** ;******************** PRE CENTER ************************* ;***************************************************************** pro pre_center COMMON DATA, im, im_size, jd, airm, expt COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON PIC, meanimage new_coord=dblarr(2) delta_coord=dblarr(2) sub_im=extrac(im, coord_array_orig(0,0)-precenter_box/2, coord_array_orig(1,0)-precenter_box/2, precenter_box, precenter_box) center, sub_im, coord_array_orig(*,0), new_coord ;1sten Stern auf maximum zentrieren coord_array(*,0)=new_coord delta_coord=coord_array(*,0)-coord_array_orig(*,0) for i=1, stars-1 do begin coord_array(*,i)=coord_array_orig(*,i)+delta_coord endfor x=findgen(im_size(1))+delta_coord(0) y=findgen(im_size(2))+delta_coord(1) shiftedimage=INTERPOLATE(im,x,y,/GRID) meanimage=meanimage+shiftedimage return end ;***************************************************************** ;******************** EXTRACT JD ************************* ;***************************************************************** pro extract_jd, header, jd, expt COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT date = FXPAR(header,datekey_string) time = FXPAR(header,timekey_string) expt = double(FXPAR(header,exptimekey_string)) d=strsplit(date,'-',/extract) t=strsplit(time,':',/extract) jd=JULDAY(d(1),d(2),d(0),t(0),t(1),t(2))-2400000. return end ;***************************************************************** ;*********************** CALCULATE AIRMASS ******************** ;***************************************************************** pro calcairmass, jd, airm COMMON OBSPAR, ra, de, lon, lat ;***** parameter for airmass in degree (and meter) ct2lst, lst, lon, 0, jd+2400000. ; get LST (in hours) CT2LST, Lst, Lng, Tz, Time, [Day, Mon, Year] lst = lst*15 ; LST (in degree) ha = lst - ra ; Find hour angle (in DEGREES) w = where(ha LT 0) if w[0] ne -1 then ha[w] = ha[w] + 360. ha = ha mod 360. hadec2altaz, ha, de, lat, alt, az, WS=WS ; spherical trig to get APPARENT alt,az. airm=1/cos((90-alt)/!RADEG ) ; get airmass print,'airmass', airm, ' altitude [d]', alt return end ;***************************************************************** ;******* CONVERT RA, DE, LON, LAT from string to double ******* ;***************************************************************** pro setobservationparameter COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string COMMON OBSPAR, ra, de, lon, lat ;***** parameter for airmass in degree (and meter) ;******** RA ***************** b=strarr(strlen(ra_string)) for i=0,strlen(ra_string)-1 do b(i)=strmid(ra_string,i,1) pos=where(b eq ':') ra=double(strmid(ra_string,0,pos(0)))+double(strmid(ra_string,pos(0)+1,pos(1)-pos(0)-1))/60+double(strmid(ra_string,pos(1)+1,strlen(ra_string)-pos(1)-1))/3600 ra=ra*15 ;******** DEC **************** b=strarr(strlen(de_string)) for i=0,strlen(de_string)-1 do b(i)=strmid(de_string,i,1) pos=where(b eq ':') if (strmid(de_string,0,1) eq '-') then begin de=double(strmid(de_string,0,pos(0)))-double(strmid(de_string,pos(0)+1,pos(1)-pos(0)-1))/60-double(strmid(de_string,pos(1)+1,strlen(de_string)-pos(1)-1))/3600 endif else begin de=double(strmid(de_string,0,pos(0)))+double(strmid(de_string,pos(0)+1,pos(1)-pos(0)-1))/60+double(strmid(de_string,pos(1)+1,strlen(de_string)-pos(1)-1))/3600 endelse ;print,ra,de ;******** LONGITUDE **************** b=strarr(strlen(lon_string)) for i=0,strlen(lon_string)-1 do b(i)=strmid(lon_string,i,1) pos=where(b eq ':') if (strmid(lon_string,0,1) eq '-') then begin lon=double(strmid(lon_string,0,pos(0)))-double(strmid(lon_string,pos(0)+1,pos(1)-pos(0)-1))/60-double(strmid(lon_string,pos(1)+1,strlen(lon_string)-pos(1)-1))/3600 endif else begin lon=double(strmid(lon_string,0,pos(0)))+double(strmid(lon_string,pos(0)+1,pos(1)-pos(0)-1))/60+double(strmid(lon_string,pos(1)+1,strlen(lon_string)-pos(1)-1))/3600 endelse lon=lon*15 ;******** LATITUDE **************** b=strarr(strlen(lat_string)) for i=0,strlen(lat_string)-1 do b(i)=strmid(lat_string,i,1) pos=where(b eq ':') if (strmid(lat_string,0,1) eq '-') then begin lat=double(strmid(lat_string,0,pos(0)))-double(strmid(lat_string,pos(0)+1,pos(1)-pos(0)-1))/60-double(strmid(lat_string,pos(1)+1,strlen(lat_string)-pos(1)-1))/3600 endif else begin lat=double(strmid(lat_string,0,pos(0)))+double(strmid(lat_string,pos(0)+1,pos(1)-pos(0)-1))/60+double(strmid(lat_string,pos(1)+1,strlen(lat_string)-pos(1)-1))/3600 endelse ;print,lon,lat return end ;***************************************************************** ;******************** FITS read ************************** ;***************************************************************** pro fits_read, full_filename COMMON INFO_STATE, state COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id COMMON FITS, path, images, image_counter COMMON DATA, im, im_size, jd, airm, expt COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON BIAS, biasim COMMON FLAT, flatim COMMON WINDOWSIZE, xs, ys fits_filename=strmid(full_filename, strlen(path),strlen(full_filename)-strlen(path)) s = strpos(fits_filename(0),'.fits') filename = strmid(fits_filename,0,s ) ;WIDGET_CONTROL, state.dat_file_text, SET_VALUE=filename ;******************************************************* ;WIDGET_CONTROL, state.status_text, SET_VALUE='status: ------ reading fits-file -------' if (fitslist eq 0) then begin im=mrdfits(full_filename, 0, header, /DSCALE) ; fits-file in einlesen endif else begin im=mrdfits(fits_filename, 0, header, /DSCALE) ; fits-file in einlesen (fitslist includes path) endelse if (mean(im) lt 0) then im=im-min(im) if (use_bias eq 1) then im=im-biasim ;*** subtract BIAS if (use_flat eq 1) then im=im/flatim ;*** devide by FLAT im_size=size(im) extract_jd, header, jd, expt ;******************************************************* if (graph_out eq 0) then begin wset, DRAW1_Id tvscl, congrid(im, xs, 2.5*ys) ; ausgabe von im endif ;******************************************************* return end ;***************************************************************** ;******************** SAVE PREFERENCES ************************** ;***************************************************************** pro save_preferences, pref_filename COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string openw,10, pref_filename printf,10, filefilter printf,10, datekey_string printf,10, timekey_string printf,10, ra_string printf,10, de_string printf,10, lat_string printf,10, lon_string printf,10, biasname printf,10, flatname printf,10, precenter_box printf,10, apertur_DEFAULT printf,10, sky_in_DEFAULT printf,10, sky_wi_DEFAULT printf,10, anu_fact_DEFAULT printf,10, offset_DEFAULT close,10 return end ;***************************************************************** ;******************** LOAD PREFERENCES ************************** ;***************************************************************** pro load_preferences, pref_filename COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string openr,10, pref_filename readf,10, filefilter readf,10, datekey_string readf,10, timekey_string readf,10, exptimekey_string readf,10, ra_string readf,10, de_string readf,10, lat_string readf,10, lon_string readf,10, biasname readf,10, flatname readf,10, precenter_box readf,10, apertur_DEFAULT readf,10, sky_in_DEFAULT readf,10, sky_wi_DEFAULT readf,10, anu_fact_DEFAULT readf,10, offset_DEFAULT close,10 return end ;***************************************************************** ;******************** SAVE COORD FILE *************************** ;***************************************************************** pro save_coordinates, coo_filename COMMON COORD, coord_array, coord_array_orig, stars, star_nr openw,10, coo_filename for i=0., stars-1 do printf,10,round(coord_array_orig(0,i)),round(coord_array_orig(1,i)) close,10 return end ;***************************************************************** ;******************** LOAD COORD FILE *************************** ;***************************************************************** pro load_coordinates, coo_filename COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON DATA, im, im_size, jd, airm, expt COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON MARK, cross COMMON COLOR, colors stars=0. str='' openr,10, coo_filename while (not eof(10)) do begin readf,10,str stars=stars+1 endwhile close,10 indata=replicate({x:0.0, y:0.0, color:0.0},stars) colors=dblarr(stars) coord_array=dblarr(2,stars) coord_array_orig=dblarr(2,stars) openr,10, coo_filename readf,10,indata close,10 coord_array_orig(0,*)=indata.x coord_array_orig(1,*)=indata.y colors=indata.color ;******* mark the stars with a cross wset, DRAW1_Id for i=0.,stars-1 do begin x=coord_array_orig(0,i)*500/float(im_size(1)) y=coord_array_orig(1,i)*500/float(im_size(2)) tvscl,congrid(cross,15,15),x-5,y-8, /device, channel=3 endfor return end ;***************************************************************** ;******************** HELIOCENTRIC CORRECTION ******************* ;***************************************************************** pro jd_helio COMMON OBSPAR, ra, de, lon, lat ;***** parameter for airmass in degree (and meter) COMMON JDandAIRMASS, result_jd, airmass COMMON HELIOCORR, result_hjd result_hjd=dblarr(N_ELEMENTS(result_jd)) for i=0,N_ELEMENTS(result_jd)-1 do begin result_hjd(i)=HELIO_JD(result_jd(i),ra,de) endfor return end ;***************************************************************** ;******************** SAVE RESULT FILE ************************* ;***************************************************************** pro save_result, res_filename COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON FITS, path, images, image_counter COMMON JDandAIRMASS, result_jd, airmass COMMON PHOTO, photometry, var, comp, skyval COMMON HELIOCORR, result_hjd jd_helio ;*** do the heliocentric correction openw,20, res_filename ;**** HJD var comp airmass **** for i=0.,image_counter-1 do begin str=string(format='(f11.6)',result_hjd(i)-5e4)+string(var(i))+string(comp(i))+string(airmass(i)) printf,20,str endfor close,20 return end ;***************************************************************** ;******************** SAVE ALL STARS ************************* ;***************************************************************** pro save_allstars, resall_filename COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON FITS, path, images, image_counter COMMON PHOTO, photometry, var, comp, skyval COMMON HELIOCORR, result_hjd jd_helio ;*** do the heliocentric correction dim=size(photometry) Nimage=dim(1) Nstar=dim(2) output=dblarr(Nimage,Nstar) old_var_id=var_id for var_id=0., Nstar-1 do begin comparison output(*,var_id)=var endfor var_id=old_var_id openw,30, resall_filename for i=0.,Nimage-1 do begin str=string(format='(f11.6)',result_hjd(i)-5e4) for j=0.,Nstar-1 do begin str=str+string(output(i,j)) endfor printf,30,str endfor close,30 mwrfits,output,resall_filename+'.fit',/CREATE print,'write is finished' return end ;***************************************************************** ;******************** DELETE SELECTED POINT ****************** ;***************************************************************** pro delete_point, pointID COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON FITS, path, images, image_counter COMMON PHOTO, photometry, var, comp, skyval COMMON JDandAIRMASS, result_jd, airmass COMMON ORIGPHOTO, orig_photometry, orig_result_jd , orig_airmass ;******* save original data ******* orig_photometry=photometry ;*** dim(1)=image# dim(2)=star# orig_result_jd=result_jd orig_airmass=airmass image_counter=image_counter-1 dim=size(photometry) Nimages=dim(1) index=indgen(Nimages) photometry=photometry(where(index ne pointID),*) ;*** delete selected image result_jd=result_jd(where(index ne pointID)) airmass=airmass(where(index ne pointID)) comparison, /SHOWPLOT ;*** do procedure again plot_variable delete_done=1 return end ;***************************************************************** ;****************** UNDELETE SELECTED POINT ****************** ;***************************************************************** pro undelete_point, pointID COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON FITS, path, images, image_counter COMMON PHOTO, photometry, var, comp, skyval COMMON JDandAIRMASS, result_jd, airmass COMMON ORIGPHOTO, orig_photometry, orig_result_jd , orig_airmass ;******* restore original data ******* image_counter=image_counter+1 photometry=orig_photometry result_jd=orig_result_jd airmass=orig_airmass comparison, /SHOWPLOT plot_variable delete_done=0 return end ;***************************************************************** ;******************** LOAD BIAS FILE ************************* ;***************************************************************** pro load_bias COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON FITS, path, images, image_counter COMMON BIAS, biasim biasim=mrdfits(path+biasname) print,'meanbias ',mean(biasim) return end ;**************************************************************** ;******************** PLOT VARIABLE ************************** ;***************************************************************** pro plot_variable COMMON JDandAIRMASS, result_jd, airmass COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON PHOTO, photometry, var, comp, skyval wset, DRAW4_Id range=[min(var)-0.1*(max(var)-min(var)),max(var)+0.1*(max(var)-min(var))] xaxis=(result_jd-floor(min(result_jd))) plot,xaxis,var, yrange=range, psym=2,xstyle=1, ystyle=1,xtitle='JD - '+strtrim(floor(min(result_jd)),2) return end ;**************************************************************** ;******************** LOAD FLAT FILE ************************* ;***************************************************************** pro load_flat COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON FITS, path, images, image_counter COMMON FLAT, flatim flatim=mrdfits(path+flatname,/dscale) print,'meanflat ',mean(flatim) return end ;***************************************************************** ;******************** DEFINE PREFERENCES ************* ;***************************************************************** pro pref COMMON INFO_STATE, state COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string base=widget_base(title='Preferences', /col) frame1 = widget_base(base, /row) frame1_l = widget_base(frame1, /col) frame1_r = widget_base(frame1, /col) text1=widget_label(frame1_l,value='date keyword', /align_left, ysize=30) datekey_text = widget_text(frame1_r,value=datekey_string, /editable, uvalue='datekey') text2=widget_label(frame1_l,value='time keyword', /align_left, ysize=30) timekey_text = widget_text(frame1_r,value=timekey_string, /editable, uvalue='timekey') text13=widget_label(frame1_l,value='exposure time keyword', /align_left, ysize=30) timekey_text = widget_text(frame1_r,value=exptimekey_string, /editable, uvalue='exptimekey') text9=widget_label(frame1_l,value= 'right ascension (h:m:s,2000)', /align_left, ysize=30) ra_text = widget_text(frame1_r,value=ra_string, /editable, uvalue='RADEFINE') text10=widget_label(frame1_l,value='declination (d:m:s,2000)', /align_left, ysize=30) de_text = widget_text(frame1_r,value=de_string, /editable, uvalue='DEDEFINE') text12=widget_label(frame1_l,value='observatory latitude (d:m:s)', /align_left, ysize=30) lat_text = widget_text(frame1_r,value=lat_string, /editable, uvalue='LATDEFINE') text11=widget_label(frame1_l,value='observatory longitude (h:m:s, E)', /align_left, ysize=30) lon_text = widget_text(frame1_r,value=lon_string, /editable, uvalue='LONDEFINE') text8=widget_label(frame1_l,value='bias frame', /align_left, ysize=30) timekey_text = widget_text(frame1_r,value=biasname, /editable,uvalue='setbiasname') text9=widget_label(frame1_l,value='flat field frame', /align_left, ysize=30) timekey_text = widget_text(frame1_r,value=flatname, /editable,uvalue='setflatname') text3=widget_label(frame1_l,value='center box [px]', /align_left, ysize=30) precenter_text = widget_text(frame1_r,value=string(precenter_box), /editable, uvalue='precenterbox') text4=widget_label(frame1_l,value='apertur radius [px]', /align_left, ysize=30) apertur_text = widget_text(frame1_r,value=string(apertur_DEFAULT), /editable, uvalue='apertursize') text5=widget_label(frame1_l,value='inner sky annulus [px]', /align_left, ysize=30) apertur_text = widget_text(frame1_r,value=string(sky_in_DEFAULT), /editable, uvalue='skyinsize') text6=widget_label(frame1_l,value='sky annulus widht [px]', /align_left, ysize=30) apertur_text = widget_text(frame1_r,value=string(sky_wi_DEFAULT), /editable, uvalue='skywisize') text14=widget_label(frame1_l,value='annulus factor [px/mag]', /align_left, ysize=30) apertur_text = widget_text(frame1_r,value=string(anu_fact_DEFAULT), /editable, uvalue='anfactor') text13=widget_label(frame1_l,value='magnitude of star #1 [mag]', /align_left, ysize=30) offset_text = widget_text(frame1_r,value=string(offset_DEFAULT), /editable, uvalue='offsetmag') quit_button = widget_button(frame1, value = 'Close', uvalue='QUIT', xsize=y) state = { timekey_text:timekey_text, $ datekey_text:datekey_text, $ precenter_text:precenter_text, $ apertur_text:apertur_text } widget_control, base,SET_UVALUE=state, /realize xmanager, 'podex', base return end ;***************************************************************** ;*********** DEFINE STARS FOR COMPARISON ************* ;***************************************************************** pro compselect COMMON INFO_STATE, state COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset base=widget_base(title='Select for Comp', /col,xoffset=1100,yoffset=300,/SCROLL,Y_SCROLL_SIZE=500) Nstars=N_elements(use_comp) button=lonarr(Nstars) text=widget_label(base, value = 'used for Comp', /ALIGN_LEFT) for i =0,Nstars-1 do begin frame=widget_base(base, /NONEXCLUSIVE) button(i)=widget_button(frame,value =string(i+1),/ALIGN_RIGHT , uvalue='SELECTFORCOMP',ysize=15 ) endfor quit_button = widget_button(base, value = 'Quit', uvalue='QUIT', ysize=40) state = {button:button} for i =0,Nstars-1 do begin if (use_comp(i) eq 1) then widget_control, state.button(i), /SET_BUTTON endfor widget_control, base,SET_UVALUE=state, /realize xmanager, 'podex', base end ;***************************************************************** ;******************** Event Handler ***************************** ;***************************************************************** pro podex_event, ev COMMON INFO_STATE, state COMMON DATA, im, im_size, jd, airm, expt COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON MARK, cross COMMON FITS, path, images, image_counter COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON JDandAIRMASS, result_jd, airmass COMMON FILES, list_file, coord_file, direct_select COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON PHOTO, photometry, var, comp, skyval COMMON RADII, apradii COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string COMMON PIC, meanimage WIDGET_CONTROL, ev.top, GET_UVALUE=state WIDGET_CONTROL, ev.id, GET_UVALUE = eventvalue case eventvalue of 'LOAD-DAT': begin path='' full_filename = DIALOG_PICKFILE(/READ,TITLE='Select Fits File List', $ FILTER = filefilter, get_path=path) str=strmid(full_filename,strlen(path)) WIDGET_CONTROL, state.dat_file_text,SET_VALUE=str if (full_filename ne '') then begin list_file=1 ;*** list-file is choosen str='' image_counter=0 openr, 10, full_filename while (not eof(10)) do begin readf,10,str image_counter=image_counter+1 endwhile close,10 images=strarr(image_counter) openr,10, full_filename for i=0.,image_counter-1 do begin readf,10,str images(i)=str ;print,images(i) endfor close,10 full_filename=path+images(0) fits_read,full_filename endif end 'SAVE-COO': begin if ((coord_file eq 0) and (list_file eq 1)) then begin coo_path='' coo_filename = DIALOG_PICKFILE(/WRITE,TITLE='Save Coordinate File', $ FILTER = path + '*', get_path=coo_path, file='coord') if (coo_filename ne '') then save_coordinates, coo_filename endif else begin text=DIALOG_MESSAGE('no changes in Coordinates File') endelse end 'SAVE-PREF': begin if (list_file eq 1) then begin pref_path='' pref_filename = DIALOG_PICKFILE(/WRITE,TITLE='Save Preferences', $ FILTER = path + '*pref', get_path=pref_path, file='pref') if (pref_filename ne '') then save_preferences, pref_filename endif else begin text=DIALOG_MESSAGE('Select first') endelse end 'LOAD-PREF': begin if (list_file eq 1) then begin pref_path='' pref_filename = DIALOG_PICKFILE(/WRITE,TITLE='Load Preferences', $ FILTER = path + '*pref', get_path=pref_path) if (pref_filename ne '') then load_preferences, pref_filename endif else begin text=DIALOG_MESSAGE('Select first') endelse end 'LOAD-COO': begin if (list_file eq 1) then begin coo_path='' coo_filename = DIALOG_PICKFILE(/READ,TITLE='Select Coordinate File', $ FILTER = path + 'c*', get_path=coo_path) if (coo_filename ne '') then begin load_coordinates, coo_filename str=strmid(coo_filename,strlen(coo_path)) WIDGET_CONTROL, state.coo_file_text,SET_VALUE=str coord_file=1 ;*** cord-file is choosen endif endif else begin text=DIALOG_MESSAGE('Select first') endelse end 'DRAW1': begin mouse=widget_event(ev.id) if (ev.press eq 1) then begin ;*** right mouse button > is used if (coord_file eq 0) then begin direct_select=1 ;*** star are selected direct WIDGET_CONTROL, state.status_text, SET_VALUE='status: ready' breite=30. radius=20. center_coord=dblarr(2) select_coord=dblarr(2) select_coord(0)=round(mouse.x*(float(im_size(1))/500)) select_coord(1)=round(mouse.y*(float(im_size(2))/500)) sub_im=extrac(im, select_coord(0)-breite/2,select_coord(1)-breite/2, breite, breite) center, sub_im, select_coord, center_coord ;auf maximum zentrieren ;print,select_coord, center_coord ;CNTRD,sub_im, breite/2,breite/2, xa,ya,5 ;print,xa+select_coord(0)-breite/2,ya+select_coord(1)-breite/2 ;******** center Koordinaten in Orig Array speichern coord_array_orig(*, stars)= center_coord stars=stars+1 ;******* Kreuz einzeichnen wset, DRAW1_Id tvscl,congrid(cross,15,15),mouse.x-5,mouse.y-8, /device, channel=3 ;wset, DRAW2_Id ;surface, sub_im ;print,select_coord(0),select_coord(1) ;print,center_coord(0),center_coord(1) endif else begin text=DIALOG_MESSAGE('Coordinates defined by the Coordinate File') endelse endif else begin ;*** linke Maustaste zeigt nur Koordinaten x=round(mouse.x*(float(im_size(1))/500)) y=round(mouse.y*(float(im_size(2))/500)) v=im(x,y) WIDGET_CONTROL, state.status_text,SET_VALUE='coord: '+strtrim(string(x),1)+'/'+strtrim(string(y),1)+' value= '+strtrim(string(v),1) endelse end 'DRAW4': begin mouse=widget_event(ev.id) if (ev.press eq 1) then begin ;*** right mouse button is used xmax=max(result_jd, min=xmin) ymax=max(var,min=ymin) range=[min(var)-0.1*(max(var)-min(var)),max(var)+0.1*(max(var)-min(var))] xpos=(mouse.x-60)/420.*(xmax-xmin)+xmin ypos=(mouse.y-40)/140.*(range(1)-range(0))+range(0) print,mouse.x,mouse.y print,xpos,ypos distance=fltarr(N_ELEMENTS(result_jd)) for i=0, N_ELEMENTS(result_jd)-1 do begin distance(i)=abs(xpos-result_jd(i)) endfor h=min(distance, pointID) ;print,result_jd(pointID) delete_point, pointID ;*** deletes the selected point endif end 'REDUC': begin ;openw,55,'coord-drift' setobservationparameter ;*** converts RA, DE, LON, LAT from string into doubles if ((coord_file eq 0) and (direct_select eq 0)) then begin text=DIALOG_MESSAGE('no stars selected') goto, red_end endif photometry=dblarr(image_counter,stars) ;***** Array in die ganze Photometrie kommt result_jd=dblarr(image_counter) airmass=dblarr(image_counter) use_comp=intarr(stars) use_comp(*)=1 meanimage=fltarr(im_size(1),im_size(2)) WIDGET_CONTROL, state.status_text, SET_VALUE='status: frame 1/'+strtrim(string(image_counter),1) pre_center ;**** definiert sterne relativ zu coord-stern (erster) apradii=dblarr(stars,3) apradii(*,0)=apertur_DEFAULT ;**** Apertur radius apradii(*,1)=sky_in_DEFAULT ;**** inner Sky radius apradii(*,2)=sky_in_DEFAULT+sky_wi_DEFAULT ;**** outer Sky radius define_apradius ;**** defines individuel radii for apertur and sky apphot, phot ;**** Apertur-photometrie 1.frame photometry(0,*)=phot(2,*) result_jd(0)=jd calcairmass, jd, airm airmass(0)=airm new_coord=dblarr(2) for i=1, image_counter-1 do begin ;**** Apertur-photometrie ab 2.frame WIDGET_CONTROL, state.status_text, SET_VALUE='status: frame '+images(i)+' ('+ strtrim(string(i+1),1)+'/'+strtrim(string(image_counter),1)+')' print,images(i) fits_read,path+images(i) pre_center apphot, phot result_jd(i)=jd calcairmass, jd, airm airmass(i)=airm photometry(i,*)=phot(2,*) skyval=phot(1,*) endfor WIDGET_CONTROL, state.status_text, SET_VALUE='status: ready' mwrfits,meanimage,path+'meanimage.fit',/CREATE reduc_done=1 red_end: end 'COMP': begin if (reduc_done eq 1) then begin var_id=0 comparison, /SHOWPLOT plot_variable str=' coo ('+strtrim(string(round(coord_array(0,var_id))),1)+'/'+strtrim(string(round(coord_array(1,var_id))),1)+')' WIDGET_CONTROL, state.result_text, SET_VALUE='star '+strtrim(string(var_id+1),1)+str endif else begin text=DIALOG_MESSAGE('do the reduction first') endelse comp_done=1 end 'BEFOR1': begin if (comp_done eq 1) then begin if (var_id gt 0) then begin var_id=var_id-1 comparison, /SHOWPLOT plot_variable str=' coo ('+strtrim(string(round(coord_array(0,var_id))),1)+'/'+strtrim(string(round(coord_array(1,var_id))),1)+')' WIDGET_CONTROL, state.result_text, SET_VALUE='star '+strtrim(string(var_id+1),1)+str endif endif else begin text=DIALOG_MESSAGE('calulate Va-Cp first') endelse end 'NEXT1': begin if (comp_done eq 1) then begin if (var_id lt stars-1) then begin var_id=var_id+1 comparison, /SHOWPLOT plot_variable str=' coo ('+strtrim(string(round(coord_array(0,var_id))),1)+'/'+strtrim(string(round(coord_array(1,var_id))),1)+')' WIDGET_CONTROL, state.result_text, SET_VALUE='star '+strtrim(string(var_id+1),1)+str endif endif else begin text=DIALOG_MESSAGE('calulate Va-Cp first') endelse end 'SAVE-RES': begin if (comp_done eq 1) then begin res_path='' default='JD'+ strtrim(string(round(result_jd(0))),1)+'-'+strtrim(fix(var_id+1),1)+'.dat' res_filename = DIALOG_PICKFILE(/WRITE,TITLE='Save current star data', $ FILTER = path + '*', get_path=coo_path, file=default) if (res_filename ne '') then save_result, res_filename endif else begin text=DIALOG_MESSAGE('no results present') endelse end 'SAVE-ALL': begin if (comp_done eq 1) then begin res_path='' default='JD'+ strtrim(string(round(result_jd(0))),1)+'-all.dat' resall_filename = DIALOG_PICKFILE(/WRITE,TITLE='Save all star data', $ FILTER = path + '*', get_path=coo_path, file=default) if (resall_filename ne '') then save_allstars, resall_filename endif else begin text=DIALOG_MESSAGE('no results present') endelse end 'SHOWSTARS': begin ;define_psf star_nr=0 star_plot end 'BEFOR': begin if (star_nr gt 0) then begin star_nr=star_nr-1 star_plot endif end 'NEXT': begin if (star_nr lt stars-1) then begin star_nr=star_nr+1 star_plot endif end 'PREF': begin pref end 'SELECTFORCOMP': begin ;print,ev.id ;print,ev.select pos=where(state.button eq ev.id) use_comp(pos)=ev.select ;print,'star',pos,use_comp(pos) end 'COMPUSE': begin if (reduc_done eq 1) then begin compselect endif else begin text=DIALOG_MESSAGE('do the reduction first') endelse end 'UNDO': begin if (delete_done eq 1) then begin undelete_point endif else begin text=DIALOG_MESSAGE('no point was deleted') endelse end 'RADEFINE': begin widget_control, ev.id, get_value=str ra_string=str(0) print,ra_string end 'DEDEFINE': begin widget_control, ev.id, get_value=str de_string=str(0) print,de_string end 'LONDEFINE': begin widget_control, ev.id, get_value=str lon_string=str(0) print,lon_string end 'LATDEFINE': begin widget_control, ev.id, get_value=str lat_string=str(0) print,lat_string end 'timekey':begin widget_control, ev.id, get_value=str timekey_string=str(0) print,timekey_string end 'exptimekey':begin widget_control, ev.id, get_value=str exptimekey_string=str(0) print,exptimekey_string end 'setbiasname':begin widget_control, ev.id, get_value=str biasname=str(0) print,biasname end 'setflatname':begin widget_control, ev.id, get_value=str flatname=str(0) print,flatname end 'datekey':begin widget_control, ev.id, get_value=str datekey_string=str(0) print,datekey_string end 'precenterbox':begin widget_control, ev.id, get_value=str precenter_box=fix(str(0)) end 'apertursize':begin widget_control, ev.id, get_value=str apertur_DEFAULT=fix(str(0)) end 'skyinsize':begin widget_control, ev.id, get_value=str sky_in_DEFAULT=fix(str(0)) end 'skywisize':begin widget_control, ev.id, get_value=str sky_wi_DEFAULT=fix(str(0)) end 'anfactor':begin widget_control, ev.id, get_value=str anu_fact_DEFAULT=(str(0)) print,anu_fact_DEFAULT end 'offsetmag':begin widget_control, ev.id, get_value=str offset_DEFAULT=(str(0)) print,offset_DEFAULT end 'AP_SKY':begin widget_control, ev.id, get_value=show_aperture end 'FILENAME': begin fitslist=ev.select ;*** fitslist=0 keine pfadangabe in der fitsliste end 'GRAPHOUT':begin graph_out=ev.select ;*** graph_out=0 frames werden angezeigt end 'USEBIAS':begin if (list_file eq 1) then begin use_bias=ev.select ;*** use_bias=1 Bias wird abgezogen load_bias fits_read,path+images(0) endif else begin text=DIALOG_MESSAGE('Select first') endelse end 'USEFLAT':begin if (list_file eq 1) then begin use_flat=ev.select ;*** use_flat=1 Flat wird beruecksichtigt load_flat fits_read,path+images(0) endif else begin text=DIALOG_MESSAGE('Select first') endelse end 'USEEXTINC':begin use_extinc=ev.select ;*** do extinction correction end 'USEOFFSET':begin use_offset=ev.select ;*** use offset to star#1 end 'QUIT' : begin close,90 WIDGET_CONTROL, ev.top, /DESTROY end endcase end ;____________________________________________________________ ;################################################################################## ;################################################################################## ;################ MAIN PROGRAMM ############################### ;################################################################################## ;################################################################################## pro podex COMMON BASE_Comm, rcol COMMON COORD, coord_array, coord_array_orig, stars, star_nr COMMON MARK, cross COMMON PREFERENCES, fitslist, graph_out, reduc_done, comp_done, use_bias, use_flat, use_comp, delete_done, use_extinc, use_offset COMMON FILES, list_file, coord_file, direct_select COMMON DEFAULT, timekey_string, datekey_string, exptimekey_string, precenter_box, apertur_DEFAULT, sky_in_DEFAULT, sky_wi_DEFAULT, var_id,biasname, flatname, show_aperture, filefilter, offset_DEFAULT, anu_fact_DEFAULT COMMON RADE, ra_string, de_string COMMON OBSERVATORY, lon_string, lat_string COMMON WINDOWSIZE, xs, ys ;******************************** coord_array=dblarr(2,200) coord_array_orig=dblarr(2,200) stars=0. fitslist=0 graph_out=0 use_bias=0 use_flat=0 use_extinc=0 use_offset=0 list_file=0 coord_file=0 direct_select=0 show_aperture=0 reduc_done=0 comp_done=0 delete_done=0 ;**** DEFAULT VALUES ********* ;timekey_string='UT' ;*** default FITS-Header Keyword for time timekey_string='TIME-OBS' ;*** default FITS-Header Keyword for time datekey_string='DATE-OBS' ;*** default FITS-Header Keyword for date exptimekey_string='EXPTIME' filefilter='/scr/tom/NGC2264-hawaii/rawdata/l*' ;*** default path ;filefilter='~/ctio/l*' ;*** default path ;biasname='masterbiasn11.fit.gz' ;*** default name biasname='masterbias1128.fit' ;*** default name flatname='masterflat1128.fit' ;*** default name ra_string='0:23:43' de_string='-72:14:09' ;lon_string='-10:21:53' ;*** MKO ;lat_string='19:46:36' ;*** MKO lon_string='-4:43:15' lat_string='-30:09:54' precenter_box=150 apertur_DEFAULT=12 sky_in_DEFAULT=18 sky_wi_DEFAULT=18 anu_fact_DEFAULT=0.5 offset_DEFAULT=12. synth: cross=[[0,0,0,1,0,0,0], $ [0,0,0,1,0,0,0], $ [0,0,0,1,0,0,0], $ [1,1,1,1,1,1,1], $ [0,0,0,1,0,0,0], $ [0,0,0,1,0,0,0], $ [0,0,0,1,0,0,0]] DEVICE, TRUE = 24 base = widget_base(title='PODEX - PhotOmetric Data EXtractor (c) 2004 by Thomas Kallinger', /row, space = 10) lcol = widget_base(base, /frame, /column) mcol = widget_base(base, /frame, /column) rcol = widget_base(base, /frame, /column) xs=500 ys=200 ;xs=300 ;ys=120 frame1 = widget_base(lcol, /row) frame1_l = widget_base(frame1, /column) frame1_m = widget_base(frame1, /column) frame1_r=widget_base(frame1, /col) load_dat_file = widget_button(frame1_l, value = 'Load Image-List File', uvalue='LOAD-DAT', ysize=40, xsize=200) load_coo_file = widget_button(frame1_l, value = 'Load Coordinate File', uvalue='LOAD-COO', ysize=40, xsize=200) load_pref_file = widget_button(frame1_l, value = 'Load Preferences', uvalue='LOAD-PREF', ysize=40, xsize=200) pref_button = widget_button(frame1_l, value = 'Change Preferences', uvalue='PREF', ysize=40, xsize=200) frame1_u= widget_base(lcol, /column) reduce_button = widget_button(frame1_u, value = 'START Reduction', uvalue='REDUC', ysize=60, xsize=500) quit_button = widget_button(frame1_u, value = 'Quit', uvalue='QUIT', ysize=40, xsize=500) frame1_m_o=widget_base(frame1_m, /column) dat_file_text = widget_text(frame1_m_o) coo_file_text = widget_text(frame1_m_o) save_coo_file = widget_button(frame1_r, value = 'Save Coordinate File', uvalue='SAVE-COO', ysize=40, xsize=140) save_pref_file = widget_button(frame1_r, value = 'Save Preferences', uvalue='SAVE-PREF', ysize=40, xsize=140) save_res_file = widget_button(frame1_r, value = 'Save current star', uvalue='SAVE-RES', ysize=40, xsize=140) save_all_file = widget_button(frame1_r, value = 'Save all stars', uvalue='SAVE-ALL', ysize=40, xsize=140) frame_filename=widget_base(frame1_m, /NONEXCLUSIVE) filename_button=widget_button(frame_filename,value = 'list includes path', uvalue='FILENAME' ) frame_graph=widget_base(frame1_m, /NONEXCLUSIVE) graph_button=widget_button(frame_graph,value = 'no graphic output', uvalue='GRAPHOUT' ) frame_bias=widget_base(frame1_m, /NONEXCLUSIVE) graph_button=widget_button(frame_graph,value = 'subtract bias', uvalue='USEBIAS' ) frame_flat=widget_base(frame1_m, /NONEXCLUSIVE) graph_button=widget_button(frame_graph,value = 'divide by flat', uvalue='USEFLAT' ) frame_extinc=widget_base(frame1_r, /NONEXCLUSIVE) graph_button=widget_button(frame_extinc,value = 'extinc. cor.', uvalue='USEEXTINC' ) frame_offset=widget_base(frame1_r, /NONEXCLUSIVE) graph_button=widget_button(frame_offset,value = 'offset cor.', uvalue='USEOFFSET' ) DRAW1_header = widget_label(lcol, value = 'Raw Data', /ALIGN_LEFT) DRAW1 = widget_draw(lcol,xsize=xs,ysize=2.5*ys, UVALUE='DRAW1',RETAIN=2, colors=10, /BUTTON_EVENTS) DRAW2_header = widget_label(rcol, value = '', /ALIGN_LEFT) DRAW2 = widget_draw(rcol,xsize=xs,ysize=2*ys, UVALUE='DRAW2',RETAIN=2) frame1_skip = widget_base(rcol, /row) next_button = widget_button(frame1_skip, value = '<', uvalue='BEFOR', ysize=20, xsize=30) next_button = widget_button(frame1_skip, value = 'Show Aperture', uvalue='SHOWSTARS', ysize=20) next_button = widget_button(frame1_skip, value = '>', uvalue='NEXT', ysize=20, xsize=30) skip_text=widget_label(frame1_skip, value = ' ', /ALIGN_LEFT) d=['both', 'ap', 'sky'] ap_button=CW_BSELECTOR(frame1_skip,d,uvalue='AP_SKY') DRAW3 = widget_draw(rcol,xsize=xs,ysize=ys, UVALUE='DRAW3',RETAIN=2) frame_result = widget_base(rcol, /row) next_button = widget_button(frame_result, value = '<', uvalue='BEFOR1', ysize=20, xsize=30) next_button = widget_button(frame_result, value = 'Calc Va-Cp', uvalue='COMP', ysize=30) next_button = widget_button(frame_result, value = '>', uvalue='NEXT1', ysize=20, xsize=30) result_text=widget_label(frame_result, value = ' ', /ALIGN_LEFT) compuse_button=widget_button(frame_result, value = 'select', uvalue='COMPUSE') undo_button=widget_button(frame_result,/ALIGN_RIGHT, value = 'undo', uvalue='UNDO', ysize=30) DRAW4 = widget_draw(rcol,xsize=xs,ysize=ys, UVALUE='DRAW4',RETAIN=2, /BUTTON_EVENTS) status_text=widget_text(lcol,value='status: ready') ;************* widget realize ************************** state = {dat_file_text:dat_file_text, $ coo_file_text:coo_file_text, $ skip_text:skip_text, $ result_text:result_text, $ compuse_button:compuse_button, $ status_text:status_text $ } widget_control, base,SET_UVALUE=state, /realize ;************* drawable window-index ******************* COMMON DRAW_Comm, DRAW1_Id, DRAW2_Id, DRAW3_Id, DRAW4_Id WIDGET_CONTROL, DRAW1, GET_VALUE=DRAW1_Id WIDGET_CONTROL, DRAW2, GET_VALUE=DRAW2_Id WIDGET_CONTROL, DRAW3, GET_VALUE=DRAW3_Id WIDGET_CONTROL, DRAW4, GET_VALUE=DRAW4_Id xmanager, 'podex', base end