Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
ExtendedTimeFrequency.h
1 /*
2  * The MIT License (MIT)
3  *
4  * Copyright (c) 2016 The SKA organisation
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef SKA_CHEETAH_DATA_EXTENDEDTIMEFREQUENCY_H
25 #define SKA_CHEETAH_DATA_EXTENDEDTIMEFREQUENCY_H
26 
27 
28 #include <pss/astrotypes/types/ExtendedTimeFrequency.h>
29 
30 namespace ska {
31 namespace cheetah {
32 namespace data {
33 
34 
35 struct ExtendedTimeFrequencyTag {}; // empty base class for std::is_base_of comparisons
36 
42 template<typename TimeFrequencyT>
43 class ExtendedTimeFrequency : public pss::astrotypes::types::ExtendedTimeFrequency<std::shared_ptr<TimeFrequencyT>>
45 {
46  typedef pss::astrotypes::types::ExtendedTimeFrequency<std::shared_ptr<TimeFrequencyT>> BaseT;
47 
48  protected:
49  typedef typename BaseT::Type Type;
50 
51  public:
52  typedef Type TimeFrequencyType;
53  typedef typename Type::TimeType TimeType;
54  typedef typename Type::TimePointType TimePointType;
55  typedef typename Type::FrequencyType FrequencyType;
56  typedef typename Type::Architecture Architecture;
57  typedef typename Type::NumericalRep NumericalRep;
58 
59  public:
60  ExtendedTimeFrequency(std::shared_ptr<TimeFrequencyT> const&);
62 
69  operator Type const&() const;
70 
74  TimePointType const& start_time() const;
75 
79  TimePointType start_time(std::size_t offset) const;
80 
86  void start_time(TimePointType const& start_time);
87 
91  TimeType sample_interval() const;
92 
96  void sample_interval(TimeType dt);
97 
101  std::vector<FrequencyType> const& channel_frequencies() const;
102 
106  std::pair<FrequencyType, FrequencyType> low_high_frequencies() const;
107 
113  void set_channel_frequencies_const_width(FrequencyType const& start, FrequencyType const& delta);
114 
119  void set_channel(unsigned channel_number, NumericalRep const& value);
120 };
121 
122 } // namespace data
123 } // namespace cheetah
124 } // namespace ska
125 
126 #include "detail/ExtendedTimeFrequency.cpp"
127 
128 #endif // SKA_CHEETAH_DATA_EXTENDEDTIMEFREQUENCY_H
Wrapper around a TimeFrequency type object (or shared_ptr to such) mainiting the TimeFrequency interf...
Some limits and constants for FLDO.
Definition: Brdz.h:35