4 #ifndef DDECAL_BDA_SOLVER_BUFFER_H
5 #define DDECAL_BDA_SOLVER_BUFFER_H
12 #include <aocommon/queue.h>
48 time_interval_(interval),
50 last_complete_interval_per_baseline_(n_baselines, -1),
52 assert(interval > 0.0);
54 data_rows_.PushBack(std::vector<IntervalRow>());
70 const std::vector<std::string>& direction_names,
71 bool keep_unweighted_model_data);
85 return *std::min_element(last_complete_interval_per_baseline_.begin(),
86 last_complete_interval_per_baseline_.end()) >= 0;
109 return data_rows_[0];
131 const std::vector<std::vector<std::complex<double>>>& solutions,
132 const std::vector<double>& channel_block_start_frequencies,
133 size_t n_polarizations,
const std::vector<int>& antenna1,
134 const std::vector<int>& antenna2,
135 const std::vector<std::vector<double>>& channel_frequencies);
144 std::vector<std::unique_ptr<base::BdaBuffer>>
GetDone() {
145 std::vector<std::unique_ptr<base::BdaBuffer>> result;
155 return time_start_ + current_interval_ * time_interval_;
171 int RelativeIndex(
double time_center)
const {
172 return int(std::floor((time_center - time_start_) / time_interval_)) -
189 std::unique_ptr<base::BdaBuffer> unweighted;
190 std::unique_ptr<base::BdaBuffer> weighted;
194 aocommon::Queue<InputData> data_;
197 std::vector<std::unique_ptr<base::BdaBuffer>> done_;
200 const double time_start_;
201 const double time_interval_;
202 int current_interval_;
207 std::vector<int> last_complete_interval_per_baseline_;
213 aocommon::Queue<std::vector<IntervalRow>> data_rows_;
Buffer holding baseline-dependently averaged (BDA) data.
Definition: BdaSolverBuffer.h:19
void ApplySolutions(const std::vector< std::vector< std::complex< double >>> &solutions, const std::vector< double > &channel_block_start_frequencies, size_t n_polarizations, const std::vector< int > &antenna1, const std::vector< int > &antenna2, const std::vector< std::vector< double >> &channel_frequencies)
const std::vector< IntervalRow > & GetIntervalRows() const
Definition: BdaSolverBuffer.h:108
double CurrentIntervalStart() const
Definition: BdaSolverBuffer.h:154
bool IntervalIsComplete() const
Definition: BdaSolverBuffer.h:84
BdaSolverBuffer(double start, double interval, size_t n_baselines)
Definition: BdaSolverBuffer.h:45
int GetCurrentInterval() const
Definition: BdaSolverBuffer.h:115
size_t BufferCount() const
Definition: BdaSolverBuffer.h:101
void AppendAndWeight(std::unique_ptr< base::BdaBuffer > buffer, const std::vector< std::string > &direction_names, bool keep_unweighted_model_data)
double IntervalDuration() const
Definition: BdaSolverBuffer.h:164
std::vector< std::unique_ptr< base::BdaBuffer > > GetDone()
Definition: BdaSolverBuffer.h:144
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
Definition: BdaSolverBuffer.h:26
std::vector< std::complex< float > * > unweighted_model_data
Definition: BdaSolverBuffer.h:35
const bool * flags
Definition: BdaSolverBuffer.h:33
const float * weights
Definition: BdaSolverBuffer.h:34
const std::complex< float > * weighted_data
Definition: BdaSolverBuffer.h:32
std::vector< const std::complex< float > * > weighted_model_data
Definition: BdaSolverBuffer.h:36
double time
Definition: BdaSolverBuffer.h:27
const std::complex< float > * unweighted_data
Definition: BdaSolverBuffer.h:31
std::size_t baseline_nr
Definition: BdaSolverBuffer.h:28
std::size_t n_correlations
Definition: BdaSolverBuffer.h:30
std::size_t n_channels
Definition: BdaSolverBuffer.h:29