! ! 1.1 Open the file IF (FILE_NAME.NE."not yet defined") THEN ON ERROR FILE BO "!"'FILE_NAME' FILE BO 'FILE_NAME' ON ERROR IF OLD_FILE.NE.FILE_NAME THEN IF EXIST(RF_USB) THEN DELETE /VARIABLE RF_USB RF_LSB ENDIF IF EXIST(AMP_ERR) THEN DELETE /VARIABLE AMP_ERR ENDIF IF EXIST(PHA_ERR) THEN DELETE /VARIABLE PHA_ERR ENDIF IF (EXIST(JYPK)) THEN DELETE /VARIABLE JYPK ENDIF ENDIF LET OLD_FILE 'FILE_NAME' ELSE SAY "E-SELECT, Please define the file name (Press FILE or LET FILE_NAME)" RETURN ENDIF SET TIME * ! ! 1.2 Define additional parameters ! SIC PREC DOUBLE ! ! Reset CLIC defaults ! SET DEFAULT SET FLUX ALL /RESET SET QUALITY 'MIN_QUAL' IF DO_ATM THEN SET PHASE ATM ELSE SET PHASE NOATM ENDIF SET LEVEL 6 SET RECEIVER * SET PHAS ANTE ABS SET RF ANTE OFF SET AMPL ANTE ABS SET PHAS CONT SET PLOT BAR IF (EXIST(FIRST_SCAN)) THEN DELETE /VARIABLE BAND_SOURCE FIRST_SCAN LAST_SCAN CAL_BAND - B_FLUX FHII FRGHZ ENDIF DEFINE INTEGER IR DEFINE INTEGER FIRST_SCAN LAST_SCAN /GLOBAL DEFINE CHARACTER CAL_BAND*3[2] BAND_SOURCE*12 /GLOBAL DEFINE DOUBLE B_FLUX[2] FHII[2,2] FRGHZ[2] /GLOBAL DEFINE INTEGER FSCAN ! IF (.NOT.EXIST(NBAS)) THEN VARIABLE CONFIG ON ENDIF IF (.NOT.EXIST(IN_FILE)) THEN VARIABLE READ_WRITE ON ENDIF IF (.NOT.EXIST(N_LINE_BANDS)) THEN VAR LINE ON ENDIF IF (.NOT.EXIST(FLUX)) THEN VAR POSITION ON ENDIF IF (.NOT.EXIST(ISB)) THEN VAR RF ON ENDIF IF (.NOT.EXIST(GAIN_IMAGE)) THEN VAR ATM ON ENDIF IF (.NOT.EXIST(PROJECT)) THEN VAR GENE ON ENDIF ! SET AVER SCAN ! ! Check receivers ! FOR KR 1 TO 2 LET IR IREC[KR] IF IR.GT.0 THEN SET RECE IR FIND /TYPE P /PROC CORR IF FOUND.EQ.0 THEN SAY "No data from receiver "'IR'": Please redefine the receivers" SAY "Use 1 0 (or 2 0) for only one receiver." RETURN ENDIF ENDIF NEXT ! ! 2 --- Define the subbands ! SET SCAN SCAN_RANGE[1] SCAN_RANGE[2] FIND GET FIRST /header SET BASE ALL SET SUB ALL IF .NOT.EXIST(RF_USB) THEN DEFINE REAL RF_USB[2,NBAS,2] RF_LSB[2,NBAS,2] /GLOBAL ENDIF IF .NOT.EXIST(AMP_ERR) THEN DEFINE REAL AMP_ERR[NBAS,2] /GLOBAL ENDIF IF .NOT.EXIST(PHA_ERR) THEN DEFINE REAL PHA_ERR[NBAS,2] /GLOBAL ENDIF IF .NOT.EXIST(JYPK) THEN DEFINE DOUBLE JYPK[NANT,2] /GLOBAL ENDIF ! ! 3 --- Find the useful range ! IF exist(select_mode) then if (select_mode.eq."LIST") then set sort receiver for kr 1 to 2 let ir irec[kr] if ir.gt.0 then set receiver ir find list /short /output show-when-'ir'.list endif next endif endif ! SET SORT SCAN SET RECE * FIND /PROC GAIN LET FIRST_SCAN SCAN_RANGE[1] LET LAST_SCAN SCAN_RANGE[2] IF FOUND.NE.0 THEN DEF INTEGER I1 I2 GET CX_NUM[1] /header LET I1 SCAN GET CX_NUM[FOUND] /header LET I2 SCAN LET FIRST_SCAN I2+1 ! ! It may happen that the scans steps from 9999 to 1 in the gain period: IF (I2.LT.SCAN_RANGE[1]).AND.(I2.GT.SCAN_RANGE[2]) THEN LET FIRST_SCAN I1+1 ENDIF ! patch for periods overlapping the 9999 limit: IF FIRST_SCAN.GT.8000 THEN LET LAST_SCAN MIN(SCAN_RANGE[2],2000) ELSE LET LAST_SCAN SCAN_RANGE[2] ENDIF ! ! -- useful observations ignored ? SET SORT RECEIVER FIN /SCAN LAST_SCAN FIRST_SCAN /PROC CORR /TYPE O IF (FOUND.NE.0) THEN SAY " " SAY "W-SELECT: ignoring source scans:" LIST /SHORT SAY " _ There are probably too many GAIN scans :" SAY " if significant source scans are ignored, then the last GAIN scans " SAY " should be ignored (use STORE QUALITY); or may be should the data " SAY " be split into two parts." SAY " [type C to Continue]" STOP ENDIF ENDIF SAY " " SAY "Useful range from "'FIRST_SCAN'" to "'LAST_SCAN' SET SCAN FIRST_SCAN LAST_SCAN SET SORT RECEIVER ! ! ! 4 --- Find the bandpass calibrator ! SAY " " SAY "Building the Flux list..." FIND /SOURCE * /TYPE P /PROC CORR FIND APPEND /PROC CORR /TYPE O /SOURCE MWC349 FIND APPEND /PROC CORR /TYPE O /SOURCE CRL618 LIST /SOURCE IF N_SOURCE.LE.0 THEN SAY "No calibrators" RETURN ENDIF IF .NOT.EXIST(N_CALS) THEN DEF INTEGER N_CALS /GLOBAL ENDIF IF N_SOURCE.NE.N_CALS THEN LET N_CALS N_SOURCE IF EXIST(RDI_FLUX) THEN DEL /VAR RDI_FLUX CAL_SOURCE CAL_FLUX IN_FLUX FIX_FLUX ENDIF DEFINE DOUBLE RDI_FLUX[N_SOURCE,2] CAL_FLUX[N_SOURCE,2] - IN_FLUX[N_SOURCE,2] /GLOBAL DEFINE LOGICAL FIX_FLUX[N_SOURCE,2] /GLOBAL DEF CHAR CAL_SOURCE*20[N_SOURCE] /GLOBAL LET FIX_FLUX NO ENDIF FOR I 1 TO N_SOURCE FOR KR 1 TO 2 LET IR IREC[KR] IF IREC[KR].GT.0 THEN SET RECE IREC[KR] FIND /SOURCE 'C_SOURCE[I]' /PROC CORR GET FIRST /header LET RDI_FLUX[I,IR] 0.001*NINT(1000.*ABS(FLUX)) LET FRGHZ[IR] FREQUENCY|1000. LET CAL_SOURCE[I] 'C_SOURCE[I]' ENDIF NEXT NEXT !*! let CAL_flux rdi_flux LET IN_FLUX RDI_FLUX LET B_FLUX 0 LET IR IREC[1] FOR I 1 TO N_SOURCE SAY "Source " 'I' 'CAL_SOURCE[I]' " Fluxes " - RDI_FLUX[I,1] RDI_FLUX[I,2] " Jy" /FORMAT A I2 A12 A F6.2 F6.2 A IF (RDI_FLUX[I,IR].GT.B_FLUX[IR]) THEN LET BAND_SOURCE 'C_SOURCE[I]' LET B_FLUX RDI_FLUX[I,1] RDI_FLUX[I,2] ENDIF NEXT SAY " " SAY "Found Bandpass Calibrator "'BAND_SOURCE' DEFINE REAL A FOR KR 1 TO 2 LET IR IREC[KR] IF IREC[KR].GT.0 THEN ! IF FRGHZ[IR].LT.150. THEN LET FHII[1,IR] 1.55 ELSE LET FHII[1,IR] 2.00 ENDIF LET FHII[2,IR] 0.01*NINT(155.*(FRGHZ[IR]|227.)^0.6) ! SET RECE IREC[KR] FIND /SOURCE 'BAND_SOURCE' /PROC CORR !! POIN FOCU GET F /header LET A 10. FOR I 1 TO NANT LET A MIN(A,GAIN_IMAGE[I]) NEXT IF (A.LT.0.2) THEN IF (ISB.EQ.-1) THEN ! Signal == LSB LET CAL_BAND[IR] LSB ELSE LET CAL_BAND[IR] USB ENDIF ELSE LET CAL_BAND[IR] DSB ENDIF SAY " " SAY 'CAL_BAND[IR]'" tuning for receiver "'ir' ENDIF NEXT LET ERR NO