Risoluzione Angolare e configurazione delle antenne
Per conoscere la risoluzione angolare di un'osservazione con un interferometro e' fortemente consigliato fare una simulazione perche' ci sono molti fattori che la determinano, tra cui declinazione dell'oggetto, durata delle osservazioni, strategia di weight delle visibilita' (uniform piuttosto che briggs) quando si fa il clean, oltre che naturalmente la disposizione delle antenne. Per dirla con precisione, la risoluzione angolare e' data FWHM del beam. E il beam risulta essere la trasformata di Fourier del piano uv, che si va pian piano formando durante le osservazioni.
Ad ogni modo, per avere un' idea su quale configurazione utilizzare puo' essere utile seguire questa tabella:
https://safe.nrao.edu/wiki/bin/view/Main/ALMABaselinesTable
la prima colonna ti identifica la configurazione presente nell'alma simmos, l ultima la distanza massima (in metri) fra le antenne.
Si Puo' quindi utilizzare la formula:
max.ang.res. = (0.02/arcsec)*(lambda/1 mm)*(10 km/max baseline)
Il seguente codice permette di determinare la configurazione da scegliere in base a risoluzione desiderata, frequenza di osservazione e declinazione dell'oggetto.
import numpy
from math import sqrt
- Originally written by Antonio Hales. Spiffied up and translated to python
- with epydoc documenation by Rob Reid.
def suggestalmaconfig(res, frequency, declination):
""" Returns a suggested ALMA configuration for a desired resolution and frequency. It assumes a 4h observation, but the observation length should not matter.
@param res: desired FWHM naturally weighted dirty beam major axis in \". @type res: float or int @param frequency: Center frequency to use in GHz. @type frequency: float or int @param declination: declination to use in degrees. @type declination: float or int """
# Declinations with precalculated beam sizes. # Must match summary filenames (no .0s). declins = [-85, -46, -23, 0, 20]
southdecind = 0 while southdecind < 3 and declination > declins[southdecind + 1]: southdecind += 1 # Calculate polated resolutions. sdec = declins[southdecind] ndec = declins[southdecind + 1] sfwhms = beamsizes(sdec) nfwhms = beamsizes(ndec) pfwhms = ((ndec - declination) * sfwhms + (declination - sdec) * nfwhms) / (ndec - sdec)
res *= 672.0 / frequency mindiff = 3.0 * pfwhms[0] bestcfg = 0 for i in range(0, len(pfwhms)): diff = abs(res - pfwhms[i]) if diff < mindiff: mindiff = diff bestcfg = i return bestcfg + 1
def beamsizes(declin):
""" Reads almabeams<declin>.summary and returns an array of beam sizes in arcseconds, going from out01 to out28 (= Y8). The beam size is the FWHM square root of the minor axis x the major axis.
@param declin: declination to use in degrees. @type declin: int """ sfn = "almabeams_%s.summary" % declin if os.path.isfile(sfn) is False: sfn = os.popen('locate %s' % sfn).readline().rstrip() sfile = open(sfn, 'r') sfn.close() fwhms = [] for line in sfile: cols = line.split() try: fwhms.append(0.001 * sqrt(float(cols[4]) * float(cols[5]))) except: pass sfile.close() return numpy.array(fwhms)
(AM)