SUBROUTINE ZMERG1(FLUX,WAVE,MASK,NPTS,TOTAL,NADDS,NBINS, * WFIRST,DELW,STATUS) * * Module Number: 13.10.1.1 * * Module Name: zmerg1 * * Keyphrase: * ---------- * Merge data into equally spaced wavelength bins * * Description: * ------------ * Data, specified by a wavelength, flux, and mask vector are placed * into equally spaced bins in a total vector. Bins are specified * by a starting wavelength and a delta wavelength. The number of * adds to each bin is kept. * * Fortran Name: zmerg1.for * * Keywords of accessed files and tables: * -------------------------------------- * none * * Subroutines called: * ------------------- * SDAS: * UMSPUT * * History: * -------- * version Date Author Description * 1 02-27-87 D. Lindler Designed and coded * *----------------------------------------------------------------------------- * C INCLUDE FILE FOR THE IRAF77 FORTRAN INTERFACE TO THE IRAF VOS C C C FILE I/O ACCESS MODES C INTEGER RDONLY PARAMETER (RDONLY = 1) INTEGER RDWRIT PARAMETER (RDWRIT = 2) INTEGER WRONLY PARAMETER (WRONLY = 3) INTEGER APPEND PARAMETER (APPEND = 4) C C CODES FOR DATA TYPES C INTEGER TYBOOL PARAMETER (TYBOOL = 1) INTEGER TYCHAR PARAMETER (TYCHAR = 2) INTEGER TYINT PARAMETER (TYINT = 4) INTEGER TYREAL PARAMETER (TYREAL = 6) INTEGER TYDOUB PARAMETER (TYDOUB = 7) C C UMSPUT DESTINATIONS -- CB, DAO, 4-SEP-87 C INTEGER STDOUT PARAMETER (STDOUT = 1) INTEGER STDERR PARAMETER (STDERR = 2) C C UHDAS HEADER PARM TYPES -- CB, DAO, 5-SEP-87 C INTEGER GENHDR PARAMETER (GENHDR = 0) INTEGER IMSPEC PARAMETER (IMSPEC = 1) C C THIS SECTION IS FOR PARAMETERS RELEVANT TO TABLE I/O. C C THESE MAY BE SET BY UTPPTI AND/OR READ BY UTPGTI: C C LENGTH OF ROW (UNIT = SIZE OF REAL) INTEGER TBRLEN PARAMETER (TBRLEN = 1) C INCREASE ROW LENGTH INTEGER TBIRLN PARAMETER (TBIRLN = 2) C NUMBER OF ROWS TO ALLOCATE INTEGER TBALLR PARAMETER (TBALLR = 3) C INCREASE ALLOC NUM OF ROWS INTEGER TBIALR PARAMETER (TBIALR = 4) C WHICH TYPE OF TABLE? (ROW OR COLUMN) INTEGER TBWTYP PARAMETER (TBWTYP = 5) C MAXIMUM NUMBER OF USER PARAMETERS INTEGER TBMXPR PARAMETER (TBMXPR = 6) C MAXIMUM NUMBER OF COLUMNS INTEGER TBMXCL PARAMETER (TBMXCL = 7) C TYPE = ROW-ORDERED TABLE INTEGER TBTYPR PARAMETER (TBTYPR = 11) C TYPE = COLUMN-ORDERED TABLE INTEGER TBTYPC PARAMETER (TBTYPC = 12) C C THESE MAY BE READ BY UTPGTI BUT MAY NOT BE SET: C C NUMBER OF ROWS WRITTEN TO INTEGER TBNROW PARAMETER (TBNROW = 21) C C END IRAF77.INC * * Input parameters * * FLUX - flux vector (REAL*8) * WAVE - wavelength vector (real*8) * MASK - mask vector (REAL*8) * NPTS - number of points in FLUX, WAVE, MASK (integer) * TOTAL - vector of binned flux values (REAL*8) * NADDS - vector giving number of adds to each point in TOTAL (integer) * NBINS - number of bins in TOTAL and NADDS (integer) * WFIRST - starting wavelength (REAL*8) * DELW - bin size (REAL*8) * * Output parameters * * TOTAL,NADDS - updated vectors * STATUS error status (integer) * DOUBLE PRECISION FLUX(1),MASK(1),TOTAL(1),WFIRST,DELW DOUBLE PRECISION WAVE(1) INTEGER NADDS(1),NPTS,NBINS INTEGER STATUS * * Local variables * * -- BIN NUMBER INTEGER BIN * -- INDEX INTEGER I,ISTAT CHARACTER*130 CONTXT *------------------------------------------------------------------------------- C C LOOP ON POINTS IN INPUTS C DO 100 I=1,NPTS C C CHECK IF MASK SAYS TO USE IT C IF(MASK(I).GT.0.0)THEN C C COMPUTE BIN NUMBER C BIN=(WAVE(I)-WFIRST)/DELW C C CHECK IF VALID BIN NUMBER C IF((BIN.LE.0).OR.(BIN.GT.NBINS))THEN CONTXT='INVALID WAVELENGTH FOR THE GRATING' GO TO 999 ENDIF C C UPDATE BIN C TOTAL(BIN)=TOTAL(BIN)+FLUX(I) NADDS(BIN)=NADDS(BIN)+1 ENDIF 100 CONTINUE STATUS=0 GO TO 1000 999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,ISTAT) 1000 RETURN END