24 #include "cheetah/ddtr/astroaccelerate/DedispersionPlan.h" 29 namespace astroaccelerate {
31 template <
typename DdtrTraits>
32 DedispersionPlan<DdtrTraits>::DedispersionPlan(ConfigType
const& config, std::size_t memory)
33 : _algo_config(config)
38 template <
typename DdtrTraits>
39 DedispersionPlan<DdtrTraits>::~DedispersionPlan()
43 template <
typename DdtrTraits>
44 data::DimensionSize<data::Time> DedispersionPlan<DdtrTraits>::reset(TimeFrequencyType
const& data)
46 _strategy = std::make_shared<DedispersionStrategy<NumericalT>>(data, _algo_config, _memory);
48 _max_delay = _strategy->maxshift();
49 FrequencyListType
const& channel_freqs = data.channel_frequencies();
50 auto freq_pair = data.low_high_frequencies();
51 FrequencyType freq_top = freq_pair.second;
54 for (
auto freq: channel_freqs)
56 double factor = (this->_algo_config.dm_constant().value() * (1.0/(freq*freq) - 1.0/(freq_top*freq_top)) / data.sample_interval()).value();
57 PANDA_LOG_DEBUG <<
"Frequency: " << freq <<
" Reference: " << freq_top <<
" DM constant: " 58 << this->_algo_config.dm_constant() <<
" Sampling interval: " << data.sample_interval() <<
" DM factor: " << factor;
59 _dm_factors.push_back(factor);
62 _dedispersion_samples = this->_algo_config.dedispersion_samples();
63 if (_dedispersion_samples < 2 * _max_delay)
65 PANDA_LOG_WARN <<
"Requested number of samples to dedisperse (" 66 << this->_algo_config.dedispersion_samples()
67 <<
") is less than twice the max dispersion delay (" 68 << 2 * _max_delay <<
"): Setting number of samples to dedisperse to " 70 _dedispersion_samples = 2 * _max_delay;
73 return data::DimensionSize<data::Time>(_dedispersion_samples);
76 template <
typename DdtrTraits>
77 data::DimensionSize<data::Time> DedispersionPlan<DdtrTraits>::buffer_overlap()
const 79 return data::DimensionSize<data::Time>(_max_delay);
82 template <
typename DdtrTraits>
83 void DedispersionPlan<DdtrTraits>::reset(data::DimensionSize<data::Time>
const& spectra)
85 _number_of_spectra = spectra;
88 template <
typename DdtrTraits>
89 data::DimensionSize<data::Time> DedispersionPlan<DdtrTraits>::number_of_spectra()
const 91 return data::DimensionSize<data::Time>(_number_of_spectra);
Some limits and constants for FLDO.