Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
DmTrialsMetadata.cpp
1 #include "cheetah/data/DmTrialsMetadata.h"
2 #include "panda/Error.h"
3 
4 namespace ska {
5 namespace cheetah {
6 namespace data {
7 
8 DmTrialsMetadata::Metadata::Metadata(DmTrialsMetadata const& parent, typename DmTrialsMetadata::DmType dm, std::size_t downsampling_factor)
9  : _parent(parent)
10  , _dm(dm)
11  , _downsampling_factor(downsampling_factor)
12 {
13 
14 }
15 
16 DmTrialsMetadata::Metadata::~Metadata()
17 {
18 
19 }
20 
21 typename DmTrialsMetadata::DmType const& DmTrialsMetadata::Metadata::dm() const
22 {
23  return _dm;
24 }
25 
27 {
28  return _downsampling_factor * _parent._sampling_interval;
29 }
30 
32 {
33  return _parent._number_of_samples/_downsampling_factor;
34 }
35 
37  : _sampling_interval(fundamental_sampling_interval)
38  , _number_of_samples(fundamental_sample_count)
39  , _hash_value(0)
40 {
41  boost::hash_combine(_hash_value,_sampling_interval.value());
42 }
43 
44 DmTrialsMetadata::~DmTrialsMetadata()
45 {
46 
47 }
48 
49 void DmTrialsMetadata::emplace_back(DmType dm, std::size_t downsampling_factor)
50 {
51  if (_number_of_samples % downsampling_factor != 0)
52  throw panda::Error("Downsampling factor does not perfectly divide fundamental sample count.");
53  boost::hash_combine(_hash_value,dm.value());
54  boost::hash_combine(_hash_value,downsampling_factor);
55  _metadata.emplace_back(*this,dm,downsampling_factor);
56 }
57 
58 typename DmTrialsMetadata::ContainerType::const_reference DmTrialsMetadata::operator[](std::size_t n) const
59 {
60  return _metadata[n];
61 }
62 
63 typename DmTrialsMetadata::ContainerType::reference DmTrialsMetadata::operator[](std::size_t n)
64 {
65  return _metadata[n];
66 }
67 
68 typename DmTrialsMetadata::ContainerType::iterator DmTrialsMetadata::begin()
69 {
70  return _metadata.begin();
71 }
72 
73 typename DmTrialsMetadata::ContainerType::const_iterator DmTrialsMetadata::begin() const
74 {
75  return _metadata.begin();
76 }
77 
78 typename DmTrialsMetadata::ContainerType::const_iterator DmTrialsMetadata::cbegin() const
79 {
80  return _metadata.cbegin();
81 }
82 
83 typename DmTrialsMetadata::ContainerType::iterator DmTrialsMetadata::end()
84 {
85  return _metadata.end();
86 }
87 
88 typename DmTrialsMetadata::ContainerType::const_iterator DmTrialsMetadata::end() const
89 {
90  return _metadata.end();
91 }
92 
93 typename DmTrialsMetadata::ContainerType::const_iterator DmTrialsMetadata::cend() const
94 {
95  return _metadata.cend();
96 }
97 
98 std::size_t DmTrialsMetadata::size() const
99 {
100  return _metadata.size();
101 }
102 
104 {
105  return _hash_value == other._hash_value;
106 }
107 
109 {
110  return _number_of_samples * _sampling_interval;
111 }
112 
114 {
115  return _sampling_interval;
116 }
117 
119 {
120  std::size_t total_size=0;
121  for (auto const& trial: *this)
122  {
123  total_size+=trial.size();
124  }
125  return total_size;
126 }
127 
128 } // namespace data
129 } // namespace cheetah
130 } // namespace ska
ContainerType::iterator begin()
Return an iterator pointing to the first Metadata instance contained.
std::size_t total_data_size() const
Return the total size of the data represented.
ContainerType::const_iterator cbegin() const
Return an const iterator pointing to the first Metadata instance contained.
ContainerType::iterator end()
Return an iterator pointing beyond the Metadata instance contained.
TimeType sampling_interval() const
return the sampling interval
std::size_t size() const
Return the number of Metadata instances contained.
bool operator==(DmTrialsMetadata const &other)
Test if this instance is compatible with another instance.
TimeType duration() const
Return the temporal duration of the trials.
Metadata(DmTrialsMetadata const &parent, DmType dm, std::size_t downsampling_factor=1)
Create a new Metadata instance.
ContainerType::const_iterator cend() const
Return a const iterator pointing beyond the Metadata instance contained.
DmTrialsMetadata(TimeType fundamental_sampling_interval, std::size_t fundamental_sample_count)
Create a new DmTrialsMetadata instance.
void emplace_back(DmType dm, std::size_t downsampling_factor=1)
Add a new Metadata instance containing information about a single DM trial.
std::size_t size() const
return the size (number of samples)
Some limits and constants for FLDO.
Definition: Brdz.h:35
DmType const & dm() const
return the dispersion measure
ContainerType::const_reference operator[](std::size_t n) const
Return a const reference to a Metadata instance.
Container for metadata that describes a set of dispersion measure trials.
TimeType fundamental_sampling_interval() const
Return the fundamental_sampling_interval.