Beams
The beam is the analogue of the point spread function (PSF) and plays a central role in setting the spatial resolution of a mock observation.
Beams in MARTINI
MARTINI provides the GaussianBeam class as a possible
approximation to the beam of any telescope. The major & minor axis lengths and position
angle of the beam can be set.
Using MARTINI’s beam classes
The GaussianBeam class accepts the full width at half-maximum
(FWHM) angular size of the beam via the bmaj and bmin keyword arguments. These
should be specified with astropy.units. Unequal bmaj and bmin results in an
elliptical Gaussian beam; for a circular beam the minor axis length can be omitted. The
position angle of the ellipse (East of North) can be set with the bpa keyword
argument. An example initialization looks like:
from martini.beams import GaussianBeam
beam = GaussianBeam(
bmaj=1 * U.arcmin,
bmin=0.5 * U.arcmin,
bpa=45 * U.deg,
)
Note
The angular sizes expect full-width at half-maximum (FWHM) values.
There is one further keyword argument truncate. At angular offsets more than this
number of FWHM the beam image amplitude is set to zero. The default value of
truncate=4.0 should be a reasonable choice for most use cases.
Custom beam images (advanced usage)
For users wanting to use a beam image more specific than a generic Gaussian beam, a base
class martini.beams._BaseBeam is available to inherit from. Classes beginning
with an underscore are deliberately not included in the online documentation as they are
either for internal functionality or advanced use cases - refer to the docstrings in the
source code for technical documentation. The main requirement is to provide a function via
the martini.beams._BaseBeam.f_kernel() abstract method (i.e. your class inheriting
from _BaseBeam should implement this) that returns the beam
amplitude as a function of the angular offsets (RA and Dec) from the beam centre. This
could be achieved, for example, by reading a beam image from a file and interpolating to
arbitrary offset. A few other abstract methods need to be implemented by beam classes,
refer to the docstrings in the source code for further information. The
GaussianBeam class implements all of these methods and can be used
as a loose example of what each needs to do.