67 typedef typename data::TimeFrequency<Cpu, NumericalT>::TimePointType TimePointType;
74 CheetahConfig<NumericalT> config;
77 ddtr::DedispersionConfig dd_config_low;
78 config.sps_config().dedispersion_config(dd_config_low);
79 dd_config_low.dm_start(ddtr::DedispersionConfig::Dm(0.0 * data::parsecs_per_cube_cm));
80 dd_config_low.dm_end(ddtr::DedispersionConfig::Dm(100.0 * data::parsecs_per_cube_cm));
81 dd_config_low.dm_step(ddtr::DedispersionConfig::Dm(0.1 * data::parsecs_per_cube_cm));
93 config.sps_config().set_priority(0);
96 config.sps_config().set_dedispersion_samples(1<<18);
100 generators::GaussianNoiseConfig noise_config;
101 noise_config.mean(96.0);
102 noise_config.std_deviation(10.0);
103 generators::GaussianNoise<DataType> noise(noise_config);
104 BeamConfig<uint8_t> beam_config;
107 typename utils::ModifiedJulianClock::time_point epoch(utils::julian_day(50000.0));
108 TestSinglePulsePipeline<NumericalT> pipeline(config, beam_config);
110 double tsamp_us = 64.0;
113 std::size_t total_nsamps = std::size_t(10.0 / (tsamp_us * 1e-6));
114 data::DimensionSize<data::Time> number_of_samples(1<<15);
115 data::DimensionSize<data::Frequency> number_of_channels(1024);
116 std::size_t loop_count = total_nsamps/number_of_samples + 10;
117 for (std::size_t ii=0; ii<loop_count; ++ii)
119 std::cout <<
"Building next time frequency block..." << std::endl;
120 auto tf = std::make_shared<data::TimeFrequency<Cpu, uint8_t>>(number_of_samples, number_of_channels);
121 auto f1 = data::TimeFrequency<Cpu, uint8_t>::FrequencyType(f_high * boost::units::si::giga * boost::units::si::hertz);
122 auto f2 = data::TimeFrequency<Cpu, uint8_t>::FrequencyType(f_low * boost::units::si::giga * boost::units::si::hertz);
123 auto delta = (f2 - f1)/ (
double)number_of_channels;
124 tf->set_channel_frequencies_const_width( f1, delta );
125 tf->sample_interval(
typename data::TimeFrequency<Cpu, uint8_t>::TimeType(tsamp_us * boost::units::si::micro * data::seconds));
126 tf->start_time(epoch);
127 epoch += std::chrono::duration<double>(tf->sample_interval().value()*number_of_samples);
128 std::cout <<
"Time frequency block " << ii <<
" dispatched to pipeline." << std::endl;
NumericalT DataType
the underlying data storage type for the amplitude of the signal