Skip to content
Snippets Groups Projects
Select Git revision
  • gec-84-casacore-3.7.1-in-wheels
  • master default protected
  • extends_cmake_to_use_fetchcontent
  • rtd-ubuntu24-plucky
  • ast-1644-temp-fix
  • ast-1600-fix-beam-for-meerkat-ska-mid
  • readthedocs-c++17
  • fix_oskar
  • mwa_python_wrapper
  • ast-1384-remove-element-index-argument
  • ast-1509-fix-polarization-orientation-in-gridded-response
  • add-test-for-squared-mueller-matrices
  • 1493-extend-python-bindings
  • ast-1493-implement-response-dishpoint-1
  • ast-1325-prototype-ska-beam-model-interface
  • ast-1416-oskar-ska-sdp-func-1
  • ast-1386-create-default-element
  • ast-1384-fix-sorted-frequencies-check-sphericalharmonicsresponse-1
  • ast-1111-add-vector-bindings
  • ast-973-add-test-for-lobes-coefficients
  • v0.7.1
  • v0.7.0
  • v0.6.2
  • v0.6.1
  • v0.6.0
  • v0.5.8
  • v0.5.7
  • v0.5.6
  • v0.5.5
  • v0.5.4
  • v0.5.3
  • v0.5.2
  • v0.5.1
  • v0.4.0
  • v0.3.1
  • v0.3.0
  • v0.2.0
  • v0.1.3
  • v0.1.2
  • v0.1.1
40 results

station.cc

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    station.cc 9.25 KiB
    // Station.cc: Representation of the station beam former.
    //
    // Copyright (C) 2013
    // ASTRON (Netherlands Institute for Radio Astronomy)
    // P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
    //
    // This file is part of the LOFAR software suite.
    // The LOFAR 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 LOFAR 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 LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
    //
    // $Id$
    
    #include "station.h"
    #include "common/mathutils.h"
    
    #include "hamaker/hamakerelementresponse.h"
    #include "oskar/oskarelementresponse.h"
    #include "lobes/lobeselementresponse.h"
    
    using namespace everybeam;
    
    Station::Station(const std::string &name, const vector3r_t &position,
                     const ElementResponseModel model)
        : name_(name),
          position_(position),
          phase_reference_(position),
          element_response_(nullptr) {
      SetResponseModel(model);
      vector3r_t ncp = {{0.0, 0.0, 1.0}};
      ncp_.reset(new coords::ITRFDirection(ncp));
      vector3r_t ncppol0 = {{1.0, 0.0, 0.0}};
      ncp_pol0_.reset(new coords::ITRFDirection(ncppol0));
    }
    
    void Station::SetResponseModel(const ElementResponseModel model) {
      switch (model) {
        case kHamaker:
          element_response_.set(HamakerElementResponse::GetInstance(name_));
          break;
        case kOSKARDipole:
          element_response_.set(OSKARElementResponseDipole::GetInstance());
          break;
        case kOSKARSphericalWave:
          element_response_.set(OSKARElementResponseSphericalWave::GetInstance());
          break;
        case kLOBES:
          element_response_.set(LOBESElementResponse::GetInstance(name_));
          break;
        default:
          std::stringstream message;
          message << "The requested element response model '" << model
                  << "' is not implemented.";
          throw std::runtime_error(message.str());
      }
    }
    
    void Station::SetResponse(std::shared_ptr<ElementResponse> element_response) {
      element_response_.set(element_response);
    }