CARMA observing scripts are written in Python. While you can write scripts from scratch, you are strongly encouraged to generate scripts using the CARMA script writer.At minimum, you will need to enter the source name, coordinates, assigned project code, and contact information. You can optionally change the default integration times. Click on "Generate Observing Script" to see a listing of the adopted calibrators and the template script. You can download the script to an ascii file, and make further edits to the observing script as necessary.
Assuming the script was created using the CARMA script writer, the remaining entries that are required to be edited are:
- Instructions for the observers
Any special instructions for the observers should be entered in the comment section of the observing script. This section can be left blank if no special instructions are needed.
- restfreq
Rest frequency in GHz for the observations. See the rest frequency section for additional information.
- IFfreq
The IF frequency in in GHz to place the specral line. See the IF frequency section for additional information.
- Correlator configuration (configband)
The configband commands set the correlator configuration. A configband() command should be issued for each correlator band (currently there are 3 bands). The precise correlator configuration depends on the details of science program. The CARMA script writer produced recommended setups for basic continuum or spectral line observing models.More information is available on the CARMA instrument web page for general correlator information, programs are available to visualize and the correlator setup, and a detailed description of the correlator commands.
Observing scripts, source catalogs, and mosaic files should be combined into a tar file and uploaded using the CARMA script uploader. A username and password is required to upload the scripts. External investigators should contact their internal CARMA contact for instructions on how to upload the scripts.Observing scripts should be called projectCode_obsblock.obs (e.g. c0010_abaur.obs), where project code is the project assigned where your proposal was submitted and obsblock is the obsblock specified on the proposal cover sheet. If you have multiple scripts per obsblock, an additional identifier can be added to the script name (e.g. c0010_abaur_1.obs).
Source catalogs should be named projectCode.cat, where project code is the project code assigned when your proposal was submitted.
The files should be combined into a single file called projectcode.tar (e.g. c0010.tar). You may also include in the tar file a README_projectCode containing instructions for the observers.
The observing script will perform the following calibrations (not necessarily in this order):
- Observe the noise source, which is useful to calibrate narrow correlator bands.
- Perform radio or optical pointing at the start of the track and and every N-hours thereafter as specified by the PI for the project. Note: The current default is to perform radio pointing every 4 hours at night and every 2 hours during the day. Optical pointing is performed every hour by default.
- Observe the passband calibrator to measure the sensitivity variations as a function of frequency within each band. A noise source integration is obtained before the passband observations.
- Observe a primary flux calibrator if one is available during the track. A noise source integration is obtained before the flux observation.
- Cycle between the source and phase calibrator. A noise source integration is obtained before each phase calibrator observation.
A phase calibrator should be observed every 10-30 minutes, depending on the array configuration (about 15 minutes between calibration observations is appropriate for C configuration). See BIMA memo #70 for a discussion of the optimum time between phase calibrator observations. The phase calibrator should ideally be 1 Jy or greater, provided at least one band is in 500-MHz mode on the calibrator, and be observed for 2-3 minutes. The array geometry is determined to an accuracy of about 0.2 mm and so it can be acceptable to observe with a strong calibrator up to 30 degrees away at 3mm, rather than a very weak quasar that is closer to the source. Typically, a suitable calibrator can be found within 20 degrees of a source. At 1mm, it is best to choose a calibrator within 10 degrees if at all possible, even if this implies "hybrid mode" calibration (with all correlator bands in 500-MHz mode on the calibrator) to get sufficient sensitivity. If a more distant calibrator is used we strongly recommend observing a "test" source as well. The test source would be a known source (calibrator) close to the target source. This will allow an assessment of the reliability of phase calibration. Phase calibrators in the CARMA list are observed regularly to monitor their strength. The program Xplore provides a graphical interface to the CARMA calibrator list. If a calibrator's last known flux density is marginal, a short observation may be requested on a maintenance day. Please contact Nikolaus Volgenau (volgenau@mmarray.org).
As described in the sources dictionary, sources['target'] can be set to a list of names that will be observed after each phase calibrator observation. An alternative method is snapshot mode.Using the sources['target'] variable is preferred (easier) method when you want to observe multiple sources within a track to gain uv coverage. Snapshot mode is more flexible and allows you to specify the integration time per target and prioritize sources.
Mosaicking parameters are specified in the sources and mosaic dictionaries contained in the template observing script. One will need to edit the following parameters in these dictionaries:
- Set sources['mosaicTarget'] to True
- Specify the mosaic positions by creating a file of offset positions (i.e. mosaic['offsetFile']) or by specifying a list of offsets (i.e. mosaic['offsets']).
- Indicate the units of the mosaic offsets. The possible values are arcminutes or fraction of the primary beam width.
- Set how many mosaic positions (mosaic['nphase']). should be observed between phase calibrator observations.
See the section What is this parameter used for? for instructions on how to observe more than one phase calibrator within the track.
The radio pointing model is based on an optical pointing model derived from observations of hundreds of stars, and further observations are needed to measure the offset between the radio and optical pointing solutions. Currently the RMS residuals from the pointing model is 0.1 arcmin, which should be suitable for most 3mm observations. However, during daytime observations, the rms will increase.The current recommendation is that the radio pointing is performed every 4 hours for night time operations, and radio pointing is recommended every 2 hours during daytime. Observations that are conducting a mosaic may wish to measure the pointing offsets more frequently.
In addition to radio pointing, optical pointing is available. The advantages to optical pointing is that it is significantly faster than radio pointing, and it often the case that a optical pointing star can be found closer to the science source than a radio pointing source. The disadvantage to optical pointing is that the difference between the optical and radio pointing offsets must be calibrated, and optical pointing will not work when it is cloudy, or when the optical sources are too close to the sun. The current recommendation is to enable optical pointing. The observing scripts will automatically measure the radio-optical pointing offsets, and switch from optical to radio pointing if optical pointing is not converging.
For daytime observations, the relevant pointing parameters are pointing['doPointDay'] to perform pointing during the daytime, and perform radio pointing every pointing['intervalDay'] hours.
For night-time observations, the relevant pointing parameters are pointing['doPointNight'] to perform pointing at night, and to perform radio pointing every pointing['intervalNight'] hours.
For night-time observations, the relevant pointing parameters are pointing['doOptPoint'] to perform optical pointing every pointing['intervalOpt'] hours.
During sunrise/sunset, the pointing is changing rapidly, and there are special keywords to control pointing during these time periods: pointing['doPointSunRiseSet'] to perform pointing at night every pointing['intervalTran'] hours.
The source catalog should be generated as an ascii text file in the CARMA catalog format. The name of the catalog should be distinctive for your program, and is usually given as projectCode.cat, where project code is the project code assigned when your proposal was submitted.If you do not already have a source catalog, you should send the source along with the observing script when submitting your observing program.
- Gain calibrating narrow bandwidths
One often does not have adequate signal to noise to perform gain-calibration on the phase calibrator in the narrow spectral bands. There are two limiting cases in calibrating narrow bands:
- At least one correlator band is set to 500 MHz
In this case, the 500 MHz band can be used to gain calibrate the narrow bands. Observations of a bright source are needed to solve for any calibrations offsets between the narrow and broad bandwidths. These offsets appear to constant over a track and can be determined from the passband or phase calibrator observations.- All correlator bands are set to narrow bandwidths
In this case, one generally does not have adequate signal to noise on the gain calibrators. Therefore, one needs to reconfigure the correlator to continuum mode for the phase, flux, and passband calibrator observations. To do this, set the parameter reconfig(mode) in the observing template and specify the correlator configuration in the function setCorrCal() in the observing template.If mode=od.utils.CORR_CUSTOM, you specify the exact correlator configuration for the calibrators using the correlator['configCal'] option.
If mode=od.utils.CORR_BW500, all correlator bands are set to 500 MHz bandwidth when observing the calibrator at the same IF frequency.
If mode=od.utils.CORR_BW500LO, all correlator bands are set to 500 MHz bandwidth and the IF frequency is changed such that the bands do not overlap.
- At 3mm only, two bands are placed in the optimum 6-m IF, and the third band is in the optimum 10-m IF. In this case, the third band is outside the 6-m IF and would not contain any signal from the 6-m antennas.
- At 1mm only, all three bands are within the IF for the 6-m and 10-m antennas.
The passband for the narrow spectral line models can be solved for using the noise source. In addition, the template script will observe the passband calibrator in both correlator configurations to help measure phase offsets between the different correlator configurations.
Other then specifying which sources to observe, the observing procedure in snapshot scripts is the same as in normal observing scripts. The primary phase calibrator will be observed first, followed by the science target, any secondary phase calibrators, and then back to the primary phase calibrator. Each science target can have different phase calibrators; the snapshot script ensures the science targets are bracketed by observations of the same primary phase calibrator. If multiple science targets have the same primary phase calibrator, the phase calibrators will be observed with minimum redundancy.
As with normal observing scripts, the integration time on the primary
phase calibrator observations is specified by
sources['tintPhaseCal'].
The time between primary phase calibrator observations and integration
time on the secondary phase calibrator is specified with
sources['tintTarget'].
sources = {
# Required parameters
'target' : 'HLTau', # Name of the source that will be doppler tracked
'phaseCal' : '3c111', # Default phase calibrator
'tintTarget' : 15.00, # [minutes] time between phase calibrator observations
'tintPhaseCal' : 3.00, # [minutes] integration time on phase calibrator
'doSnapshot' : True, # Must be True to implement snapshot observing
'snapProject' : 'c0404', # Name of the program in the snapshot database
# Miscellaneous parameters
'snapElmax' : None, # Maximum elevation in degrees at which to observe a source
'snapElHa' : None, # Minimum elevation limits or hour angle to observe a source
'snapRetune' : False, # Retune receivers for each source for doppler tracking
# Parameters to automatically select phase calibrators for snapshot observations
'snapAutoPhase' : False, # If True, automatically select phase calibrators
'snapAutoFlux' : 1.0, # Flux limit in Janskys for phase calibrators
'snapAutoSep' : 20.0, # Maximum separation of phase calibrator in degrees from source
'snapAutoTint' : 3.0, # Integration time in minutes on phase calibrators
# Parameters for observing each source at multiple frequencies
'snapFreq' : None, # List of rest frequencies (GHz) to observe.
'snapIF' : None, # List of IF frequencies (GHz) for each snapFreq.
'snapSB' : None, # List of sidebands for each snapFreq.
'snapTint' : None, # List of integration time in minutes for each snapFreq.
# The remaining parameters are optional and should not be changed.
# They need to be included in the sources dictionary only if you change
# the default values.
#
'snapDb' : 'snapshot', # Name of the database
...
}
sources = {
# General source parameters
'target' : 'HLTau',
'phaseCal' : '3c111',
'tintTarget' : 15.0,
'tintPhaseCal' : 3.0,
# Snapshot parameters
'doSnapshot' : True, # Must be True to implement snapshot observing
'snapProject' : 'c0404', # Name of the program in the snapshot database
'snapElHa' : [30.0, -2, 2], # Minimum elevation limits or hour angle to observe a source
}
sources = {
# General source parameters
'target' : 'HLTau',
'phaseCal' : None,
'tintTarget' : 15.0,
'tintPhaseCal' : 3.0,
# Snapshot parameters
'doSnapshot' : True, # Must be True to implement snapshot observing
'snapProject' : 'c0404', # Name of the program in the snapshot database
'snapElHa' : [30.0, -2, 2], # Minimum elevation limits or hour angle to observe a source
'snapAutoPhase' : True, # If True, automatically select phase calibrators
'snapAutoFlux' : 1.0, # Flux limit in Janskys for phase calibrators
'snapAutoSep' : 20.0, # Maximum separation of phase calibrator in degrees from source
'snapAutoTint' : 2.0, # Integration time in minutes on phase calibrators
}
The PACS system usings the eight 3.5-mm antennas to simulataneously observe a bright 30 GHz calibrator while the CARMA antennas observe a source in the 1mm or 3mm band. The SZA data are used to improve the phase calibration. Currently PACS is used only for A/B tracks.To write a PACS script, you need to do the following:
- You must add the parameter sources['pacs'] to the sources dictionary. This parameter indicates which sources the 3.5-m antennas will observe while the 6/10-m antennas observes the science targets.
- You may also want to change the limits['record'] length in the limits dictionary. This parameter defaults to 10 seconds for normal A/B tracks, but could be as short as 4 seconds for PACS tracks. It is not recommended that you use a recorded length shorter than 4 seconds since the data files become very large.
While the template script will handle most observations, some programs will need a specialized observing script. Investigators can edit the observing scripts as needed.
Custom modified scripts that do not execute properly may not be re-scheduled.You may wish to contact CARMA staff or a CARMA collaborator and arrange for a short test of a customized script before submitting the script. Investigators needs to be careful modifying the script, since the script is designed to give the observers considerable flexibility in running the track.
correlator = {
...
'reconfig' : od.utils.CORR_CUSTOM,
'configCal' : [ [1, BW500, tuning['restfreq']+1.0],
[2, BW500, tuning['restfreq']+0.5],
[3, BW500, tuning['restfreq']-0.5] ]
...
}
The arguments to configCal are exactly the arguments
to the configband command. Entries
must be provided for each correlator band.
For example, if the science targets are observed with all bands set to 62 MHz, and the calibrator is set to 500 MHz bandwidth, a bright quasar should be observed in the following correlator setups:
correlator = {
...
'hybrid' : [ [BW500, BW62, BW62],
[BW62, BW500, BW62] ],
...
}
The hybrid correlator modes will be observed as part of the passband calibration observations. The integration time for each hybrid configuration is set by correlator['tintHybrid'].
If reconfig=None, the correlator is not reconfigured for calibrator observations.
If reconfig=od.utils.CORR_BW500, each correlator band is changed to a bandwidth of 500 MHz without changing the IF frequency.
If reconfig=od.utils.CORR_BW500LO:
If reconfig=od.utils.CORR_CUSTOM, then the user can specify exactly the correlator configuration. The correlator configuration should be specified using correlator['configCal'].
See What observing issues should I consider... for further discussion on when it is necessary to set reconfig.
correlator = {
...
'tintHybrid' : 5.0,
...
}
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
antwait is a hidden parameter that does not appear
in the default observing script. By default, it assumes the
value of limits['antwait']
unless it is explictly added to the
fluxcal dictionary.
For example, to begin integrating when all but 3 antennas
are on source, set:
fluxcal = {
...
'antwait' : -3,
...
}
If doBoth is False, a secondary calibrator will be observed only if dosecondary is True and a primary flux calibrator is not observed.
Finally, if you want to force radio pointing for every fluxcal observation, then see fluxcal['forcePoint'].
elmax is a hidden variable that assumes the value
and functionality specified in
limits['maxElevationCal']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'elmax' : 80.0,
...
}
elmin is a hidden variable that assumes the value
and functionality specified in
limits['minElevationCal']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'elmin' : 30.0,
...
}
intervalPointing is a hidden variable that assumes
the value
and functionality specified in
pointing['interval']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'intervalPointing' : 15.0,
...
}
maxsep is a hidden variable that assumes the value
in pointing['maxsep']
unless it is explicity added to the
fluxcal dictionary.
Example, to set the maximum separation to 30 degrees:
fluxcal = {
...
'maxsep' : 30.0,
...
}
minsepsun is a hidden variable that assumes the value
and functionality described in
limits['minsepsun']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'minsepsun' : 30.0,
...
}
preferredPointing is a hidden variable that
default to a value of None. If None, then the pointing
source is selected based upon the parameters in the
pointing and
fluxcal dictionaries. Also,
if preferredPointing=None and the flux calibrator
is Mars, Neptune, and Uranus, then pointing is performed
on the planet.
Example:
fluxcal = {
...
'preferredPointing' : '3c273 3c279',
...
}
For example, if you prefer to observe the flux calibrator
Uranus or Neptune, set:
fluxcal = {
...
'preferredPri' : 'Uranus, Neptune',
...
}
This implies that when it is time to observe the flux
calibrator, the script will observe Uranus if it is above
the elevation limit specified by
fluxcal['elmin']. If it is
not, the script will attempt to observe Neptune,
and if that source is not available, the script will
attempt any calibrators listed in
primaryFluxCalibrators.
For example, if you prefer to observe the secondary
flux calibrator 3c279 or 3c273, set:
fluxcal = {
...
'preferredSec' : '3c279, 3c273',
...
}
This implies that when it is time to observe the secondary
flux calibrator, the script will observe 3C279 if it is
above the elevation limit specified by
fluxcal['elmin']. If it is
not, the script will attempt to observe 3C 273.
If that source is not available, the script will
attempt to observe any of the
secondary calibrators
(except MWC 349, which is in the primary flux
calibrator list).
record is a hidden variable that assumes the value
and functionality described in
limits['record']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'record' : 30.0,
...
}
The RMS noise for the amplitudes and phases are given in equations (1)-(4). channel is about 8 degrees per baseline.
tsys is a hidden variable that assumes the value
and functionality described in
limits['tsys']
unless it is explicity added to the
fluxcal dictionary.
Example:
fluxcal = {
...
'tsys' : 10.0,
...
}
Example #1:
To observe two flux calibrators (primary and/or secondary) in a
single calibration cycle:
fluxcal = {
'doPrimary' : True,
'doSecondary' : True,
'doBoth' : True,
'ncal' : 2,
'ncycle' : 1,
}
Example #2:
To observe a flux calibrator (primary or secondary) at the
beginning of the track, and again at the end of the track, set:
fluxcal = {
'doPrimary' : True,
'doSecondary' : True,
'doBoth' : False,
'ncal' : 1,
'ncycle' : 2,
}
Example #3:
To observe a single flux calibrator every 2 hours:
fluxcal = {
'doPrimary' : True,
'doSecondary' : True,
'doBoth' : False,
'ncal' : 1,
'ncycles' : 200, # Set to a large number
'middle' : True,
'interval' : 2,
}
The value of limits['ambient'] can be overridden in individual dictionaries by setting sources['ambient'], mosaic['ambient'], passband['ambient'], or fluxcal['ambient'].
This is a hidden parameter that should only be used for testing purposes such as blank-sky scripts.
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
limits = {
...
'combine' : 10,
...
}
limits = {
...
'maxElevationCal' : 80.0,
...
}
The elevation limit to observe phase calibrators and science targets are controlled separately by the observers. In general, the source and phase calibrator will be observed above an elevation of 30 degrees or an hour angle of +/3 hours, which ever is longer.
limits = {
...
'minElevationCal' : 30.0,
...
}
The elevation limit to observe phase calibrators and science targets are controlled separately by the observers. In general, the source and phase calibrator will be observed above an elevation of 30 degrees or an hour angle of +/3 hours, which ever is longer.
The angular separation can be overridden for
individual calibration steps by setting the minsepsun
variable in individual dictionaries, namely
fluxcal['minsepsun'],
mosaic['minsepsun'],
passband['minsepsun'],
and
sources['minsepsun']).
Example:
limits = {
...
'minsepsun' : 30.0,
...
}
limits = {
...
'record' : 30.0,
...
}
limits['tmoTrack'] sets the default limits for sources, passband, and fluxCal dictionaries. The limits can be overridden by adding the 'tmo' variable to the individual dictionaries (i.e. fluxcal['tmo'], passband['tmo'], and sources['tmo']).
Example:
limits = {
...
'tmoTrack' : 500.0,
...
}
As example, a tracking threshold of 0.1 implies that data will be flagged if the tracking error is larger than 6 arcsec on a 10.4 m antenna at 115 GHz (or 3 arcsec at 230 GHz).
A tracking threshold of 0.1 would imply a loss of 3% if two antennas are off by the maximum amount. For 0.15 it is 6% and 0.2 it is 10%. Depending on the calibration requirements for your program, you may wish to increase the tracking threshold.
IMPORTANT: Data are currently NOT flagged is the tracking error is larger than the trackingThreshold. Flagging will likely be enabled in the future, and therefore this parameter should be set to a reasonable value. In the meantime, the current procedure is for individual investigators to flag their own data using miriad that have a large value of the axis RMS, indicating the antenna was not tracking properly on source.
limits['tsys'] sets the default value for the sources, passband, and fluxCal dictionaries. The limits can be overridden by adding the 'tsys' variable to the individual dictionaries (i.e. fluxcal['tsys'], passband['tsys'], and sources['tsys']).
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
antwait is a hidden parameter that does not appear
in the default observing script. By default, it assumes the
value of limits['antwait']
unless it is explictly added to the
mosaic dictionary.
For example, to begin integrating when all but 3 antennas
are on source, set:
mosaic = {
...
'antwait' : -3,
...
}
If arcminUnits = False, the positions in the offsetsFile or the offsets list are given in units of the Nyquist sample rate of the largest antenna.
In principle, it is possible to mosaic multiple targets, in which case nphase will apply to each target. That is, the observing sequence will be to observe the phase calibrator, then mosaic positions 1 to nphase for first mosaic target, then positions nphase+1 to 2*nphase for the second mosaic target, and then return to the phase calibrator. In practice, this will not yield good results unless nphase=0 such that all mosaic positions are observed for each target.
Instead of providing an offsets file, the offsets can
be listed in the offsets variable.
The offsets represent the equatorial
offsets in arcminutes relative to the pointing
center. If you enter a right ascension
offset of 1.5 arcminutes in the offset variable, the CARMA
control system will compute the right ascension offset in
minutes of time is approximately 1.5 / cos(dec).
Positive offsets are toward east for right
ascension, and north for declination.
For example, the seven pointing grid offset above is:
mosaic = {
...
...
offsets : [ [-0.500, -0.866], [ 0.500, -0.866], [1.000, 0.000], [0.000, 0.000],
[-1.000, 0.000], [-0.500, 0.866], [0.500, 0.866] ]
}
Note the use of brackets in specifying the mosaic
positions.
For example, here is a seven point offset grid in
arcminutes (this is an example only, and the actual
spacing for a Nyquist sample mosaic will depend on the
observed frequency):
-0.500 -0.866
0.500 -0.866
1.000 0.000
0.000 0.000
-1.000 0.000
-0.500 0.866
0.500 0.866
record is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['record']
unless it is explictly added to the
mosaic dictionary.
Example:
mosaic = {
...
'record' : 30.0,
...
}
tmoMosaic is a hidden parameter that does not appear in the default template. By default, it has a value 15 seconds unless is explictly added to the mosaic dictionary.
tmoTrack is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['tmoTrack'] unless
it is explictly added to the mosaic
dictionary.
Example:
mosaic = {
...
'tmoTrack' : 500.0,
...
}
noise = {
...
'record' : 30.0,
...
}
noise = {
...
'tint' : 30.0,
...
}
The default value is None for normal observations, and None for PACS observations.
This option is useful to track the phase in the digitizers using the noise source.
Example:
noise = {
...
'tsample' : 1, # Observe noise source every minute.
...
}
Other important notes:
| Source | Aliases | Reference |
|---|---|---|
| 0217+738 | 0212+735 | Lucas & Liszt 1994, A&A, 383, L5 |
| 0359+509 | NRAO150, 0355+508 | Lucas & Liszt 1994, A&A, 383, L5 |
| BLLAC | 2202+422, 2200+420 | Lucas & Liszt 1994, A&A, 383, L5 |
| 3c111 |
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
antwait is a hidden parameter that does not appear
in the default observing script. By default, it assumes the
value of limits['antwait']
unless it is explictly added to the
passband dictionary.
For example, to begin integrating when all but 3 antennas
are on source, set:
passband = {
...
'antwait' : -3,
...
}
Finally, if you want to force radio pointing for every fluxcal observation, then see passband['forcePoint'].
elmax is a hidden variable that assumes the value
and functionality specified in
limits['maxElevationCal']
unless it is explicity added to the
passband dictionary.
Example:
passband = {
...
'elmax' : 80.0,
...
}
elmin is a hidden variable that assumes the value
and functionality specified in
limits['minElevationCal']
unless it is explicity added to the
passband dictionary.
Example:
passband = {
...
'elmin' : 30.0,
...
}
maxsep is a hidden variable that assumes the value
in pointing['maxsep']
unless it is explicity added to the
passband dictionary.
Example, to set the maximum separation to 30 degrees:
passband = {
...
'maxsep' : 30.0,
...
}
The flux density is specified for the LO frequency of the science observations, unless pointing['tune95'] is True, in which case 95 GHz is used.
minsepsun is a hidden variable that assumes the value
and functionality described in
limits['minsepsun']
unless it is explicity added to the
passband dictionary.
Example:
passband = {
...
'minsepsun' : 30.0,
...
}
For example, if you prefer that the passband be measured on
3c279 or 3c273, you can set:
passband = {
...
'preferred' : '3c279 3c273'
...
}
This implies that when it is time to observe the passband, the
script will observe 3c279 if it is above the elevation
limit specified by elmin. If
it is not, it will then try 3c273, and if that source is not
available, the script will automatically choose a suitable
calibrator. If not calibrator is found, then passband
calibration is skipped.
preferredPointing is a hidden variable that
default to a value of None. If None, then the pointing
source is selected based upon the parameters in the
pointing and
passband dictionaries.
Example:
passband = {
...
'preferredPointing' : '3c273 3c279',
...
}
record is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['record']
unless it is explictly added to the
passband dictionary.
Example:
passband = {
...
'record' : 30.0,
...
}
The RMS noise for the amplitudes and phases are given in equations (1)-(4), where the bandwith (BW) should be replaced by the channel width for your correlator setup. For example, the 500 MHz correlator mode has 33 MHz wide channels. In 15 minutes integration time, the rms amplitude per channel in 15 minutes integration time will be approximately 0.14 Jy per baseline, or about 5% accuracy for a 3 Jy source. Similary, the rms phase per channel is about 8 degrees per baseline.
For narrow bandwidths, it is often not feasible to obtain adequate signal to noise even on a bright quasar. Instead, one should use the electronic noise source to remove the channel to variations, and a bright quasar to remove any DC offsets between the noise source and the astronomical source. The necessary noise source integrations will be obtained automatically within the track.
tmo is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['tmoTrack'] unless
it is explictly added to the passband
dictionary.
Example:
passband = {
...
'tmo' : 500.0,
...
}
tsys is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['tsys']
unless it is explictly added to the
passband dictionary.
Example:
passband = {
...
'tsys' : 10.0,
...
}
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
antwait is a hidden parameter that does not appear
in the default observing script. By default, it assumes the
value of limits['antwait']
unless it is explictly added to the
pointing dictionary.
For example, to begin integrating when all but 3 antennas
are on source, set:
pointing = {
...
'antwait' : -3,
...
}
The parameters in the pointing dictionary are used to select a pointing source.
The following criteria are used to determine if pointing is needed for daytime hours:
See also pointing['doPointNight'] and pointing['doPointSunriseSet']
The parameters in the pointing dictionary are used to select a pointing source.
The following criteria are used to determine if pointing is needed for nighttime hours:
See also pointing['doPointDay'] and pointing['doPointSunriseSet']
If more frequent pointing is desired during sunrise or sunset (defined as ± 2 hours when the sun is at elevation of 0 degrees), then the variable pointing['intervalTran'] can be set.
doSunRiseSet is a hidden parameter that does not appear in the default template. It has a value of True by default unless it is explictly added to the pointing dictionary.
elmax is a hidden variable that assumes the value
and functionality specified in
limits['maxElevationCal']
unless it is explicity added to the
pointing dictionary.
Example:
pointing = {
...
'elmax' : 80.0,
...
}
elmin is a hidden variable that assumes the value
and functionality specified in
limits['minElevationCal']
unless it is explicity added to the
pointing dictionary.
Example:
pointing = {
...
'elmin' : 30.0,
...
}
See also pointing['intervalNight'] and pointing['intervalTran'].
See also pointing['intervalday'] and pointing['intervalTran'].
If intervalTran is not set, then pointing is performed approximately 2 hours after sunrise and 2 hours after sunset.
intervalTran is a hidden parameter that does not appear in the default template. It has a value of None by default unless it is explictly added to the pointing dictionary.
The flux density is specified for the LO frequency of the science observations, unless pointing['tune95'] is True, in which case 95 GHz is used.
minsepsun is a hidden variable that assumes the value
and functionality described in
limits['minsepsun']
unless it is explicity added to the
pointing dictionary.
Example:
fluxcal = {
...
'minsepsun' : 30.0,
...
}
nrepCross is a hidden parameter that does not appear in the default template. It has a value of 1 by default unless it is explictly added to the pointing dictionary.
For example, if you prefer that the pointing be measured on
3c279 or 3c273, you can set:
pointing = {
...
'preferred' : '3c279 3c273'
...
}
This implies that when it is time to point, the
script will observe 3c279 if it is above the elevation
limit specified by elmin. If
it is not, it will then try 3c273, and if that source is not
available, the script will automatically choose a suitable
pointing source. If not pointing source is found, then
pointing is skipped.
pointing = {
...
'preferred' : '3c273, 3c279',
'tune95' : True,
'tune95Pref' : [False, True],
}
In this example, if 3c273 is selected as the pointing source,
then the receivers are not retuned to 95 GHz. If 3c279 (or
any other source) is selected, then the receivers are
returned to 95 GHz before repointing.
The optical cameras can be further used in science tracks to perform frequent pointing updates. The advantage of optical reference pointing compared to standard radio pointing is that the pointing solution usually converges in a few seconds at night time and a couple of minutes for daytime, while radio pointing takes 10-15 minutes. Also, the density of suitable optical pointing stars on the sky is higher than radio sources, and you are more likely to find a bright star near your source.
The disadvantages to optical pointing are that it requires the difference between optical minute radio pointing offset to be the same over the sky, which is not guaranteed. Also, optical pointing will not work if it is cloudy or the star is too close to the sun.
The default optical pointing procedure is as follows:
Here is the complete list of optical pointing options and a brief description of their functionality. The most important parameters are listed first.
pointing = {
...
# doOptPoint is the only required parameter
'doOptPoint' : True, # Must be True to implement optical pointing
# These are optional parameters that you may wish to set. They need to
# be included in the pointing dictionary only if you change the default values.
#
'intervalOpt' : 0.5, # [hours] How frequently to perform optical pointing
# 0 -> at the start of every source cycle
'optradPreferred' : None, # Preferred radio sources which to measure optical-radio offset
'optradElmin' : 30, # [degrees] Minimum elevation which to measure optical-radio offset
'optradElmax' : 75, # [degrees] Maximum elevation which to measure optical-radio offset
'optradTune95 : None, # If True, tune to 3mm for radio pointing
'optPointCal' : True, # True/False: Perform optical pointing before phase calibrator
'optPointTarget' : False, # True/False: Perform optical pointing before science target
# The remaining parameters are optional that you probably should not change.
# They need to be included in the pointing dictionary only if you change
# the default values.
#
'maxOptSep' : 20, # [degrees] Maximum distance of optical pointing source from radio source
'nbadAnts' : 3, # Maximum number of antennas to fail optical pointing
# and still be considered a good pointing session
'nfailOpt' : 3, # Maximum number of bad consecutive optical pointing sessions
# allowed before going back to radio pointing
'ncoadd' : None, # Number of optical images to coadd
'subtract' : None, # Subtract background image before centroiding (True/False/None)
'maxmag' : None, # [mag] Maximum V-band magnitude to point on
'centroidLoopMax' : 16, # Maximum number of repeats per pointing cycle
...
}
This parameter has similar functionality as intervalDay and intervalNight for radio pointing.
For example, if nbadAnts=3 and optical pointing does not converge on 2 antennas, then the optical pointing session is still considered a success. But if 4 or more antennas fail, then the session is marked as failed. nbadAnts is used with pointing['nfailOpt'] to determine when to give up on optical pointing and revert back to optical pointing.
nfailOpt is used with pointing['nbadAnts'] to determine when to give up on optical pointing and revert back to optical pointing.
If optPointCal is True and pointing['optPointTarget'] is False, then the optical pointing source is selected to be close to the science target. However, if both optPointCal and pointing['optPointTarget'] are True, then the optical pointing source is selected to be close to the science target.
The default value is optPointCal = True and optPointTarget=False. In general, these two parameters should only both be true for 1mm observations where the calibrator is more than 20 deg from your target and high-dynamic range mosaicing is required.
The optical pointing source is selected to be close to the target regardless of the value of pointing['optPointCal'].
The default value is optPointCal = True and optPointTarget=False. In general, these two parameters should only both be true for 1mm observations where the calibrator is more than 20 deg from your target and high-dynamic range mosaicing is required.
The default value is optradPreferred=None. A value of None implies that a radio pointing source will be selected based on the flux density limits specified in the pointing dictionary.
The default value is optradTune95=None, and the
value of pointing['tune95']
is adopted.
Example:
pointing = {
...
'optradPreferred' : ['3c111', '3c84', '0530+135'],
'optradTune95' : [False, False, True],
...
}
The primary flux calibrators are Uranus, Neptune, Mars, and MWC 349. Jupiter and Saturn are generally not used as flux calibrators since they often resolved by CARMA on most baselines. Note that the angular size of Mars can vary substantially throughout the year and may not always be an appropriate calibrator depending on the array configuration. The angular diameter of solar system bodies can be looked up using the online calculators at the U.S. Naval Observatory or Jet Propulsion Laboratory (JPL).
Additional primary flux calibrators can be specified by adding to the primaryFluxCalibrators list or by specifying the source in fluxcal['preferredPri'].
The recommended file name for the catalog is projectCode.cat, where projectCode is the project code assigned when the proposal was submitted.
The source catalog should be sent along with the observing script and (if applicable) the mosaic offset file to to observing_scripts@mmarray.org. Please send the files as attachments.
Example:
projectInfo = {
...
'catalog' : 'c0029.cat',
...
}
Here is an example catalog entry to illustrate the format:
#| Source | RA | DEC | Parallax | Velocity | VelFrame | VelDef | PMRA | PMDEC | ID | PntType | Comments |
#| s | hms | dms | r | r | s | s | r | r | i | s | s |
#| | | | mas | km/s | | mas/year | mas/year | | | |
cygnusA 19:59:28.35 40:44:02.01 0.0 0.0 LSR RADIO 0.000 0.000 1 RADIO
M16 18:18:51.29 -13:50:02.32 0.0 25.0 LSR RADIO 0.000 0.000 1 RADIO
IMPORTANT: Source names are restricted to 8
characters or less. The epoch and equinox are assumed to
be J2000. Fields should be separated by spaces only and
not tabs. The source name cannot contain spaces, *, or
other unusual characters.
Currently, only VelFrame=VLSR and VelDef=RADIO are supported. If you want to observe high-z sources, you must calculate the redshifted frequency and set VLSR=0.
This field is required if you wish to be notified when your
track has been observed. Multiple email addresses can be
entered as a comma separated list.
Example:
projectInfo = {
...
'emailAddress' : 'myname@astro.university.com,coI@astro.university.com',
...
}
projectInfo = {
...
'code' : 'c0029',
...
}
projectInfo = {
...
'obsblock' : 'G35',
...
}
projectInfo = {
...
'subobsblock' : 'mm1',
...
}
If, for example, antwait = -2 (i.e. is less than zero), then the integration will begin when all but two antennas arrive on source.
If, for example, antwait = 2 (i.e. is greater than zero), then the integration will begin when any two antennas arrive on source.
antwait=ALL means all antennas must be tracking the source before beginning the integration.
antwait=ANY means that a minimum of two antennas must be tracking the source before beginning the integration.
antwait is a hidden parameter that does not appear
in the default observing script. By default, it assumes the
value of limits['antwait']
unless it is explictly added to the
sources dictionary.
For example, to begin integrating when all but 3 antennas
are on source, set:
sources = {
...
'antwait' : -3,
...
}
callist can contain an arbitrary number of calibrators
listed in order of decreasing priority.
The format is:
sources = {
...
'callist' : 'cal1, cal2, cal3, ...',
...
}
There are three other variables that are used along with callist.
The procedure in choosing the calibrator is as follows:
callist is a hidden parameter that does not appear in the default observing script. By default, it assumes the value of None and the calibrator in sources['phaseCal'] is used.
Example 1:
Suppose the bright calibrator 3c84 is 25 degrees from your
source, but you want to use a closer calibrator (either
0232+456, 0245+367, or 0305+403) if they are brighter than 2.0 Jy.
0232+456 is the closest calibrator, and you prefer to use that
source if possible. You can set the
sources dictionary as follows:
sources = {
...
'phaseCal' : '3c84',
'callist' : '0232+456, 0245+367, 0305+403'
'fluxlimit' : 2.0,
'useBrightest' : False,
...
}
Example 2:
Use the brightest calibrator as long as it is at least 1 Jy:
sources = {
...
'phaseCal' : '3c84',
'callist' : '0232+456, 0305+403'
'fluxlimit' : 1.0,
'useBrightest' : True,
...
}
Example 3:
You are willing to observe a closer calibrator (0232+456) even
it is fainter (> 1 Jy) if it is fainter than a more distant
but brighter calibrator (0305+403 @ 2 Jy). Use an
integration time of two minutes per source when measuring
the fluxes. If the fainter source (0232+456) is acceptable,
use a phase-calibrator integration time of 5 minutes. If
the brighter source is selected, use 2 minutes.
sources = {
...
'phaseCal' : '3c84',
'callist' : '0232+456, 0305+403'
'fluxlimit' : [1.0, 2.0],
'tintlist' : 120.0,
'tPhaseCalList': [5.0, 2.0],
...
}
There are three possible ways to use fluxlimit:
If the value is None, then the brightest source in sources['callist'] is used.
If the value is set to a single number (e.g. 2.0), then this represents the minimum acceptable brightness (2.0 Jy in this example) for each source in sources['callist'].
If the value is set to a list (e.g. [1.0, 1.5, 4.0]), then each flux entry corresponds to a individual source in sources['callist']. In this case, the number of entries in fluxlimit and sources['callist'] must be identifical.
fluxlimit is a hidden parameter that does not appear in the default observing script. By default, it has a value of None unless it is explictly added to the sources dictionary.
See sources['callist'] for specific examples.
If there are multiple sources and only a single intent value is specified, then that intent value is used for each source. Otherwise, there must be an intent value for each source.
The possible intent values are:
| Intent | Meaning |
|---|---|
| A | Atmospheric monitoring |
| B | Bandpass calibration |
| F | Flux calibration |
| G | Gain (phase and/or amp) calibration |
| P | Polarization calibration |
| R | Reference pointing |
| S | Science target |
| O | Other |
sources = {
'target' : 'ABAur, 0530+185, AATau',
'intentTarget' : 'S, G, S',
...
}
ABAur and AATau will be assigned intent "S", and
0530+185 will have intent "G". In miriad, using
"select=purpose(S)" will select sources ABAur and
AATau, and "select=purpose(G)" will select 0530+185.
minsepsun is a hidden variable that assumes the value
and functionality described in
limits['minsepsun']
unless it is explicity added to the
sources dictionary.
Example:
sources = {
...
'minsepsun' : 30.0,
...
}
The integration time per pointing is indicated by sources['tintTarget'].
For example:
sources = {
'target' : 'perb1, perb2, perb3, 0210+123']
'phaseCal' : '3c111',
'tintTarget' : [1.0, 0.5, 2.0, 1.5] # [minutes]
'tintPhaseCal' : 3.0, # [minutes]
'mosaicTarget' : [True,True,True,False], # Indicate which sources to mosaic
}
mosaic = {
'nphase' : 0, # Number of positions to observe between phase cal
...
}
In this example, the observing procedure would be as follows:
Note the following in using the sources['mosaicTarget'] option:
The integration time per pointing is indicated by sources['tintTarget'].
If sources['target'] lists multiple sources, a mosaic if performed around the first target, and the remaining sources in the list are observed once.
Example #1:
sources = {
'target' : 'NGC1333',
'mosaicTarget' : True,
'phaseCal' : '3c111',
'tintTarget' : 2.5,
'tintPhaseCal' : 3.0,
}
mosaic = {
'nphase' : 5,
...
}
In this example, the phase calibrator 3c111 is first
observed for 3 minutes, followed by 5 positions in the
NGC1333 mosaic which are observed for 2.5 minutes each,
and followed by the phase calibrator again.
Example #2:
sources = {
'target' : 'NGC1333, 0336+323, 0303+472',
'mosaicTarget' : [True, False, False],
'phaseCal' : '3c111',
'tintTarget' : [2.5, 1.0, 1.0]
'tintPhaseCal' : 3.0
}
mosaic = {
'nphase' : 5,
...
}
In this example, the phase calibrator 3c111 is first
observed for 3 minutes, followed by 5 positions in the
NGC1333 mosaic which are observed for 2.5 minutes each,
followed by 1 a minute integration on 0336+323, a
1 minute integration on 0303+472, and then by a 3 minute
phase calibrator observation.
For normal PACS usage, the observer will set the pacs variable to be a bright quasar that the SZA system will observe at 30 GHz. A search tool is available to find a bright PACS calibrator.
Example #1:
sources = {
'target' : 'ABAur',
'pacs' : 'J0435+245',
...
}
In this example, the CARMA system will observe AB Aur,
while the SZA will observe 'J0435+245'.
Example #2:
sources = {
'target' : 'ABAur, GMAur, TTau',
'pacs' : 'J0435+245, J0456+134, J0412+299',
...
}
In this example, CARMA will observe AB Aur, then GM Aur,
and then T Tau. The SZA will will observe
J0435+245, then J0456+134, and then J0412+299.
sources = {
...
'phaseCal' : '0530+135',
...
}
On occasion one may need different phase calibrators for
the first and second half of the track (e.g.
when the calibrator
is in the north and the science target is in the south).
You can specify the LST ranges to observe multi-calibrators
by setting the variable phaseCal in the observing
script as follows:
sources = {
...
'phaseCal' : [ '3c111, 01:00:00, 04:00:00',
'0449+113, 03:30:00, 08:00:00'],
...
}
Note the use of brackets in this example are required.
In this example, the script will use 3c111 as the phase calibrator between 1:00 and 4:00 LST, and 0449+113 between 03:30 and 8:00 LST. The script will observe the phase calibrators in the order they are listed in the phaseCal variable. It is up to the PI to ensure that the LST ranges are valid and there are no gaps in the LST coverage. Some overlap between the LST ranges is strongly suggested in case the preceeding phase calibrator cycle ends a few minutes early.
The phaseCal variable has more sophisticated
options to control when sources are observed. Here is a
complete example of all options.
sources = {
...
'phaseCal' : [ '3c84 01:00:00 03:00:00', '3c111 elmax=85', 'flux',
'passband', 'point', '0530+135 t=20', '3c84']
...
}
The observing sequence would be (1) use 3c84 as the
phase calibrator between 1 and 3 LST, (2) use 3c111 as
the phase calibrator until it reaches an elevation of
85 degrees, (3) observe the flux calibrator (if needed),
(4) observe the passband calibrator (if need),
(5) perform pointing, (6) observe 0530+135 for 20 minutes,
and (7) go back to phase-cal/source cycles using 3c84 as
the phase calibrator. Breaking up the track in this manner
can be useful if the phase calibrator reaches a very high
elevation (> 80-85 deg) where the pointing is poor,
or if the calibrator is up for only a brief period of time.
IMPORTANT: If you prefer to observe the flux calibrator or the passband calibrator in the middle of the track, you should comment out the first instance of the doFlux(...) and doPassband(...) commands in the observing script. The comment character is the pound symbol (#).
Note: If phaseCal is to None, then no phase calibrator will be observed. This option is only useful if one is performing self calibration.
sources = {
...
'pacs' : '0510+084',
'phaseCal' : '3c111',
'phaseCalPacs' : '0510+084',
...
}
record is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['record']
unless it is explictly added to the
sources dictionary.
Example:
sources = {
...
'record' : 30.0,
...
}
sources = {
'target' : ['N1333', 'N1333OFF'],
'phaseCal' : '3c111',
'pointstatusTarget' : [ONSRC, OFFSRC],
...
}
In this example, N1333 will be labeled as the ON position
in the miriad file, and N1333OFF will be labeled as the
OFF position.
Note that ONSRC and OFFSRC are system variables, not string values, and should not be surrounded by quotation marks.
record is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['record']
unless it is explictly added to the
sources dictionary.
Example:
sources = {
...
'record' : 30.0,
...
}
sources = {
'target' : 'ABAur',
...
}
In this example, the script will first observe the phase
calibrator, then AB Aur, and then the phase calibrator again.
To observe multiple sources, set:
sources = {
'target' : 'ABAur, GMAur, TTau',
...
}
In this example, the script will first observe the phase
calibrator, then ABAur, followed by GMAur, then TTau, and
finally the phase calibrator again.
Multiple targets can be entered as comma- or space- separated
lists. The following are all equivalent:
'ABAur,GMAur,TTau'
'ABAur GMAur TTau'
['ABAur', 'GMAur', 'TTau']
tintlist is a hidden parameter that does not appear in the default observing script. By default, it has a value of 60 seconds unless it is explictly added to the sources dictionary.
See sources['callist'] for specific examples.
The integration time on the phase calibrator should be
dictated by the calibration accuracy needed for your
program. For an integration time of tint, a
system temperature of Tsys, a correlator
efficiency of nq (= 0.88), an effective area
(Aeff) for an antenna diameter of D
(assumed aperture efficiency = 0.55), and a bandwidth of
BW, the RMS amplitude noise
on a single baseline is
There are periodic phase variations caused by temperature variations in the correlator. The fluctuations have a peak-to-peak phase amplitude of 10 deg and a period of 10 minutes. In principle one should integrate 10 minutes to average over these phase fluctuations. In practice, CARMA observers typically integrate for less than 5 minutes and only partially average over the phase variations. CARMA staff will be working on the correlator to improve the temperature stability and further reduce the phase fluctuations.
sources = {
'target' : 'ABAur, GMAur, TTau'
'tintTarget' : [10.0, 15.0, 12.0]
...
}
In this example, the integration time for AB Aur
will be 10 minutes, 15 minutes for GM Aur, and
12 minutes for T Tau.
For mosaic observations, each position in the mosaic is observed for tintTarget minutes.
tmo is a hidden parameter that does not appear
in the default template. By default, it assumes the value
and functionality specified by
limits['tmotrack'] unless
it is explictly added to the sources
dictionary.
Example:
sources = {
...
'tmo' : 500.0,
...
}
If tPhaseCalList is none, the integration time specified in sources['tintPhaseCal'] is used.
If tPhaseCalList is a single number, then that integration time will be adopted for any source selected from sources['callist'].
If tPhaseCalList is a list (e.g. [1.0, 3.0, 2.0]), then each entry corresponds to the source listed in sources['callist']. The number of sources listed in sources['callist'] must equal the number of integration times in tPhaseCalList.
tPhaseCalList is a hidden parameter that does not appear in the default observing script. By default, it has a value of None unless it is explictly added to the sources dictionary.
See sources['callist'] for specific examples.
For example, if the integration time on the passband calibrator is 15 minutes, and the tsys time is 10 minutes, the observing procedure would be:
If multiple sources are specified, it may not be necessary to obtain a tsys measurement before each source. If the sources['tsys'] is less than zero, then a tsys measurement is obtained at the start of the source cycle and every abs(sources['tsys']) minutes thereafter regardless of another source is observed. For example, if sources['target'] = 'abaur, dmtau, hltau', sources['tintTaaget'] = 5.0, and sources['tsys'] = -10, the observing procedure would be:
Mosaics are handled slightly differently in anticipation that mosaics often have many pointing centers with short integration times. For mosaic observations, tsys is performed after the next break in the mosaic. For example, if the time integration time per pointing center was 4 minutes, and tsys-time was 10 minutes, the observing procedure would be:
The only possible values for useBrightest are True or False.
useBrightest is a hidden parameter that does not appear in the default observing script. By default, it has a value of False unless it is explictly added to the sources dictionary.
See sources['callist'] for specific examples.
A phase calibrator is chosen that is within sources['snapAutoSep'] degrees from the source and brighter than sources['snapAutoFlux'] Jy.
Multiple values can be entered in a list if one is observing multiple frequencies using sources['snapFreq'].
This option is useful if one has many snapshot sources and it is tedious to specify a calibrator for each object. Also, in some projects, one can perform selfcal at one snapshot frequency, but not another.
In the example below, a phase calibrator will be chosen automatically
for the 230 GHz observations, but not the 115 GHz observations.
The 230 GHz calibrator will be chosen such that it is brighter than
2 Jy and within 10 deg of the source. If no calibrator is found,
then the source is observed, but with no phase calibrator observations.
It is up to the investigator to ensure a suitable phase calibrator
can be identified.
sources = {
...
'snapFreq' : [115.0, 230.0],
'snapAutoPhase' : [False, True],
'snapAutoFlux' : [1.0, 2.0],
'snapAutoSep' : [20.0, 10.0],
'snapAutoTint' : [1.0, 2.0],
...
}
As an example, snapElHa = [30.0, -3.0, 3.0] means that the next snapshot source should be higher than 30 degrees elevation OR between hour hangles of -3 and 3 hours. Typically, the the minimum elevation will be applicable to high declination sources, and the hour angle limits to low declination sources.
Any number of frequencies can be specified in either the 1 or 3mm receiver bands. Frequencies can also be repeated within the list.
See sources['snapAutoPhase'] for example usuage.
An IF frequency can be specified for each sources['snapFreq']. If only one IF frequency is specified, then that IF frequency is used for each tuning.
See sources['snapAutoPhase'] for example usuage.
sources = {
...
'snapProject' : 'cx221',
...
}
For continuum snapshot surveys, it is best to have
snapRetune=False to reduce the overhead in receiver tuning.
For spectral-line snapshot surveys however, retuning may be
necessary to doppler track each source. In this case, the overhead
will increase for retuning, and it will no longer possible to
share calibrator sources between snapshot targets.
sources = {
...
'snapRetune' : False,
...
}
An sideband can be specified for each sources['snapFreq']. If only one sideband is specified, then that sideband is used for each tuning.
See sources['snapAutoPhase'] for example usuage.
If snapTint is less than sources['tintTarget'], the phase calibrator will be observed using the time interval specified by sources['tintTarget']. This will allow you to have short integration times for a source.
An integration time can be specified for each sources['snapFreq']. If only one integration is specified, then that integration is used for each tuning.
See sources['snapAutoPhase'] for example usuage.
tuning = {
...
'IFfreq' : 2.5,
...
}
tuning = {
...
'restfreq' : 115.271204,
...
}
An alternative method to specify the rest frequency is to
use the linefreq() command.
Example:
tuning = {
...
'restfreq' : linefreq('12CO(1-0)'),
...
}
In this example, the linefreq() command will look up the
rest frequency of 12CO J=1-0 in the system line catalog.
A list of the molecules and transitions can be found in the
CARMA spectral line catalog.
The linefreq command can be used for any entries
listed between the lines shortcuts and
End shortcuts.
For frequencies listed after the End shortcuts line,
one can use the command transitionfreq to return
the frequency listed in the
CARMA spectral line catalog.
The syntax of the command is
restfreq = transitionfreq(line,transition).
Example:
tuning = {
...
'restfreq' : transitionfreq('CO','1-0'),
...
}
tuning = {
...
'sideband' : LSB,
...
}
Note that there are no quotes around LSB or USB.