24 #include "cheetah/pipeline/test/SinglePulseTest.h" 25 #include "cheetah/pipeline/SinglePulse.h" 26 #include "cheetah/pipeline/CheetahConfig.h" 27 #include "cheetah/ddtr/DedispersionConfig.h" 28 #include "cheetah/generators/GaussianNoise.h" 29 #include "cheetah/generators/GaussianNoiseConfig.h" 39 SinglePulseTest::SinglePulseTest()
44 SinglePulseTest::~SinglePulseTest()
48 void SinglePulseTest::SetUp()
52 void SinglePulseTest::TearDown()
56 template<
typename NumericalType>
57 using TestSinglePulsePipeline = SinglePulse<NumericalType>;
59 template<
typename NumericalT>
67 typedef typename data::TimeFrequency<Cpu, NumericalT>::TimePointType TimePointType;
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));
96 config.
sps_config().set_dedispersion_samples(1<<18);
101 noise_config.mean(96.0);
102 noise_config.std_deviation(10.0);
107 typename utils::ModifiedJulianClock::time_point epoch(utils::julian_day(50000.0));
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;
Dm dm_start() const
the first dm condidate to try
describes dedispersion configuration
Some limits and constants for FLDO.
NumericalT DataType
the underlying data storage type for the amplitude of the signal
Dm dm_end() const
the last dm condidate to try
sps::ConfigType< PoolManagerType > const & sps_config() const
return the sps module specific configuration parameters
Parse configuration parameters for a single beam in the pipeline instance of cheetah.
A Single Pulse Search Pipeline.
Dm dm_step() const
the step size to take in generating dm trials between start and end