Skip to content
Snippets Groups Projects
Commit 22cd113b authored by Andre Offringa's avatar Andre Offringa
Browse files

Implement a circular beam for MeerKAT (L-band)

parent fed93276
No related branches found
Tags v0.5.2
1 merge request!291Implement a circular beam for MeerKAT (L-band)
Pipeline #56022 passed with warnings
......@@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.8)
#------------------------------------------------------------------------------
# Set version name and project number
set(EVERYBEAM_VERSION 0.5.1)
set(EVERYBEAM_VERSION 0.5.2)
if(EVERYBEAM_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set(EVERYBEAM_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(EVERYBEAM_VERSION_MINOR "${CMAKE_MATCH_2}")
......
......@@ -7,8 +7,9 @@ radio telescopes, i.e.:
* SKA/OSKAR
* ATCA
* GMRT
* VLA
* MeerKAT
* MWA
* VLA
This package also provides an abstract interface to a selection of beam responses for apperture arrays (LOFAR/OSKAR), and beamformed versions thereof. Currently implemented are:
......
......@@ -65,6 +65,7 @@ add_library(
pointresponse/skamidpoint.cc
circularsymmetric/atcacoefficients.cc
circularsymmetric/gmrtcoefficients.cc
circularsymmetric/meerkatcoefficients.cc
circularsymmetric/vlacoefficients.cc
circularsymmetric/voltagepattern.cc
# Phased array telescopes (SKA, LOFAR)
......
# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
# SPDX-License-Identifier: GPL-3.0-or-later
install(FILES atcacoefficients.h gmrtcoefficients.h vlacoefficients.h
voltagepattern.h
install(FILES atcacoefficients.h gmrtcoefficients.h meerkatcoefficients.h
vlacoefficients.h voltagepattern.h
DESTINATION "include/${CMAKE_PROJECT_NAME}/circularsymmetric")
// Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy)
// SPDX-License-Identifier: GPL-3.0-or-later
#include "meerkatcoefficients.h"
namespace everybeam {
namespace circularsymmetric {
constexpr std::array<double, 6> MeerKATCoefficients::coefficients_;
}
} // namespace everybeam
// Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy)
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef EVERYBEAM_CIRCULARSYMMETRIC_MEERKAT_COEFFICIENTS_H_
#define EVERYBEAM_CIRCULARSYMMETRIC_MEERKAT_COEFFICIENTS_H_
#include <array>
#include <map>
#include <string>
#include "coefficients.h"
namespace everybeam {
namespace circularsymmetric {
class MeerKATCoefficients final : public Coefficients {
public:
MeerKATCoefficients() {}
aocommon::UVector<double> GetFrequencies(double frequency) const override {
return aocommon::UVector<double>{frequency};
}
aocommon::UVector<double> GetCoefficients(double frequency) const override {
return aocommon::UVector<double>(coefficients_.begin(),
coefficients_.end());
}
double MaxRadiusInArcMin() const override {
// This is approximately the place of the first null with these
// coefficients.
return 71.0;
}
double ReferenceFrequency() const override { return 1.278e9; }
bool AreInverted() const override { return false; }
private:
/**
* These coefficients are from "The 1.28 GHz MeerKAT DEEP2 Image" (Mauch et
* al. 2020). See https://iopscience.iop.org/article/10.3847/1538-4357/ab5d2d
* These are valid for L-band.
*/
static constexpr std::array<double, 6> coefficients_{
1.0, -0.3514e-03, 0.5600e-07, -0.0474e-10, 0.00078e-13, 0.00019e-16};
};
} // namespace circularsymmetric
} // namespace everybeam
#endif // EVERYBEAM_CIRCULARSYMMETRIC_MEERKAT_COEFFICIENTS_H_
......@@ -11,6 +11,7 @@
#include "circularsymmetric/atcacoefficients.h"
#include "circularsymmetric/gmrtcoefficients.h"
#include "circularsymmetric/meerkatcoefficients.h"
#include "circularsymmetric/vlacoefficients.h"
#include <casacore/ms/MeasurementSets/MeasurementSet.h>
......@@ -38,6 +39,8 @@ TelescopeType GetTelescopeType(const casacore::MeasurementSet& ms) {
return kGMRTTelescope;
} else if (telescope_name == "LOFAR") {
return kLofarTelescope;
} else if (telescope_name == "MEERKAT") {
return kMeerKATTelescope;
} else if (telescope_name == "MID") {
return kSkaMidTelescope;
} else if (telescope_name == "MWA") {
......@@ -69,8 +72,8 @@ std::unique_ptr<telescope::Telescope> Load(const casacore::MeasurementSet& ms,
telescope =
std::make_unique<telescope::Dish>(ms, std::move(coefs), options);
} break;
case kVLATelescope: {
auto coefs = std::make_unique<circularsymmetric::VLACoefficients>("");
case kMeerKATTelescope: {
auto coefs = std::make_unique<circularsymmetric::MeerKATCoefficients>();
telescope =
std::make_unique<telescope::Dish>(ms, std::move(coefs), options);
} break;
......@@ -83,6 +86,11 @@ std::unique_ptr<telescope::Telescope> Load(const casacore::MeasurementSet& ms,
case kSkaMidTelescope:
telescope = std::make_unique<telescope::SkaMid>(ms, options);
break;
case kVLATelescope: {
auto coefs = std::make_unique<circularsymmetric::VLACoefficients>("");
telescope =
std::make_unique<telescope::Dish>(ms, std::move(coefs), options);
} break;
default:
casacore::ScalarColumn<casacore::String> telescope_name_col(
ms.observation(), "TELESCOPE_NAME");
......
......@@ -21,6 +21,7 @@ enum TelescopeType {
kATCATelescope,
kGMRTTelescope,
kLofarTelescope,
kMeerKATTelescope,
kOSKARTelescope,
kMWATelescope,
kSkaMidTelescope,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment