; SPLIT
;---------------------------------------------------------------
;! converts multi-source to single-source UV files w calibration
;# Task UV Calibration
;-----------------------------------------------------------------------
;;  Copyright (C) 1995-1998, 2000, 2002, 2004, 2006, 2010, 2015-2016
;;  Associated Universities, Inc. Washington DC, USA.
;;
;;  This program is free software; you can redistribute it and/or
;;  modify it under the terms of the GNU General Public License as
;;  published by the Free Software Foundation; either version 2 of
;;  the License, or (at your option) any later version.
;;
;;  This program is distributed in the hope that it will be useful,
;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;  GNU General Public License for more details.
;;
;;  You should have received a copy of the GNU General Public
;;  License along with this program; if not, write to the Free
;;  Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
;;  MA 02139, USA.
;;
;;  Correspondence concerning AIPS should be addressed as follows:
;;         Internet email: aipsmail@nrao.edu.
;;         Postal address: AIPS Project Office
;;                         National Radio Astronomy Observatory
;;                         520 Edgemont Road
;;                         Charlottesville, VA 22903-2475 USA
;-----------------------------------------------------------------------
SPLIT     LLLLLLLLLLLLUUUUUUUUUUUU CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
SPLIT     Task to split multi-source uv data to single source
                                   also works on single files.
