SourceXtractorPlusPlus
1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
src
lib
Grouping
GroupingFactory.cpp
Go to the documentation of this file.
1
17
18
#include "
SEImplementation/Grouping/GroupingFactory.h
"
19
20
#include "
SEImplementation/Grouping/SplitSourcesGrouping.h
"
21
#include "
SEImplementation/Grouping/AssocGrouping.h
"
22
#include "
SEImplementation/Grouping/MoffatGrouping.h
"
23
24
namespace
SourceXtractor
{
25
26
GroupingFactory::GroupingFactory
(
std::shared_ptr<SourceGroupFactory>
source_group_factory)
27
:
m_algorithm
(
GroupingConfig
::Algorithm::NO_GROUPING),
m_source_group_factory
(source_group_factory),
28
m_hard_limit
(0),
m_moffat_max_distance
(1000.0) {}
29
30
void
GroupingFactory::reportConfigDependencies
(
Euclid::Configuration::ConfigManager
& manager)
const
{
31
manager.
registerConfiguration
<
GroupingConfig
>();
32
}
33
34
void
GroupingFactory::configure
(
Euclid::Configuration::ConfigManager
& manager) {
35
auto
grouping_config = manager.
getConfiguration
<
GroupingConfig
>();
36
m_algorithm
= grouping_config.getAlgorithmOption();
37
m_moffat_max_distance
= grouping_config.getMoffatMaxDistance();
38
switch
(
m_algorithm
) {
39
case
GroupingConfig::Algorithm::NO_GROUPING
:
40
m_grouping_criteria
=
std::make_shared<NoGroupingCriteria>
();
41
break
;
42
case
GroupingConfig::Algorithm::OVERLAPPING
:
43
m_grouping_criteria
=
std::make_shared<OverlappingBoundariesCriteria>
();
44
break
;
45
case
GroupingConfig::Algorithm::SPLIT_SOURCES
:
46
m_grouping_criteria
=
std::make_shared<SplitSourcesCriteria>
();
47
break
;
48
case
GroupingConfig::Algorithm::MOFFAT
:
49
m_grouping_criteria
=
std::make_shared<MoffatCriteria>
(grouping_config.getMoffatThreshold(),
m_moffat_max_distance
);
50
break
;
51
case
GroupingConfig::Algorithm::ASSOC
:
52
m_grouping_criteria
=
std::make_shared<AssocCriteria>
();
53
break
;
54
}
55
m_hard_limit
= grouping_config.getHardLimit();
56
}
57
58
std::shared_ptr<SourceGroupingInterface>
GroupingFactory::createGrouping
()
const
{
59
assert(
m_grouping_criteria
!=
nullptr
);
60
assert(
m_source_group_factory
!=
nullptr
);
61
62
// return optimized grouping if available, if not uses general grouping with criteria
63
switch
(
m_algorithm
) {
64
case
GroupingConfig::Algorithm::SPLIT_SOURCES
:
65
return
std::make_shared<SplitSourcesGrouping>
(
m_source_group_factory
,
m_hard_limit
);
66
case
GroupingConfig::Algorithm::ASSOC
:
67
return
std::make_shared<AssocGrouping>
(
m_source_group_factory
,
m_hard_limit
);
68
case
GroupingConfig::Algorithm::MOFFAT
:
69
return
std::make_shared<MoffatGrouping>
(
70
m_grouping_criteria
,
m_source_group_factory
,
m_hard_limit
,
m_moffat_max_distance
);
71
break
;
72
default
:
73
return
std::make_shared<SourceGrouping>
(
m_grouping_criteria
,
m_source_group_factory
,
m_hard_limit
);
74
}
75
}
76
77
}
// SourceXtractor namespace
78
AssocGrouping.h
GroupingFactory.h
MoffatGrouping.h
SplitSourcesGrouping.h
Euclid::Configuration::ConfigManager
Euclid::Configuration::ConfigManager::registerConfiguration
void registerConfiguration()
Euclid::Configuration::ConfigManager::getConfiguration
T & getConfiguration()
SourceXtractor::GroupingConfig
Used to select a Grouping algorithm.
Definition
GroupingConfig.h:36
SourceXtractor::GroupingConfig::Algorithm::NO_GROUPING
@ NO_GROUPING
Definition
GroupingConfig.h:40
SourceXtractor::GroupingConfig::Algorithm::MOFFAT
@ MOFFAT
Definition
GroupingConfig.h:43
SourceXtractor::GroupingConfig::Algorithm::ASSOC
@ ASSOC
Definition
GroupingConfig.h:44
SourceXtractor::GroupingConfig::Algorithm::OVERLAPPING
@ OVERLAPPING
Definition
GroupingConfig.h:41
SourceXtractor::GroupingConfig::Algorithm::SPLIT_SOURCES
@ SPLIT_SOURCES
Definition
GroupingConfig.h:42
SourceXtractor::GroupingFactory::configure
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
Definition
GroupingFactory.cpp:34
SourceXtractor::GroupingFactory::m_hard_limit
unsigned int m_hard_limit
Definition
GroupingFactory.h:61
SourceXtractor::GroupingFactory::m_moffat_max_distance
double m_moffat_max_distance
Definition
GroupingFactory.h:62
SourceXtractor::GroupingFactory::GroupingFactory
GroupingFactory(std::shared_ptr< SourceGroupFactory > source_group_factory)
Definition
GroupingFactory.cpp:26
SourceXtractor::GroupingFactory::m_algorithm
GroupingConfig::Algorithm m_algorithm
Definition
GroupingFactory.h:58
SourceXtractor::GroupingFactory::m_source_group_factory
std::shared_ptr< SourceGroupFactory > m_source_group_factory
Definition
GroupingFactory.h:60
SourceXtractor::GroupingFactory::m_grouping_criteria
std::shared_ptr< GroupingCriteria > m_grouping_criteria
Definition
GroupingFactory.h:59
SourceXtractor::GroupingFactory::createGrouping
std::shared_ptr< SourceGroupingInterface > createGrouping() const
Definition
GroupingFactory.cpp:58
SourceXtractor::GroupingFactory::reportConfigDependencies
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Definition
GroupingFactory.cpp:30
std::make_shared
T make_shared(T... args)
SourceXtractor
Definition
Aperture.h:30
std::shared_ptr
Generated by
1.14.0