24 #include "cheetah/ddtr/DedispersionTrialPlan.h" 31 static std::string
const& dedispersion_tag()
33 static std::string var(
"dedispersion");
37 DedispersionTrialPlan::DedispersionTrialPlan(std::string
const& tag_name)
39 , _dm_constant(data::dm_constant::s_mhz::dm_constant)
40 , _max_dm(0.0 * data::parsecs_per_cube_cm)
42 add_factory(dedispersion_tag(), []()
44 return new ddtr::DedispersionConfig();
48 DedispersionTrialPlan::~DedispersionTrialPlan()
52 void DedispersionTrialPlan::add_options(OptionsDescriptionEasyInit& add_options)
55 (
"dm_constant", boost::program_options::value<double>()->default_value(_dm_constant.value())->notifier([
this](
double v) { _dm_constant = v * data::dm_constant::s_mhz_squared_cm_cubed_per_pc; }),
"the dedispersion constant to use (in MHz^2 sec cm^3 per parsec");
60 if(_dm_trials.empty()) {
61 auto it = subsection(dedispersion_tag());
62 while (it != subsection_end())
67 if(dm > _max_dm) _max_dm = dm;
68 _dm_trials.push_back(dm);
87 add(dedispersion_tag(), config);
93 if (nspectra < overlap) {
94 panda::Error e(
"Overlap exceeds number of spectra: ");
95 e << overlap <<
" > " << nspectra;
98 std::shared_ptr<data::DmTrialsMetadata> meta_data(
new data::DmTrialsMetadata(sample_interval, nspectra - overlap));
101 meta_data->emplace_back(dm, 1);
119 _dm_constant = dm_const;
125 return TimeType((this->
dm_constant().value() * (1.0/(freq_low*freq_low) - 1.0/(freq_high*freq_high)) * _max_dm).value() * boost::units::si::second);
128 DedispersionTrialPlan::RangeIterator DedispersionTrialPlan::begin_range()
const 130 return this->subsection(dedispersion_tag());
133 DedispersionTrialPlan::RangeIterator DedispersionTrialPlan::end_range()
const 135 return this->subsection_end();
std::shared_ptr< data::DmTrialsMetadata > generate_dmtrials_metadata(TimeType sample_interval, std::size_t nspectra, std::size_t nsamples) const
Generate metadata based on dedispersion plan.
Dm dm_start() const
the first dm condidate to try
void dedispersion_config(DedispersionConfig &config)
add a Dedispersion Configuration Element
std::vector< Dm > const & dm_trials() const
list of DM trials
describes dedispersion configuration
void add_dm_range(Dm start, Dm end, Dm step)
get range of DM values
Some limits and constants for FLDO.
Dm dm_end() const
the last dm condidate to try
DmConstantType dm_constant() const
get DM constant
TimeType maximum_delay(FrequencyType freq_low, FrequencyType freq_high) const
the maximum delay time for a signal at the maximum Dm in the plan
Dm max_dm() const
the largest Dm value specified
Dm dm_step() const
the step size to take in generating dm trials between start and end