INNAME                             Input UV file name (name)
INCLASS                            Input UV file name (class)
INSEQ             0.0     9999.0   Input UV file name (seq. #)
INDISK            0.0        9.0   Input UV file disk unit #
SOURCES                            Source list
QUAL             -1.0              Source qualifier -1=>all
CALCODE                            Calibrator code '    '=>all
TIMERANG                           Time range to copy
STOKES                             Stokes type to pass.
ANTENNAS                           Antennas to include or omit
SELBAND                            Bandwidth to select (kHz)
SELFREQ                            Frequency to select (MHz)
FREQID                             Freq. ID to select.
BIF               0.0      100.0   Lowest IF number 0=>all
EIF               0.0      100.0   Highest IF number 0=>all
BCHAN             0.0     2048.0   Lowest channel number 0=>all
ECHAN             0.0     2048.0   Highest channel number
SUBARRAY          0.0     1000.0   Subarray, 0=>all
DOCALIB          -1.0      101.0   > 0 calibrate data & weights
                                   > 99 do NOT calibrate weights
GAINUSE                            CL (or SN) table to apply
DOPOL            -1.0       10.0   If >0 correct polarization.
PDVER                              PD table to apply (DOPOL>0)
BLVER                              BL table to apply.
FLAGVER                            Flag table version
DOBAND           -1.0       10.0   If >0 apply bandpass cal.
                                   Method used depends on value
                                   of DOBAND (see HELP file).
BPVER                              Bandpass table version
SMOOTH                             Smoothing function. See
                                   HELP SMOOTH for details.
OUTCLASS                           Output UV file name (class)
OUTSEQ           -1.0     9999.0   Output UV file name (seq. #)
OUTDISK           0.0        9.0   Output UV file disk unit #.
DOUVCOMP         -1.0        1.0   1 (T) => compressed data
APARM                              Control information:
                                     1 = 1 => avg. freq. in IF
                                              multi-channel out
                                       = 2 => avg. freq. in IF
                                              single channel out
                                       = 3 => avg IF's also
                                     2 = Input avg. time (sec)
                                     3 > 0 => Drop subarrays
                                     4 > 0 => calibrate weights
                                     5 = 0 pass only xc data
                                       = 1 pass xc and ac data
                                       = 2 pass only ac data
                                     6 > 0 add full source name
                                           to header
NCHAV                              Number of chan. to average.
                                   (used if APARM(1) = 1)
                                   <= 0 -> ALL
CHINC                              Channel incr. between output
                                   channels (used if APARM(1)=1)
ICHANSEL                           Array of channel start, stop,
                                   and increment numbers and IF
                                   number to be used when
                                   averaging in frequency.
                                   (used if APARM(1) = 2, 3)
BADDISK           0.0     9999.0   Disks to avoid for scratch
----------------------------------------------------------------
SPLIT
Task: Split a multi-source uv data set into single-source data files.
      Multiple sources may be processed in a single run.  Optionally,
      calibration, editing and spectral averaging may be applied.  Fully
      flagged data will not be copied.
      The flagging and spectral averaging functions may also be applied
      to a single-source input file.  SPLIT will also apply an unapplied
      SN table to a single-source file.  This may be done by copying an
      appropriate SN table to the input file. A warning message may
      appear if the SN table had previously been applied to any
      dataset.
      SPLIT differs from SPLAT in that it cannot write a multi-source
      output file and that it does not copy any calibration tables
      even if they were not applied.
Adverbs:
  INNAME.....Input UV file name (name).      Standard defaults.
  INCLASS....Input UV file name (class).     Standard defaults.
  INSEQ......Input UV file name (seq. #).    0 => highest.
  INDISK.....Disk drive # of input UV file.  0 => any.
  SOURCES....Source list.  One output file will be made per source.
             '*' = all; a "-" before a source name means all except ANY
             source named.
  QUAL.......Only sources with a source qualifier number in the SU table
             matching QUAL will be used if QUAL is >= 0.  If QUAL < 0,
             all qualifiers will be written.  These qualifiers will be
             written to separate output files.  Note that OUTSEQ must be
             zero in this case.
  CALCODE....Sources may be selected on the basis of the calibrator code
             given in the SU table.
                  '    ' => any calibrator code selected
                  '*   ' => any non blank code (cal. only)
                  '-CAL' => blank codes only (no calibrators)
                  anything else = calibrator code to select.
             NB: The CALCODE test is applied in addition to the other
             tests, i.e. SOURCS and QUAL, in the selection of sources to
             process.
  TIMERANG...Time range of the data to be copied. In order:
             Start day, hour, min. sec,
             end day, hour, min. sec. Days relative to ref. date.
  STOKES.....The desired Stokes type of the output data:
             'I','V','Q','U','IQU','IQUV','IV','RR','LL','RL',
             'LR','HALF' (=RR,LL), 'FULL' (=RR,LL,RL,LR)
  ANTENNAS...A list of the antennas to include in the output data set.
             If any number is negative then all antennas listed are
             NOT to be included.
  SELBAND....Bandwidth of data to be selected. If more than one IF is
             present SELBAND is the width of the first IF required.
             Units = kHz.  For data which contain multiple
             bandwidths/frequencies the task will insist that some form
             of selection be made by frequency or bandwidth.
  SELFREQ....Frequency of data to be selected. If more than one IF is
             present SELFREQ is the frequency of the first IF required.
             Units = MHz.
  FREQID.....Frequency identifier to select (you may determine which is
             applicable from the OPTYPE='SCAN' listing produced by
             LISTR). If either SELBAND or SELFREQ are set, their values
             overide that of FREQID.  However, setting SELBAND and
             SELFREQ may result in an ambiguity.  In that case, the task
             will request that you use FREQID.
  BIF........First IF to copy. 0=>all.
  EIF........Highest IF to copy. 0=>all higher than BIF
  BCHAN......First channel to copy. 0=>all.
  ECHAN......Highest channel to copy. 0=>all higher than BCHAN
             If APARM(1) = 1, the actual # of output channels will be
                  (BCHAN-ECHAN+1-NCHAV)/CHINC + 1
             Thus, ECHAN is the highest channel in the input averaged
             into the output and is the highest output channel only if
             NCHAV and CHINC are 1.
  SUBARRAY...Subarray number to copy. 0=>all.
  DOCALIB....If true (>0), calibrate the data using information in the
             specified Cal (CL) table for multi-source or SN table for
             single-source data.  Also calibrate the weights unless
             DOCALIB > 99 (use this for old non-physical weights).
  GAINUSE....Version number of the CL table to apply to multi-source
             files or the SN table for single-source files.
             0 => highest.
  DOPOL......If > 0 then correct data for instrumental polarization as
             represented in the AN or PD table.  This correction is
             only useful if PCAL has been run or feed polarization
             parameters have been otherwise obtained.  See HELP DOPOL
             for available correction modes: 1 is normal, 2 and 3 are
             for VLBI.  1-3 use a PD table if available; 6, 7, 8 are
             the same but use the AN (continuum solution) even if a PD
             table is present.
  PDVER......PD table to apply if PCAL was run with SPECTRAL true and
             0 < DOPOL < 6.  <= 0 => highest.
  BLVER......Version number of the baseline based calibration (BL) table
             to appply. <0 => apply no BL table, 0 => highest.
  FLAGVER....specifies the version of the flagging table to be applied.
             0 => highest numbered table. <0 => no flagging to be
             applied.
  DOBAND.....If true (>0) then correct the data for the shape of the
             antenna bandpasses using the BP table specified by BPVER.
             The correction has five modes:
             (a) if DOBAND=1 all entries for an antenna in the table
             are averaged together before correcting the data.
             (b) if DOBAND=2 the entry nearest in time (including
             solution weights) is used to correct the data.
             (c) if DOBAND=3 the table entries are interpolated in
             time (using solution weights) and the data are then
             corrected.
             (d) if DOBAND=4 the entry nearest in time (ignoring
             solution weights) is used to correct the data.
             (e) if DOBAND=5 the table entries are interpolated in
             time (ignoring solution weights) and the data are then
             corrected.
  BPVER......Specifies the version of the BP table to be applied if
             DOBAND > 0.  0 => highest numbered table.
             <0 => no bandpass correction to be applied.
  SMOOTH.....Specifies the type of spectral smoothing to be applied to
             a uv database . The default is not to apply any smoothing.
             The elements of SMOOTH are as follows:
             SMOOTH(1) = type of smoothing to apply: 0 => no smoothing
               To smooth before applying bandpass calibration
                 1 => Hanning, 2 => Gaussian, 3 => Boxcar, 4 => Sinc
               To smooth after applying bandpass calibration
                 5 => Hanning, 6 => Gaussian, 7 => Boxcar, 8 => Sinc
             SMOOTH(2) = the "diameter" of the function, i.e. width
               between first nulls of Hanning triangle and sinc
               function, FWHM of Gaussian, width of Boxcar. Defaults
               (if < 0.1) are 4, 2, 2 and 3 channels for SMOOTH(1) =
               1 - 4 and 5 - 8, resp.
             SMOOTH(3) = the diameter over which the convolving
               function has value - in channels.  Defaults: 1,3,1,4
               times SMOOTH(2) used when input SMOOTH(3) < net
               SMOOTH(2).
  OUTCLASS...Output UV file name (class).    Standard defaults.
             The output file name will be the first 12 characters of the
             name of the source.  If more than one "source" has the
             same name, the affected output file names have the
             CALCODE and QUAL inserted in characters 9-12.
             For single-source files, the output name will be INNAME.
  OUTSEQ.....Output UV file name (seq. #).   0 => highest unique
             If QUAL = -1, OUTSEQ must be zero if there are in fact more
             than one qualifier for a given source name.
  OUTDISK....Disk drive # of output UV file. 0 => highest with space for
             the file.
  DOUVCOMP...If true (DOUVCOMP > 0) the output data is written in
             compressed format which can result in a substantial
             reduction in disk space needed.  DO NOT USE THIS OPTION if
             there is channel-dependent flagging and and you are doing
             spectral averaging (APARM(1) > 0).  If there is
             IF-dependent flagging and you are using IF averaging
             (APARM(1) > 2.5) this option is also not recommended.
  APARM......Control information:
             (1) If 0 < APARM(1) <= 1.5, then a boxcar spectral
                 smoothing is applied to the spectra after calibration
                 and before output under control of NPOINTs and CHINC.
                 If APARM(1) > 1.5, then all frequency channels in
                 each IF (under control of ICHANSEL) will be averaged
                 in the output.  If APARM(1) > 2.5, then all IF's will
                 be averaged also, providing a one pass process for
                 spectral averaging of calibrated VLBI data.
                 WARNING:  the output frequency will be corrected to
                 the averaged frequency as will the values of u,v,w,
                 but any IF-dependent editing will make this
                 correction less than accurate.  Also the output data
                 are computed by a weighted average while the
                 frequency is a straight average.  If weights vary
                 significantly between IFs (and they often do) then
                 the corrections to u,v,w will not have been correct
                 and the error will be sample dependent.
             (2) If phase rate corrections are to be done as part of the
                 calibration, then the integration time of the input
                 data must be given in APARM(2) to allow for an
                 amplitude correction to correct for the effect of time
                 smearing on the data.  Default is no correction.  There
                 is no time averaging of the output data.
             (3) If APARM(3) > 0 then drop the subarray code from the
                 visibility records.
             (5) If APARM(5) = 0 then SPLIT will pass only cross-power
                 data, this is the default mode. If APARM(5)=1 then both
                 cross-power and total-power data will be passed; if
                 APARM(5)=2 then only total-power data will be passed.
             (6) If APARM(6) > 0, the full 16 character source name is
                 added to the header. The first 8 characters in keyword
                 SOURNAM1, the second 8 in keyword SOURNAM2.
  NCHAV......If APARM(1) = 1, the number of channels to be averaged
             together in each output channel.  0 => ALL.  If this value
             is less than the total number of channels, then a
             multi-channel data set will result.
  CHINC......If APARM(1) = 1, the number of input channels to skip
             between output channels. 0 => NCHAVG
  ICHANSEL...The channels to be averaged when APARM(1) > 1.5 in the
             form of an array of start and stop channels plus a
             channel increment and the IF to which they apply.  All 0
             => BCHAN, ECHAN, 1, 0.  ICHANSEL(4,i) gives the IF and 0
             means all IFs.  Up to 20 groups of these 4 numbers may be
             specified.  Note that the channel numbers are absolute
             numbers; they are NOT relative to BIF and BCHAN.
             For instance if your data had a spectral line covering
             channels 56 - 80, and you wished to exclude channels 1 -
             10 and 121 - 128 because of bandpass effects, then you
             could set APARM(1) = 2, and ICHANSEL = 11, 55, 1, 0, 81,
             121, 1, 0 for a 1-IF data set.  If you only wished to use
             every other channel from the second group then you would
             set ICHANSEL = 11, 55, 0, 0, 81, 121, 2, 0.
  BADDISK....A list of disks on which scratch files are not to be
             placed.  This will not affect the output file.
----------------------------------------------------------------
