Belle II Software development
AxialSegmentPairFilterFactory Class Reference

Factory that can create appropriate axial segment pair filters from associated names. More...

#include <AxialSegmentPairFilterFactory.h>

Inheritance diagram for AxialSegmentPairFilterFactory:
FilterFactory< BaseAxialSegmentPairFilter >

Public Types

using CreatedFilter = BaseAxialSegmentPairFilter
 Type of the filter that this factory creates.
 

Public Member Functions

 AxialSegmentPairFilterFactory (const std::string &defaultFilterName="realistic")
 Constructor forwarding the default filter name.
 
std::string getIdentifier () const override
 Getter for a short identifier for the factory.
 
std::string getFilterPurpose () const override
 Getter for a descriptive purpose of the constructed filters.
 
std::map< std::string, std::string > getValidFilterNamesAndDescriptions () const override
 Getter for valid filter names and a description for each.
 
std::unique_ptr< BaseAxialSegmentPairFiltercreate (const std::string &filterName) const override
 Create a filter with the given name.
 
virtual std::string createFiltersNameDescription () const
 Create a string with a description mentioning the names of the chooseable filter.
 
virtual std::string createFiltersParametersDescription () const
 Create a string with a description mentioning the parameters of the chooseable filter.
 
const std::string & getDefaultFilterName () const
 Legacy - Return the default filter suggested by the factory.
 

Private Types

using Super = FilterFactory< BaseAxialSegmentPairFilter >
 Type of the base class.
 

Private Attributes

std::string m_defaultFilterName
 Legacy - Default filter name suggested by this factory.
 

Detailed Description

Factory that can create appropriate axial segment pair filters from associated names.

Definition at line 24 of file AxialSegmentPairFilterFactory.h.

Member Typedef Documentation

◆ CreatedFilter

Type of the filter that this factory creates.

Definition at line 29 of file FilterFactory.dcl.h.

◆ Super

Type of the base class.

Definition at line 28 of file AxialSegmentPairFilterFactory.h.

Constructor & Destructor Documentation

◆ AxialSegmentPairFilterFactory()

AxialSegmentPairFilterFactory ( const std::string &  defaultFilterName = "realistic")
explicit

Constructor forwarding the default filter name.

Definition at line 28 of file AxialSegmentPairFilterFactory.cc.

29 : Super(defaultFilterName)
30{
31}
FilterFactory< BaseAxialSegmentPairFilter > Super
Type of the base class.

Member Function Documentation

◆ create()

std::unique_ptr< Filter< CDCAxialSegmentPair > > create ( const std::string &  filterName) const
overridevirtual

Create a filter with the given name.

Reimplemented from FilterFactory< BaseAxialSegmentPairFilter >.

Definition at line 58 of file AxialSegmentPairFilterFactory.cc.

59{
60 if (filterName == "none") {
61 return std::make_unique<NoneFilter<BaseAxialSegmentPairFilter> >();
62 // cppcheck-suppress knownConditionTrueFalse
63 } else if (filterName == "all") {
64 return std::make_unique<AllAxialSegmentPairFilter>();
65 // cppcheck-suppress knownConditionTrueFalse
66 } else if (filterName == "truth") {
67 return std::make_unique<MCAxialSegmentPairFilter>();
68 // cppcheck-suppress knownConditionTrueFalse
69 } else if (filterName == "unionrecording") {
70 return std::make_unique<UnionRecordingAxialSegmentPairFilter>();
71 // cppcheck-suppress knownConditionTrueFalse
72 } else if (filterName == "simple") {
73 return std::make_unique<SimpleAxialSegmentPairFilter>();
74 // cppcheck-suppress knownConditionTrueFalse
75 } else if (filterName == "feasible") {
76 return std::make_unique<MVAFeasibleAxialSegmentPairFilter>();
77 // cppcheck-suppress knownConditionTrueFalse
78 } else if (filterName == "realistic") {
79 return std::make_unique<MVARealisticAxialSegmentPairFilter>();
80 } else {
81 return Super::create(filterName);
82 }
83}
virtual std::unique_ptr< BaseAxialSegmentPairFilter > create(const std::string &filterName) const
Create a filter with the given name, does not set filter specific parameters.

◆ createFiltersNameDescription()

std::string createFiltersNameDescription
virtualinherited

Create a string with a description mentioning the names of the chooseable filter.

Definition at line 56 of file FilterFactory.icc.h.

