1 #include "cheetah/data/DmTrials.h" 2 #include "panda/Error.h" 11 template <
typename Arch,
typename T,
typename Alloc>
13 : _metadata(
std::move(metadata))
14 , _data((_metadata?_metadata->total_data_size():0), allocator)
15 , _start_time(
std::move(start))
17 if (!_metadata || _metadata->size() == 0)
18 throw panda::Error(
"Empty DmTrialsMetadata passed to DmTrials constructor.");
19 _trials.reserve(_metadata->size());
20 auto it = _data.
begin();
21 for (
auto const& trial: *_metadata)
23 std::size_t
const size = trial.size();
24 _trials.emplace_back(trial,it,it+size);
29 template <
typename Arch,
typename T,
typename Alloc>
30 template<
typename OtherArch,
typename OtherT,
typename OtherAlloc>
32 : _metadata(std::make_shared<DmTrialsMetadata>(copy.
metadata()))
33 , _data(copy._data, allocator)
37 _trials.reserve(_metadata->size());
38 auto it = _data.
begin();
39 for (
auto const& trial: *_metadata)
41 std::size_t
const size = trial.size();
42 _trials.emplace_back(trial,it,it+size);
47 template <
typename Arch,
typename T,
typename Alloc>
52 template <
typename Arch,
typename T,
typename Alloc>
58 template <
typename Arch,
typename T,
typename Alloc>
64 template <
typename Arch,
typename T,
typename Alloc>
70 template <
typename Arch,
typename T,
typename Alloc>
76 template <
typename Arch,
typename T,
typename Alloc>
82 template <
typename Arch,
typename T,
typename Alloc>
85 return _trials.begin();
88 template <
typename Arch,
typename T,
typename Alloc>
91 return _trials.cbegin();
94 template <
typename Arch,
typename T,
typename Alloc>
97 return _trials.cbegin();
100 template <
typename Arch,
typename T,
typename Alloc>
103 return _trials.end();
106 template <
typename Arch,
typename T,
typename Alloc>
109 return _trials.end();
112 template <
typename Arch,
typename T,
typename Alloc>
115 return _trials.cend();
118 template <
typename Arch,
typename T,
typename Alloc>
121 return _trials.size();
124 template <
typename Arch,
typename T,
typename Alloc>
127 return *_metadata == *(other._metadata);
130 template <
typename Arch,
typename T,
typename Alloc>
134 TimeType diff(pss::astrotypes::units::duration_cast<TimeType>(next._start_time - (_start_time + std::chrono::duration<double>(this->duration().value()))));
135 return diff < _metadata->fundamental_sampling_interval();
138 template <
typename Arch,
typename T,
typename Alloc>
141 return _metadata->duration();
DmTrialsMetadata const & metadata() const
Return the trials meta data object.
bool is_compatible(DmTrials const &other) const
Determines if another DmTrials object is compatible with this one.
Iterator begin()
Return an iterator pointing to the start of the DM trials container.
bool is_contiguous(DmTrials const &other) const
Determines if another DmTrials object is contiguous in time after this one.
Some limits and constants for FLDO.
ConstIterator begin() const
Iterators to device memory.
Mjd const & start_time() const
Iterator end()
Return an iterator pointing to the end of the DM trials container.
TimeType duration() const
Return the time duration of the DmTrials.
DmTrialType & operator[](std::size_t n)
Return reference to DmTrial instance.
A continuous memory container for dispersion measure trials of varying downsamplings.
std::size_t size() const
Return the number of DmTrials.
A wrapper class that presents a SeriesSlice object as a trial dispersion measure time series...
~DmTrials()
empty object constructor