Risoluzione Angolare e configurazione delle antenne

From Italian ARC
Jump to navigation Jump to search

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

  1. Originally written by Antonio Hales. Spiffied up and translated to python
  2. 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)