⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_nstar.pro

📁 basic median filter simulation
💻 PRO
字号:
pro t_nstar,image,fitsfile,psfname,groupsel,SILENT=silent,PRINT=print, $                NEWTABLE = newtable, VARSKY = varsky, DEBUG = debug;+; NAME:;       T_NSTAR; PURPOSE:;       Driver procedure (for NSTAR) for simultaneous PSF fitting.  ; EXPLANATION:;       Input and output are to disk FITS ASCII tables.;; CALLING SEQUENCE:;       T_NSTAR, image, fitsfile, [psfname, groupsel, /SILENT, /PRINT;                               NEWTABLE = , /VARSKY ]; INPUTS:;       IMAGE - 2-d image array;       FITSFILE  - scalar string giving name of disk FITS ASCII table.  Must ;               contain the keywords 'X','Y' (from T_FIND) 'AP1_MAG','SKY';               (from T_APER) and 'GROUP_ID' (from T_GROUP).   This table;               will be updated with the results of T_NSTAR, unless the ;               keyword NEWTABLE is supplied.   ;; OPTIONAL INPUTS:;       PSFNAME - Name of the FITS file created by T_GETPSF containing;               PSF residuals, scalar string;       GROUPSEL - Scalar or vector listing the groups to process.  For;               example, to process stars in groups 2 and 5 set;               GROUPSEL = [2,5].  If omitted, or set equal to -1,;               then NSTAR will process all groups.;; OPTIONAL KEYWORD INPUTS:;       VARSKY - If this keyword is set and non-zero, then the mean sky level;               in each group of stars, will be fit along with the brightness;               and positions.;       /SILENT - if set and non-zero, then NSTAR will not display its results;               at the terminal;       /PRINT - if set and non-zero then NSTAR will also write its results to;               a file NSTAR.PRT.   One can specify the output file name by;               setting PRINT = 'filename'.;       NEWTABLE  - Name of output disk FITS ASCII table to contain the results;               of NSTAR.   If not supplied, then the input FITSFILE will be ;               updated.  ;       DEBUG - if this keyword is set and non-zero, then the result of each;               fitting iteration will be displayed.;; PROCEDURES CALLED:;       FTADDCAL, FTINFO, FTGET(), FTPUT, NSTAR, SXADDHIST, ;       SXADDPAR, SXPAR(), READFITS(), WRITEFITS; REVISION HISTORY:;       Written        W. Landsman         STX Co.    May, 1988;       Check for CCDGAIN, ATODGAIN keywords to get PHPADU  W. Landsman May 1997;       Fixed typo preventing compilation, groupsel parameter W.L. July 1997;       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_NSTAR, image, fitsfile, [ psfname, groupsel, '        print,'                          /VARSKY, NEWTABLE = ,/SILENT, PRINT=]'        return endif 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) idg = where(ttype EQ 'GROUP_ID', Nid) if Nid EQ 0 then begin        message,'T_NSTAR: ERROR - Field GROUP_ID not found in header',/CON        message,'Procedure T_GROUP must be run before T_NSTAR',/CON        return endif else group = ftget(ft_str,tab,idg[0] + 1) if N_params() EQ 4 then begin        nsel = N_elements(groupsel)           if groupsel[0] LT 0 then select = indgen(N_elements(group)) $         else begin           select = where(group EQ groupsel[0])           if nsel GT 1 then $               for i=1,nsel-1 do select = [select,where(group eq groupsel[i])]        endelse endif else select = indgen(N_elements(group))  group = group[select] id = ftget( ft_str, tab, 'STAR_ID', select ) x = ftget( ft_str, tab, 'X', select )-1. y = ftget( ft_str, tab, 'Y', select )-1. mags = ftget( ft_str, tab, 'AP1_MAG', select )           sky = ftget( ft_str, tab, 'SKY', select );Try to get read-out noise from header ronois = sxpar(hprimary,'RONOIS', Count = Nronois)  if Nronois EQ 0 then begin    read,'Enter the read-out noise in ADU per pixel: ',ronois    print,'Storing readout noise  of ',ronois,' in header'    sxaddpar,hprimary,'RONOIS',ronois,' Read out noise (ADU/pixel)', $                before='HISTORY' endif phpadu = sxpar( hprimary, 'PHPADU', COUNT = n )  ;Try to get photons per ADU if n EQ 0 then begin       phpadu = sxpar( hprimary, 'GAIN', Count  = n)       if n EQ 0 then phpadu = sxpar( hprimary, 'CCDGAIN', Count = n)       if n EQ 0 then phpadu = sxpar( hprimary, 'ATODGAIN', Count = n)       if n EQ 0 then begin            read,'Enter photons per ADU (CCD Gain):  ',phpadu      sxaddpar,hprimary,'PHPADU',phpadu,' Photons Per ADU',before = 'HISTORY' endif endif message,'Using photon/ADU (CCD Gain) value of ' + strtrim(phpadu,2),/INF nstar, image, id, x, y, mags, sky, group, phpadu, ronois, psfname, errmag,$         iter, chisq,peak,PRINT = print, SILENT = silent, VARSKY = varsky, $         DEBUG = debug id = id-1 sxaddpar,h,'EXTNAME','IDL DAOPHOT: NSTAR','DAOPHOT stage' g = where(ttype EQ 'X_PSF', Ng) if Ng EQ 0 then ftaddcol,h,tab,'X_PSF',8,'F7.2','PIX' ftput,h,tab,'X_PSF',id,x+1. g = where(ttype EQ 'Y_PSF', Ng) if Ng EQ 0 then ftaddcol,h,tab,'Y_PSF',8,'F7.2','PIX' ftput,h,tab,'Y_PSF',id,y+1. g = where(ttype EQ 'PSF_MAG', Ng) if Ng EQ 0 then ftaddcol,h,tab,'PSF_MAG',8,'F7.3','MAG' ftput,h,tab,'PSF_MAG',id,mags g = where(ttype EQ 'ERR_PSF', Ng) if Ng EQ 0 then ftaddcol,h,tab,'ERR_PSF',8,'F5.3','MAG' ftput,h,tab,'ERR_PSF',id,errmag g = where(ttype EQ 'ITER', Ng) if Ng EQ 0 then ftaddcol,h,tab,'ITER',4,'I2' ftput,h,tab,'ITER',id,iter g = where(ttype EQ 'CHI', Ng) if Ng EQ 0 then ftaddcol,h,tab,'CHI',8,'F5.2' ftput,h,tab,'CHI',id,chisq g = where(ttype EQ 'PEAK', Ng) if Ng EQ 0 then ftaddcol,h,tab,'PEAK',8,'F7.3' ftput,h,tab,'PEAK',id,peak sxaddhist,'T_NSTAR: ' + systime(), h writefits, newtable, 0, hprimary writefits, newtable, tab,h,/append return end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -