Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
DmTimeDm.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_DMTIMEBUFFERDM_H
25 #define SKA_CHEETAH_DATA_DMTIMEBUFFERDM_H
26 
27 #include "cheetah/data/DedispersionMeasure.h"
28 #include "cheetah/data/Units.h"
29 #include <memory>
30 
31 namespace ska {
32 namespace cheetah {
33 namespace data {
34 namespace detail {
35 
46 template <typename DmTimeSliceType>
47 class DmTimeDm
48 {
49  private:
50  typedef DmTimeSliceType SliceType;
52 
53  public:
60  DmTimeDm(std::size_t const dm_idx, std::shared_ptr<SliceType const> parent);
61  ~DmTimeDm();
62 
80  template <typename TimeSeriesType>
81  typename TimeSeriesType::Iterator copy_to(TimeSeriesType& timeseries) const;
82 
88  std::size_t number_of_samples() const;
89 
90  data::DedispersionMeasureType<float> dm() const;
91 
92  TimeType sampling_interval() const;
93 
94  private:
95  std::size_t _dm_idx;
96  std::shared_ptr<SliceType const> _parent;
97 };
98 
99 } // namespace detail
100 } // namespace data
101 } // namespace cheetah
102 } // namespace ska
103 
104 #include "cheetah/data/detail/DmTimeDm.cpp"
105 
106 #endif // SKA_CHEETAH_DATA_DMTIMEDM_H
Some limits and constants for FLDO.
Definition: Brdz.h:35
DmTimeDm(std::size_t const dm_idx, std::shared_ptr< SliceType const > parent)
Create a new instance.
Definition: DmTimeDm.cpp:17
Class that wraps a single DM trial from a DmTime object.
Definition: DmTimeDm.h:47
TimeSeriesType::Iterator copy_to(TimeSeriesType &timeseries) const
Copy the given DM trial to an arbitrary timeseries.
Definition: DmTimeDm.cpp:59
std::size_t number_of_samples() const
Get the number of time samples in the associated DM trial.
Definition: DmTimeDm.cpp:29