8#include <tracking/trackFindingCDC/filters/facet/FacetFilterFactory.h>
10#include <tracking/trackFindingCDC/filters/facet/BaseFacetFilter.h>
11#include <tracking/trackFindingCDC/filters/facet/AllFacetFilter.h>
12#include <tracking/trackFindingCDC/filters/facet/MCFacetFilter.h>
13#include <tracking/trackFindingCDC/filters/facet/FeasibleRLFacetFilter.h>
14#include <tracking/trackFindingCDC/filters/facet/SimpleFacetFilter.h>
15#include <tracking/trackFindingCDC/filters/facet/RealisticFacetFilter.h>
16#include <tracking/trackFindingCDC/filters/facet/Chi2FacetFilter.h>
17#include <tracking/trackFindingCDC/filters/facet/UnionRecordingFacetFilter.h>
18#include <tracking/trackFindingCDC/filters/facet/MVAFacetFilter.h>
20#include <tracking/trackFindingCDC/filters/base/NoneFilter.icc.h>
22#include <tracking/trackFindingCDC/filters/base/FilterFactory.icc.h>
26using namespace TrackFindingCDC;
31 :
Super(defaultFilterName)
42 return "Facet filter to construct of a facet network";
48 {
"none",
"no facet is valid, stop at cluster generation."},
49 {
"all",
"all facets are valid"},
50 {
"truth",
"monte carlo truth"},
51 {
"feasible",
"only checking the feasibility of right left passage information"},
52 {
"simple",
"mc free with simple criteria"},
53 {
"realistic",
"mc free with realistic criteria"},
54 {
"realistic_loss",
"mc with realistic criteria but looser cut"},
55 {
"chi2",
"mc free based on chi2 fitting"},
56 {
"chi2_old",
"old based on chi2 fitting with single cut regardless of superlayer"},
57 {
"unionrecording",
"record many multiple choosable variable set"},
58 {
"mva",
"filter facets with a mva method"},
64 if (filterName ==
"none") {
65 return std::make_unique<NoneFilter<BaseFacetFilter>>();
67 }
else if (filterName ==
"all") {
68 return std::make_unique<AllFacetFilter>();
70 }
else if (filterName ==
"truth") {
71 return std::make_unique<MCFacetFilter>();
73 }
else if (filterName ==
"feasible") {
74 return std::make_unique<FeasibleRLFacetFilter>();
76 }
else if (filterName ==
"simple") {
77 return std::make_unique<SimpleFacetFilter>();
79 }
else if (filterName ==
"realistic") {
80 return std::make_unique<RealisticFacetFilter>();
82 }
else if (filterName ==
"realistic_loss") {
83 return std::make_unique<RealisticFacetFilter>(25);
85 }
else if (filterName ==
"chi2") {
86 return std::make_unique<Chi2FacetFilter>();
88 }
else if (filterName ==
"chi2_old") {
89 return std::make_unique<Chi2FacetFilter>(75.0, 120.0);
91 }
else if (filterName ==
"unionrecording") {
92 return std::make_unique<UnionRecordingFacetFilter>();
94 }
else if (filterName ==
"mva") {
95 return std::make_unique<MVAFacetFilter>();
std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const final
Getter for valid filter names and a description for each.
std::unique_ptr< BaseFacetFilter > create(const std::string &filterName) const final
Create a filter with the given name.
std::string getFilterPurpose() const final
Getter for a descriptive purpose of the constructed filters.
FacetFilterFactory(const std::string &defaultFilterName="chi2")
Constructor forwarding the default filter name.
std::string getIdentifier() const final
Getter for a short identifier for the factory.
Factory that can create appropriate filter instances from a name.
virtual std::unique_ptr< BaseFacetFilter > create(const std::string &filterName) const
Create a filter with the given name, does not set filter specific parameters.
Abstract base class for different kinds of events.