; SPLAT
;---------------------------------------------------------------
;! Applies calibration and splits or assemble selected sources.
;# Task UV Calibration
;-----------------------------------------------------------------------
;;  Copyright (C) 1995-2000, 2004, 2006, 2010-2011
;;  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
;-----------------------------------------------------------------------
SPLAT     LLLLLLLLLLLLUUUUUUUUUUUU CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
SPLAT     Split/assemble the sources in single/multi source file
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.
                                   Look HELP.
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.
                                   0 => highest numbered table
                                   <0 => no flagging
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.
OUTNAME                            Output UV file name (name)
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
                                         Use ICHANSEL.
                                         CHANNEL is not used
                                       = 2 => avg IF's also
                                         Use ICHANSEL.
                                         CHANNEL is not used
                                       = 3 => average each
                                         CHANNEL channels.
                                         ICHANSEL is not used.
                                     2 = Input avg. time (sec)
                                     3 > 0 => Drop subarrays
                                     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
                                     7 = 0 assemble all selected
                                           sources in one
                                           multiple source file.
                                       > 0 split for single
                                           source files.
ICHANSEL                           Array of channel start, stop,
                                   and increment numbers and IF
                                   number to be used when
                                   averaging in frequency.
                                   It's used if APARM(1)=1 or 2
CHANNEL                            Number of chans to average
                                   together; if APARM(1) = 3
CHINC                              Increment in input chans for
                                   output 0 -> CHANNEL;
                                   if APARM(1) = 3
SOLINT                             Time of averaging in min.
                                   0 => no averaging
BADDISK           0.0     9999.0   Disks to avoid for scratch
----------------------------------------------------------------
SPLAT
Task:  Split a multi source uv data set into single source data or
       assemble the selected sources into new multi source file having
       applied calibration and averaging data in time and in
       frequency.  Multiple sources may be processed in a single run.
       Calibration and editing may be optionally applied.  Fully
       flagged data will not be copied.
       SPLAT 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.
       SPLAT differs from SPLIT in that it can write a multi-source
       output file and that it will copy calibration tables unless
       they were applied.  If a BP table is applied, no BP table is
       copied.  If DOCAL is true, no CL, SN, TY, or GC table is
       copied.  If an FG table is applied, no FG table is copied.
       SPLIT copies no calibration tables under all circumstances.
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.  '*' = all; a "-" before a source name
             means all except ANY source named. In the split option
             separate single source file is created for each selected
             source.
  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),
             '    ' lives polarization without modification
  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 override 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 BIF
  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.
             The flag table is also applied to any TY, SN, or SY
             tables copied to the output file.
  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).
  OUTNAME....Output UV file name (name). Used, if the selected sources
             assembled in one multiple source file. In the split option
             OUTNAME is 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.
  OUTCLASS...Output UV file name (class).    Standard defaults.
  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 but only
             calibration routines are likely to interprete this
             data. If input data are in compressed format, the output
             will be in compressed format also independent on DOUVCOMP.
  APARM......Control information:
                If APARM(1) is equal to 1 then frequency channels
             selected by ICHANSEL in each IF will be averaged to
             produce one spectral channel per IF in the output.
             CHANNEL, CHINC are not used
                If APARM(1) is equal to 2, then the frequency channels
             selected by ICHANSEL will be averaged in each IF and then
             all IF's will be averaged.  This produces a one
             spectral-channel, one IF output or complete spectral
             averaging of (calibrated) 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.
                If APARM(1) is equal to 3 then average each subsequent
             CHANNEL input frequency channels.  Increment by CHINC
             channels in selecting output channels.  (CHINC=0 ->
             CHINC=CHANNEL).  This can be used to diminish output data
             set size.  Note CHANNEL=1, CHINC=2 will output every other
             channel (after application of calibration, SMOOTH etc).
             Also note that one may do things like CHANNEL=4, CHINC=3
             to produce output channels that are less independent than
             those in the input.   ICHANSEL is not used.
                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.
                If APARM(3) > 0 then drop the subarray code from
             the visibility records.
                If APARM(5) = 0 then SPLAT 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.
                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.
                If APARM(7) = 0, assemble all selected sources into
             one multi source file having applied optionnaly
             calibration and averaging in time and in frequency.
                If APARM(7) > 0, the selected sources are splitted
             into separate single source files.
  ICHANSEL...The channels to be averaged when APARM(1) = 1 or 2 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.
  CHANNEL....Number of subsequent channels to average together.
             Used when APARM(1) = 3
  CHINC......Increment in input channels between output channels. Used
             only when APARM(1) = 3.  0 -> CHANNEL.
  SOLINT.....Time of averaging in min. 0 => no averaging
             Note that SPLAT uses the default time averaging method in
             UVAVG.  Options to write all baselines with the same
             average time and to use a strict grid of times are
             offered by UVAVG but not SPLAT.
  BADDISK....A list of disks on which scratch files are not to
             be placed.  This will not affect the output file.
----------------------------------------------------------------
                     COMMENTS.

The assembling option is useful l when delay and fringe rate have
become small enough as a result of the first stage of calibration.
This fact allows averaging in frequency and time to reduce the volume
of the data output.

For this data compression operation on VLBI data, the assembling
option should be applied after the first stage of calibration had been
carried out: ANTAB, FRING, ACCOR, PCCOR.  SPLAT does not copy CL, GC,
PC, SN, TY tables if calibration is applied (DOCALIB > 0).  The
calibration on the basis of these tables has to be carried out before
SPLAT (assembling option).  In particular it is not good idea to run
SPLAT (assembling option) with DOCALIB>0 if PCCOR has not run to
create calibration on the basis of pulse-cal tones.
