1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#include "griddingtask.h"
#include <limits>
#include "../idg/averagebeam.h"
#include <aocommon/io/serialostream.h>
#include <aocommon/io/serialistream.h>
#include <schaapcommon/facets/facet.h>
namespace wsclean {
GriddingTask::GriddingTask() = default;
GriddingTask::GriddingTask(GriddingTask&& source) noexcept = default;
GriddingTask::~GriddingTask() noexcept = default;
GriddingTask& GriddingTask::operator=(GriddingTask&& source) noexcept = default;
void GriddingTask::Serialize(aocommon::SerialOStream& stream) const {
stream.UInt32(unique_id)
.UInt32(operation)
.Bool(imagePSF)
.Bool(subtractModel)
.UInt32(polarization)
.Bool(isFirstTask)
.Bool(storeImagingWeights)
.Ptr(imageWeights)
.Object(observationInfo)
.ObjectVector(facets)
.UInt64(facetGroupIndex);
// msList
stream.UInt64(msList.size());
for (const MsListItem& item : msList) item.Serialize(stream);
}
void GriddingTask::Unserialize(aocommon::SerialIStream& stream) {
stream.UInt32(unique_id);
operation = static_cast<Operation>(stream.UInt32());
stream.Bool(imagePSF).Bool(subtractModel);
polarization = static_cast<aocommon::PolarizationEnum>(stream.UInt32());
stream.Bool(isFirstTask)
.Bool(storeImagingWeights)
.Ptr(imageWeights)
.Object(observationInfo)
.ObjectVector(facets)
.UInt64(facetGroupIndex);
assert(!facets.empty());
// msList
msList.resize(stream.UInt64());
for (MsListItem& item : msList) item.Unserialize(stream);
}
GriddingTask::FacetData::FacetData(
size_t _index, double _l_shift, double _m_shift,
std::unique_ptr<MetaDataCache> _cache,
std::unique_ptr<AverageBeam> _average_beam,
const std::shared_ptr<schaapcommon::facets::Facet>& _facet,
std::vector<aocommon::Image>&& _model_images)
: index{_index},
l_shift{_l_shift},
m_shift{_m_shift},
cache{std::move(_cache)},
averageBeam{std::move(_average_beam)},
facet{_facet},
modelImages{std::move(_model_images)} {}
void GriddingTask::FacetData::Serialize(aocommon::SerialOStream& stream) const {
stream.ObjectVector(modelImages)
.UInt64(index)
.Double(l_shift)
.Double(m_shift)
.Ptr(cache)
.Ptr(averageBeam)
.Ptr(facet);
}
void GriddingTask::FacetData::Unserialize(aocommon::SerialIStream& stream) {
stream.ObjectVector(modelImages)
.UInt64(index)
.Double(l_shift)
.Double(m_shift)
.Ptr(cache)
.Ptr(averageBeam)
.Ptr(facet);
}
} // namespace wsclean
|