Skip to content
Snippets Groups Projects
Commit 36ddd985 authored by Bram Veenboer's avatar Bram Veenboer
Browse files

Make m_element_response members static and initialize in Station

This way, the ElementResponse object is initialized only once (for HBA
and for LBA), rather than for every station.
parent 32881733
No related branches found
No related tags found
No related merge requests found
......@@ -31,11 +31,6 @@ namespace LOFAR
namespace StationResponse
{
DualDipoleAntenna::DualDipoleAntenna()
{
m_element_response.reset(new HamakerElementResponseHBA());
}
matrix22c_t DualDipoleAntenna::response(real_t freq,
const vector3r_t &direction) const
{
......@@ -51,5 +46,7 @@ matrix22c_t DualDipoleAntenna::response(real_t freq,
return response;
}
std::unique_ptr<ElementResponse> DualDipoleAntenna::m_element_response = nullptr;
} //# namespace StationResponse
} //# namespace LOFAR
......@@ -47,15 +47,12 @@ public:
typedef std::shared_ptr<DualDipoleAntenna> Ptr;
typedef std::shared_ptr<const DualDipoleAntenna> ConstPtr;
explicit DualDipoleAntenna();
virtual ~DualDipoleAntenna() final override { };
virtual matrix22c_t response(real_t freq, const vector3r_t &direction)
const final override;
private:
std::unique_ptr<ElementResponse> m_element_response;
static std::unique_ptr<ElementResponse> m_element_response;
};
// @}
......
......@@ -24,6 +24,8 @@
#include "MathUtil.h"
#include "HamakerElementResponse.h"
#include "DualDipoleAntenna.h"
#include "TileAntenna.h"
namespace LOFAR
{
......@@ -35,6 +37,12 @@ Station::Station(const string &name, const vector3r_t &position)
itsPosition(position),
itsPhaseReference(position)
{
if (DualDipoleAntenna::m_element_response == nullptr) {
DualDipoleAntenna::m_element_response.reset(new HamakerElementResponseLBA);
}
if (TileAntenna::m_element_response == nullptr) {
TileAntenna::m_element_response.reset(new HamakerElementResponseHBA);
}
}
const string &Station::name() const
......
......@@ -31,10 +31,7 @@ namespace StationResponse
{
TileAntenna::TileAntenna(const TileConfig &config)
: itsConfig(config)
{
m_element_response.reset(new HamakerElementResponseHBA());
}
: itsConfig(config) {}
void TileAntenna::setConfig(const TileConfig &config)
{
......@@ -96,5 +93,7 @@ matrix22c_t TileAntenna::elementResponse(real_t freq,
return response;
}
std::unique_ptr<ElementResponse> TileAntenna::m_element_response = nullptr;
} //# namespace StationResponse
} //# namespace LOFAR
......@@ -63,9 +63,10 @@ public:
virtual matrix22c_t elementResponse(real_t freq,
const vector3r_t &direction) const final override;
static std::unique_ptr<ElementResponse> m_element_response;
private:
TileConfig itsConfig;
std::unique_ptr<ElementResponse> m_element_response;
};
// @}
......
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