C C ~crb/ing/signal.f C C Chris Benn La Palma crb@ing.iac.es C C Predicts photon counts from target and from sky, and resulting C signal-to-noise, for spectroscopic and direct-imaging observations. C The program is self-contained - quantitative information about C the wavelength bands, sky, telescopes, instruments, gratings and C detectors is provided in the /data statements. C There are no input data files. C C This version is for the instruments of the Isaac Newton Group, La Palma, C but only the data statements are site- or instrument-specific. C C If you are viewing this code with a web browser, you may C find chunks of concatenated lines near the end of the program. C This is triggered by html 'pre' tags embedded in write statements (used C when SIGNAL is run via the web interface), but if the code is saved C to a file, it should look normal. C C Wavelength ranges of UBVRIZ bandpasses are given starting ~ line 800 C Numbered list of instruments starts ~ line 1580 - search for '((true' C C Prominent reminders for editor (crb): C (1) Special flag in code IP = 6 for standalone version, 8 for C version to run with web interface. C (2) IW = 0 usually, otherwise writes summary information about parameters C to file outsum. C C============================================================================== C C COMPILING AND LINKING C --------------------- C To compile and link under unix, use: C f77 signal.f -o signal.exe C (option -e needed if modifications extend any lines beyond 80 characters). C The program is self-contained, no libraries or data files needed. C No graphics (those provided by the web interface are made at a higher C level, after repeated calls to signal.f to get the data for plotting). C If you have any problems running this code on your machine, please let me C know. C The program is written in Fortran 77, with the following widely-used C extensions (as flagged by f77 -ansi): IMPLICIT NONE, DO...ENDDO, C subroutine names > 6 characters or including '_', C non-standard 'name=' (why?), non-standard comment (separating data C statement and data?). Code checked with ftnchek (for date of last C check, see history section of comments). C C If you obtained the executable by ftp, you may need C chmod +x signal C to reset the protection on the file, before running it. C C C WHAT THE PROGRAM DOES C --------------------- C The program calculates the number of photons/A from the object C (SOBJ) and photons/A/arcsec**2 from the sky (SSKY) as = C 10**(-mag/2.5) where mag is OBJM or SKYMAG(IBAND) C OBJM is magnitude for a point object, C mag/arcsec**2 for extended object C *TIME integration time in sec C *PHOTONS(IBAND)*10000 conversion mag -> C photons/m**2/sec/A C (factor 10000 is because PHOTONS C defined /cm**2 not /m**2) C *EXTIN(IBAND)**AIRMASS zenith transmission by atmosphere C (implemented from v11.0 onwards) C *TELAREA(ITEL(IINSTR)) telescope area (m**2) C *EFFMIRROR**IMIRROR(IINSTR) efficiency of main mirrors C *VIGN fraction of light passed by slit, C fibre or lesnlet (spectroscopic obs C of point sources only) C *EFFINSTR(IBAND,IINSTR) throughput of instrument (including C derotator e.g Nasmyth and corrector C e.g. PF, if any, and excluding other C components listed here) C *EFFGRAT(IBAND,IGRAT,IINSTR) efficiency of grating C *EFFDET(IBAND,IDET) q. efficiency of detector C *TRUETHRU(IBAND,IINSTR) ratio empirical/theoretical throughput, C now determined for most ING instruments, C typically 0.7 - 1.1, other values C extrapolated or set to 1.0 (all were C 1.0 for pre-1995 versions of SIGNAL). C C If IPX=0 (point-source calculation), OBJM is the apparent mag, C if IPX=1 (surface-brightness calc.), OBJM is apparent mag/arcsec**2 C ITYPE = 1 for an imaging calculation, 2 for spectroscopic, C 3 for integral-field or fibre spectroscopy (in which case IPX is C forced to be 0). C C (1) IMAGING - POINT SOURCE (ITYPE=1, IPX=0) C Number of photons from object (SOBJ2) and sky/pixel (SSKY2) are C calculated as: C SOBJ2=SOBJ*BAND(IBAND) C SSKY2=SSKY*BAND(IBAND)*ARCPIX*ARCPIX C And S:N ratio for an aperture of diameter 2 FWHM is: C SNR=SOBJ2/SQRT(SOBJ2+SEE*(SSKY2+READ**2)) C where SEE is pi*(FWHM/ARCPIX)**2 pixels (number of pixels over C which integrating) C C (2) IMAGING - EXTENDED SOURCE (ITYPE=1, IPX=1) C Number of photons from object/pixel (SOBJ2) and sky/pixel (SSKY2) are C calculated as: C SOBJ2=SOBJ*BAND(IBAND)*ARCPIX*ARCPIX C SSKY2=SSKY*BAND(IBAND)*ARCPIX*ARCPIX C And S:N ratio per pixel is: C SNR=SOBJ2/SQRT(SOBJ2+SSKY2+READ**2) C i.e. SEE is assumed to be 1 pixel C C (3) SPECTROSCOPY - POINT SOURCE (ITYPE=2, IPX=0) C Number of photons per pixel-step in wavelength (SOBJ2) and C number of photons/pixel from the sky (SSKY2) are calculated as: C SOBJ2=SOBJ*DISPPIX C SSKY2=SSKY*SLIT*ARCPIX*DISPPIX C And S:N ratio per pixel-step in wavelength (i.e. per pixel of C extracted spectrum) is: C SNR=SOBJ2/SQRT(SOBJ2+SEE*(SSKY2+READ**2)) C where SEE is assumed to be 2*(FWHM/ARCPIX) C C (4) SPECTROSCOPY - EXTENDED SOURCE (ITYPE=2, IPX=1) C Number of photons/pixel from object from the object (SOBJ2) and C photons/pixel from the sky are calculated as: C SOBJ2=SOBJ*SLIT*ARCPIX*DISPPIX C SSKY2=SSKY*SLIT*ARCPIX*DISPPIX C And S:N ratio per pixel is: C SNR=SOBJ2/SQRT(SOBJ2+SSKY2+READ**2) C i.e. SEE is assumed to be 1 pixel C C (5) INTEGRAL-FIELD / FIBRE SPECTROSCOPY - POINT SOURCE C (ITYPE=3, IPX=0) C Number of photons per pixel-step in wavelength (SOBJ2) and C number of photons/pixel from the sky (SSKY2) are calculated as: C SOBJ2=SOBJ*DISPPIX C SSKY2=SSKY*SLIT*SLIT*3.14159/4.*DISPPIX C (i.e. phot/pixel-step, not per pixel) C And S:N ratio per pixel-step in wavelength (i.e. per pixel of C extracted spectrum, for one lenslet or fibre) is: C SNR=SOBJ2/SQRT(SOBJ2+SSKY2+SEE*READ**2) C where SEE is assumed to be SPREAD pixels (spread of light orthogonal C to dispersion direction) C C (6) INTEGRAL-FIELD / FIBRE SPECTROSCOPY - EXTENDED SOURCE C (ITYPE=3, IPX=1) C Calculation made as above, except that object mag is assumed C to be mag within solid angle subtended by circular aperture C of diameter SLIT. C C The program also calculates the scales at the detector in arcsec/pixel C (ARCPIX) and A/pixel (DISPPIX) as: C ARCPIX=ARCMM(IINSTR) *PIXEL(IDET) C DISPPIX=DISP(IGRAT,IINSTR)*PIXEL(IDET) C C Where no empirical data are available, SIGNAL uses interpolated, C extrapolated or (as a last resort) theoretical throughputs. C Empirical throughputs are typically 80 - 90% of theoretical. C NB some of the instruments and detectors documented by SIGNAL are not C currently offered by ING (e.g. WHT FOS, JKT RBS, IPCS). C C The program loops, at each loop either obtaining the parameters C interactively from the user, via the menu, or reading them C non-interactively from the data file SIGNAL.INPUT (one loop only C if this file has been generated from the web interface). C C============================================================================== C C LIMITATIONS (some of this is summarised in subroutine helpsub) C ----------- C The program does not take into account the following: C C - Variation of atmospheric (non-grey) and dust (grey) extinction. C The default values are from La Palma technical note 31. C La Palma suffers from Saharan dust in the summer, extinction typically C 0.2 - 0.4 mag, up to 1 mag. The dust is grey but the extinction C varies from night to night (see the ING web page for C a nightly record from the Carlsberg Meridian Circle). C C - Degradation of the main telescope mirrors between aluminisings. This may C be up to 10%, probably more in the UV. C C - Vignetting and optical aberrations (broadening the image) at large C field radius (see the ING Observers' Guide for more information). C C - Wavelength-dependence of vignetting by the spectrograph slit, C if slit is not at parallactic angle. C (Vignetting due to slit, fibre or lenslet aperture was included C from v13.1 onwards). C C - Loss of light to colour, ND and polarisation filters in the light path. C But SIGNAL assumes that order-sorting filters HAVE been inserted where C necessary (e.g. to exclude second-order light in ISIS red arm!). C C - Loss of grating efficiency at large angles, or when the grating is C reversed or overfilled. C C - Conversion between recorded counts from CCD and number of detected C photons (i.e. the effects of gain = e-/ADU, bias level, dark current, C non-linearity of response, cosmic rays etc.) C Quoted CCD readout noise and e-/ADU are for the commonest readout speed C for the instrument in question. C C - S:N depends on the brightness of the sky (specified by the user), C and this can less easily be predicted than e.g. the throughput of the C system from atmosphere to CCD. Some of the contributions to the C brightness of the night sky are: C - twilight (if sun < 18 deg below horizon); C - moonlight (if moon not below horizon); C - solar cycle (sky brightens up to 0.4 mag at solar maximum); C - zodiacal light (sky is 0.4 mag brighter on ecliptic than at poles); C - Milky Way; C - airmass (sky is 0.2 mag brighter at airmass 1.5 than at zenith); C - light pollution - e.g. the sky is significantly brighter C when very dusty (> 0.3 mag extinction) C See ING technical note 115 for further information. C C - Signal-to-noise for spectroscopy of unresolved objects is given C per pixel step in wavelength, which may not be the same as the C wavelength resolution (typically 2 pixels). C C Notes specific to ING instruments, filters and detectors: C C - ISIS polarisation optics have throughput 0.9 approx, ISIS dichroics C about 0.85 C C - For FOS, U,B are for second order, V,R,I are for first order C C - The BVRI filters are assumed to be Harris. Note that the throughput C of the KPNO B filter is about 25% greater than Harris C The U filter is the 50-mm type. The 125-mm WHT PF U filter has a C transmission about a factor of two lower. C C============================================================================== C C HISTORY C ------- C 1990 Nov 26 Version 1.0 in VAX Fortran C Includes non-interactive option 'X' C 1991 Jun 11 Version 2.0 C 1992 Feb 8 Corrected erroneous I, Z CCD sensitivities C 1992 Mar 12 Added detector QE for Tek CCD (version 3.0) C 1992 Mar 25 Updated GEC/EEV CCD responses with PRJ's latest data C (version 3.1) C 1992 Apr 3 Added LDSS spectroscopic and imaging C Generalised code to be instrument-independent (version 4.0) C 1993 Oct 14 Updated UES efficiencies using Max Pettini's data C 1993 Dec 9 Added INT FORD and GEC7 QE C 1994 Sep 6 Version 6.0: added WHT prime (instr 19), removed JKT QUBES C and grism options; added WHT WYFFOS and hitchhiker; C updated readout noises and default CCD; C corrected IPCS2 pixel size to 10 microns; C added derotator eff 0.75 for UES; C added R1200B grating (assume eff as R600B) C 1995 Jan 23 Added TRUETHRU empirical/predicted data (+ extrapolations) C WHT FOS throughput based on 1/1/92 measurement C Version 7.0 (-> UK/NL/ES site managers 6/3/95) C 1995 Mar 24 Removed incorrect warning that no throughput data for WYFFOS C Added correct DISP for WYFFOS C 1995 May 10 Removed tabs. Version 7.1 C 1995 May 16 Corrected WHT PF TRUETHRU(B) from 0.4 to 0.6. Version 7.2 C 1995 Nov 14 Revised (slightly upwards) aux-port TRUETHRU on basis of C throughput measurements of night 13/11/95. Version 7.3 C 1995 Nov 24 Added table showing status of empirical data C 1996 Aug 14 Broke up data statements to avoid more than 19 C continuation lines (Fortran 77 standard, adhered to by C some UNIX machines) C Version 8.0 C 1996 Sep 20 Removed carriagecontrol='list' which makes Linux choke C Added Loral QE C Version 9.0 (emailed to ING/RGO webmans + UK/NL/ES C site managers) C 1996 Oct 1 LORAL readnoise=8, version 9.1 C 1996 Oct 10 Added help comment about B(KP) vs B(Harris) C 1996 Nov 11 Updated sky-brightness values (version 9.2) C 1996 Dec 17 Added ISIS R grating efficiencies in Z (version 9.3) C 1997 Mar 3 Corrected WHT PF U effinstr to 1.0->0.6, truethru 0.7->1.1 C (version 9.4) C Mar 14 Added WYFFOS empirical throughput data from 11/96 comm run, C provisonal result that 0.5 mag poorer than ISIS (version 10) C Dec 2 Added EEV10 CCD C Removed dependence of ADU on INSTRUMENT C Fine-tuned sky-brightness values C 1998 Feb 13 Structural changes and enhancements not affecting C object and sky count rates for main instruments: C - Added calculations of S:N for spectrsocopy and for C extended images both imaging and spectroscopy C - Option to set effective bandwidth, useful if using C a filter with very different transmission from C default set (e.g. WHT PF U) or narrow band C - Added JHK bands, WHIRCAM InSb detector, WHIRCAM instrument C - Added STJ detector, human eye, scrapped IPCS and redundant C CCDs C - FWHM now refers to fwhm of star only, IPX takes over C function of flagging whether calculation is for star C or per arcsec**2 for extended object. C - Added calculation of detector sizes in both directions. C - Reorganised to make addition of new telescopes, C instruments etc. easier. Some variable names changed. C Extended arrays to allow 10 bands instead of 6 C and 50 instruments instead of 20. C - Made instrument-menu 2-column C - Help simplified, most additional info now in comments C in code C - Updated readout-noise and gain values, now reports both C - Corrected error in WHT FOS V throughput C - Added extinction-correction code, but set to 0.0 C - Made program check command issued by user C - Added option to change telescope area e.g. for JOSE, C Shack-H, which use sub-apertures C (version 10.2, checked ISIS + INT-imaging calcs give same C counts as for previous versions) C 1998 Feb 17 Changes which DO affect object and sky count rates: C - Implemented extinction correction C - Updated sky-brightness values (small changes) C - Updated effective filter bandwidths BAND(I) for Harris C filters and new U filters (still waiting for Harris I scan) C NB big change in U bandwidth, prob. offset by inclusion of C atmospheric ext. in U, so TRUETHRU not much different C for imaging. C - Changes to theoretical throughput values: C - UES throughput changed 0.36 to 0.45 (new derotator) C ISIS throughput changed 0.45 to 0.51 or 0.42 (two arms) C WYFFOS throughput changed 0.36 to 0.51 (error) C WHT PF B throughput changed 1.0 to 0.8 (PF corrector) C IDS500 throughput changed 0.41 to 0.44 (not same as 235) C - Multiplied INT PF U, B th. throughputs by 0.6, 0.8 because C of corrector. C - Updated table of empirical throughputs and adjusted C TRUETHRU values accordingly. C - Changed area over which sky flux counted from pi/4 FWHM**2 C to pi FWHM**2 for imaging calculations (Hans Deeg IAC C pointed out an inconsistency in previous versions, gave C correct counts from star and from sky, but an overoptimistic C estimate of resulting S:N for imaging, by integrating C sky over aperture of diameter FWHM, which doesn't include C all the flux) C (version 11.0) C 1998 Feb 20 - Changed to display band with wavelength when C a spectroscopic instr. (version 11.1) C 1998 Feb 21 - Changed to accept Oke AB mags too, altered some of C TRUETHRU to reflect difference between apparent mag C and Oke AB mag (version 11.2) C 1998 Apr 14 - Calculated object counts, for imaging of extended source, C corrected to be per pixel instead of per arcsec^2 C (error noted by Nigel Metcalfe) C - Two coding errors, accepted by SUN f77, rejected by C Richard McMahon's gnu g77 compiler: C (1) if(itype(iinstr.eq.1)) print *,... corrected to C if(itype(iinstr).eq.1) print *,... C (2) lines ending in comma, followed by lines starting C with comma, modified so only one comma C (even f77 -ansi doesn't catch this) C - IROT data statement accidentally commented out, C 90-deg rotation of EEV10a not being used C (error noted by Sally Oey) C - Minor changes to help + output format C (version 11.3) C 1998 Apr 20 Cleared up a few minor inconsistencies flagged by ftnchek C running on lpss20. Version 11.4 C 1998 Jun 3 Added CIRSI (INT or WHT). Version 11.5 C 1998 Jul 3 Added default detector numbers (IDEFDET) for each C instrument. Added INGRID. Version 11.6. C 1998 Jul 19 Tweaked sky-brightness values to match those given in C LP tech note 115 (Benn + Ellison). Version 11.7. C 1998 Aug 5 Adding sky-brightness calculator - estimates sky brightness C in each band with or without moonlight. Version 11.8. C Checked SIGNAL's output for ISIS and INT WFC agree previous C versions. Checked with ftnchek. C 1998 Sep 9 Adding lines at start of code to allow it to be used C in one of two modes after minor editing: C IP = 6 - usual interactive mode, writes to screen (unit = 6) C IP = 7 - reads parameters from signal.input, C writes to signal.output (unit=7), C which allows it be called from a web browser, C via the cgi (perl) script written by C Ashley James (summer student 1998) C Moved all parameter-setting code into two subroutines, C one for interactive, one for non-interactive. C Non interactive mode can also be triggered from menu, with C undocumented option X (untested). C Replaced 'print *' common to both modes by writes C (variable put free format in BUFFA, BUFFB) C Ruthlessly eliminated all data type logical C Version 12.0. C 1998 Sep 16 Minor changes to some format statements (error picked C up by Paul O'Brien's compiler). FTNCHEK OK. Version 12.1. C 1999 Mar 2 Updating data on Loral CCD so that it refers to the one in C INT FOS rather than to the defunct WHT ones. Version 12.2. C 1999 Mar 29 Correcting large-EEV read noise 11 -> 4 e-. Version 12.3. C 2000 Jun 21 Added some IDS gratings for WYFFOS. Version 12.4. C 2000 Sep 4 Removed print * formatting of output values from subroutine C free. C Changed K SKYMAG (i.e. sky + thermal) to 12.5 (for INGRID), C corrected INGRID gain to 5.6 e/ADU, QE changed from C estimate of 0.6 to .4, .55, .55, corrected ZJHK bandpasses C to be for INGRID. C Version 12.5 C 2000 Sep 13 New INGRID and UES throughput measurements, version 12.6. C 2001 Feb 12 New INGRID Ks skybr 11.8 mag/arcsec^2 from Johan Knapen's C measurements 4-12/00. C Rearranged instrument menu. C Added NAOMI/INGRID. C Added comment line to appear after o/p table for each instr. C Version 12.7 C 2001 Jul 19 New INGRID gain 5.3 (was 5.5), readnoise 32 (was 10), c scale 0.238 "/pixel, C J,H,K skybr values (fainter) and zeropoints (factor 1.6 C fainter, largely due to factor 1.4 increased throughput C for the new aspheric) C Version 12.8 C 2001 Oct 19 Commented K bgr high for NAOMI/INGRID C Version 12.9 C 2002 Feb 5 Added ITYPE(IINSTR) = 3 option for ifu/fibre spectroscopy, C so that now get sky counts and S:N for e.g. AF2/WYFFOS. C Added OASIS and MIT/LL CCD. C Added variable DEFSLIT - default slit width (or fibre C diam etc) for given instruments. C Corrected mismatches between instr names in .pl script C and html (including removal of multiple spaces, which C are not treated in a straightforward way). C Option to allow setting sky-br as D G or B. C Now outputs sky photons/A/sq.arcsec as well (McMahon's C suggestion 10/98). C Updated wyffos copy of data for ISIS gratings C (redward extrapolation had been done only for ISIS). C Version 13.0 C 2002 Feb 7 Added correction for vignetting by slit, fibre or C lenslet (VIGN). C Corrected parameter-order errors in sky-brightness C .pl script (noted by Ian Skillen 6/01). C Converted CBAND* and QBAND to 2-character, for future C implementation of additional filters. C Added variable SPREAD - number of pixels over which light C distributed orthognal to dispersion direction, for C fibre and lenslet spectrographs (2 for wyffos, 3 for C oasis). C Version 13.1 C 2002 Mar 2 Small changes to default dark, grey and bright sky C intensities. C Version 13.2 C 2003 Jun 4 Added NOT ALFOSC imaging + spectroscopy test C 2003 Jun 5 Changed number of detectors from 10 to 30, version 13.4 C Removed detector options: INT FOS Loral, old GEC C Added: Marconi 2148*4700, NOT CCD7 (Loral) C 2003 Jun 10 Adding NOT NOTCAM, MOSCA, version 13.5 C Removed superfluous print of readnoise to output text C Changed lengths and sizes of some arrays for C greater flexibility C Version 13.5 C 2003 Aug 25 Robert Greimel added mode ip=8, for use with his C new .php web interface. C Version 13.6 C 2003 Dec 3 Added calc of peak counts per pixel for imaging of C point sources (sugg by Almudena Zurita) C Version 13.7 C 2003 Dec 30 Adding LIRIS C Version 13.8 C 2009 Nov 18 Version 13.9 (which may be same as 13.8), checked that C it works when copied into C /export/localhome/god/signal/current/cgi-bin C 2009 Nov 19 Version 14.0: C Added ACAM imaging and spectroscopy (instr = 35, 36) C Marked aux-port as N/A C Added detectors AUXCAM, RED+, EEV12, LIRIS, EEV10a, WFC (INT) C (det = 14 - 19) C Converted detector 2 from 'EEV' to 'WHTWFC', C renamed 'Rockw' as 'INGRID' C Made default det on startup = RED+ C Updated AF2/WYFFOS throughput values to match 2004 C small-fibres values on AF2 web page, changed C dispmm from short-camera to long-camera values, C made default detector WHTWFC. C Added LIRIS grisms C Added section to write instrument/detector C data summary to outsum (unit 11), C defined IW, IWD, IWI, IWB C Defined IDEFDET2 as second default detector (basically C for above, to allow for fact that 2 detectors C used with ISIS) C Current text block output to user is 79 chars wide. C C 2009 Dec 16 Version 14.1: C Added OASIS imaging (instr 37). C Added calculation of *predicted* zeropoint ZP C for each instrument, C and recorded measured zeropoints (previously only C in comment lines) in ZMEAS, ZMEASC, ZMEASD C (these last 3 vars not used in any calcs) C Addressed problem that IPX always set to 0 if ITYPE=3, C with a fudge: at the start of the main loop, C the mag/arcsec^2 is converted to a mag within C the circular aperture of diameter SLIT, and then C treated as a single object, but the numbers displayed C to the user are IPX = 1 and mag/arcsec^2 (NB VIGN C is forced to be 1). C C 2009 Dec 17 Version 14.2: C Added default gratings IDEFGRAT, IDEFGRAT2, to C be used with IDEFDET and IDEFDET2 C Changed LIRIS observed zeropoints (the values C quoted on the web pages are for 1 ph/sec, not C 1 ct/sec). LIRIS now publicly available, but C only with warning 'Approx...' C C 2010 Jan 21 Version 14.3: C Extended Atm/tel/instr throughput line beyond 80 chars C with calc and reporting of thru(4) C Moved reporting section to subroutine WRITEOUT, C put subroutines in alphabetic order C Corrected ACAM zeropoints, esp U C Corrected IDEFDET for INT WFC to 19 not 2. C C 2013 Aug 13 Version 14.4: C Added RED+4 detector (sl diff QE from other RED+), C ndet now = 21. C Revised (by factors ~ 2 in B V R I) the estimated C throughputs effinstr for AF2/WYFFOS, to be consistent C with Dave King's analysis of 12/2011. C Updated the AF2/WYFFOS truethru to be consistent with C the new effinstr and with the new on-sky zeropoints C measured by Cecilia and Lilian (logged in ZMEASD) C during 2013. Now ~ 1 in R I Z; ~0.5 in B, V; ~ 0.04 in U C (but throughput changes fast with wavelength in UV, C so averaging over a broad band has limited meaning). C Added extra decimal place to output value of truethru. C Reviewed and updated comment lines. C Changed ZMEASD(19) from '(4/2009 Carter' to '(9/1994 Carter)' C C 2013 May 6 Version 14.5: C Updated AF2 zeropoints, see details in zeropoints section. C C Old values of numerical parameters are often preserved as comment C lines (in the data block). C C C============================================================================== C C SUBROUTINES C ----------- C display C free C getpar C help C helpsky C pause C pause2 C slitvign C skybrcalc C skybrcalc2 C welcome C writeout C C C============================================================================== C C VARIABLES DEFINING INSTRUMENTS, DETECTORS, BANDS ETC. C ----------------------------------------------------- C Data for new telescopes, instruments, gratings, detectors and bands C can be added by modifying the DATA statements (only). C In the table below are listed the principal data arrays, with C the array dimensions currently being: C B (bands) = 10 C G (gratings) = 20 C I (instruments) = 50 C D (detectors) = 30 C (e.g. 'G I' = one number required for each grating for each instrument). C C Variable Indices Meaning (see full list above for more detail) C C BAND B effective bandwidths of filters i.e. integral C over T(l)dl, where T(l) is the transmission and C l is wavelength = area under filter transmission C curve C CBAND B band name (uppercase) C CBANDLOWER B band name (lowercase) C EXTIN B extinction in mag, at airmass = 1.0 C FLUXJY B Jy flux (1e-26 W/Hz/m**2) for mag=0 in each band C (Z is approx) C SKYMAG B sky brightness in mag/arcsec^2 C WAVE B wavelength in microns C (used in v11.0 and after, when calculating C PHOTONS from FLUXJY) C C ARCMM I "/mm at detector C CINSTR I instrument name C COMMENT I 1-line comment for instrument (printed by signal) C DEFSLIT I default slit width arcsec C IAXIS I normal direction on CCD of spectral dispersion C (1 = x, 2 = y) C IDEFDET I default detector number C IDEFDET2 I second default detector number (usu 0) C (used when writing to unit 11) C IDEFGRAT I default grating number (usu 1) C IDEFGRAT2 I second default detector number (usu 0) C (used when writing to unit 11) C IMIRROR I number of aluminium tel mirrors between sky and C instrument (the throughput of any non-aluminium C tel mirrors, e.g. the silvered A&G flat, is C included in EFFINSTR) C ITEL I telescope number for the given IINSTR (to get tel C geom area) C 1 = JKT 2 = INT 3 = WHT 4 = EYE 5 = NOT C 6 = GTC C ITRANS I order in which instrument menu written C ITYPE I 1 = imager, 2 = spec, 3 = fibre or IFU spec C NGRATING I number of gratings C SPREAD I number of pixels over which spectrum spread perp C to wavelength, for fibre and lenslet spec C (typically 2 - 3). C Note that this assumes always same detector. C C ADU D gain e-/count C CDET D detector name C IROT D rotation of each detector: 0 means spectral C direction would be in X if mounted on ISIS, C 1 means 90 deg rotated C (for ING instr only) C NPIXELS D no. active pixels in x and y on detector C (second dimension of arrays is 2, for x and y) C PIXEL D pixel size on detector (mm) C READ D read noise (e-) C C CGRATING G I grating name (G,I) C DISPMM G I dispersion A/mm (G,I) C EFFDET B D detector QE (B,D) C EFFGRAT B G I grating throughput (B,G,I) C EFFINSTR B I instrument throughput (B,I) C TRUETHRU B I empirical/predicted instrument throughput - C i.e. a fudge factor to make prediction agree with C observed zeropoint (B,I) C ZMEAS B I Measured zeropoint for each instrument C = mag for 1 det ph/sec for an imaging instrument C = mag for 1 det ph/sec/A for a spec instrument C Third index of array is default det number (usu 1) C ZMEAS is not currently used in any calculation, C just for reporting to file outsum C ZMEASC I Configuration (grating/det etc.) used for C above ZMEAS C ZMEASD I Date and name of person who made measurement C C C CTEL names of telescopes C TELAREA geometric collecting area of telescope C C NBAND, NINSTR, NGRATING(IINSTR), NDET C numbers of bands, C instruments, gratings and detectors C C NBAND, NGRATING, NINSTR and NDET may need changing. C If the detector arrays are changed, IDEFDET may need changing. C If the grating arrays are changed, IDEFGRAT may need changing. C To add data involving a new telescope, may need to modify some or all C of IMIRROR, ITEL, TELAREA. C ITRANS will probably need changing to allow correct ordering of options. C C C OTHER VARIABLES C --------------- C AIRMASS airmass C ANS 1-char answer C ARCPIX scale "/pixel at detector (derived) C AREA geometrical collecting area * mirror, instrument, grating C and detector efficiencies C BUFFA, BUFFB, BUFFC, BUFFD C 15-char buffers to which reals are written free format, C prior to output C CGRATING is (IGRAT,IINSTR) C CBANDLOWER C CINSTRB buffer to hold instr menu C DISPPIX dispersion A/pixel at detector (derived) C DX, DY sizes of detector in X and Y in " or A (whichever is C appropriate) C LOOP main loop counter C EFFMIRROR reflective efficiency assumed for aluminised C telescope mirror C FWHM FWHM arcsec (combined effects of seeing and intinsic C object FWHM) C I,J,K,KK loop counters C IBAND, IINSTR, IGRAT, IDET, ITEL - band, instrument, grating, detector C and telescope numbers C IDX,IDY axis labels: 0 = arcsec, 1 = A C IID,IIG default det and grating numbers, used as temporary C variables in loop calculating assuming zeropoints C IIN,IOUT C IP 6 => interactive (writes to unit 6) C 7 => non-interactive reads from SIGNAL.DAT, writes to C SIGNAL.OUT (unit 7) C 8 => mode added by Robert Greimel, to allow signal.f to C be used with web interface C IPX calculation for stellar object (0) or per sq arcsec for C extended image (1) C IPX0 Remembers IPX during main calculation loop C IW = 1 to write out instrument or detector summary C (Invoked by editing the code) C IWB Number of bands to write out e.g. 9 C IWD Detector numbers for which summary required C IWI Instrument numbers for which summary required C LOOP Loop counter for main calculation loop C MODE mode of use after parameters obtained: C 0 = S:N calc; 1 = sky br calc; 2 = help; 3 = skybr help; C 9 = end C OBJM magnitude of object C (per sq arcsec for spectroscopy with IPX=1) C OBJM0 Remembers OBJM during main calculation loop C PEAK peak counts / pixel for imaging = SOBJ/1.14/FWHM^2 C (i.e. assumes gaussian profile) C PHOTONS photons/s/sq.cm/A for mag = 0 for each band (derived) C SEE 3.14159 * (FWHM/PIXSIZE)**2 i.e. number of pixels over which C 2D image is assumed to be spread (was 3.14159/4. * ... before C version 11.0), affects S:N ratio only C SKYMAG0 set to SKYMAG at start, but SKYMAG0 cannot be changed C by the user (the values are passed to subr SKYBRCALC) C SLIT, SLIT2 slit-width (arcsec) C SNR signal-to-noise for imaging calculation C SOBJ number of photons/A from object C (per sq arcsec for spectroscopy with IPX=1) C SOBJ2 For spectroscopy, photons/pixel (sky or ext object with IPX=1) C or photons/pixel step in wavelength i.e. after integrating C in the spatial direction (IPX = 0) C SSKY number of photons/arcsec**2/A from sky C SSKY2 SSKY per pixel for imaging or for normal spectroscopy C SSKY per pixel step in wavelength for IFU/fibre spec. C THRU(4) throughputs of atm, tel, instr, grating, used in displaying C results to user C TIME integration time (sec) C TRUE0 value of TRUETHRU passed to DISPLAY C UNIT(2) " or A (for writing out pixels scales in the two directions) C VERSION Version number and date C VIGN C ZP Predicted zeropoint for each instrument, calculated from C EFFINSTR, EFFGRAT, EFFDET etc. C Same array size as ZMEAS, above. C Not currently used to calculate anything else, it's C just reported to output file outsum. C C Variables for passing to DISPLAY: C QINST,QBAND,QGRAT,QGRAT2,QDET,EXT, C GEOMAREA,THROUGHPUT,PIXSIZE,DETEFF, C PHOTONS2,READOUT,BWIDTH,SKY C (the ones starting with Q are char strings) C C Variables used by sky-brightness calculator SKYBRCALC only: C SOL,ECLAT,GLAT,AIR,IM,ALPHA,R,ZM,AK C C Last checked above list against variable declarations below: 23/11/09 C C============================================================================== C implicit none integer i,j,k,kk,ninstr,ndet,iband,iinstr,igrat,ip,iin,iout,mode integer itrans(50),itel(50),itype(50),imirror(50),ngrating(50) integer iaxis(50),npixels(30,2),idefdet(50),idefdet2(50) integer idet,nband,loop,ipx,idx,idy,iw,iwd(30),iwi(50),irot(30) integer iwb,ipx0,idefgrat(50),idefgrat2(50),iid,iig real defslit(50),spread(50),vign,thru(4) real effinstr(10,50),effgrat(10,20,50),effdet(10,30) real zmeas(10,50,5),zp(10,50,5) real truethru(10,50),dispmm(20,50),arcmm(50),telarea(50) real objm,time,snr,slit,arcpix,disppix,effmirror,area,sobj,ssky real sky,sobj2,ssky2,see,slit2,true0,fwhm,geomarea,ext,airmass real throughput,pixsize,deteff,photons2,bwidth,readout,dx,dy real pixel(30),read(30),adu(30),peak,objm0 real band(10),fluxjy(10),photons(10),skymag(10),skymag0(10), 1 extin(10),wave(10) character*1 ans character*2 cband(10),cbandlower(10),qband character*1 unit(2) character*6 qdet character*10 qgrat,qgrat2,ctel(100) character*15 buffa,buffb,buffc,buffd character*20 cgrating(20,50) character*25 cinstr(50),qinst character*28 version character*40 cdet(30) character*80 comment(50),zmeasc(50),zmeasd(50) C C Variables used by sky-brightness calculator (only) C integer im real sol,eclat,glat,air,alpha,r,zm,ak C============================================================================== data unit/'"','A'/ C C Version number and date C data version/'Version 14.5 6 May 2014'/ C C Lists of instruments and detectors to be summarised C on outsum (unit 11), if IW = 1 C data iwi/1,35,36,19,16,33,34,26,27,37,9,10,38*0/ data iwd/16,15,4,20,14,2,3,17,10,19,18,1,9,17*0/ data iwb/9/ C C C############################################################################## C C DATA SECTION C C The data statements below define the properties of the sky C (La Palma only), telescopes, instruments and detectors. C They are organised in 4 sections, in the same order as the variables C list above, i.e.: C - Those depending on band only C - Those depending on instrument only C - Those depending on detector only C - Those depending on some combination of band, instrument, C grating and detector. C Most of the instrument/detector data (and the measured zeropoints, C documented in the comments) are taken from the relevant C ING web pages. Many of the predicted instrument throughputs C EFFINSTR are a product of the throughputs of indivdual C components in the optical train, and where possible, these are C documented. C C C Number of instruments, detectors and bands on offer C data ninstr/37/ data ndet /21/ data nband / 9/ data ctel/'JKT','INT','WHT','Eye','NOT','GTC',94*' '/ data effmirror/0.85/ data telarea/0.66,4.41,12.47,8.e-5,4.6,74.8,44*0.0/ C (approx est of area for GTC, itel=6, as circle diam 10.4 m, C minus hexagon of side 1.4 m) C C============================================================================== C C VARIABLES DEPENDING ON BAND ONLY C -------------------------------- C C Central wavelengths of bands used (from output of ~crb/ing/filter.f). C Typical wavelength ranges are given below. Actual values of effective C bandwidth (integral over T(l)dl, where T is transmission, l is wavelength) C are given in array BAND C BAND values are for: C U 3600 A (3300 - 3800 A) 50-mm square and 139-mm liq-CuSO4 U C B 4300 A (4000 - 5000 A) Harris C V 5500 A (5000 - 6000 A) Harris C R 6500 A (6000 - 7200 A) Harris C I 8200 A (7200 - 9200 A) Harris C Z 9500 A (8500 - 9700 A) RGO glass C J 12500 A (1.10 - 1.40 mic) WHIRCAM C H 16700 A (1.50 - 1.82 mic) WHIRCAM C K 21600 A (2.00 - 2.30 mic) WHIRCAM Kshort C C Note that the central wavelengths and wavelength range are different C for different types of filter. E.g. the NOT ALFOSC filters have: C Centre FWHM Thruput C U 3620 A 600 60% C B 4400 A 1000 68% C V 5300 A 800 85% C R 6500 A 1300 81% C i 7970 A 1570 91% C data cband 1/'U ','B ','V ','R ','I ','Z ','J ','H ','Ks','? '/ data cbandlower 1/'u ','b ','v ','r ','i ','z ','j ','h ','ks','? '/ data wave/3600.,4300.,5500.,6500.,8200.,9500., 1 12500.,16700.,21600.,0.0/ C C Effective bandwidths UBVRI taken from INT prime-focus guide for C versions up to 10.2, and by integrating over UBVR filter curves with C ~crb/ing/filter.f for signal version 11.0 onward. C NB still waiting for reliable scans of the I and Z filters C data band C 1 / 260., 780., 675.,1000.,1400.,1200.,2070.,2300. ,2800. ,0./ ! < 10.2 C 1 / 500., 720., 860.,1330.,1400.,1200.,2070.,2300. ,2800. ,0./ ! >= 11.0 1 / 500., 720., 860.,1330.,1400., 700.,1600.,2900. ,3200. ,0./ ! >= 12.4 C C Mag -> Jy conversions from Bessell (1979 PASP 91 589) C and Bessell & Brett (1988 PASP 100 1134) C (prior to v11.0, were from Johnson H.L., 1966, ARAA, 4, 193) C data fluxjy C 1 /1880.,4440.,3810.,3010.,2430.,2200.,1570.,1020. , 640. ,0./ ! < 10.2 1 /1810.,4260.,3640.,3080.,2550.,2200.,1570.,1020. , 640. ,0./ ! >=11.0 C C C Photon rate for mag=0 (not used from v11.0 onward, since it can be C calculated from FLUXJY) taken from INT prime-focus manual C data photons C 1 / 783.,1463.,1050., 873., 376., 329., 194., 94.4, 44.1,0./ C New values are similar +-10% except R now 701, I now 449) C C Sky-brightness values are median dark-of-moon ING 1994-6 (solar C minimum) from Sara Ellison's summer 1996 work (for UBVRI; C Z is an interpolation between these and the known JHK values), C as reported in LP technical note 115. C K is for INGRID (Thomas Augusteijn email 7/8/00, previous values C were for WHIRCAM) C Sky brightness is similar (+- 0.2 mag) at other dark sites. C data skymag/22.0,22.7,21.9,21.0,20.0,18.8,16.1,14.7,12.5,0.0/ C 22.0,22.7,21.9,21.0,20.0,18.8,16.6,14.4,11.8,0.0 to v12.7 C 22.0,22.7,21.9,21.0,20.0,18.8,16.6,14.4,12.5,0.0 to v12.6 C 22.0,22.7,21.9,21.0,20.0,18.8,16.6,14.4,12.0,0.0 to v12.4 C 22.0,22.7,21.7,20.9,20.0,18.8,16.6,14.4,12.0,0.0 to v11.6 C 21.4,22.3,21.4,20.4,19.3,19.2 used until version 9.1 C 22.0 23.0 21.9 21.2 20.2 (La Silla, ESO manual) C C Zenith extinction for La Palma, taken from the ING Observers' Guide C = constant (wavelength-dependent) gas + variable (grey) dust (= 0.05) C Used for version 11.0 onwards. C The values for other sites are similar. For CTIO, Frogel 1998, C PASP 110 200 gives .11, .06 and .09 in J, H and K. C data extin/0.55,0.25,0.15,0.09,0.06,0.05,0.1,0.11,0.07,0.0/ C C============================================================================== C C VARIABLES DEPENDING ON INSTRUMENT ONLY C -------------------------------------- data arcmm/ 1 14.9,35.0,23.25,12.4,23.25, 12.4,15.1,4.51,24.7,29.4, ! 1 - 10 1 13.8,58.0,13.8,49.47,0., 0.,24.6,24.6,17.5,13.6, ! 11 - 20 1 8.0,20000.,17.5,24.7,12.87, 2.16,0.0,12.6,12.6,12.76, ! 21 - 30 1 4.32,7.33,13.51,13.51,16.7, 16.7,1.33, ! 31-37 1 13*0.0/ data (cinstr(i),i=1,10)/'WHT ISIS ', 1 'WHT FOS (N/A)', 1 'WHT TAURUS imag f/2 (N/A)', 1 'WHT TAURUS imag f/4 (N/A)', 1 'WHT TAURUS etal f/2 (N/A)', 1 'WHT TAURUS etal f/4 (N/A)', 1 'WHT UES (N/A)', 1 'WHT aux-port imaging(N/A)', 1 'INT wide-field camera ', 1 'INT IDS 235 camera '/ data (cinstr(i),i=11,50)/ 1 'INT IDS 500 camera (N/A)', 1 'INT FOS (N/A)', 1 'JKT imaging (N/A)', 1 'JKT RBS (N/A)', 1 'JKT QUBES (N/A)', 1 'WHT AF2/WYFFOS ', 1 'WHT LDSS imaging (N/A)', 1 'WHT LDSS spectrosc (N/A)', 1 'WHT prime-focus imaging ', 1 'WHT Hitchhiker (N/A)', 1 'WHT WHIRCAM (N/A)', 1 'Human eye (approx.) ', 1 'WHT CIRSI (N/A)', 1 'INT CIRSI (N/A)', 1 'WHT INGRID ', 1 'WHT NAOMI/INGRID ', 1 'WHT NAOMI/OASIS spec. ', 1 'NOT ALFOSC imaging ', 1 'NOT ALFOSC spectroscopy ', 1 'NOT NOTCAM IR imaging WF ', 1 'NOT NOTCAM IR imaging HR ', 1 'NOT MOSCA imaging ', 1 'WHT LIRIS imaging ', 1 'WHT LIRIS spectroscopy ', 1 'WHT ACAM imaging ', 1 'WHT ACAM spectroscopy ', 1 'WHT NAOMI/OASIS imaging ', 1 13*' '/ data comment/24*' ', 1 ' (NB assumes read noise due to one IR-chip readout only)', ! 25 1 ' (NB K bgr in NAOMI/INGRID is about 10 mag/arcsec^2)', ! 26 1 ' (NB test version only - use official OASIS S:N calculator)', ! 27 1 ' (NB for ALFOSC ignore effective bandwidth quoted above)', ! 28 1 ' ', ! 29 1 ' (NB for NOTCAM ignore effective bandwidth quoted above)', ! 30 1 ' (NB for NOTCAM ignore effective bandwidth quoted above)', ! 31 1 ' (NB for MOSCA ignore effective bandwidth quoted above)', ! 32 1 ' (NB approx only - use official LIRIS S:N calculator)', ! 33 1 ' (NB approx only - use official LIRIS S:N calculator)', ! 34 1 ' ', ! 35 1 ' ', ! 36 1 ' (NB test version only - use official OASIS S:N calculator)', ! 37 1 13*' '/ C 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 data iaxis 1 /1,2,0,0,0, 0,2,0,0,1, 1,2,0,1,1, 2,0,1,0,0, 1 0,0,0,0,0, 0,2,0,1,0, 0,0,0,0,0, 2,0,13*0/ data idefdet 1 /15,6,1,1,1, 1,5,1,19,18, 18,4,1,1,1, 2,5,5,2,6, 7,9,10,10,10, 1 10,3,6,6,11, 11,13,17,17,14, 14,3,13*0/ data idefdet2/16,14*0,2,34*0/ data idefgrat/15*1,3,34*1/ data idefgrat2/5,14*0,7,34*0/ C 1 2 3 4 5 6 7 8 9 0 data defslit/1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.0,1.0, 1 1.0,1.0,1.0,1.0,1.0,1.6,1.0,1.0,1.0,0.0, 1 1.0,1.0,1.0,1.0,1.0,0.0,0.2,1.0,1.0,1.0, 1 1.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0,1.0,1.0, 1 10*1.0/ C C IMIRROR - NB WHT Nasmyth flat is aluminium, A&G for ACAM is silvered C data imirror 1 /2,2,2,2,2, 2,3,3,1,2, 2,2,2,2,2, 1,2,2,1,3, 1 3,0,1,1,3, 3,3,2,2,2, 2,2,2,2,2, 2,3,13*0/ data itel 1 /3,3,3,3,3, 3,3,3,2,2, 2,2,1,1,1, 3,3,3,3,3, 1 3,4,3,2,3, 3,3,5,5,5, 5,5,3,3,3, 3,3,13*0/ data itrans/ 1 19,35,25,26,33,37,9, 1 1,36,16,27,34,8,2,20,23,24, 1 17,18,3,4,5,6,7,21,12,10,11, 1 13,14,15,22,28,29,30,31, 1 32,13*0/ data itype 1 /2,2,1,1,2, 2,2,1,1,2, 2,2,1,2,2, 3,1,2,1,1, 1 1,1,1,1,1, 1,3,1,2,1, 1,1,1,2,1, 2,1,13*0/ data ngrating 1 /9,2,0,0,0, 0,2,0,0,16, 16,2,0,4,0, 19,0,4,0,0, 1 0,0,0,0,0, 0,3,0,13,0, 0,0,0,5,0, 1,0,13*0/ data spread /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0, 1 20*0.0/ C C============================================================================== C C VARIABLES DEPENDING ON DETECTOR ONLY C ------------------------------------ data adu /1.7,0.9,1.0,1.2,1.7, 1.04,6.,1.0,1.0,5.3, 1 3.0,2.8,1.3,0.9, 1 1.0,1.2,3.6,1.2,1.5,0.0,0.69,9*0.0/ C old EEV had adu = 1.1 data cdet(1) /'TEK ING 1024*1024, 24.0-mic'/ data cdet(2) /'WHTWFC ING 2048*4096,13.5-mic'/ data cdet(3) /'MITLL ING 2048*4096, 15.0-mic'/ data cdet(4) /'Marcon ING 2148*4700, 13.5-mic'/ data cdet(5) /'SITE ING 2048*2048, 24.0-mic'/ data cdet(6) /'CCD7 NOT 2048*2048 15.0-mic'/ data cdet(7) /'InSb ING 256*256, 30.0-mic'/ data cdet(8) /'STJ ESA 6*6, 25.0-mic'/ data cdet(9) /'Eye '/ data cdet(10)/'INGRID ING 1024*1024, 18.5-mic'/ data cdet(11)/'Rockw NOT 1024*1024, 18.5-mic, 24 e- rms'/ data cdet(12)/'Rockw as (11) but read-up-ramps, 14 e- rms'/ data cdet(13)/'Loral NOT 4096*4096, 15.0-mic'/ data cdet(14)/'AUXCAM ING 2048*2048, 15.0-mic'/ data cdet(15)/'RED+ ING 2048*4096, 15.0-mic'/ data cdet(16)/'EEV12 ING 2048*4100, 13.5-mic'/ data cdet(17)/'LIRIS ING 1024*1024, 18.5-mic'/ data cdet(18)/'EEV10a ING 2048*4096, 13.5-mic'/ data cdet(19)/'INTWFC ING 6144*6144, 13.5-mic'/ data cdet(20)/'QUCAM2/3 ING 1024*1024, 13-mic'/ data cdet(21)/'RED+4 ING 4096*4096, 15.0-mic'/ C data cdet(3) /'EEV ING 1242*1152, 22.5-mic'/ data irot/0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,1, 1,0,0,0,0,0,9*0/ data npixels/1024,4096,2048,2148,2048,2048,256,6,6000,1024, 1 1024,1024,4096,2048,2048,2048,1024,2048,6144,1024,4096,9*0, 1 1024,4096,4096,4700,2048,2048,256,6,6000,1024, 1 1024,1024,4096,2048,4096,4100,1024,4096,6144,1024,4112,9*0/ C old EEV was 1242x1152 pixels, old FOS INT Loral was 512*1024 data pixel/0.024,0.0135,0.015,0.0135,0.024, 1 0.015,0.030,0.025,0.003,0.0185, 1 0.0185,0.0185,0.015,0.015,0.015,0.0135, 1 0.0185,0.0135,0.0135,0.013,0.015,9*0.0/ data read /6.,4.,4.,4.,6.,6.,40.,0.,0.,30.,24.0,14.0,8.5,3.2, 1 3.9,4.8,10.0,4.2,3.5,0.0,4.2,9*0.0/ C read noise for old EEV was 6 C C============================================================================== C C VARIABLES DEPENDING ON SOME COMB BAND, INSTRUMENT, GRATING, DETECTOR C -------------------------------------------------------------------- C C C *** CGRATING *** C data ((cgrating(i,j),i=1,20),j=1,10)/ 1 ' R158R ',' R316R ',' R600R ', ! WHT ISIS 1 ' R1200R', 1 ' R158B ',' R300B ',' R600B ',' R1200B', 1 ' H2400B', 1 11*' ', 1 '1stORD','2ndORD',18*' ', ! WHT FOS 1 20*' ', ! WHT TAU 1 20*' ', ! WHT TAU 1 20*' ', ! WHT TAU 1 20*' ', ! WHT TAU 1 ' E31 ',' E79 ',18*' ', ! WHT UES 1 20*' ', ! WHT aux-port 1 20*' ', ! INT prime 1 'R150V ','R300V ','R400B ', 1 'R400V ','R400R ','R600R ', !IDS 1 'R600IR','R632V ','R831R ','R900V ','R1200U', 1 'R1200B','R1200Y','R1200R','H1800V','H2400B', 1 4*' '/ ! IDS data ((cgrating(i,j),i=1,20),j=11,25)/ 1 'R150V ','R300V ','R400B ', 1 'R400V ','R400R ','R600R ', 1 'R600IR','R632V ','R831R ','R900V ','R1200U', 1 'R1200B','R1200Y','R1200R','H1800V','H2400B', 1 4*' ', ! IDS 1 '1stORD','2ndORD',18*' ', ! INT FOS 1 20*' ', ! JKT imaging 1 ' 300 ',' 600 ','1200 ','2400 ',16*' ', ! RBS 1 20*' ', ! JKT QUBES 1 ' R158R ',' R316R ',' R600R ',' R1200R', ! WHT WYFFOS (i.e. 1 ' R158B ',' R300B ',' R600B ',' R1200B', 1 ' H2400B', ! copy ISIS) 1 ' R600IR',' R632V ',' R831R ',' R900V ', 1 ' R1200U', 1 ' R1200B',' R1200Y',' R1200R',' H1800V', 1 ' H2400B', 1 1*' ', 1 20*' ', ! LDSS imaging 1 'Low ','MedBlu','MedRed','High ',16*' ', ! LDSS 1 20*' ', ! 1 20*' ',100*' '/ ! data (cgrating(i,26),i=1,20)/20*' '/ data (cgrating(i,27),i=1,20)/'LR','MR','HR',17*' '/ data (cgrating(i,28),i=1,20)/20*' '/ data (cgrating(i,29),i=1,20)/ 1 ' g3',' g4',' g5',' g6', 1 ' g7',' g8', 1 ' g10',' g11',' g12',' g14', 1 ' g9+g10 echelle',' g13+g10 echelle', 1 'g13+OrdSt echelle', 1 7*' '/ data ((cgrating(i,j),i=1,20),j=30,33)/80*' '/ data (cgrating(i,34),i=1,20)/'lr_zj','lr_hk', 1 'hr_j','hr_h','hr_k',15*' '/ data (cgrating(i,35),i=1,20)/20*' '/ data (cgrating(i,36),i=1,20)/'V400',19*' '/ data ((cgrating(i,j),i=1,20),j=37,50)/280*' '/ C C *** DISPMM *** C data ((dispmm(i,j),i=1,20),j=1,10)/ 1 121.,62.,33.,17.,120.,64.,33.,17.,8.,11*0.0, ! WHT ISIS 1 395.,195.,18*0.0, ! WHT FOS 1 20*0.0, ! WHT TAURUS 1 20*0.0, ! WHT TAURUS 1 20*0.0, ! WHT TAURUS 1 20*0.0, ! WHT TAURUS 1 2.5,2.5,18*0.0, ! WHT UES 1 20*0.0, ! WHT aux-port 1 20*0.0, ! INT imaging 1 271.3,138.5,104.5,104.5,104.4,69.8,70.2,66.5, ! IDS235 1 50.7, 46.4, 35.3, 35.3, 35.2,34.8,23.2,17.5,4*0.0/ data ((dispmm(i,j),i=1,20),j=11,25)/ 1 132.2, 66.1, 49.6, 49.7, 49.9,33.3,33.4,31.6, ! IDS500 1 23.9, 22.1, 16.7, 16.7, 16.4,15.5,10.5, 8.1,4*0.0, 1 486.,245.,18*0.0, ! INT FOS 1 20*0.0, ! JKT imaging 1 160.,80.,40.,19.,16*0.0, ! JKT RBS 1 1.8,1.5,1.28,1.12,1.0,0.9,0.82,0.75,0.7,11*0.0,! JKT QUBES C 1 479.,245.,131.,67.,479.,254.,131.,67.,33., C 1 141.,134.,102.,94.,71.,71.,71.,71.,47.,35., C 1 1*0.0, ! WHT WYFFOS C Above values are for short camera, pre 2005?? 1 229.,114.,61.,31.,223.,118.,61.,31.,15.3, 1 66.,62.,47.,44.,33.,33.,33.,33.,21.9,16.3, 1 1*0.0, ! WHT WYFFOS C Above numbers from Romano Corradi's email 2/3/05 long camera 1 20*0.0, ! WHT LDSS im. 1 470.,220.,220.,100.,16*0.0, ! WHT LDSS 1 20*0.0, ! WHT prime 1 20*0.0, ! 20 Hitchhiker 1 100*0.0/ data (dispmm(i,26),i=1,20)/20*0.0/ data (dispmm(i,27),i=1,20)/316.,147.,67.,17*0.0/ ! 27 WHT NAOMI/OASIS data (dispmm(i,28),i=1,20)/20*0.0/ ! 28 NOT ALFOSC im data (dispmm(i,29),i=1,20)/153.,200.,207.,100.,100.,87., 1 433.,320.,867.,93.,36.7,33.3,33.3,7*0.0/ ! 29 NOT ALFOSC spec data ((dispmm(i,j),i=1,20),j=30,33)/80*0.0/ data (dispmm(i,34),i=1,20) 1 /330.,524.,99.,132.,182.,15*0.0/ ! 34 WHT LIRIS spec data (dispmm(i,35),i=1,20)/0.0,0.0,18*0.0/ ! 35 WHT ACAM imag data (dispmm(i,36),i=1,20)/220.0,0.0,18*0.0/ ! 36 WHT ACAM spec data (dispmm(i,36),i=1,20)/20*0.0/ ! 37 OASIS imag data ((dispmm(i,j),i=1,20),j=38,50)/260*0.0/ C C *** EFFDET *** C C Detector quantum efficiences etc are from ING web page or articles C in SPECTRUM. Readout noise and gain are for typical readout C speeds, usually FAST. For WHIRCAM, readout noise is for ND-STARE. C data effdet / 1 0.30,0.60,0.65,0.68,0.45,0.25,0.00,0.00,0.00,0.00, ! 1 TEK 1 0.55,0.82,0.80,0.74,0.45,0.20,0.00,0.00,0.00,0.00, ! 2 WHTWFC mosaic 1 0.20,0.65,0.80,0.93,0.95,0.56,0.00,0.00,0.00,0.00, ! 3 MIT/LL (BIV) 1 0.48,0.67,0.90,0.90,0.70,0.30,0.00,0.00,0.00,0.00, ! 4 Marconi 1 0.30,0.60,0.65,0.68,0.45,0.25,0.00,0.00,0.00,0.00, ! 5 SITE 1 0.60,0.90,0.93,0.85,0.50,0.00,0.00,0.00,0.00,0.00, ! 6 Loral (NOT) 1 0.00,0.00,0.00,0.00,0.00,0.00,0.80,0.80,0.80,0.00, ! 7 InSb (WHIRCAM) 1 0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.00, ! 8 STJ 1 0.00,1.00,1.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00, ! 9 Eye 1 0.00,0.00,0.00,0.00,0.00,0.40,0.40,0.55,0.55,0.00, ! 10 INGRID (also C OK for CIRSI) 1 0.00,0.00,0.00,0.00,0.00,0.40,0.40,0.55,0.55,0.00, ! 11 NOT Hawaii 1 0.00,0.00,0.00,0.00,0.00,0.40,0.40,0.55,0.55,0.00, ! 12 NOT Hawaii RUR 1 0.60,0.90,0.93,0.85,0.50,0.00,0.00,0.00,0.00,0.00, ! 13 Lor (MOSCA NOT) 1 0.35,0.55,0.85,0.90,0.80,0.30,0.00,0.00,0.00,0.00, ! 14 AUXCAM 1 0.35,0.55,0.85,0.90,0.80,0.30,0.00,0.00,0.00,0.00, ! 15 RED+ 1 0.52,0.82,0.80,0.76,0.45,0.12,0.00,0.00,0.00,0.00, ! 16 EEV12 1 0.00,0.00,0.00,0.00,0.00,0.80,0.80,0.85,0.90,0.00, ! 17 LIRIS C Z QE is a guess, based on extrapolation of J, K values 1 0.55,0.82,0.80,0.74,0.45,0.20,0.00,0.00,0.00,0.00, ! 18 EEV10a 1 0.55,0.82,0.80,0.74,0.45,0.20,0.00,0.00,0.00,0.00, ! 19 INTWFC 1 0.10,0.65,0.90,0.89,0.60,0.25,0.00,0.00,0.00,0.00, ! 20 QUCAM2/3 (same) 1 0.50,0.70,0.90,0.96,0.73,0.56,0.00,0.00,0.00,0.00, ! 21 RED+4 1 90*0.0 1 / C Old detector QEs: C 1 0.60,0.81,0.81,0.78,0.58,0.23,0.00,0.00,0.00,0.00, ! Loral (INT FOS) C 1 0.13,0.14,0.32,0.45,0.35,0.12,0.0,0.0,0.0,0.0, ! EEVold C 1 0.81,0.80,0.93,0.93,0.50,0.15,0.0,0.0,0.0,0.0, ! Loral (WHT) C 1 0.10,0.20,0.33,0.36,0.28,0.13,0.0,0.0,0.0,0.0, ! FORD C 1 0.28,0.40,0.67,0.76,0.61,0.33,0.0,0.0,0.0,0.0, ! GEC7 (coated) C 1 0.15,0.60,0.70,0.70,0.55,0.20,0.0,0.0,0.0,0.0, ! RCA C 1 0.12,0.11,0.06,0.03,0.00,0.00,0.0,0.0,0.0,0.0, ! IPCS1 C 1 0.12,0.11,0.06,0.03,0.00,0.00,0.0,0.0,0.0,0.0, ! IPCS2 C 1 0.13,0.14,0.32,0.45,0.35,0.12,0.00,0.00,0.00,0.00, ! GEC C C *** EFFGRAT *** C data (((effgrat(i,j,k),i=1,10),j=1,20),k=1,9)/ 1 0.0,0.0,0.65,0.7,0.6,0.60,0.0,0.0,0.0,0.0, ! WHT ISIS 158R 1 0.0,0.0,0.75,0.7,0.45,0.50,0.0,0.0,0.0,0.0, ! 316R 1 0.0,0.0,0.55,0.60,0.5,0.55,0.0,0.0,0.0,0.0, ! 600R 1 0.0,0.0,0.45,0.5,0.5,0.50,0.0,0.0,0.0,0.0, ! 1200R 1 0.7,0.55,0.4,0.35,0.0,0.0,0.0,0.0,0.0,0.0, ! 158B 1 0.7,0.65,0.55,0.42,0.0,0.0,0.0,0.0,0.0,0.0, ! 300B 1 0.65,0.6,0.5,0.38,0.0,0.0,0.0,0.0,0.0,0.0, ! 600B 1 0.5,0.55,0.6,0.38,0.0,0.0,0.0,0.0,0.0,0.0, ! 1200B added 13/10/94 1 0.2,0.4,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,110*0.0, ! 2400B 1 200*1.0, ! WHT FOS 1 200*1.0, ! WHT TAURUS imaging 1 200*1.0, ! WHT TAURUS imaging 1 200*1.0, ! WHT TAURUS + etalon 1 200*1.0, ! WHT TAURUS + etalon 1 200*0.55, ! WHT UES 1 200*1.0, ! WHT aux-port imaging 1 200*1.0/ ! INT prime data (((effgrat(i,j,k),i=1,10),j=1,20),k=10,10)/ 1 0.4,0.55,0.65,0.55,0.40,0.0,0.0,0.0,0.0,0.0, !IDS 235 1 0.4,0.55,0.7,0.65,0.4,0.0,0.0,0.0,0.0,0.0, 1 0.55,0.45,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.4,0.65,0.65,0.5,0.35,0.0,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.55,0.55,0.55,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.55,0.6,0.55,0.5,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.0,0.3,0.65,0.7,0.0,0.0,0.0,0.0, 1 0.4,0.6,0.65,0.6,0.45,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.55,0.65,0.65,0.0,0.0,0.0,0.0, 1 0.0,0.65,0.65,0.55,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.7,0.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.65,0.6,0.5,0.4,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.35,0.55,0.65,0.65,0.4,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.6,0.65,0.0,0.0,0.0,0.0,0.0, 1 0.0 ,0.3 ,0.45,0.5,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.25,0.55,0.5 ,0.0,0.0,0.0,0.0,0.0,0.0,0.0,40*0.0/ data (((effgrat(i,j,k),i=1,10),j=1,20),k=11,11)/ 1 0.4,0.55,0.65,0.55,0.40,0.0,0.0,0.0,0.0,0.0, ! IDS 500 1 0.4,0.55,0.7,0.65,0.4,0.0,0.0,0.0,0.0,0.0, 1 0.55,0.45,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.4,0.65,0.65,0.5,0.35,0.0,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.55,0.55,0.55,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.55,0.6,0.55,0.5,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.0,0.3,0.65,0.7,0.0,0.0,0.0,0.0, 1 0.4,0.6,0.65,0.6,0.45,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.55,0.65,0.65,0.0,0.0,0.0,0.0, 1 0.0,0.65,0.65,0.55,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.7,0.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.65,0.6,0.5,0.4,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.35,0.55,0.65,0.65,0.4,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.6,0.65,0.0,0.0,0.0,0.0,0.0, 1 0.0,0.3,0.45,0.5,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.25,0.55,0.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,40*0.0/ data (((effgrat(i,j,k),i=1,10),j=1,20),k=12,16)/ 1 200*1.0, ! INT FOS 1 200*1.0, ! JKT imaging 1 1.,1.,1.,1.,1.,1.,0.0,0.0,0.0,0.0, ! WHTRBS 1 1.,1.,1.,1.,1.,1.,0.0,0.0,0.0,0.0, 1 1.,1.,1.,1.,1.,1.,0.0,0.0,0.0,0.0, 1 1.,1.,1.,1.,1.,1.,0.0,0.0,0.0,0.0,160*0.0, 1 200*1.0, ! JKT QUBES 1 0.0,0.0,0.65,0.7,0.6,0.6,0.0,0.0,0.0,0.0, ! WYFFOS (copy ISIS data) 1 0.0,0.0,0.75,0.7,0.45,0.5,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.55,0.60,0.5,0.5,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.45,0.5,0.5,0.5,0.0,0.0,0.0,0.0, 1 0.7,0.55,0.4,0.35,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.7,0.65,0.55,0.42,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.65,0.6,0.5,0.38,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.65,0.6,0.5,0.38,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.2,0.4,0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.0,0.3,0.65,0.7,0.0,0.0,0.0,0.0, ! WYFFOS (copy IDS data) 1 0.4,0.6,0.65,0.6,0.45,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.55,0.65,0.65,0.0,0.0,0.0,0.0, 1 0.0,0.65,0.65,0.55,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.7,0.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.65,0.6,0.5,0.4,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.35,0.55,0.65,0.65,0.4,0.4,0.0,0.0,0.0,0.0, 1 0.0,0.0,0.4,0.6,0.65,0.0,0.0,0.0,0.0,0.0, 1 0.0 ,0.3 ,0.45,0.5,0.0,0.0,0.0,0.0,0.0,0.0, 1 0.25,0.55,0.5 ,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10*0.0/ data (((effgrat(i,j,k),i=1,10),j=1,20),k=17,20)/ 1 200*1.0, ! WHT imaging 1 0.2,0.6,0.8,0.7,0.6,0.5,0.0,0.0,0.0,0.0, ! WHT LDSS low 1 0.4,0.7,0.75,0.65,0.4,0.3,0.0,0.0,0.0,0.0, ! WHT LDSS blue 1 0.0,0.25,0.7,0.75,0.6,0.5,0.0,0.0,0.0,0.0, ! WHT LDSS red 1 0.35,0.55,0.6,0.3,0.0,0.0,0.0,0.0,0.0,0.0,160*0.0, ! WHT LDSS high 1 200*1.0, 1 200*1.0/ data (((effgrat(i,j,k),i=1,10),j=1,20),k=21,26)/1200*1.0/ data ((effgrat(i,j,27),i=1,10),j=1,20)/200*1.0/ ! WHT NAOMI/OASIS data ((effgrat(i,j,28),i=1,10),j=1,20)/200*1.0/ ! NOT ALFOSC imaging data ((effgrat(i,j,29),i=1,10),j=1,20)/ 1 0.75,0.70,0.51,0.36,0.00,5*0.0, ! NOT ALFOSC g3 1 0.35,0.67,0.73,0.61,0.42,5*0.0, ! NOT ALFOSC g4 1 0.00,0.00,0.62,0.72,0.59,5*0.0, ! NOT ALFOSC g5 1 0.80,0.70,0.49,0.00,0.00,5*0.0, ! NOT ALFOSC g6 1 0.00,0.57,0.68,0.55,0.00,5*0.0, ! NOT ALFOSC g7 1 0.00,0.00,0.00,0.61,0.45,5*0.0, ! NOT ALFOSC g8 1 0.70,0.80,0.59,0.42,0.21,5*0.0, ! NOT ALFOSC g10 1 0.00,0.67,0.81,0.67,0.42,5*0.0, ! NOT ALFOSC g11 1 0.00,0.00,0.43,0.69,0.63,5*0.0, ! NOT ALFOSC g12 1 0.60,0.70,0.49,0.00,0.00,5*0.0, ! NOT ALFOSC g14 1 0.00,0.30,0.26,0.18,0.10,5*0.0, ! NOT ALFOSC g3+g10 1 0.23,0.34,0.30,0.00,0.13,5*0.0, ! NOT ALFOSC g13+g10 1 0.00,0.00,0.38,0.00,0.00,5*0.0, ! NOT ALFOSC g13+Ordsort 1 70*1.0/ ! NOT ALFOSC unused data (((effgrat(i,j,k),i=1,10),j=1,20),k=30,33)/800*1.0/ data ((effgrat(i,j,34),i=1,10),j=1,20)/200*1.0/ ! 34 LIRIS spec data ((effgrat(i,j,35),i=1,10),j=1,20)/200*1.0/ ! 35 ACAM imag data ((effgrat(i,j,36),i=1,10),j=1,20) 1 /0.55,0.58,0.80,0.70,0.50,0.00,194*1.0/ ! 36 LIRIS spec data ((effgrat(i,j,37),i=1,10),j=1,20)/200*1.0/ ! 37 OASIS imag data (((effgrat(i,j,k),i=1,10),j=1,20),k=38,50)/2600*1.0/ C C *** EFFINSTR *** C C Predicted instrumental throughputs, taken from C the August 1995 Observers' Guide unless otherwise stated. C data ((effinstr(i,j),i=1,10),j=1,10)/ C U B V R I Z J H K C ISIS throughput 51% on blue arm, 42% on red arm: 1 0.51,0.51,0.51,0.42,0.42,0.42,0.0,0.0,0.0,0.0, ! WHT ISIS 1 0.30,0.50,0.45,0.70,0.60,0.00,0.0,0.0,0.0,0.0, ! WHT FOS C TAURUS focal-reducer throughput: 1 0.60,0.60,0.60,0.60,0.60,0.60,0.0,0.0,0.0,0.0, ! WHT TAURUS IMAGING 1 0.60,0.60,0.60,0.60,0.60,0.60,0.0,0.0,0.0,0.0, ! WHT TAURUS IMAGING C * 0.8 for etalon: 1 0.48,0.48,0.48,0.48,0.48,0.48,0.0,0.0,0.0,0.0, ! WHT TAURUS ETALON 1 0.48,0.48,0.48,0.48,0.48,0.48,0.0,0.0,0.0,0.0, ! WHT TAURUS ETALON C UES efficiency is 0.86 (cross disperser) * 0.7 (camera) * 0.8 (grating) C = 0.48 * 0.93 (new 1997 short-slit derotator) = 0.45 1 0.45,0.45,0.45,0.45,0.45,0.45,0.0,0.0,0.0,0.0, ! WHT UES C No optics: 1 1.00,1.00,1.00,1.00,1.00,1.00,0.0,0.0,0.0,0.0, ! WHT aux-port imaging C INT prime efficiency is 0.98**6 for 6 surfaces of corrector C * 0.5 in U, * 0.8 in B for transmission 1 0.45,0.71,0.89,0.89,0.89,0.89,0.0,0.0,0.0,0.0, ! INT prime imaging C IDS 235 throughput = 0.45 (camera) * 0.9 (collimator): 1 0.41,0.41,0.41,0.41,0.41,0.41,0.0,0.0,0.0,0.0/ ! INT IDS 235 camera data ((effinstr(i,j),i=1,10),j=11,50)/ C IDS 500 throughput = 0.49 (camera) * 0.9 (collimator): 1 0.44,0.44,0.44,0.44,0.44,0.44,0.0,0.0,0.0,0.0, ! INT IDS 500 camera C 1 0.30,0.60,0.30,0.60,0.70,0.00,0.0,0.0,0.0,0.0, ! INT FOS C No optics: 1 1.00,1.00,1.00,1.00,1.00,1.00,0.0,0.0,0.0,0.0, ! JKT imaging C Unknown: 1 1.00,1.00,1.00,1.00,1.00,1.00,0.0,0.0,0.0,0.0, ! JKT RBS C Unknown: 1 1.00,1.00,1.00,1.00,1.00,1.00,0.0,0.0,0.0,0.0, ! JKT QUBES C WYFFOS = 0.7 fibres * 0.92 coll. * 0.95 relay mirror * C 0.9 camera * 0.94 other components = 0.51, C (*0.6, 0.8 in U, B for prime-focus corrector) C - these numbers for large fibres, not changed for small fibres C The thruput of the fibres is particularly uncertain - 0.7 C for a 26-m fibre run sounds optimistic?, implies 0.96 per 3-m. C C 1 0.31,0.41,0.51,0.51,0.51,0.51,0.0,0.0,0.0,0.0, ! WHT WYFFOS up to v14.3 C C New estimates below for AF2/WYFFOS, excluding atm, tel, grating and CCD, C are from Dave King's 12/2011 report. E.g. in V band, C 0.22 = 0.82 (PF corr) x 0.82 (fibre feed) x 0.41 wyffos x 0.75 geom losses. C The 0.41 for wyffos = .87 (collimator) x .87 (decollimator) C x .85 (relay mirror) x .96 (corrector) x .85 (camera fold mirror) C x .85 (camera primary) x .96 (field flattener) x .96 (cryostat window). C 1 0.08,0.17,0.22,0.21,0.20,0.20,0.0,0.0,0.0,0.0, ! WHT WYFFOS from v14.4 C 1 0.20,0.60,0.75,0.70,0.40,0.10,0.0,0.0,0.0,0.0, ! LDSS imaging C 1 0.20,0.60,0.75,0.70,0.40,0.10,0.0,0.0,0.0,0.0, ! LDSS + grating C WHT PF 4-element field corrector + 2-element ADC: 1 0.60,0.80,1.00,1.00,1.00,1.00,0.0,0.0,0.0,0.0, ! WHT prime imaging C 1 0.00,1.00,1.00,1.00,1.00,0.00,0.0,0.0,0.0,0.0, ! WHT hitchhiker C From WHIRCAM users' guide v1.0 = derotator+dichroic+optics C (throughput is a factor 2 lower for MARTINI): 1 0.00,0.00,0.00,0.00,0.00,0.00,0.6,0.6,0.6,0.0, ! WHT WHIRCAM 1 0.00,0.06,0.06,0.06,0.00,0.00,0.0,0.0,0.0,0.0, ! Human eye C Assuming 6/98 blocking filter 0.5 * PF corrector 0.5 = 0.25 1 0.00,0.00,0.00,0.00,0.00,0.00,0.25,0.25,0.0,0.0,! WHT CIRSI 1 0.00,0.00,0.00,0.00,0.00,0.00,0.25,0.25,0.0,0.0,! INT CIRSI C From ING web page, giving total QE / det QE = 0.5 1 5*0.0,0.7,0.7,0.7,0.7,0.0, ! WHT INGRID 1 5*0.0,0.5,0.5,0.5,0.5,0.0, ! WHT NAOMI/INGRID C NAOMI thruput to INGRID = 0.51 = .85 derot (2004) * .87 OAP1 C to OAP2 including DM * .99 dichroic * 0.7 INGRID optics 1 0.0,0.0,0.25,0.28,0.27,0.16,0.00,0.00,0.00,0.00,! WHT NAOMI/OASIS C 1 0.0,0.0,0.38,0.38,0.38,0.25,0.00,0.00,0.00,0.00,! WHT NAOMI/OASIS C (where is this from??) C NAOMI peak thruput = 0.28 = .85 derot * .87 OAP1 to OAP2 C including DM * .99 dichroic * .98 flat C to OASIS * .94 focus lens * 0.41 OASIS optics (incl gratings?) C 1 0.65,0.71,0.70,0.69,0.67,5*0.0, ! NOT ALFOSC imaging 1 0.65,0.71,0.70,0.69,0.67,5*0.0, ! NOT ALFOSC spec. 1 5*0.0,5*1.0, ! NOT NOTCAM WF 1 5*0.0,5*1.0, ! NOT NOTCAM HR 1 10*1.0, ! NOT MOSCA imaging 1 10*0.79, ! 33 WHT LIRIS imaging 1 10*0.79, ! 34 WHT LIRIS spec 1 0.52,0.64,0.71,0.71,0.70,0.70,0.0,0.0,0.0,0.0, ! 35 WHT ACAM imag 1 0.52,0.64,0.71,0.71,0.70,0.70,0.0,0.0,0.0,0.0, ! 36 WHT ACAM imag C The above are Tibor's 20/1/10 predicted throughput values for ACAM C as-built (including lack of AR coating lens 5), multiplied by the C reflectivity of the A&G flat. See ACAM imaging web page for values. C 1 0.32,0.72,0.78,0.78,0.78,0.78,0.0,0.0,0.0,0.0, ! ACAM im/spec values C used before 20/1/10 1 0.0,0.0,0.38,0.38,0.38,0.25,0.00,0.00,0.00,0.00,! 37 WHT NAOMI/OASIS imag C new est, as above for spec 1 130*0.0/ C C *** TRUETHRU *** C C The TRUETHRU(BAND,INSTR) values are derived from the instrumental C zeropoints (apparent mag for 1 detected photon/sec for imaging, C or Oke AB mag for 1 photon/sec/A for spectroscopy) given below. C Where two sets of values given, newest is used. C These measurements are likely to be C affected at the 10% level by changes in the primary-mirror C reflectivity between aluminisings. C Unless otherwise stated, the imaging data are through the 50-mm C CuSO4/glass U filters and the BVRI Harris set. C C Dates last checked against instrument web pages: C 20091128: acam, af2, ids (nothing > 2000), intwfc (nothing on C page), isis red/blue, naomi/ingrid, whtpf C C C Z E R O P O I N T S C Instrument U B V R I Date Source of information C ---------- ---- ---- ---- ---- ---- ---- --------------------- C ISIS C ---- C 18.1 18.2 17.6 18.5 17.4 9708 Smartt B/158B/LOR UBV C R/158R/TEK RI C 18.0 17.2 0101 Garcia B/158B/EEV12 C 18.0~18.0 R/158R/TEK4 C (no dichroic) data (zmeas(i,1,1),i=1,10) 1 /18.3,18.6,17.8,18.3,17.5,5*0.0/ data zmeasc(1)/'B/R300B/EEV12(UB) R/R158R/RED+ (VRI):'/ data zmeasd(1)/'(''for new 5300 dichroic'', date unknown)'/ C C WHT ACAM imag. C -------------- data (zmeas(i,35,1),i=1,10) 1 /24.3,26.0,26.7,26.8,27.1,5*0.0/ data zmeasc(35)/'AUXCAM/Bessell filters, conv to std bwidth:'/ data zmeasd(35)/'(6/2009, Benn)'/ C C WHT ACAM spec. C -------------- data (zmeas(i,36,1),i=1,10)/3*0.0,18.5,6*0.0/ data zmeasc(36)/'V400/AUXCAM:'/ data zmeasd(36)/'(6/2009, Benn)'/ C C WHT PF imaging C -------------- data (zmeas(i,19,1),i=1,10)/24.1,26.2,26.4,26.5,26.0,5*0.0/ data zmeasc(19)/'TEK:'/ data zmeasd(19)/'(9/1994 Carter)'/ C C WHT AF2/WYFFOS (refln mode) C -------------- C Instrument U B V R I Date Source of information C ---------- ---- ---- ---- ---- ---- ---- --------------------- C 16.5 16.5 16.5 9610? Bridges lower-limits C on throughput with C various gratings. C H2400B is factor 2 poorer. C 16.5 16.8 16.6 0107 Corradi small-fibres R600B C 13.1 16.1 16.5 16.6 16.5 0410 Corradi small-fibres, C R600B (U B V) and R600R (R I), seeing variable 1 - 1.3 arcsec, numbers C scaled to the median fibre. C C New data from peak-of-raster throughput measurements by Cecilia/Lilian, C and I've assumed seeing = 1.1" to take into account degradation of C throughput by acquisition errors: C C data (zmeas(i,16,1),i=1,10) /12.1,16.1,16.9,17.0,16.5,16.1,4*0.0/ ! 8/13 C data zmeasc(16)/ C 1 'Small fib / long-cam / WHTWFC R300B (UB) / R316R (VRIZ):'/ C C Tweaked 5/14 for consistency with re-evaluated zenith zero points C from Cecilia (new correction for airmass) C + using actual seeing = 1.3" for UBV, 0.9" for VRI: data (zmeas(i,16,1),i=1,10) /11.0,16.1,16.9,17.0,16.5,16.1,4*0.0/ ! 5/14 data zmeasc(16)/ 1 'Small fib / long-cam / WHTWFC R300B (UBV) / R316R (RIZ):'/ data zmeasd(16)/'(5+2/2013, Farina/Dominguez)'/ C C WHT LIRIS imag. C --------------- data (zmeas(i,33,1),i=1,10) /6*0.0,24.83,25.17,24.55,0.0/ data zmeasc(33)/'LIRIS:'/ data zmeasd(33)/'(2003, LIRIS commissioning)'/ C C WHT LIRIS spec. C --------------- C C WHT NAOMI/INGRID C ---------------- data (zmeas(i,26,1),i=1,10) /6*0.0,23.5,23.6,22.8,0.0/ data zmeasc(26)/'INGRID (but gain uncertain): '/ data zmeasd(26)/'(1/2001, Benn)'/ C C WHT OASIS imag. No zeropoints yet, only predicted thruput C WHT OASIS spec. " C C INT IDS 235 C ----------- C 13.8 16.3 16.4 16.2 15.1 97? WEB post-96-cleaning C R150V, TEK for BVRI C 9411 Harlaftis R150V TEK for U C 13.5 16.4 16.5 16.4 15.2 9810 Garcia EEV10 C 14.5 16.4 16.4 16.3 14.8 0010 Garcia TEK5 C data (zmeas(i,10,1),i=1,10) 1 /14.5,16.4,16.4,16.3,14.8,5*0.0/ data zmeasc(10) /'TEK5:'/ data zmeasd(10) /'(10/2000, Garcia)'/ C C INT PF imaging C -------------- C 23.8 25.5 25.5 25.5 25.0 97? WEB Loral no. 4 data (zmeas(i,9,1),i=1,10) 1 /23.6,25.7,25.6,25.6,24.9,5*0.0/ data zmeasc(9)/'INTWFC:'/ data zmeasd(9)/'(3/2005)'/ C (above values passed on by Robert Greimel, email 9/3/05) C C C Old, or non-ING, instruments C C WHT INGRID 0107 Almudena Zurita C 25.20 J, 25.28 H, 24.54 Ks C assuming 5.3 e-/count C WHT aux-port 26.2 26.1 26.3 25.4 9511 Benn TEK C WHT TAURUS imag. 24.5 25.1 25.5 24.9 9203 GEMINI f/2, GEC C JKT imaging 21.0 23.1 23.3 23.5 23.0 9407 Peletier C (checked 21.1 23.1 23.2 23.4 23.0 9707 Benn TEK4) C NOT ALFOSC 23.6 25.7 25.7 25.5 24.9 0306 NOT page Loral C NOT MOSCA 24.6 26.2 26.0 25.7 25.2 0306 Telting Loral mosaic C NOTCAM HR + WF 0306 Telting Rockwell C J 23.8, H 23.8, K 23.3 C C WHT FOS 17.0 18.1 17.2 9203 GEMINI C WHT LDSS spec 15.9 18.4 18.6 18.2 9404 Carter U (high), C B, V (blue), C R (red), TEK C WHT UES 16.3 17.0 17.0 16.7 15.5 9311 Pettini old derot, TEK C 16.7 16.9 16.9 16.0 0009 Telting new derot, SIT1 C 17.0 17.4 17.3 17.0 0101 Telting new derot, 2EEV C WHT Hitchhiker 24.5 25.4 25.5 24.7 9206 GEMINI GEC C WHT WHIRCAM 9506 WHIRCAM users' guide C WHT CIRSI 9806 Richard McMahon C INT CIRSI 9806 Richard McMahon C INT FOS 13.7 15.7 15.7 17.0 15.9 9402 Harlaftis GEC C NOT ALFOSC 0306 Telting C C No empirical data for TAURUS FP, LDSS imaging, IDS500, C RBS or QUBES C C To obtain apparent mag, add the following numbers to an Oke AB mag: C C U B V R I C -0.8 0.2 0.0 -0.2 -0.4 C C The values of TRUETHRU below have been derived by judicious smoothing, C interpolation and extrapolation of the data above. Changes in the C instrument since the measurements were made (e.g. the new derotator C for UES) have been taken into account. C In 3 cases, the derived TRUETHRU were significantly LARGER than 1.0. C ISIS R 1.7, ISIS I 1.4 are at risk of second-order contamination, C and have somewhat arbitrarily been set to 1.0. C The INGRID JHK values have been left as measured. C data ((truethru(i,j),i=1,10),j=1,10)/ C U B V R I Z J H K ? 1 0.8,1.0,0.8,1.0,1.0,1.0,1.0,1.0,1.0,1.0, ! 1 ISIS 1 0.7,0.7,0.7,0.6,0.8,0.8,1.0,1.0,1.0,1.0, ! 2 WHT FOS 1 0.8,0.8,0.8,0.7,0.8,0.8,1.0,1.0,1.0,1.0, ! 3 TAURUS imaging f/2 1 0.8,0.8,0.8,0.7,0.8,0.8,1.0,1.0,1.0,1.0, ! 4 TAURUS imaging f/4 1 0.8,0.8,0.8,0.7,0.8,0.8,1.0,1.0,1.0,1.0, ! 5 TAURUS etalon f/2 1 0.8,0.8,0.8,0.7,0.8,0.8,1.0,1.0,1.0,1.0, ! 6 TAURUS etalon f/4 C 1 0.8,0.9,0.7,0.6,0.4,0.5,1.0,1.0,1.0,1.0, ! 7 UES to v12.4 1 0.4,0.4,0.6,0.7,0.7,0.7,1.0,1.0,1.0,1.0, ! 7 UES > v12.5 1 0.6,0.6,0.7,0.7,0.8,0.8,1.0,1.0,1.0,1.0, ! 8 aux-port 1 1.0,0.9,0.7,0.7,0.9,0.7,1.0,1.0,1.0,1.0, ! 9 INT prime 1 0.3,0.7,0.7,0.7,0.7,1.0,1.0,1.0,1.0,1.0/ ! 10 IDS 235 data ((truethru(i,j),i=1,10),j=11,50)/ 1 0.3,0.7,0.7,0.7,0.7,1.0,1.0,1.0,1.0,1.0, ! 11 IDS 500 1 0.3,0.7,0.8,0.8,0.7,0.8,1.0,1.0,1.0,1.0, ! 12 INT FOS 1 0.7,0.7,0.9,0.9,1.0,1.1,1.0,1.0,1.0,1.0, ! 13 JKT imaging 1 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0, ! 14 JKT RBS 1 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0, ! 15 JKT QUBES C 1 0.3,0.3,0.3,0.3,0.3,0.3,0.0,0.0,0.0,0.0, ! 16 AF2/WYFFOS large fibres C 1 0.03,0.11,0.21,0.3,0.6,0.3,0.0,0.0,0.0,0.0, ! 16 AF2/WYFFOS small fibres C up to v14.3 C 1 0.04,0.18,0.24,0.29,0.46,0.43,4*0.0, ! 16 AF2/WYFFOS small fibres C (revised values 14/8/13 to be consistent with new on-sky C measurements by Cecilia and Lilian (R300B/RED+4, R316R/RED+4) C and v14.3 estimates of effinstr for af2/wyffos. These values C not used in any released version of signal. C C 1 0.04,0.43,0.55,0.70,1.20,1.08,4*0.0, ! 16 AF2/WYFFOS small fibres C from v14.4, C for consistency with new zeropoints from Cecilia/Lilian 8/2013 C and with new effinstr from Dave King 12/2011 C C Revised 6/5/14, as noted above under zero-points: 1 0.014,0.37,0.61,0.57,0.96,0.81,4*0.0, ! 16 AF2/WYFFOS small fibres C from v14.5 1 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0, ! 17 LDSS imaging 1 1.2,1.1,0.9,0.7,0.7,0.7,1.0,1.0,1.0,1.0, ! 18 LDSS spectroscopy 1 0.9,0.9,0.7,0.7,0.7,0.7,1.0,1.0,1.0,1.0, ! 19 WHT prime 1 0.7,0.7,0.8,0.5,0.5,1.0,1.0,1.0,1.0,1.0, ! 20 Hitchhiker 1 0.0,0.0,0.0,0.0,0.0,0.0,0.7,0.7,0.7,0.0, ! 21 WHT WHIRCAM 1 0.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0, ! 22 Human eye 1 0.0,0.0,0.0,0.0,0.0,0.7,0.7,0.7,0.7,0.0, ! 23 WHT CIRSI 1 0.0,0.0,0.0,0.0,0.0,0.7,0.7,0.7,0.7,0.0, ! 24 INT CIRSI C 1 0.0,0.0,0.0,0.0,0.0,1.6,1.6,1.6,1.6,0.0, ! 25 WHT INGRID to v12.7 1 0.0,0.0,0.0,0.0,0.0,2.0,2.0,1.8,1.6,0.0, ! 25 WHT INGRID 1 10*1.0, ! 26 WHT NAOMI/INGRID 1 10*1.0, ! 27 WHT NAOMI/OASIS spec 1 0.95,1.03,1.14,0.93,1.28,0.00,0.00,0.00,0.00,0.00, ! 28 NOT ALFOSC imag 1 0.73,0.89,0.98,1.01,1.14,0.00,0.00,0.00,0.00,0.00, ! 29 NOT ALFOSC spec 1 0.00,0.00,0.00,0.00,0.00,0.00,0.90,0.74,0.85,0.00, ! 30 NOT NOTCAM WF 1 0.00,0.00,0.00,0.00,0.00,0.00,0.90,0.74,0.85,0.00, ! 31 NOT NOTCAM HR 1 1.52,1.18,1.09,0.77,1.16,5*1.0, ! 32 NOT MOSCA imag 1 5*0.0,0.29,0.53,3*0.8, ! 33 WHT LIRIS imag 1 5*0.0,0.29,0.53,3*0.8, ! 34 WHT LIRIS spec 1 6*1.0,0.00,0.00,0.00,0.00, ! 35 WHT ACAM imag 1 6*1.0,0.00,0.00,0.00,0.00, ! 36 WHT ACAM spec 1 10*1.0, ! 37 WHT NAOMI/OASIS imag 1 130*0.0/ C C Set default values of parameters C data iinstr/1/ data iband/3/ data idet/15/ data igrat/1/ data qgrat/' R158R'/ data fwhm/1/ data objm/20/ data slit/1/ data time/100/ data ipx/0/ data airmass/1.0/ C C############################################################################## C C Calculate PHOTONS from FLUXJY (v11.0 onward), set SKYMAG0 = SKYMAG C do i=1,nband photons(i)=fluxjy(i)*10000/6.6/wave(i) skymag0(i)=skymag(i) C print *,'Band, photons ',i,photons(i) enddo C C IP = 6 - interactive (normal mode) C 7 - non-interactive, reads data from a file signal.dat C writes output to signal.out C (e.g. for web interface) C 8 - non-interactive, reads data from a file standard input C writes output to standard output C (e.g. for web interface) C Non-interactive mode can also be triggered by typing X at the prompt. C C print *,'IP (6, 7 or 8)? ' C read(*,*) ip ip=6 C C If interactive, type welcome lines C if(ip.eq.6) then iin = 1 iout = 6 call welcome(version) else if (ip.eq.7) then iin = 1 iout = 7 open(unit=iin,name='/tmp/signal.dat') open(unit=iout,name='/tmp/signal.out') else iin = 5 iout = 6 endif C C Calculate predicted instrument zeropoints, for default detector C and first grating in list for that instrument C do j=1,ninstr do k=1,2 C K loop over default instrument/grating combinations if(k.eq.1) then iid=idefdet(j) iig=idefgrat(j) else if(k.eq.2) then iid=idefdet2(j) iig=idefgrat2(j) endif do i=1,nband zp(i,j,k)=photons(i)*10000*telarea(itel(j))* 1 effmirror**float(imirror(j))*effinstr(i,j)* 1 truethru(i,j)*effdet(i,iid) if(itype(j).eq.1) then zp(i,j,k)=zp(i,j,k)*band(i) else zp(i,j,k)=zp(i,j,k)*effgrat(i,iig,j) endif if(zp(i,j,k).ne.0) zp(i,j,k)=2.5*log10(zp(i,j,k))-extin(i) enddo enddo enddo C======================================================================== C C Write out summary of instrument / detector parameters C C iw=0 if(iw.gt.0) call writeout( 1 iw,iwb,iwd,iwi, 1 ninstr,ndet, 1 itel,imirror,itype,ngrating,iaxis,itrans, 1 idefdet,idefdet2,idefgrat,idefgrat2, 1 npixels,irot, 1 telarea,arcmm,defslit,spread,dispmm, 1 read,adu,pixel, 1 effmirror,wave,band,fluxjy,photons,skymag,extin, 1 effinstr,effgrat,effdet,truethru,zp,zmeas, 1 zmeasc,zmeasd, 1 version,cband,cinstr,comment,cgrating,cdet 1 ) C=========================================================================== C C Main menu / calculation loop C do loop=1,100000 C C Get parameters (from user or from SIGNAL.INPUT) C call getpar(ip,iin,iout,ninstr,ngrating,ndet,nband,loop, 1 cinstr,cgrating,cdet,cband,cbandlower, 1 effgrat, effdet, 1 wave,itel,idefdet,defslit,itrans, 1 iinstr,igrat, idet,iband, 1 objm,ipx,time,fwhm,slit,airmass,telarea,skymag,skymag0, 1 extin,band, 1 sol,eclat,glat,air,im,alpha,r,zm,ak, 1 mode) C C Program flow now determined by MODE C C print *,'MODE = ',mode if(mode.eq.1) then call skybrcalc(ip,iout,skymag0, 1 sol,eclat,glat,air,im,alpha,r,zm,ak) goto 500 else if(mode.eq.2) then call help(ip,iout) goto 500 else if(mode.eq.3) then call helpsky(ip,iout) goto 500 else if(mode.eq.9) then goto 500 endif C C ELSE IF MODE=0, continue with S:N calculation C C C C If IP=7, write html tags C if(ip.eq.7) write(iout,492) 492 format('',/,'',/, 1'SIGNAL ',/,'',/, 1'',/, 1'Predicted throughput and signal-to-noise', 1'
',/,'') C C Convert input mag to required quantity C if(objm.gt.100) then objm=objm-100 objm=-1.e-6*10.**((23.9-objm)/2.5) write(iout,812) -objm 812 format('Brightness in Jy:',e10.3) endif if(objm.lt.0) then objm=-2.5*alog10(-objm/fluxjy(iband)) write(iout,811) objm 811 format('Apparent mag: ',f7.2) endif C C Set IPX = 0 for IFU/fibre spectroscopy C ipx0=ipx objm0=objm if(itype(iinstr).eq.3.and.ipx.eq.1) then ipx=0 objm=objm-2.5*log10(slit*slit*3.14/4.) endif C C Reset QGRAT C if(igrat.ne.0) then qgrat=cgrating(igrat,iinstr)(1:10) else qgrat=' ' endif C C Calculate effective collecting area for TEL * INSTR * DET C geomarea=telarea(itel(iinstr)) area=geomarea thru(1)=10.**(-extin(iband)/2.5*airmass) thru(2)=effmirror**(float(imirror(iinstr))) thru(3)=effinstr(iband,iinstr) thru(4)=effgrat(iband,igrat,iinstr) area=area*thru(1)*thru(2)*thru(3)*thru(4) C area=geomarea C 1 *10.**(-extin(iband)/2.5*airmass) C 1 *effmirror**(float(imirror(iinstr))) C 1 *effinstr(iband,iinstr)*effgrat(iband,igrat,iinstr) c print *,'area, geomarea = ',area,geomarea c print *,'extin, airmass, effmirror ',extin(iband),airmass, c 1 effmirror c print *,'imirror,effinstr,grat ',imirror(iinstr), c 1 effinstr(iband,iinstr),effgrat(iband,igrat,iinstr) throughput=area/geomarea C print *,'*** thruput ***', throughput area=area*effdet(iband,idet) if(area.eq.0) then write(iout,813) 813 format( 1 '*** WARNING - throughput = 0 Grating OK?', 1 ' Detector OK? Band OK?',/) endif C C For spectroscopic obs of point sources, calculate fraction C of light VIGN passing through slit, fibre or lenslet. C NB VIGN = 1 for combination ITYPE = 3 and user selects C IPX = 1 (i.e. IPX = 0, IPX0 = 1 at this point) C vign=1 if(itype(iinstr).ne.1.and.ipx.eq.0.and.ipx0.eq.0) 1 call slitvign(iinstr,itype,slit,fwhm,vign) C C Calculate scales at detector in arcsec/pixel and Angstrom/pixel C arcpix=arcmm(iinstr)*pixel(idet) disppix=dispmm(igrat,iinstr)*pixel(idet) C C Calculate number of photons from object and from sky/arcsec**2 C per Angstrom C sobj=photons(iband)*10000*area*time*10.**(-objm/2.5)*vign ssky= 1 photons(iband)*10000*area*time*10.**(-skymag(iband)/2.5) C C Correct for empirical/predicted throughput ratio C sobj=sobj*truethru(iband,iinstr) ssky=ssky*truethru(iband,iinstr) C C Display parameter settings to user C qinst=cinstr(iinstr) qband=cband(iband) qdet=cdet(idet)(1:6) qgrat2=qgrat sky=skymag(iband) deteff=effdet(iband,idet) pixsize=pixel(idet) photons2=photons(iband) bwidth=band(iband) readout=read(idet) slit2=slit true0=truethru(iband,iinstr) ext=extin(iband) if(ngrating(iinstr).gt.0) then qgrat2=qgrat else qgrat2=' ' endif if(itype(iinstr).eq.1) then slit2=0 else bwidth=0 endif call display(ip,iout,ans,iinstr,itype,ipx,ipx0,ext, 1 iband,cband,wave, 1 qinst,qband,qgrat2,qdet,fwhm,objm,objm0,slit2,airmass, 1 sky,time,geomarea,thru,throughput,deteff,pixsize,photons2, 1 bwidth,readout,true0,comment) C C Direct imaging calculation and output C if(itype(iinstr).eq.1) then write(iout,'('' '')') if(ipx.eq.0) then sobj2=sobj*band(iband) peak=sobj2/1.14/fwhm/fwhm*arcpix*arcpix else sobj2=sobj*band(iband)*arcpix*arcpix endif ssky2=ssky*band(iband)*arcpix*arcpix call free(sobj2,buffa) call free(ssky2,buffb) call free(ssky,buffc) call free(peak,buffd) if(ipx.eq.0) then write(iout,821) buffa(1:10),buffd(1:10),buffc(1:10), 1 buffb(1:10) 821 format('Detected photons from object =',a10, 1 ' (max',a10,' /pixel)',/, 1 'Detected photons/A/arcsec^2 from sky =',a10,/, 1 'Detected photons/pixel from sky =',a10) else if(ipx.eq.1) then write(iout,822) buffa(1:10),buffc(1:10),buffb(1:10) 822 format('Detected photons/pixel from object =',a10,/, 1 'Detected photons/A/arcsec^2 from sky =',a10,/, 1 'Detected photons/pixel from sky =',a10) endif else C C Spectroscopic calculation and output C call free(sobj,buffa) if(ipx.eq.0) then write(iout,823) buffa(1:10),vign 823 format('Detected photons/A from object =',a10, 1 ' (from in-slit fraction ',f4.2,')') else if(ipx.eq.1) then write(iout,824) buffa(1:10) 824 format( 1 'Detected photons per A from each sq arcsec of object =',a10) endif if(ipx.eq.0) then sobj2=sobj*disppix else sobj2=sobj*slit*arcpix*disppix endif if(sobj2.gt.0) then call free(sobj2,buffa) if(ipx.eq.0) then write(iout,825) buffa(1:10) 825 format( 1 'Detected photons/pixel-step-in-wavelength from object =', 1 a10) else if(ipx.eq.1) then write(iout,826) buffa(1:10) 826 format('Detected photons/pixel from object =',a10) endif endif ssky2=ssky*slit*arcpix*disppix if(itype(iinstr).eq.3) ssky2=ssky*slit*slit*3.14159/4.*disppix call free(ssky2,buffa) call free(ssky,buffc) if(ssky2.ne.0) then write(iout,734) buffc(1:10) 734 format('Detected photons/A/sq.arcsec from sky =',a10) if(itype(iinstr).eq.2) then write(iout,827) buffa(1:10) 827 format('Detected photons/pixel from sky =',a10) else if(itype(iinstr).eq.3) then write(iout,927) buffa(1:10) 927 format('Detected photons/pixel-step-in-wavelength', 1 ' from sky =',a10) endif endif endif C C Calculate signal-to-noise C C C Until version 11.0, used SEE = 3.14159/4.* for imaging C if(ipx.eq.0.and.arcpix.ne.0) then if(itype(iinstr).eq.1) see=3.14159*(fwhm/arcpix)**2 if(itype(iinstr).eq.2) see=2.*fwhm/arcpix else if(ipx.eq.1) then see=1. endif if(itype(iinstr).eq.3) see=spread(iinstr) if(itype(iinstr).le.2) then snr=sobj2/sqrt(sobj2+see*(ssky2+read(idet)*read(idet))) else if(itype(iinstr).eq.3) then snr=sobj2/sqrt(sobj2+ssky2+see*read(idet)*read(idet)) endif if(snr.ne.0) then if(arcpix.ne.0.or.itype(iinstr).eq.3) then call free(snr,buffa) if(ipx.eq.0) then if(itype(iinstr).eq.1) then write(iout,828) buffa(1:10) 828 format('Signal-to-noise =',a10) else if(itype(iinstr).eq.2) then write(iout,829) buffa(1:10) 829 format( 1 'Signal-to-noise/pixel of extracted spectrum =',a10) else if(itype(iinstr).eq.3) then write(iout,929) buffa(1:10) 929 format( 1 'Signal-to-noise/pixel of extracted spectrum', 1 ' (fibre or lenslet) =',a10) endif else if(ipx.eq.1) then write(iout,830) buffa(1:10) 830 format('Signal-to-noise/pixel = ',a10) endif endif endif C C Scales at the detector C For spectroscopy: C IAXIS(IINSTR) IROT(IDET) dispersion direction C 1 0 X C 2 0 Y C 1 1 Y C 2 1 X C write(iout,'('' '')') if(itype(iinstr).eq.1) then dx=npixels(idet,1)*arcpix dy=npixels(idet,2)*arcpix idx=1 idy=1 else if(iaxis(iinstr)+irot(idet).ne.2) then dx=npixels(idet,1)*disppix dy=npixels(idet,2)*arcpix idx=2 idy=1 else dx=npixels(idet,1)*arcpix dy=npixels(idet,2)*disppix idx=1 idy=2 endif endif C print *,'*** ',iinstr,iaxis(iinstr),idet,irot(idet),idx,idy if(dx.ne.0) write(iout,259) 1 dx/float(npixels(idet,1)),unit(idx), 1 npixels(idet,1),dx,unit(idx) 259 format('Scale in X direction: ',f7.2,1x,a1,'/pixel; ', 1 i4,' pixels = ',f9.2,1x,a1) if(dy.ne.0) write(iout,260) 1 dy/float(npixels(idet,2)),unit(idy), 1 npixels(idet,2),dy,unit(idy) 260 format('Scale in Y direction: ',f7.2,1x,a1,'/pixel; ', 1 i4,' pixels = ',f9.2,1x,a1) C C Photons/ADU conversion C write(iout,151) cdet(idet)(1:6),adu(idet) C ,int(read(idet)) 151 format(a6,' gain =',f4.1, 1 ' e-/ADU approx.') C ; readnoise =',i3,' electrons') C C If IP=7, write closing html tags C if(ip.eq.7) write(iout,493) 493 format('',/,'',/,'') C C Reset IPX to IPX0 and OBJM to OBJM (changed above if this loop C was for IPX = 1, ITYPE = 3) C ipx=ipx0 objm=objm0 enddo 500 continue end C============================================================================== C C S U B R O U T I N E S C C============================================================================== C****************************************************************************** C***** D I S P L A Y ****************************************************** C****************************************************************************** C subroutine display(ip,iout,ans,iinstr,itype, 1 ipx,ipx0,ext, 1 iband,cband,wave, 1 qinst,qband,qgrat,qdet,fwhm,objm,objm0,slit,airmass, 1 sky,time,geomarea,thru,throughput,deteff,pixsize,photons, 1 bwidth,readout,true0,comment) C C Displays parameter settings to user C C NB as of version 14.1, writes IPX0 rather than IPX, and C OBJM0 rather than OBJM, C the combination ITYPE = 3, IPX = 0 C implicit none integer i,iinstr,itype(50),ipx,ipx0,iband,ip,iout real fwhm,objm,sky,time,geomarea,throughput,deteff,pixsize, 1 photons,bwidth,readout,slit,true0,ext,airmass,wave(10) real objm0,thru(4) character*6 qdet character*10 qgrat,qgratbuff character*37 text(20) character*25 qinst character*1 ans character*2 qband,cband(10) character*80 cthru character*80 comment(50) do i=1,20 text(i)=' ' enddo qgratbuff=qgrat if(qgratbuff.eq.' ') qgratbuff=' none ' print *,' ' text(1)='G Grating '//qgratbuff text(2)='D Detector '//qdet C C Text strings which depend on whether imaging or spectroscopic C if(itype(iinstr).eq.1) then C C Imaging C text(3)='B Band '//qband write(text(4),'( 1 ''M Apparent magnitude '',f6.1)') objm0 write(text(15),'( 1 ''W Effective bandwidth (A) '',f9.2)') bwidth text(8)=' ' write(text(12),'( 1 '' Atm * tel * instr throughput '',f6.2)') 1 throughput cthru=' ' write(cthru,200) (thru(i),i=1,3) 200 format(' =',f6.2,' *',f6.2,' *',f6.2) else C C Spectroscopic C if(itype(iinstr).eq.2) then write(text(8),'( 1 ''S Slit width (arcsec) '',f6.1)') slit else if(itype(iinstr).eq.3) then write(text(8),'( 1 ''S Fibre/lenslet diam (arcsec) '',f6.1)') slit endif if(itype(iinstr).eq.2.or.itype(iinstr).eq.3) then write(text(12),'( 1 '' Atm*tel*inst*grat throughput '',f6.2)') 1 throughput cthru=' ' write(cthru,201) (thru(i),i=1,4) 201 format(' =',f6.2,' *',f6.2,' *',f6.2,' *',f6.2) endif if(ipx0.eq.0) then write(text(3),'( 1 ''B Band '',a2, 1 '' = wavelength (A) '',i5)') 1 qband,int(wave(iband)) write(text(4),'( 1 ''M Apparent magnitude '',f6.1)') objm0 else write(text(4),'( 1 ''M Apparent magnitude/sq.arcsec'',f6.1)') objm0 endif text(15)=' ' endif C C Remaining text strings C write(text(5),'( 1 ''P Mag (0) or mag/sq.arcsec (1)'',i4)') ipx0 write(text(7),'( 1 ''F FWHM (object*seeing, arcsec)'',f6.1)') fwhm write(text(6),'( 1 ''T Integration time (sec) '',f9.1)') time write(text(9),'( 1 ''A Airmass '',f6.1)') airmass write(text(11),'( 1 ''U Tel. geometric area (sq.m) '',f6.2)') geomarea write(text(13),'( 1 '' Detector efficiency '',f6.2)') deteff write(text(19),'( 1 '' Pixel size (microns) '',f6.1)') pixsize*1000 write(text(18),'( 1 '' Readout noise (electrons) '',f6.1)') readout write(text(16),'( 1 '' Photons/s/A/sq.cm mag=0 '',i5)') int(photons) write(text(17),'( 1 ''K Sky brightness mag/sq.arcsec '',f6.2)') sky write(text(10),'( 1 ''E Extinction per airmass (mag) '',f6.2)') ext write(text(14),'( 1 '' Empirical/theoretical '',f6.2)') true0 if(ip.eq.6) then write(iout,101) qinst,text(10), 1 text(1),text(11), 1 text(2),text(12),cthru(1:32), 1(text(i),text(i+10),i=3,9), 1 comment(iinstr) 101 format(' I Instrument = ',a25,1x,a37,/, 1 1x,a37,4x,a37,/, 1 1x,a37,4x,a37,a32,/, 1 6(1x,a37,4x,a37,/), 1 1x,a37,4x,a37,/,a80) else write(iout,102) qinst,text(10)(3:37), 1 text(1)(3:37),text(11)(3:37), 1 text(2)(3:37),text(12)(3:37),cthru(1:32), 1 (text(i)(3:37),text(i+10)(3:37),i=3,9), 1 comment(iinstr) 102 format('Instrument = ',a25,1x,a35,/, 1 a35,4x,a35,/, 1 a35,4x,a35,a32,/, 1 7(a35,4x,a35,/),a80) endif end C****************************************************************************** C***** F R E E ************************************************************ C****************************************************************************** C subroutine free(x,buff15) C C Writes real X into buffer BUFF15 free-format, as in PRINT *,X C (unix fortran print * not convenient because renders numbers C outside 0.1049 - 1012863 (why?) in exponential format, and may C not yield same formats as other fortran) C implicit none real x character*15 buff15 C print *,'okfree 1',x,buff15 if(x.lt.1000000.and.x.gt.0.1) then write(buff15,'(f10.2,5x)') x else write(buff15,'(e10.3,5x)') x endif C print *,'okfree 2',x,buff15 end C****************************************************************************** C***** G E T P A R ******************************************************** C****************************************************************************** C subroutine getpar(ip,iin,iout,ninstr,ngrating,ndet,nband,loop, 1 cinstr,cgrating,cdet,cband,cbandlower, 1 effgrat, effdet, 1 wave,itel,idefdet,defslit,itrans, 1 iinstr,igrat, idet,iband, 1 objm,ipx,time,fwhm,slit,airmass,telarea,skymag,skymag0, 1 extin,band, 1 sol,eclat,glat,air,im,alpha,r,zm,ak, 1 mode) C C CMDOK string of acceptable user command characters C implicit none integer ninstr,ngrating(50),ndet,nband,itel(50),loop,iunit integer iinstr,igrat,idet,iband,ipx,mode,i,j,k,idefdet(50) integer itrans(50) real defslit(50) real effgrat(10,20,50),effdet(10,30),wave(10),objm,time real fwhm,slit,airmass,telarea(50),skymag(10),extin(10), 1 band(10),dummy character*1 ans character*2 cband(10),cbandlower(10),ans2 character*20 cgrating(20,50) character*25 cinstr(50) character*30 cinstrb(40) character*40 cdet(30) character*40 cmdok character*80 cline C C Variables used only in call to skybrcalc C integer ip,iin,iout,im real skymag0(10),sol,eclat,glat,air,alpha,r,zm,ak data cmdok/'IGDBMPTFSAKEWigdbmptfsakewQHqhUuXx '/ if(ip.ne.6) then C C ******************************** C C Get parameters from SIGNAL.INPUT C C ******************************** C mode=9 read(iin,*,end=500) mode if(mode.eq.0) then read(iin,*) iinstr read(iin,*) igrat if(igrat.eq.0) igrat=1 read(iin,*) idet read(iin,*) iband read(iin,*) objm read(iin,*) ipx read(iin,*) time read(iin,*) fwhm read(iin,*) slit read(iin,*) airmass read(iin,'(a80)') cline if(cline.eq.'D'.or.cline.eq.'d') then if(iband.le.6) skymag(iband)=skymag0(iband)-0.4 else if(cline.eq.'G'.or.cline.eq.'g') then if(iband.le.3) skymag(iband)=skymag0(iband)-2.15 if(iband.ge.4.and.iband.le.6) 1 skymag(iband)=skymag0(iband)-1.3 else if(cline.eq.'B'.or.cline.eq.'b') then if(iband.le.3) skymag(iband)=skymag0(iband)-3.4 if(iband.ge.4.and.iband.le.6) 1 skymag(iband)=skymag0(iband)-2.7 else read(cline,*) dummy if(dummy.ne.0) skymag(iband)=dummy endif read(iin,*) dummy if(dummy.ne.0) extin(iband)=dummy read(iin,*) dummy if(dummy.ne.0) band(iband)=dummy else if(mode.eq.1) then im=1 read(iin,*) sol read(iin,*) eclat read(iin,*) glat read(iin,*) air read(iin,*) alpha if(alpha.eq.-1) im=0 read(iin,*) zm read(iin,*) r read(iin,*) ak endif else C C ************************ C C Get parameters from user C C ************************ C iunit=5 print *,' ' 173 continue if(loop.gt.1) print *, 1 'Type I G D B M P T F S A U W K or E to change a parameter' print *, 1 'Type return to continue,', 1 ' Q to quit, H for more information' C print *,' ' read(iunit,'(a1)') ans C C Check command is one of set C do k=1,40 if(ans.eq.cmdok(k:k)) goto 174 enddo print *,'Invalid command: ',ans goto 173 174 continue C C Stop C if(ans.eq.'Q'.or.ans.eq.'q') mode=9 C C Type rudimentary help C if(ans.eq.'H'.or.ans.eq.'h') then call help(ip,iout) goto 27 endif C C Get band C if(ans.eq.'B'.or.ans.eq.'b') then write(*,193) 193 format('Approximate throughput for which of', 1 ' following bands?',/) do j=1,nband write(*,196) cband(j),int(wave(j)) 196 format(a2,' =',i6,' A for spectroscopy') enddo read(iunit,'(a2)') ans2 do j=1,nband if(ans2.eq.cband(j).or.ans2.eq.cbandlower(j)) iband=j enddo endif C C Get bandwidth C if(ans.eq.'W'.or.ans.eq.'w') then print *,'Current effective bandwidth for ',cband(iband) 1 ,' = ',band(iband) print *,'(= area under filter transmission curve)' print *,'New effective bandwidth for this band?' read(iunit,*) band(iband) endif C C Get apparent magnitude C if(ans.eq.'M'.or.ans.eq.'m') then write(6,104) cband(iband) 104 format(' Apparent magnitude in band ',a2,'?') print *, 1 '(number > 50 will be interpreted as 100 + Oke AB mag)' print *, 1 '(negative number will be interpreted as Jy', 1 ' (1E-26 W/Hz/m**2))' read(iunit,*) objm endif C C Get telescope/instrument combination C if(ans.eq.'I'.or.ans.eq.'i') then print *,'Telescope/instrument? (N/A = no longer offered)' do k=1,40 cinstrb(k)=' ' enddo do k=1,ninstr i=itrans(k) write(cinstrb(k),101) k,cinstr(i) 101 format(i3,2x,a25) enddo do k=1,20 write(6,'(a30,5x,a30)') cinstrb(k),cinstrb(k+20) enddo print *,' ' write(6,102) 102 format(' Choose a number ', 1 '(NB detector reverts to a default', 1 ' type on changing instrument)') read(iunit,*) k iinstr=itrans(k) idet=idefdet(iinstr) slit=defslit(iinstr) endif C C Get slit width C if(ans.eq.'S'.or.ans.eq.'s') then print *,'Slit width (or sqrt fibre/lenslet area) (arcsec)?' read(iunit,*) slit endif C C Get IPX (point or extended) C if(ans.eq.'P'.or.ans.eq.'p') then print *,'Mag is for point source (0) or', 1 ' per arcsec**2 for an extended source (1)?' read(iunit,*) ipx endif C C Get extinction C if(ans.eq.'E'.or.ans.eq.'e') then print *, 1 'New value of extinction per airmass for this band?' read(iunit,*) extin(iband) endif C C Get new value for telescope geometric area C if(ans.eq.'U'.or.ans.eq.'u') then print *,'Telescope geometric area = ', 1 telarea(itel(iinstr)) print *,'New value?' read(*,*) telarea(itel(iinstr)) endif C C Get airmass C if(ans.eq.'A'.or.ans.eq.'a') then print *,'Airmass?' read(iunit,*) airmass endif C C Get sky brightness C if(ans.eq.'K'.or.ans.eq.'k') then c729 continue print *,'Current value of sky brightness in ', 1 cband(iband),' = ',skymag(iband), 1 ' mags/arcsec**2' print *,'Enter new value for sky brightness' print *,'or enter 0 (zero) to run the sky-brightness', 1 ' calculator' print *,' (NB the calculator does not', 1 ' reset the current value)' print *,'or enter D, G or B to select', 1 ' typical sky brightness in', 1 ' dark, grey or bright of moon' print *,' (NB typical dark is not same as minimum)' print *,'or enter H for help' read(iunit,'(a80)') cline if(cline.eq.'H'.or.cline.eq.'h') then call helpsky(ip,iout) c goto 729 else if(cline.eq.'D'.or.cline.eq.'d') then if(iband.le.6) skymag(iband)=skymag0(iband)-0.4 else if(cline.eq.'G'.or.cline.eq.'g') then if(iband.le.3) skymag(iband)=skymag0(iband)-2.15 if(iband.ge.4.and.iband.le.6) 1 skymag(iband)=skymag0(iband)-1.3 else if(cline.eq.'B'.or.cline.eq.'b') then if(iband.le.3) skymag(iband)=skymag0(iband)-3.4 if(iband.ge.4.and.iband.le.6) 1 skymag(iband)=skymag0(iband)-2.7 else read(cline,*) dummy if(dummy.ne.0) then skymag(iband)=dummy else if(dummy.eq.0) then call skybrcalc(ip,iout,skymag0, 1 sol,eclat,glat,air,im,alpha,r,zm,ak) c goto 729 endif endif endif C C If NGRATING(IINSTR) > 0, get grating C if(ans.eq.'G'.or.ans.eq.'g') then print *, 1 'Grating? (NB for WYFFOS, the list below is', 1 ' 9 ISIS then 10 IDS gratings)' if(ngrating(iinstr).gt.0) then do i=1,ngrating(iinstr) write(6,105) i,cgrating(i,iinstr), 1 effgrat(iband,i,iinstr) 105 format(i2,2x,a20,' throughput in this band = ',f4.2) enddo write(6,172) 172 format('Choose a number (leftmost column above)') read(iunit,*) igrat endif endif C C Get detector C if(ans.eq.'D'.or.ans.eq.'d') then print *,'Detector?' print *, 1'(See ING web page for detailed detector info)' do i=1,ndet write(6,106) i,cdet(i),effdet(iband,i) 106 format(i3,2x,a40,' QE in this band = ',f4.2) enddo write(6,172) read(iunit,*) idet endif C C Get exposure time C if(ans.eq.'T'.or.ans.eq.'t') then print *,'Exposure time (sec)?' read(iunit,*) time endif C C Get FWHM C if(ans.eq.'F'.or.ans.eq.'f') then print *,'FWHM object * seeing?' read(iunit,*) fwhm endif 27 continue endif 500 continue end C****************************************************************************** C***** H E L P ************************************************************ C****************************************************************************** C subroutine help(ip,iout) C C C implicit none integer ip,iout write(iout,'('' '')') write(iout,101) 101 format( 1'Full details of the program''s operation are given in the',/, 1'comments preceding the code.',/, 1'More up-to-date help is given on the SIGNAL web page:',/, 1' http://www.ing.iac.es/~crb/signal.html',/, 1' ',/, 1'For imaging, the bandwidths used correspond to the',/, 1'50-mm or liq-CuSO4 U filters, the Harris B,V,R,I set,',/, 1'the RGO glass Z filter and the WHIRCAM J, H and Kshort',/, 1'filters. Note that the 125-mm glass U filter',/, 1'has a factor 3 lower throughput than the 50-mm U.',/, 1'Note also that the throughputs of the Harris B filters are',/, 1'up to 25% less than that of the KPNO B filters.',/, 1'To specify narrow-band filters or adjust the effective',/, 1'bandwidth, use command B.',/, 1' ',/, 1'Object brightnesses can also be given in Jy or Oke AB mag',/, 1'(use the M command).') if(ip.eq.6) call pause write(iout,102) 102 format( 1' ',/, 1'The program does not take into account:',/, 1'- Vignetting at large field radius',/, 1'- Vignetting by the spectrograph slit (the specified width',/, 1' of the slit is used only in calculating the contribution',/, 1' from the sky).',/, 1'- Loss of light to colour and ND filters or to polarisation',/, 1' optics in spectrograph',/, 1'- Loss of grating efficiency at large angles',/, 1' and loss of light to neighbouring orders',/, 1'- Brightening of the sky due to twilight, moonlight,',/, 1' solar activity, low ecliptic or galactic latitude,',/, 1' or light pollution (enhanced in dusty conditions)',/, 1' - see option K in the menu',/, 1'- For FOS, U,B are for second order, V,R,I are first order.') if(ip.eq.6) call pause write(iout,103) 103 format( 1' ',/, 1'The signal-to-noise calculation:',/, 1' Nobj = photons/A (per arcsec**2 if extended) from object',/, 1' Nsky = photons/A/arcsec**2 from sky',/, 1' BAND = equivalent width of filter in A (integral T(l)dl',/, 1' where T(l) is transmission, l is wavelength)',/, 1' P = number of pixels over which integration carried out',/, 1' READ = CCD readout noise (e-)',/, 1' FWHM = object fwhm (intrinsic and due to seeing) in arcsec',/, 1' ',/, 1' Imaging, point or extended sources:',/, 1' N = Nobj * BAND for point sources',/, 1' N = Nobj * BAND*(arcsec/pixel)**2 for extended sources',/, 1' S = Nsky * BAND*(arcsec/pixel)**2',/, 1' P = pi*(FWHM/(arcsec/pixel))**2 for point source',/, 1' P = 1 for an extended source') if(ip.eq.6) call pause write(iout,104) 104 format( 1' ',/, 1' Spectroscopy, point source:',/, 1' N = Nobj * A/pixel',/, 1' S = Nsky * slit-width(A) * arcsec/pixel * A/pixel',/, 1' P = 2 * FWHM (arcsec) / arcsec/pixel',/, 1' ',/, 1' Spectroscopy, extended source:',/, 1' N = Nobj * slit-width(A) * arcsec/pixel * A/pixel',/, 1' S = Nsky * slit-width(A) * arcsec/pixel * A/pixel',/, 1' P = 1',/, 1' ',/, 1' Signal-to-noise = N/sqrt(N+P*(S+READ**2))',/, 1' For point sources, the sky counts are those from a',/, 1' 2-FWHM-diameter circular aperture for imaging, and from',/, 1' a 2-FWHM * slit-width rectangle for spectroscopy.') write(iout,105) 105 format( 1' For extended sources, the calculations are per pixel.') end C****************************************************************************** C***** H E L P S K Y ****************************************************** C****************************************************************************** C subroutine helpsky(ip,iout) implicit none integer ip,iout character*1 pans character*70 prompt pans=' ' write(iout,101) 101 format( 1'SIGNAL''s default sky-brightness settings are median for',/, 1'dark-of-moon, solar minimum, at high galactic and ecliptic',/, 1'latitude and in the absence of twilight and moonlight.',/, 1'The BVR values are accurate to +- 0.1 mag and are similar to',/, 1'those measured at other dark sites (Chile, Hawaii etc.).',/, 1'U and I are accurate to 0.5 mag. R and I sky brightnesses',/, 1'vary randomly by several tenths of a mag with variations in',/, 1'the OH airglow. The V and R sky brightness include a',/, 1'contribution of about 0.1 mag due to NaD light pollution.',/, 1'Light pollution is negligible in other bands, and it is',/, 1'decreasing.',/, 1'The sky is markedly brighter (several tenths of a mag) under',/, 1'very dusty conditions (> 0.3 mag extinction).',/, 1'The sky is 0.4 mag brighter at solar maximum. Recent minima') prompt= 1'[Return to continue, Q to end help]' if(ip.eq.6) call pause2(pans,prompt) if(pans.eq.'Q'.or.pans.eq.'q') goto 22 write(iout,102) 102 format( 1'were in 1986.5, 1996.5. Variation is approximately',/, 1'sinusoidal with time.',/, 1'The sky is 0.4 mag brighter on the ecliptic than at the',/, 1'poles, varying as sine(b) approx.',/, 1'The airglow contribution (typically about 70% of the total',/, 1'in V) brightens approx as airmass. The sky is 0.3 mag',/, 1'brighter at airmass 1.5.',/, 1'Stars fainter than mag=20 contribute', 1' negligibly to the total.',/, 1'Starlight scattered by interstellar dust contributes about',/, 1'5% of the total, rising to about 30% on the galactic plane.',/, 1'The extragalactic contribution is negligible (< 1%).',/, 1'The brightness of the sky does not vary with time after',/, 1'astronomical twilight.',/, 1'For further details of the calculations of moonless sky',/, 1'brightness, see La Palma technical note 115',/, 1'(Benn & Ellison 1998).') if(ip.eq.6) call pause2(pans,prompt) if(pans.eq.'Q'.or.pans.eq.'q') goto 22 write(iout,103) 103 format( 1' ',/, 1'SKY BRIGHTNESS WITH MOON UP:',/, 1'When the moon is 60 deg from zenith,', 1' with extinction 0.15 mag,',/, 1'the zenith sky will brighten roughly by M as tabulated below:',/, 1' ',/, 1' New Crescent Quarter Gibbous Full',/, 1' Phase angle (deg) 180 135 90 45 0 ',/, 1' Approx day: 1 4 8 12 15',/, 1' D, G or B: D G G B B',/, 1' Illum. frac. % 0 25 50 75 100',/, 1' M (U, B, V) 0 0.5 2.0 3.1 4.3',/, 1' M (R) 0 0.3 1.3 2.4 3.5',/, 1' M (I) 0 0.2 1.1 2.2 3.3',/, 1' ') if(ip.eq.6) call pause2(pans,prompt) if(pans.eq.'Q'.or.pans.eq.'q') goto 22 write(iout,104) 104 format( 1'Sky brightness for other values of lunar phase, lunar zenith',/, 1'angle, sky position and extinction, can be estimated with',/, 1'SIGNAL''s sky-brightness calculator.',/, 1'Note that the quarter moon (i.e. half disc illuminated)',/, 1'is a factor of 10 (not 2) fainter than full, due to the',/, 1'opposition effect (also responsible for gegenschein on the',/, 1'ecliptic and dry heiligenschein on earth).',/, 1'The contribution of moonlight in V has been calculated',/, 1'according to the scattering formula of Krisciunas & Schaefer',/, 1'(1991, PASP, 103, 1033), normalised (multiplied by a factor',/, 1'of 2.4) to agree with measurements of sky brightness made at',/, 1'the JKT on a dust-free night in 7/98.',/, 1'The moonlight contribution in the other bands is calculated',/, 1'according to the U-B, B-V, V-R, R-I colours of moonlight',/, 1'measured on the same night in 7/98.') if(ip.eq.6) call pause2(pans,prompt) if(pans.eq.'Q'.or.pans.eq.'q') goto 22 write(iout,105) 105 format( 1'These values agree +-40% with measurements made by DHPJ in',/, 1'9/89, but the contribution of moonlight probably depends',/, 1'strongly on local conditions (e.g. dust, telescope baffling),',/, 1'and with current data, the contribution by moonlight on',/, 1'La Palma can probably only be predicted within a factor ~2.',/, 1' ',/, 1'Ian Steele (LJMU) has found that the background brightness',/, 1'at the JKT rises dramatically (factor >~5 brighter than',/, 1'the above numbers) if moonlight falls on the telescope',/, 1'structure (scattering within the telescope).') 22 continue end C****************************************************************************** C***** P A U S E ********************************************************** C****************************************************************************** C subroutine pause implicit none character*1 ans print *,'[Press return to continue]' read(*,'(a1)') ans end C****************************************************************************** C***** P A U S E 2 ******************************************************** C****************************************************************************** C subroutine pause2(pans,prompt) implicit none character*1 pans character*70 prompt print *,prompt read(*,'(a1)') pans end C****************************************************************************** C***** S K Y B R C A L C ************************************************** C****************************************************************************** C subroutine skybrcalc(ip,iout,skymag, 1sol,eclat,glat,air,im,alpha,r,zm,ak) C C SKYBRCALC calculates the brightness of the sky in each band, C in S10 units and in mag/arcsec^2 as a function of C ecl, gal latitudes, zd, phase of solar cycle, and, if moon up: C phase of moon, zenith distance of moon, separation between C sky position and moon, extinction C If IP=6, the parameters are requested from user, otherwise C those supplied in call are used. C C Variables C --------- C AIR Airmass (derived from ZD) C AK V-band extinction in mag C ALPHA Phase of moon (0 = full, 90 = 7-day, 180 = new) C ECLAT Ec lat (deg) C GLAT Gal lat (deg) C IM = 1 if moonlight to be considered C IP Unit number to which to send output (6 = screen) C NBAND Number of wavelength bands C QAIR Airglow contribution in S10 C QSTAR Diffuse starlight contribution in S10 C QZOD Zodiacal light contibution in S10 C Q3 QAIR+QSTAT+QZOD in S10 C QSKY(10) Moonless sky brightness in S10 derived from SKY C QMOON(10) Contrib of moon in S10 C QALL(10) QSKY+QMOON C R Ang sep of patch of sky and moon (deg) C SKY Moonless sky br in mag/arcsec^2 derived from Q3, C correcting for colour difference (band - V) C SKYALL Total sky br in mag/arcsec^2 C SOL Phase of solar sycle (0 = min, 1 = max) converted t C 0.8 + 1.2*SOL C ZM Zenith distance of moon (deg) C implicit none integer i,im,nband,j,ip,iout,loop real skymag(10),sol,eclat,glat,air,alpha,r,zm,ak real qair,qzod,qstar,q3 real qsky(10),sky(10),qmoon(10),qall(10),skyall(10) nband=5 loop=1 if(ip.eq.6) loop=10000 do i=1,loop if(ip.eq.6) then print *,'--------------------------------------------------' print *,'Running sky-brightness calculator' print *, 1 'Solar activity (0 = minimum, 1 = maximum, 9 to finish', 1 ' with calculator)?' print *, 1 '(Dates of last three solar minima: 1976.8, 1986.8, 1996.5)' read(*,*) sol if(sol.eq.9) goto 22 print *, 1 'Ecliptic latitude in deg (longitude', 1 ' assumed to be > 90 deg from sun)?' read(*,*) eclat print *,'Galactic latitude in deg?' read(*,*) glat print *,'Zenith distance (deg)?' read(*,*) air air=1./sqrt(1-0.96*(sin(air/57.3))**2.) print *,'Phase angle of moon (-1 for moonless sky)?' print *,'(e.g. 0 = full, 90 = 7-day old moon, 180 = new moon)' read(*,*) alpha im=0 if(alpha.ne.-1) then im=1 print *,'Zenith distance of moon (deg)?' read(*,*) zm print *, 1 'Angular separation of moon and target patch of sky (deg)?' read(*,*) r print *,'V-band extinction (mag)?' read(*,*) ak endif endif ! if IP=6 C C Convert SOL to MJy C sol=0.8+1.2*sol call skybrcalc2(im,nband,skymag,sol,eclat,glat,air, 1 alpha,r,zm,ak, 1 qair,qzod,qstar,q3, 1 qsky,sky,qmoon,qall,skyall) C C If IP=7|8, write html header C if(ip.ne.6) write(iout,494) 494 format('',/,'',/, 1'SIGNAL ',/,'',/, 1'',/, 1'Predicted brightness of La Palma sky', 1'
',/,'') write(iout,116) (sol-0.8)/1.2,eclat,glat,acos(1/air)*57.3,air 116 format( 1 'Solar activity =',f4.1,', ecliptic and galactic', 1 ' latitudes =',f5.1,',',f5.1,' deg,',/, 1 ' ZD = ',f4.1,' deg, airmass = ',f5.3) if(im.eq.1) write(iout,117) alpha,zm,r,ak 117 format('Lunar phase = ',f5.1,' deg, lunar zenith distance =', 1 f5.1, ' deg,',/, 1 ' distance from moon = ',f5.1,' deg, extinction =', 1 f5.2,' mag') write(iout,101) 1 q3,qair,qzod,qstar, 1 skymag(1)-skymag(2),skymag(2)-skymag(3),skymag(3)-skymag(4), 1 skymag(4)-skymag(5), 1 (qsky(j),j=1,nband),(sky(j),j=1,nband) 101 format( 1 'Moonless V sky brightness, in S10 units ', 1 '(equivalent 10th-mag stars/deg^2):',/, 1 f6.1,' ( =',f6.1,' airglow +',f6.1,' zodiacal light +',f6.1, 1 ' starlight)',/, 1 'The (moonless) sky brightness in other bands is obtained by', 1 ' assuming ',/, 1 'colours U-B, B-V, V-R, R-I = ',4f6.2,':',//, 1 ' Band ', 1 'U B V R I',/, 1 ' Total (no moon)',5f9.1,' S10 units',/, 1 ' Total (no moon) ',5f9.2,' mag/arcsec^2') if(im.eq.1) 1 write(iout,102) 1 (qmoon(j),j=1,nband),(qall(j),j=1,nband), 1 (skyall(j),j=1,nband),(sky(j)-skyall(j),j=1,nband) 102 format(/, 1 ' Moonlight ',5f9.1,' S10 units',/, 1 ' Total ',5f9.1,' S10 units',/, 1 ' Total ',5f9.2,' mag/arcsec^2',/, 1 ' (Change with moon',5f9.2,' mag)',/) write(iout,109) 109 format('Accuracy:', 1 ' +- 0.1 mag without moon (in B,V),', 1 ' +- 1 mag with moon',/) C C If IP=7|8, write closing html tags C if(ip.ne.6) write(iout,495) 495 format('',/,'',/,'') enddo 22 continue end C****************************************************************************** C***** S K Y B R C A L C 2 ************************************************ C****************************************************************************** C subroutine skybrcalc2(im,nband,skymag,sol,eclat,glat,air, 1 alpha,r,zm,ak, 1 qair,qzod,qstar,q3, 1 qsky,sky,qmoon,qall,skyall) C C Calculates sky brightness for given conditions, using LP tech note C 115 (Benn & Ellison) for dark-sky brightness, and Krisciunas & Schaefer C 1991 PASP 103 1033 p.1038 for moonlight contribution. C All working in S10 units until final conversion to mag/arcsec**2 C C Variables not used in SKYBRCALC: C S, FR, XZ, XZM, BNL - terms at start Sect 5 of Krisciunas C & Schaefer for calculating moonlight contr. C BNL is moonlight sky brightness in V in nanoLamberts C FUDGE(I) normalise the Krisciunas prediction to values measured C in 6 bands at the JKT 5/7/98 C BS10 = BNL * 3.8, the V moonlight sky br in S10 units C implicit none integer i,im,nband real sol,eclat,glat,air,qair,qzod,qstar,q3 real qsky(10),sky(10),qmoon(10),qall(10),skyall(10) real skymag(10),fudge(10) real alpha,s,fr,r,xz,zm,xzm,bnl,ak,bs10 data fudge/2.0,1.6,2.4,3.0,5.9,5*0.0/ C C Calculate V sky brightness without moon C qair=(145+130*(sol-0.8)/1.2)*air if(eclat.lt.60) then qzod=140-90.*sin(eclat/57.3) else qzod=60 endif qstar=100.*exp(-abs(glat)/10.) q3=qair+qzod+qstar C C Assume sky colour implied by values in SKYMAG, and calculate C dark-sky brightness in the other bands C do i=1,nband sky(i)=27.78-2.5*log10(q3)+skymag(i)-skymag(3) qsky(i)=10.**((27.78-sky(i))/2.5) enddo C C Calculate contribution of moon in each band C if(im.eq.1) then s=10.**(-0.4*(3.84+0.026*alpha+4.e-9*alpha**4.)) fr=10.**5.36*(1.06+(cos(r/57.3))**2)+10.**(6.15-r/40.) xz =air xzm=1./sqrt(1-0.96*(sin(zm/57.3))**2.) bnl=s*fr*10.**(-0.4*ak*xzm)*(1-10.**(-0.4*ak*xz)) bs10=bnl*3.8 C print *,'s,fr,xz,xzm,bnl,bs10 ',s,fr,xz,xzm,bnl,bs10 do i=1,nband qmoon(i)=fudge(i)*bs10 qall(i)=qsky(i)+qmoon(i) skyall(i)=27.78-2.5*log10(qall(i)) enddo endif end C****************************************************************************** C***** S L I T V I G N **************************************************** C****************************************************************************** C subroutine slitvign(iinstr,itype,slit,fwhm,vign) C C Calculates VIGN, the fraction of light entering slit for given C pointlike object FWHM. C implicit none integer iinstr,itype(50) real slit,fwhm,vign,sigma,r,rat vign=1 C C Slit spectroscopy C Formulae below are approx (better than 5%) C fit to dependence of light fraction in slit vs slit/fwhm C given by light_in_slit.f numerical simulations C if(itype(iinstr).eq.2) then if(fwhm.eq.0) then vign=1.0 else rat=slit/fwhm if(rat.lt.0.76) vign=0.868*rat if(rat.ge.0.76.and.rat.lt.1.40) vign=0.37+0.393*rat if(rat.ge.1.40.and.rat.lt.2.30) vign=1.00-0.089*(2.3-rat) if(rat.ge.2.3) vign=1.0 endif endif C C Fibre/lenslet spectroscopy C r=slit/2. sigma=fwhm/2.35 if(itype(iinstr).eq.3) then vign=1.0-exp(-r*r/2./sigma/sigma) endif end C****************************************************************************** C***** W E L C O M E ****************************************************** C****************************************************************************** C subroutine welcome(version) implicit none character*28 version print *,' ' print *,'SIGNAL '//version 1 //' crb@ing.iac.es' print *,' ' write(*,101) 101 format( 1'SIGNAL calculates photons/A detected from a source of given',/, 1'apparent magnitude (per arcsec**2 if extended), as:',/, 1' 10.**(-mag/2.5)',/, 1' * photons/sec/A/m**2 giving mag = 0 at top of atm.',/, 1' * transmission of atm. at given airmass',/, 1' * exposure time in sec',/, 1' * unobstructed area of main mirror in m**2',/, 1' * measured throughput of telescope/instrument',/, 1' * quantum efficiency of detector in the given band',/, 1'Accuracy +-20%. Signal-to-noise is per pixel step in',/, 1'wavelength for point sources,', 1' and per pixel for extended ones.',/, 1'For imaging, the counts obtained above are multiplied by the',/, 1'effective bandwidth of the filters in A, and signal-to-noise',/, 1'is calculated within a 2-FWHM-diameter aperture for a point',/, 1'source and per pixel for extended sources.') write(*,102) 102 format( 1'Signal-to-noise = Nobj/sqrt(Nobj+pixels*(Nsky+readnoise**2))',/, 1' ',/, 1'First time users, type H for more information.') end C****************************************************************************** C***** W R I T E O U T **************************************************** C****************************************************************************** C C subroutine writeout( 1 iw,iwb,iwd,iwi, 1 ninstr,ndet, 1 itel,imirror,itype,ngrating,iaxis,itrans, 1 idefdet,idefdet2,idefgrat,idefgrat2, 1 npixels,irot, 1 telarea,arcmm,defslit,spread,dispmm, 1 read,adu,pixel, 1 effmirror,wave,band,fluxjy,photons,skymag,extin, 1 effinstr,effgrat,effdet,truethru,zp,zmeas, 1 zmeasc,zmeasd, 1 version,cband,cinstr,comment,cgrating,cdet 1 ) implicit none integer i,j,k,kk,ninstr,ndet integer itrans(50),itel(50),itype(50),imirror(50),ngrating(50) integer iaxis(50),npixels(30,2),idefdet(50),idefdet2(50) integer iw,iwd(30),iwi(50),irot(30) integer iwb,idefgrat(50),idefgrat2(50),iid,iig real defslit(50),spread(50),telarea(50),effmirror real effinstr(10,50),effgrat(10,20,50),effdet(10,30) real zmeas(10,50,5),zp(10,50,5) real truethru(10,50),dispmm(20,50),arcmm(50) real pixel(30),read(30),adu(30) real band(10),fluxjy(10),photons(10),skymag(10), 1 extin(10),wave(10) character*2 cband(10) character*20 cgrating(20,50) character*25 cinstr(50) character*28 version character*40 cdet(30) character*80 comment(50),zmeasc(50),zmeasd(50) character*5 czmeas(10,50,5) do k=1,5 do j=1,50 do i=1,10 czmeas(i,j,k)=' ----' if(zmeas(i,j,k).gt.0.0) 1 write(czmeas(i,j,k),'(f5.1)') zmeas(i,j,k) enddo enddo enddo open(unit=11,name='outsum') write(11,1104) version,ninstr,ndet, 1 telarea(3),telarea(2),effmirror 1104 format( 1 'Instrument and detector parameters used by SIGNAL',/, 1 '=================================================',//, 1 a28,//, 1 'The counts and S:N predicted by SIGNAL are based on the ', 1 'numbers given below.',//, 1 'Total number of instruments in SIGNAL = ',i2,/, 1 'Total number of detectors in SIGNAL = ',i2,/, 1 '(Not all are shown below.)',//, 1 'Assumed collecting areas of WHT and INT (in m^2) = ', 1 2f5.1,/, 1 'Assumed reflectivity of aluminium telescope mirrors = ', 1 f5.2, 1 //,'EFFINSTR is the a priori predicted throughput ', 1 'of each', 1 ' instrument in each band',/,'(excluding atm, tel, gratings,', 1 ' filters).',/, 1 /,'TRUETHRU is an empirical correction factor,', 1 ' to make SIGNAL''s predictions',/,'match the observed', 1 ' instrumental zeropoints in each band.',/, 1 'For most instruments, the TRUETHRU values are close to 1.', 1 //,'''Assumed zeropoint'' is calculated on the basis of'/, 1 'EFFINSTR * grating throughput * detector QE * TRUETHRU.', 1 //'The measured zeropoints are empirical on-sky values.',/) write(11,1115) 1 (cband(k),k=1,iwb), 1 (int(wave(k)),k=1,iwb), 1 (int(band(k)),k=1,iwb), 1 (int(fluxjy(k)),k=1,iwb), 1 (int(photons(k)),k=1,iwb), 1 (skymag(k),k=1,iwb), 1 (extin(k),k=1,iwb) 1115 format(/,'Bandpasses used, sky brightness, extinction',/, 1 '-------------------------------------------',/, 1 'Band ',9(a2,4x),/, 1 'Wavel. (A) ',9(i5,1x),/, 1 'Bandwidth (A)',9(i5,1x),/, 1 'Mag 0 in Jy ',9(i5,1x),/, 1 'Mag 0 in ',9(i5,1x),/, 1 ' ph/s/A/cm^2',/, 1 'Dark sky mag ',9(f6.2),/, 1 ' /arcsec^2',/, 1 'Extinction ',9(f6.2),/, 1 ' (airm. 1.0) ',/) write(11,1132) 1132 format('Instruments included in SIGNAL',/, 1 '------------------------------',/) do j=1,ninstr write(11,1131) j,cinstr(j) 1131 format(i3,2x,a25) enddo write(11,1133) 1133 format(//,'Detectors included in SIGNAL',/, 1 '----------------------------',/) do j=1,ndet write(11,1134) j,cdet(j) 1134 format(i3,2x,a30) enddo do j=1,50 if(iwi(j).ne.0) then iw=iwi(j) write(11,1101) cinstr(iw),comment(iw)(1:70), 1 itel(iw),imirror(iw),itype(iw),ngrating(iw), 1 arcmm(iw),arcmm(iw)*pixel(idefdet(iw)), 1 defslit(iw),spread(iw),idefdet(iw), 1 cdet(idefdet(iw))(1:35),iaxis(iw),itrans(iw),iw 1101 format(/,15('====='),/,a25,/,15('====='),/,a70,/, 1 'ITEL ',i3,' (3 = WHT, 2 = INT, 1 = JKT)',/, 1 'IMIRROR ',i3,' (no. alum tel mirrors en route)',/, 1 'ITYPE ',i3, 1 ' (1 = imag, 2 = spec, 3 = ifu/fibre)',/, 1 'NGRATING ',i3,' (no. gratings available)',/, 1 'ARCMM ',f7.2,' "/mm (spatial scale)', 1 ' = ',f7.2,' "/pixel',/, 1 'DEFSLIT ',f7.2,' " (default slit width, for spec)',/, 1 'SPREAD ',f7.2,' (no. pix over which spec spread,', 1 ' for IFU)',/, 1 'IDEFDET ',i3,' (def. CCD) = ',a35,/, 1 'IAXIS ',i3,' (1 = spec disp is usu in x,', 1 ' 2 is usu in y)',/, 1 'ITRANS ',i3,' (order in menu)',/, 1 'IW ',i3,' (instrument number)',/) write(11,1102) (cband(k),k=1,iwb),(effinstr(k,iw),k=1,iwb) 1102 format('Throughput',/,'----------',/,13x,9(a2,3x), 1 ' A/mm A/pix',//, 1 'EFFINSTR ',9f5.2,/) do i=1,ngrating(iw) write(11,1103) cgrating(i,iw)(1:10), 1 (effgrat(k,i,iw),k=1,iwb), 1 dispmm(i,iw),dispmm(i,iw)*pixel(idefdet(iw)) 1103 format(a10,9f5.2,f8.1,f7.3) enddo write(11,1105) cdet(idefdet(iw))(1:6), 1 (effdet(k,idefdet(iw)),k=1,iwb) 1105 format(/,a6,4x,9f5.2) if(idefdet2(iw).ne.0) then write(11,1105) cdet(idefdet2(iw))(1:6), 1 (effdet(k,idefdet2(iw)),k=1,iwb) endif write(11,1109) 1 (truethru(k,iw),k=1,iwb) 1109 format(/,'Empirical / predicted thruput:',/, 1 'TRUETHRU ',9f5.2) write(11,1110) 1 (effinstr(k,iw)*truethru(k,iw),k=1,iwb) 1110 format(/,'EFFINSTR * empirical/predicted:',/, 1 10x,9f5.2) write(11,1111) cdet(idefdet(iw))(1:6), 1 (effdet(k,idefdet(iw))*truethru(k,iw)* 1 effinstr(k,iw),k=1,iwb) 1111 format(/,'EFFINSTR * empirical/prediced * QE of ',a6,':',/, 1 10x,9f5.2) C C Write out assumed zeropoints C do kk=1,2 C C Loop over up to 2 default detector (and/or grating) combinations C if(kk.eq.1) then iid=idefdet(iw) iig=idefgrat(iw) else if(kk.eq.2) then iid=idefdet2(iw) iig=idefgrat2(iw) endif if(iid.eq.0) goto 1357 if(itype(iw).eq.1) then write(11,1112) cdet(iid)(1:6),(zp(k,iw,kk),k=1,iwb) 1112 format(/,'Assumed zeropoint mags for 1 ph/sec ', 1 'with ',a6,':',/, 1 9x,9f5.1) else write(11,1113) cgrating(iig,iw)(1:10), 1 cdet(iid)(1:6),(zp(k,iw,kk),k=1,iwb) 1113 format(/,'Assumed zeropoint mags for 1 ph/sec/A ', 1 'with ',a10,' / ',a6,':',/, 1 9x,9f5.1) endif 1357 continue enddo C C Write out measured zeropints C if(itype(iw).eq.1) then write(11,1118) zmeasc(iw)(1:50), 1 (czmeas(k,iw,1),k=1,iwb),zmeasd(iw)(1:50) 1118 format(/,'Measured zeropoint mags for 1 ph/sec ', 1 'with ',/,10x,a50,/, 1 9x,9a5,/,10x,a50) else write(11,1119) zmeasc(iw)(1:50), 1 (czmeas(k,iw,1),k=1,iwb),zmeasd(iw)(1:50) 1119 format(/,'Measured zeropoint mags for 1 ph/sec/A ', 1 'with ',/,10x,a50,/, 1 9x,9a5,/,10x,a50) endif endif enddo C C Write summary of throughput parameters C write(11,1120) 1120 format(/,15('====='),/, 1 'Summary of instrument-throughput parameters',/, 1 '-------------------------------------------') do i=1,4 if(i.eq.1) write(11,1121) if(i.eq.2) write(11,1123) if(i.eq.3) write(11,1124) if(i.eq.4) write(11,1125) 1121 format(/, 1 'Predicted throughput EFFINSTR of instrument (excl atm, tel,', 1 ' gratings, filters):',/) 1123 format(/,'Observed / predicted throughput TRUETHRU:',/) 1124 format(/,'Actual instrument throughput EFFINSTR * TRUETHRU:',/) 1125 format(/,'Actual instrument throughput * detector QE:',/) do j=1,50 if(iwi(j).ne.0) then iw=iwi(j) if(i.eq.1) write(11,1122) cinstr(iw)(1:20), 1 (effinstr(k,iw),k=1,iwb) 1122 format(a20,9f5.2) if(i.eq.2) 1 write(11,1122) cinstr(iw)(1:20),(truethru(k,iw),k=1,iwb) if(i.eq.3) write(11,1122) cinstr(iw)(1:20), 1 (effinstr(k,iw)*truethru(k,iw),k=1,iwb) if(i.eq.4) write(11,1126) cinstr(iw)(1:20), 1 (effinstr(k,iw)*truethru(k,iw)* 1 effdet(k,idefdet(iw)),k=1,iwb),cdet(idefdet(iw))(1:6) 1126 format(a20,9f5.2,2x,a6) endif enddo enddo C C Write out CCD QE C write(11,1106) (cband(k),k=1,9) 1106 format(/,15('====='),//,'CCD parameters',/, 1 '--------------',/, 1 13x,' CCD QE in each band',/, 1 13x,8(a2,3x),a2) do j=1,30 if(iwd(j).ne.0) then iw=iwd(j) write(11,1107) cdet(iw)(1:6), 1 (effdet(k,iw),k=1,9) 1107 format(a6,4x,9f5.2) endif enddo C C Write out other CCD parameters C write(11,1108) 1108 format(/, 1 'CCD Read noise Gain Pix size Pixels IROT',/, 1 ' e- e-/ADU microns x * y ',/) do j=1,30 if(iwd(j).ne.0) then iw=iwd(j) write(11,1116) cdet(iw)(1:6), 1 read(iw),adu(iw),pixel(iw), 1 npixels(iw,1),npixels(iw,2),irot(iw) 1116 format(a6,1x,f5.1,f12.1,f10.4,i10,i5,i3) endif enddo end