87 {
88 // Compose description for the filter names
89 std::ostringstream oss;
90 oss << this->getFilterPurpose();
91 oss << "Allowed values are: ";
92 std::vector<std::string> filterNameAndDescriptions;
93 for (const auto& filterNameAndDescription : this->getValidFilterNamesAndDescriptions()) {
94 const std::string& filterName = filterNameAndDescription.first;
95 const std::string& filterDescription = filterNameAndDescription.second;
96 filterNameAndDescriptions.push_back(quoted(filterName) + " " + bracketed(filterDescription));
97 }
98 oss << join(", ", filterNameAndDescriptions);
99 return oss.str();
100 }
virtual std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const=0
Getter for the valid filter names and a description for each.
virtual std::string getFilterPurpose() const=0
Getter for a descriptive purpose of the filter.

◆ createFiltersParametersDescription()

std::string createFiltersParametersDescription
virtualinherited

Create a string with a description mentioning the parameters of the chooseable filter.

Definition at line 59 of file FilterFactory.icc.h.

104 {
105 // Compose description for the filter parameters
106 std::ostringstream oss;
107 oss << "Key -- value pairs depending on the filter." << std::endl;
108 for (const auto& filterNameAndDescription : this->getValidFilterNamesAndDescriptions()) {
109
110 const std::string& filterName = filterNameAndDescription.first;
111 // const std::string& filterDescription = filterNameAndDescription.second;
112
113 std::unique_ptr<AFilter> filter = this->create(filterName);
114 if (not filter) {
115 B2WARNING("Could not create a filter for name " << filterName);
116 continue;
117 }
118
119 ModuleParamList moduleParamList;
120 const std::string prefix = "";
121 filter->exposeParameters(&moduleParamList, prefix);
122
123 std::map<std::string, std::string> filterParameters;
124 for (auto && name : moduleParamList.getParameterNames()) {
125 filterParameters[name] = moduleParamList.getParameterDescription(name);
126 }
127
128 oss << quoted(filterName) << " :\n";
129 if (filterParameters.empty()) {
130 oss << "(no parameters)";
131 } else {
132 std::vector<std::string> parameterDescriptions;
133 for (const auto& parameterNameAndDescription : filterParameters) {
134 const std::string& parameterName = parameterNameAndDescription.first;
135 const std::string& parameterDescription = parameterNameAndDescription.second;
136 parameterDescriptions.push_back(parameterName + " -- " + parameterDescription);
137 }
138 oss << join(",\n", parameterDescriptions);
139 }
140 oss << ";\n";
141 }
142 return oss.str();
143 }

◆ getDefaultFilterName()

const std::string & getDefaultFilterName
inherited

Legacy - Return the default filter suggested by the factory.

Definition at line 63 of file FilterFactory.icc.h.

147 {
148 return m_defaultFilterName;
149 }
std::string m_defaultFilterName
Legacy - Default filter name suggested by this factory.

◆ getFilterPurpose()

std::string getFilterPurpose ( ) const
overridevirtual

Getter for a descriptive purpose of the constructed filters.

Implements FilterFactory< BaseAxialSegmentPairFilter >.

Definition at line 38 of file AxialSegmentPairFilterFactory.cc.

39{
40 return "AxialSegment pair filter to construct of a axialSegment pair network";
41}

◆ getIdentifier()

std::string getIdentifier ( ) const
overridevirtual

Getter for a short identifier for the factory.

Implements FilterFactory< BaseAxialSegmentPairFilter >.

Definition at line 33 of file AxialSegmentPairFilterFactory.cc.

34{
35 return "AxialSegmentPair";
36}

◆ getValidFilterNamesAndDescriptions()

std::map< std::string, std::string > getValidFilterNamesAndDescriptions ( ) const
overridevirtual

Getter for valid filter names and a description for each.

Implements FilterFactory< BaseAxialSegmentPairFilter >.

Definition at line 44 of file AxialSegmentPairFilterFactory.cc.

45{
46 return {
47 {"none", "no axialSegment pair is valid"},
48 {"all", "all axialSegment pairs are valid"},
49 {"truth", "monte carlo truth"},
50 {"unionrecording", "record many multiple choosable variable set"},
51 {"feasible", "check if the segment relation is feasible"},
52 {"realistic", "check if the segment relation is a good combination"},
53 {"simple", "mc free with simple criteria"},
54 };
55}

Member Data Documentation

◆ m_defaultFilterName

std::string m_defaultFilterName
privateinherited

Legacy - Default filter name suggested by this factory.

Definition at line 67 of file FilterFactory.dcl.h.


The documentation for this class was generated from the following files: