diff --git a/docs/analytic_beam_tutorial.rst b/docs/analytic_beam_tutorial.rst index 46badb37ec..f168f36098 100644 --- a/docs/analytic_beam_tutorial.rst +++ b/docs/analytic_beam_tutorial.rst @@ -19,6 +19,11 @@ or :meth:`pyuvdata.analytic_beam.AnalyticBeam.power_eval` methods as appropriate Evaluating an Airy Beam power response ************************************** +This code evaluates and plots an Airy beam power response. Note that we exclude +the cross polarizations, since this is an unpolarized the cross polarizations +are identical to the auto polarization power beams. If the cross polarizations +are included the array returned from the ``power_eval`` method will be complex. + .. code-block:: python >>> import matplotlib.pyplot as plt @@ -85,6 +90,12 @@ Evaluating an Airy Beam power response Evaluating a Short Dipole Beam E-Field response *********************************************** +This code evaluates and plots a short (Herzian) dipole beam E-field response +(also called the Jones matrix). Since it is the E-Field response, we have 4 +effective maps because we have the response to each polarization basis vector +for each feed. In the case of a short dipole, these maps do not have an imaginary +part, but in general E-Field beams can be complex, so a complex array is returned. + .. code-block:: python >>> import matplotlib.pyplot as plt @@ -239,10 +250,13 @@ actually calculate the response of the new beam: - ``freq_array``: an array of frequencies in Hz at which to evaluate the beam. Must be a 1D array. - and it must return a complex array of beam responses with the shape: - (1, ``Npols``, ``freq_array.size``, ``az_array.size``). - ``Npols`` is equal to either ``Nfeeds`` squared if ``include_cross_pols`` - is True (the default) or ``Nfeeds`` if ``include_cross_pols`` is False. + and it must return an array of beam responses with the shape: + (1, ``Npols``, ``freq_array.size``, ``az_array.size``). The array can be complex + if cross polarizations are included (if it is not complex it will be made + complex if the cross polarizations are included when it is called via the + ``power_eval`` method on the base class). ``Npols`` is equal to either + ``Nfeeds`` squared if ``include_cross_pols`` is True (the default) or + ``Nfeeds`` if ``include_cross_pols`` is False. Note that if you need to do some manipulation or validation of the fields after they are specified by the user, you can use the dataclass's ``__post_init__``