24 #include "cheetah/generators/GeneratorFactory.h" 25 #include "panda/Log.h" 26 #include "panda/Error.h" 27 #include "cheetah/generators/TimeFrequencyGenerator.h" 28 #include "cheetah/generators/DispersedPulse.h" 29 #include "cheetah/generators/GaussianNoise.h" 30 #include "cheetah/generators/BasebandGaussianNoise.h" 31 #include "cheetah/generators/PulsarInjection.h" 32 #include "cheetah/generators/RfiScenario.h" 33 #include "cheetah/generators/NullGenerator.h" 38 namespace generators {
42 GeneratorFactory<T>::GeneratorFactory(Config
const& config)
43 :
ska::panda::Factory<TimeFrequencyGenerator<T>>(
"GeneratorFactory:")
45 , _pulsar_injection_it(config.pulsar_injection_end())
47 this->add_type(
"gaussian_noise", [
this]() {
return new GaussianNoise<T>(_config.gaussian_noise()); });
48 this->add_type(
"pulsar_injection", [
this]() {
49 if(_pulsar_injection_it == _config.pulsar_injection_end())
51 _pulsar_injection_it = _config.pulsar_injection_begin();
52 if(_pulsar_injection_it == _config.pulsar_injection_end()) {
53 throw panda::Error(
"pulsar_injection requested but no corresponding configuration available");
56 return new PulsarInjection<T>(*_pulsar_injection_it++, _profile_manager);
60 this->add_type(
"dispersed_pulse", [
this]() {
return new DispersedPulse<T>(_config.dispersed_pulse()); });
61 this->add_type(
"RfiScenario0", []() {
return new RfiScenario<0, T>(); });
62 this->add_type(
"RfiScenario1", []() {
return new RfiScenario<1, T>(); });
63 this->add_type(
"RfiScenario2", []() {
return new RfiScenario<2, T>(); });
64 this->add_type(
"RfiScenario3", []() {
return new RfiScenario<3, T>(); });
65 this->add_type(
"null", []() {
return new NullGenerator<T>(); });
70 GeneratorFactory<T>::~GeneratorFactory()
Some limits and constants for FLDO.