SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
AperturePhotometryTaskFactory.cpp
Go to the documentation of this file.
1
17/*
18 * AperturePhotometryTaskFactory.cpp
19 *
20 * Created on: Sep 23, 2016
21 * Author: mschefer
22 */
23
24#include <sstream>
25
28
40
41namespace SourceXtractor {
42
44 auto instance = property_id.getIndex();
45
46 if (property_id.getTypeId() == typeid(AperturePhotometry)) {
48 m_aperture_config.at(instance),
49 instance,
52 );
53 } else if (property_id.getTypeId() == typeid(AperturePhotometryArray)) {
55 m_apertures_per_output.at(instance),
56 instance
57 );
58 } else if (property_id == PropertyId::create<ApertureFlag>()) {
60 }
61 return nullptr;
62}
63
65 std::vector<std::pair<std::string, unsigned int>> flux_instances, flux_err_instances;
66 std::vector<std::pair<std::string, unsigned int>> mag_instances, mag_err_instances;
68
69 for (auto& aggregated_ap : m_apertures_per_output) {
70 auto& array_id = aggregated_ap.first;
71
72 std::string name = m_col_prefix.at(array_id);
73
74 flux_instances.emplace_back(std::make_pair(name + "_flux", array_id));
75 flux_err_instances.emplace_back(std::make_pair(name + "_flux_err", array_id));
76 mag_instances.emplace_back(std::make_pair(name + "_mag", array_id));
77 mag_err_instances.emplace_back(std::make_pair(name + "_mag_err", array_id));
78 flags_instances.emplace_back(std::make_pair(name + "_flags", array_id));
79 }
80
81 registry.registerPropertyInstances<AperturePhotometryArray>("aperture_flux", flux_instances);
82 registry.registerPropertyInstances<AperturePhotometryArray>("aperture_flux_err", flux_err_instances);
83 registry.registerPropertyInstances<AperturePhotometryArray>("aperture_mag", mag_instances);
84 registry.registerPropertyInstances<AperturePhotometryArray>("aperture_mag_err", mag_err_instances);
85 registry.registerPropertyInstances<AperturePhotometryArray>("aperture_flags", flags_instances);
86}
87
94
96 auto& measurement_config = manager.getConfiguration<MeasurementImageConfig>();
97 auto& aperture_config = manager.getConfiguration<AperturePhotometryConfig>();
98
99 const auto& image_infos = measurement_config.getImageInfos();
100
101 m_aperture_config = aperture_config.getApertures();
102 m_magnitude_zero_point = manager.getConfiguration<MagnitudeConfig>().getMagnitudeZeroPoint();
103 m_symmetry_usage = manager.getConfiguration<WeightImageConfig>().symmetryUsage();
104
105 for (unsigned int i = 0; i < image_infos.size(); ++i) {
106 for (auto a : aperture_config.getAperturesForImage(image_infos[i].m_id)) {
107 if (std::find(m_all_apertures.begin(), m_all_apertures.end(), a) == m_all_apertures.end()) {
108 m_all_apertures.emplace_back(a);
109 }
110 }
111 }
112
113 auto outputs = aperture_config.getImagesToOutput();
114 unsigned i = 0;
115 for (auto j = outputs.begin(); j != outputs.end(); ++i, ++j) {
116 m_col_prefix[i] = j->first;
117 m_apertures_per_output[i] = j->second;
118 }
119}
120
121}
122
Merges all AperturePhotometries into a multidimensional property.
std::shared_ptr< Task > createTask(const PropertyId &property_id) const override
Returns a Task producing a Property corresponding to the given PropertyId.
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
std::map< unsigned, std::vector< float > > m_aperture_config
std::map< unsigned, std::vector< unsigned > > m_apertures_per_output
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Aperture photometry fluxes and magnitudes.
void registerPropertyInstances(const std::vector< std::pair< std::string, unsigned int > > &instance_names)
Identifier used to set and retrieve properties.
Definition PropertyId.h:40
static PropertyId create(unsigned int index=0)
Definition PropertyId.h:45
unsigned int getIndex() const
Definition PropertyId.h:70
std::type_index getTypeId() const
Definition PropertyId.h:66
T emplace_back(T... args)
T find(T... args)
T make_pair(T... args)
T make_shared(T... args)