*[Station](@ref everybeam::Station) is a thin wrapper around an
Element object, with some convenience functions.
*[Station](@ref everybeam::Station) is a thin (but central!) wrapper around an
Element object, with some convenience functions.
Constructor consumes:
-`name`: name of station
-`position`: position of station
-`model`: antenna model/element response model (Hamaker/OSKARDipole/OSKARSphericalWave/LOBES)
The all important attribute is the `itsAntenna`, which (somewhat confusingly) can denote either an `Element` or a `BeamFormer` pointer.
`Station` class contains a couple of convenience specialisations for the `response` and `arrayFactor` methods to facilitate implementation in dependencies such as `DP3` and `WSClean`.
*[Element](@ref everybeam::Element) - something for which a
response can be computed, can be a single element (antenna) or a beamformer.
Constructor consumes:
-`CoordinateSystem`: coordinate system
-`ElementResponse`: element response
*[BeamFormer](@ref everybeam::BeamFormer) -
Special kind of Element beamformer, has inputs that are Element objects.
*[ElementResponse](@ref everybeam::ElementResponse) - response of
a single element (antenna), different models can be implemented.
Inherits from `Antenna`, and includes `Element` (the latter for a not-immediately-obvious reason...)
Constructor (optionally) consumes:
-`CoordinateSystem`
-`phase_reference_position`
*[ElementResponse](@ref everybeam::ElementResponse) - purely virtual class describing response of a single element (antenna), different models can be implemented.
(Hamaker/OSKARDipole/OSKARSphericalWave/LOBES)
See `hamaker`/`lobes`/`oskar` dirs for definitions of the inheriting classes
*[Antenna](@ref everybeam::ElementResponse) - Class describing a single antenna. `BeamFormer` and `Element` inherit `public` scope from `Antenna` (in particular the `response` method).
Constructor (optionally) consumes:
-`CoordinateSystem`
-`phase_reference_position`
## Questions/Remarks in view of development:
*[Station](@ref everybeam::Station):
-**Question**: header file `Stations.h` contains different specializations of `response` method. Are they all needed?
-**Question**: re-use `Station::rotation` (and maybe place `rotation` in a utilities / common directory) ?
-**Question**: `Station` is said to be a thin wrapper around
`Element`, can't we make it "header-only"?
-**Remark**: `Station` is probably the central class which needs to be interfaced by `DP3` and `WSClean`. So when designing the new API, it requires due attention how the methods for this class should look like.