SourceXtractorPlusPlus
0.21
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEImplementation
SEImplementation
Grouping
GroupingFactory.h
Go to the documentation of this file.
1
17
/*
18
* GroupingFactory.h
19
*
20
* Created on: Jul 2, 2018
21
* Author: mschefer
22
*/
23
24
#ifndef _SEIMPLEMENTATION_GROUPING_GROUPINGFACTORY_H_
25
#define _SEIMPLEMENTATION_GROUPING_GROUPINGFACTORY_H_
26
27
#include "
SEFramework/Configuration/Configurable.h
"
28
#include "
SEFramework/Pipeline/SourceGrouping.h
"
29
#include "
SEFramework/Source/SourceGroupFactory.h
"
30
31
#include "
SEImplementation/Grouping/NoGroupingCriteria.h
"
32
#include "
SEImplementation/Grouping/OverlappingBoundariesCriteria.h
"
33
#include "
SEImplementation/Grouping/SplitSourcesCriteria.h
"
34
#include "
SEImplementation/Grouping/MoffatCriteria.h
"
35
#include "
SEImplementation/Grouping/AssocCriteria.h
"
36
37
#include "
SEImplementation/Configuration/GroupingConfig.h
"
38
39
namespace
SourceXtractor
{
40
41
class
GroupingFactory
:
public
Configurable
{
42
43
public
:
44
45
explicit
GroupingFactory
(
std::shared_ptr<SourceGroupFactory>
source_group_factory
)
46
:
m_source_group_factory
(
source_group_factory
),
m_hard_limit
(0) {}
47
48
virtual
~GroupingFactory
() =
default
;
49
50
void
reportConfigDependencies
(
Euclid::Configuration::ConfigManager
&
manager
)
const override
{
51
manager
.registerConfiguration<
GroupingConfig
>();
52
}
53
54
void
configure
(
Euclid::Configuration::ConfigManager
&
manager
)
override
{
55
auto
grouping_config
=
manager
.getConfiguration<
GroupingConfig
>();
56
switch
(
grouping_config
.getAlgorithmOption()) {
57
case
GroupingConfig::Algorithm::NO_GROUPING
:
58
m_grouping_criteria
=
std::make_shared<NoGroupingCriteria>
();
59
break
;
60
case
GroupingConfig::Algorithm::OVERLAPPING
:
61
m_grouping_criteria
=
std::make_shared<OverlappingBoundariesCriteria>
();
62
break
;
63
case
GroupingConfig::Algorithm::SPLIT_SOURCES
:
64
m_grouping_criteria
=
std::make_shared<SplitSourcesCriteria>
();
65
break
;
66
case
GroupingConfig::Algorithm::MOFFAT
:
67
m_grouping_criteria
=
std::make_shared<MoffatCriteria>
(
grouping_config
.getMoffatThreshold(),
grouping_config
.getMoffatMaxDistance());
68
break
;
69
case
GroupingConfig::Algorithm::ASSOC
:
70
m_grouping_criteria
=
std::make_shared<AssocCriteria>
();
71
break
;
72
}
73
m_hard_limit
=
grouping_config
.getHardLimit();
74
}
75
76
std::shared_ptr<SourceGrouping>
createGrouping
()
const
{
77
assert
(
m_grouping_criteria
!=
nullptr
);
78
assert
(
m_source_group_factory
!=
nullptr
);
79
80
return
std::make_shared<SourceGrouping>
(
m_grouping_criteria
,
m_source_group_factory
,
m_hard_limit
);
81
}
82
83
private
:
84
std::shared_ptr<GroupingCriteria>
m_grouping_criteria
;
85
std::shared_ptr<SourceGroupFactory>
m_source_group_factory
;
86
unsigned
int
m_hard_limit
;
87
};
88
89
}
/* namespace SourceXtractor */
90
91
92
93
#endif
/* _SEIMPLEMENTATION_GROUPING_GROUPINGFACTORY_H_ */
AssocCriteria.h
Configurable.h
GroupingConfig.h
MoffatCriteria.h
NoGroupingCriteria.h
OverlappingBoundariesCriteria.h
SourceGroupFactory.h
SourceGrouping.h
SplitSourcesCriteria.h
Euclid::Configuration::ConfigManager
SourceXtractor::Configurable
Interface of objects which can be configured.
Definition
Configurable.h:37
SourceXtractor::GroupingConfig
Used to select a Grouping algorithm.
Definition
GroupingConfig.h:36
SourceXtractor::GroupingConfig::Algorithm::NO_GROUPING
@ NO_GROUPING
SourceXtractor::GroupingConfig::Algorithm::MOFFAT
@ MOFFAT
SourceXtractor::GroupingConfig::Algorithm::ASSOC
@ ASSOC
SourceXtractor::GroupingConfig::Algorithm::OVERLAPPING
@ OVERLAPPING
SourceXtractor::GroupingConfig::Algorithm::SPLIT_SOURCES
@ SPLIT_SOURCES
SourceXtractor::GroupingFactory
Definition
GroupingFactory.h:41
SourceXtractor::GroupingFactory::configure
void configure(Euclid::Configuration::ConfigManager &manager) override
Method which should initialize the object.
Definition
GroupingFactory.h:54
SourceXtractor::GroupingFactory::~GroupingFactory
virtual ~GroupingFactory()=default
SourceXtractor::GroupingFactory::m_hard_limit
unsigned int m_hard_limit
Definition
GroupingFactory.h:86
SourceXtractor::GroupingFactory::createGrouping
std::shared_ptr< SourceGrouping > createGrouping() const
Definition
GroupingFactory.h:76
SourceXtractor::GroupingFactory::GroupingFactory
GroupingFactory(std::shared_ptr< SourceGroupFactory > source_group_factory)
Definition
GroupingFactory.h:45
SourceXtractor::GroupingFactory::m_source_group_factory
std::shared_ptr< SourceGroupFactory > m_source_group_factory
Definition
GroupingFactory.h:85
SourceXtractor::GroupingFactory::m_grouping_criteria
std::shared_ptr< GroupingCriteria > m_grouping_criteria
Definition
GroupingFactory.h:84
SourceXtractor::GroupingFactory::reportConfigDependencies
void reportConfigDependencies(Euclid::Configuration::ConfigManager &manager) const override
Registers all the Configuration dependencies.
Definition
GroupingFactory.h:50
std::function
SourceXtractor
Definition
Aperture.h:30
Generated by
1.10.0