* Last processed by NICE on 12-Jun-2000 15:54:00 * Customized for : IEEE, LINUX, UNIX, MOTIF, F77 * onoff_radec.f * * Calculate the alpha and delta offsets of each bolometers. * SUBROUTINE ONOFF_RADEC(LST,WEI,EL,AZ,CHAN_AZ_OFF,CHAN_EL_OFF, $DELTA_RA,DELTA_DEC,DELTA_AZ,DELTA_EL,WORK,SUBSCAN_EPOCH) * INCLUDE 'const.inc' INCLUDE 'onoff.inc' INCLUDE 'radec.inc' REAL LST(NRECORD),WEI(NRECORD),EL(NRECORD),AZ(NRECORD) REAL CHAN_AZ_OFF(NCHAN),CHAN_EL_OFF(NCHAN) REAL DELTA_RA(NCHAN), DELTA_DEC(NCHAN) REAL DELTA_AZ(NCHAN), DELTA_EL(NCHAN) REAL WORK(NRECORD) REAL SUBSCAN_EPOCH(1) REAL DUMMY * REAL*8 RA_DAY,DEC_DAY,RA_FROM,DEC_FROM REAL*8 DRA,DDEC,DLST,DAZI,DELE REAL RMS_ELV,RMS_AZ * REAL RMS_LST REAL OA, OE ! The array offsets from the center of the field INTEGER I,ICHAN,IREF REAL*8 DAZ_B, DEL_B REAL OFF86400 REAL*8 OBSLAT * * Compute mean lst DO I=1,NRECORD WEI(I) = 1. ENDDO IF (LST(NRECORD).GT.LST(1)) THEN CALL WMEAN (LST,WEI,NRECORD,MEAN_LST,RMS_LST,DUMMY) ELSE OFF86400 = 0 WORK(1) = LST(1) DO I=2,NRECORD IF (LST(I).LT.LST(I-1)) OFF86400 = 86400. WORK(I) = LST(I) + OFF86400 ENDDO CALL WMEAN (WORK,WEI,NRECORD,MEAN_LST,RMS_LST,DUMMY) ENDIF DLST = MEAN_LST ! double precision for call to prec CALL WMEAN (EL,WEI,NRECORD,MEAN_ELV,RMS_ELV,DUMMY) MEAN_ELV = MEAN_ELV * DEG_TO_RAD CALL WMEAN (AZ,WEI,NRECORD,MEAN_AZ,RMS_AZ,DUMMY) * * Compute RA_DAY and DEC_DAY EPOCHFR = EPOCH EPOCHTO = SUBSCAN_EPOCH(1) RA_FROM = SLAM ! 1950 or 2000 coordinates DEC_FROM = SBET ! 1950 or 2000 coordinates OBSLAT = SITE_LATITUDE/DEG_TO_RAD CALL SETUP ! initialize parameters DRA = 0 DDEC = 0 CALL PREC(3,EPOCHTO,RA_DAY,DEC_DAY,DRA,DDEC,RA_FROM,DEC_FROM) * * Compute DAZ and DEL for each channel OA = OAZM*3600 + WOBBLER_THROW/2*UNBAL OE = OELV*3600 !arcsec SINDEC = DSIN(DEC_DAY*DEG_TO_RAD) COSDEC = DCOS(DEC_DAY*DEG_TO_RAD) SINOL = DSIN(SITE_LATITUDE) COSOL = DCOS(SITE_LATITUDE) IREF = REF_CHAN MEAN_ELV = FIELD_ROTATION*MEAN_ELV DO ICHAN=1,NCHAN * DAZ_B = -CHAN_AZ_OFF(ICHAN)*COS(MEAN_ELV) + * $ CHAN_EL_OFF(ICHAN)*SIN(MEAN_ELV) * DEL_B = CHAN_AZ_OFF(ICHAN)*SIN(MEAN_ELV) + * $ CHAN_EL_OFF(ICHAN)*COS(MEAN_ELV) DAZ_B = -(CHAN_AZ_OFF(ICHAN)-CHAN_AZ_OFF(IREF))*COS(MEAN_ELV) - $ (CHAN_EL_OFF(ICHAN)-CHAN_EL_OFF(IREF))*SIN(MEAN_ELV) DEL_B = (CHAN_AZ_OFF(ICHAN)-CHAN_AZ_OFF(IREF))*SIN(MEAN_ELV) - $ (CHAN_EL_OFF(ICHAN)-CHAN_EL_OFF(IREF))*COS(MEAN_ELV) IF (TELESCOPE(1:3).EQ.'CSO') THEN DAZ_B = -(CHAN_AZ_OFF(ICHAN)-CHAN_AZ_OFF(IREF)) DEL_B = -(CHAN_EL_OFF(ICHAN)-CHAN_EL_OFF(IREF)) ENDIF DAZI = DAZ_B+OA ! arcseconds DELE = DEL_B+OE ! arcseconds * * Conversion of the coordinate Az/El-->RA/DEC CALL RADEC(DAZI,DELE,DLST,OBSLAT,RA_DAY,DEC_DAY,DRA,DDEC) * * compute dra and ddec for epoch 1950 or 2000 CALL PREC(2,EPOCHTO,RA_DAY,DEC_DAY,DRA,DDEC,RA_FROM,DEC_FROM) DELTA_RA(ICHAN) = DRA*3600. DELTA_DEC(ICHAN) = DDEC*3600. DELTA_AZ(ICHAN) = DAZI DELTA_EL(ICHAN) = DELE ENDDO END