Select Git revision
griddedresponse.h
Forked from
ResearchAndDevelopment / EveryBeam
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
griddedresponse.h 5.65 KiB
// GriddedResponse.h: Base class for computing the (gridded) telescope response.
//
// Copyright (C) 2020
// ASTRON (Netherlands Institute for Radio Astronomy)
// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
//
// This file is part of the EveryBeam software suite.
// The EveryBeam software suite is free software: you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The EveryBeam software suite is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with the EveryBeam software suite. If not, see
// <http://www.gnu.org/licenses/>.
//
// $Id$
#ifndef EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
#define EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
#include "./../coords/coordutils.h"
#include "./../coords/itrfdirection.h"
#include "./../coords/itrfconverter.h"
#include <memory>
#include <vector>
#include <thread>
#include <aocommon/lane.h>
#include <aocommon/uvector.h>
#include <aocommon/hmatrix4x4.h>
#include <casacore/measures/Measures/MDirection.h>
namespace everybeam {
namespace telescope {
class Telescope;
}
namespace griddedresponse {
/**
* @brief Virtual base class to compute the gridded response
*
*/
class GriddedResponse {
public:
/**
* @brief Compute the Beam response for a single station
*
* @param buffer Output buffer, compute and set size with
* GriddedResponse::GetStationBufferSize(1)
* @param station_idx Station index, must be smaller than number of stations
* in the Telescope
* @param time Time, modified Julian date, UTC, in seconds (MJD(UTC), s).
* @param frequency Frequency (Hz)
*/
virtual void CalculateStation(std::complex<float>* buffer, double time,
double freq, size_t station_idx,
size_t field_id) = 0;
/**
* @brief Compute the Beam response for all stations in a Telescope