SUBROUTINE GETSTAR ( JSTAR, JBASE, NPTS, NMAX, NPHOT, IS, $ TIME, PHASE, V, REC, IOK ) C C Gets data (Visibility and phase rms) for star/baseline pair C C JSTAR = Star number C JBASE = Baseline number C NPTS = number of point returned C NMAX = maximum number of points to return C NPHOT(I,J) = number of photons in each channel C IS(I) = scan number of this observation C TIME(I) = time of the observation C PHASE(I,1) = 4ms lag of the phase autocorrelation the data point C PHASE(I,2) = laser rms C V(I,J) = visibility in channel J C REC(I) = record for this observation C IOK(I) = Bad data flag C IMPLICIT UNDEFINED (A-Z) SAVE REAL *4 PI PARAMETER ( PI = 3.1415926535 ) INTEGER *4 JSTAR, JBASE, NPTS, NMAX, IS(*) INTEGER *4 REC(*), IOK(*), IS(*) REAL *4 PHASE(NMAX,2), V(NMAX,4), NPHOT(NMAX,4), TIME(*) INTEGER *4 ICNT, ICHAN, INTEG, ICNT INTEGER *4 IERR, N, I, J, K, NPTS REAL *4 VSQ, VTEMP INCLUDE 'VPLOT.INC' C C The input data format C INTEGER *2 IA(38), ICODE, ISTAR, IBASE, TAU0, DTAU0 INTEGER *2 TSAMPLE, IMON, IDAY, IYEAR, JITTR, ILOCK INTEGER *4 IDARK(4), IFILT(4), DJTR REAL *8 TIME0, DLAS REAL *4 ANUM(6), STROKE, ADEN(4), AVAR(4), HA0, DEC0, ZD0 REAL *4 TFIRST, TLAST, PHI12, PHIRMS C C DATA REC TIME REC DARK REC C EQUIVALENCE (IA( 1), TIME0 ), $ (IA( 5), ANUM(1), ICODE ), $ (IA( 6), ISTAR ), $ (IA( 7), IBASE ), $ (IA( 8), TAU0, DTAU0 ), $ (IA( 9), TSAMPLE, DLAS ), $ (IA(10), IMON ), $ (IA(11), IDAY ), $ (IA(12), IYEAR ), $ (IA(13), STROKE, IDARK(1)), $ (IA(15), IFILT(1) ) EQUIVALENCE (IA(17), ADEN(1) ), $ (IA(21), HA0 ), $ (IA(23), DEC0 ), $ (IA(25), AVAR(1), ZD0 ), $ (IA(27), DJTR ), $ (IA(29), TFIRST ), $ (IA(31), TLAST ), $ (IA(33), JITTR, ILOCK ), $ (IA(35), PHIRMS ), $ (IA(37), PHI12 ) C********************************************************************** NPTS = 0 DO 500 I = 1, ISCAN IF ( STAR(I) .NE. JSTAR ) GO TO 500 IF ( BASE(I) .NE. JBASE ) GO TO 500 DO 400 J = REC0(I)+1, REC1(I) NPTS = NPTS + 1 READ ( 4, REC=J, IOSTAT=IERR) IA IF ( IERR .NE. 0 ) THEN WRITE(6,*) ' ***ERROR reading vis file ' WRITE(6,*) ' record ', J WRITE(6,*) ' BOZO CITY ' GO TO 900 END IF READ(2, REC=J,IOSTAT=IERR) IOK(NPTS) IF ( IERR .NE. 0 ) THEN WRITE(6,*) ' ERROR ', IERR, ' READING POINT ', $ 'CALIBRATION TABLE' GO TO 900 ELSE IF ( TIME0 .EQ. 0.D0 ) THEN WRITE(6,*) ' RECORD ', J, ' IS A HEADER RECORD ' WRITE(6,*) ' No header records allowed in mid-scan' WRITE(6,*) ' ***BOZO CITY*** ' GO TO 900 ELSE IF ( TIME0 .LT. 0.D0 ) THEN WRITE(6,*) ' RECORD ', J, ' IS NOT A DATA RECORD ' WRITE(6,*) ' No time/dark records allowed in mid-scan' WRITE(6,*) ' ***BOZO CITY*** ' GO TO 900 ELSE IF ( TIME0 .GT. 1.0D0 ) THEN WRITE(6,*) ' TIME IS TOO LARGE !!! = ', TIME0 WRITE(6,*) ' ***BOZO CITY*** ' GO TO 900 END IF IS(NPTS) = I REC(NPTS) = J PHASE(NPTS,1) = PHI12 PHASE(NPTS,2) = PHIRMS TIME(NPTS) = 24. * TIME0 DO 300 ICHAN = 1, 4 NPHOT(NPTS,ICHAN) = MAX ( ADEN(ICHAN)-D(I,ICHAN),.002) VSQ = PI * PI * ANUM(ICHAN) / $ ( 2.*NPHOT(NPTS,ICHAN)*NPHOT(NPTS,ICHAN) ) V(NPTS,ICHAN) = VSQ C 300 CONTINUE IF ( NPTS .EQ. NMAX ) then write(6,*)'NPTS=NMAX! Inrease NMAX and recompile!' write(6,*)' ***BOZO CITY***' GO TO 900 endif 400 CONTINUE 500 CONTINUE WRITE(6,501) ' # OF POINTS READ = ', NPTS 501 FORMAT (A,I4) C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 900 CONTINUE RETURN END