📄 t_getpsf.pro
字号:
pro t_getpsf,image,fitsfile,idpsf,psfrad,fitrad,psfname, $ NEWTABLE = newtable, DEBUG = debug;+; NAME:; T_GETPSF; PURPOSE:; Driver procedure (for GETPSF) to generate a PSF from isolate stars.; EXPLANATION:; Generates a point-spread function from one or more isolated stars.; List of stars is read from the FITS ASCII table output of T_APER.; PSF is represented as a sum of a Gaussian plus residuals.; Ouput residuals are written to a FITS image file.;; CALLING SEQUENCE:; T_GETPSF, image, fitsfile, [ idpsf, psfrad, fitrad, psfname, ; /DEBUG, NEWTABLE =];; INPUTS:; IMAGE - image array; FITSFILE - scalar string giving name of disk FITS ASCII table. Must ; contain the keywords 'X','Y' (from T_FIND) and 'AP1_MAG','SKY'; (from T_APER).;; OPTIONAL INPUTS:; IDPSF - vector of stellar ID indices indicating which stars are to be ; used to create the PSF. Not that the PSF star should be ; specified *not* by its STAR_ID value, but rather by the its ; row number (starting with 0) in the FITS table; PSFRAD - the radius for which the PSF will be defined; FITRAD - fitting radius, always smaller than PSFRAD; PSFNAME - name of FITS image file to contain PSF residuals,; scalar string; GETPSF will prompt for all the above values if not supplied.;; OPTIONAL KEYWORD INPUT; NEWTABLE - scalar string specifying the name of the output FITS ASCII; table. If not supplied, then the input table is updated with; the keyword PSF_CODE, specifying which stars were used for the; PSF.; DEBUG - if this keyword is set and non-zero, then the result of each; fitting iteration will be displayed.;; PROMPTS:; T_GETPSF will prompt for the readout noise (in data numbers), and; the gain (in photons or electrons per data number) so that pixels can; be weighted during the PSF fit. To avoid the prompt, add the ; keywords RONOIS and PHPADU to the FITS ASCII table header. ;; PROCEDURES USED:; FTADDCOL, FTGET(), FTPUT, GETPSF, READFITS(), SXADDHIST, SXADDPAR, ; SXPAR(), WRITEFITS, ZPARCHECK; REVISION HISTORY:; Written W. Landsman STX May, 1988; Update PSF_CODE to indicate PSF stars in order used, W. Landsman Mar 96; I/O to FITS ASCII disk files W. Landsman May 96; Converted to IDL V5.0 W. Landsman September 1997; Update for new FTINFO call W. Landsman May 2000;- On_error,2 if N_params() LT 2 then begin print,'Syntax - T_GETPSF, image, fitsfile, [ idpsf, psfrad, fitrad,'+ $ '/DEBUG, NEWTABLE = ]' return endif zparcheck,'T_GETPSF',image,1,[1,2,3,4,5],2,'image array' zparcheck,'T_GETPSF',fitsfile,2,7,0,'name of disk FITS ASCII table' if not keyword_set(newtable) then newtable = fitsfile dummy = readfits(fitsfile, hprimary,/SILENT) tab = readfits(fitsfile,h,/ext) ftinfo,h,ft_str ttype = strtrim(ft_str.ttype,2) x = ftget(ft_str,tab,'X') - 1. y = ftget(ft_str,tab,'Y') - 1. apmag = ftget(ft_str,tab,'AP1_MAG') sky = ftget(ft_str,tab,'SKY');Try to get read-out noise from header; otherwise prompt for it ronois = sxpar(hprimary,'RONOIS', Count = N_Ronois) if N_Ronois EQ 0 then begin read,'Enter the read-out noise in ADU per pixel: ',ronois print,'Storing readout noise of ',strtrim(ronois,2),' in header' sxaddpar,hprimary,'RONOIS',ronois,'Read out noise (ADU/pixel)', $ before = 'HISTORY' endif;Try to get photons per ADU; otherwise prompt for it phpadu = sxpar(hprimary,'PHPADU', Count = N_phpadu) if N_phpadu GT 0 then begin message,'Using photon/ADU value of ' + strtrim(phpadu,2),/INF endif else begin read,'Enter photons per ADU: ',phpadu print,'Storing photon/ADU of ',strtrim(phpadu,2),' in header' sxaddpar,hprimary,'PHPADU',phpadu,'Photons Per ADU',before='HISTORY' endelse getpsf,image,x,y,apmag,sky,ronois,phpadu,gauss,psf,idpsf,psfrad,fitrad,psfname if psfname NE '' then begin code = bytarr(N_elements(apmag)) code[idpsf] = indgen(N_elements(idpsf)) + 1 g = where(ttype EQ 'PSF_CODE', Ng) if Ng EQ 0 then ftaddcol,h,tab,'PSF_CODE',2,'I1' ftput,h,tab,'PSF_CODE',0,code sxaddpar,h,'EXTNAME','IDL DAOPHOT: GETPSF','DAOPHOT stage' sxaddpar,h,'PSF_NAME',psfname,'Name of PSF Image','TTYPE1' sxaddhist,'T_GETPSF: ' + systime(),h writefits, newtable, 0, hprimary writefits, newtable, tab,h,/append endif else print,'No PSF file created; Table not updated' return end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -