DP3
WSCleanWriter.h
Go to the documentation of this file.
1 // WSCleanWriter.h: DP3 step writing a reordered MS
2 // Copyright (C) 2024 ASTRON (Netherlands Institute for Radio Astronomy)
3 // SPDX-License-Identifier: GPL-3.0-or-later
4 
5 #ifndef DP3_STEPS_WSCLEAN_REORDER_WRITER_H_
6 #define DP3_STEPS_WSCLEAN_REORDER_WRITER_H_
7 
8 #include "OutputStep.h"
9 
10 #include <aocommon/banddata.h>
11 #include <aocommon/logger.h>
12 #include <aocommon/io/serialstreamfwd.h>
13 #include <aocommon/polarization.h>
14 
15 #include <schaapcommon/reordering/filewriter.h>
16 
17 #include "base/FlagCounter.h"
18 #include "common/ParameterSet.h"
19 #include "common/Timer.h"
20 
21 namespace dp3 {
22 
23 namespace common {
24 class ParameterSet;
25 }
26 
27 namespace steps {
28 
29 class WSCleanWriter : public OutputStep {
30  public:
33 
34  explicit WSCleanWriter(const common::ParameterSet& parset,
35  const std::string& prefix);
37 
38  common::Fields getRequiredFields() const override { return kRequiredFields; }
39 
40  bool process(std::unique_ptr<base::DPBuffer> buffer) override;
41 
42  void finish() override;
43 
44  void show(std::ostream& os) const override;
45 
46  void updateInfo(const base::DPInfo& info_obj) override;
47 
48  void showTimings(std::ostream& os, double duration) const override;
49 
50  private:
51  void StartReorder();
52  void ReorderBuffer(dp3::base::DPBuffer& buffer);
53  void FinishReorder();
54  aocommon::BandData GetBand(size_t start_channel, size_t end_channel) const;
55 
56  std::string name_;
57  common::ParameterSet parset_;
58  std::string out_name_;
59 
60  std::string temporary_directory_;
61  uint32_t channels_per_file_;
62  std::set<aocommon::PolarizationEnum> pols_out_;
63 
64  uint32_t data_desc_id_;
65 
66  std::unique_ptr<schaapcommon::reordering::FileWriter> writer_;
67  std::unique_ptr<schaapcommon::reordering::HandleData> handle_data_;
68 
69  common::NSTimer timer_;
70  common::NSTimer writer_timer_;
71 };
72 } // namespace steps
73 } // namespace dp3
74 
75 #endif
Class to keep counts of nr of flagged points.
Buffer holding the data of a timeslot/band.
Definition: DPBuffer.h:92
General info about DP3 data processing attributes like averaging.
Definition: DPInfo.h:35
Definition: Fields.h:16
Implements a map of Key-Value pairs.
Definition: ParameterSet.h:31
Base class for output steps.
Definition: OutputStep.h:15
static constexpr dp3::common::Fields kWeightsField
Definition: Step.h:64
static constexpr dp3::common::Fields kUvwField
Definition: Step.h:66
static constexpr dp3::common::Fields kDataField
Definition: Step.h:60
static constexpr dp3::common::Fields kFlagsField
Definition: Step.h:62
Definition: WSCleanWriter.h:29
void updateInfo(const base::DPInfo &info_obj) override
WSCleanWriter(const common::ParameterSet &parset, const std::string &prefix)
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: WSCleanWriter.h:38
bool process(std::unique_ptr< base::DPBuffer > buffer) override
void showTimings(std::ostream &os, double duration) const override
void show(std::ostream &os) const override
Show the step parameters.
void finish() override
Finish the processing of this step and subsequent steps.
const common::Fields kRequiredFields
Definition: WSCleanWriter.h:31
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53