8 #include <tracking/vxdHoughTracking/filters/pathFilters/PathFilterFactory.h>
9 #include <tracking/vxdHoughTracking/filters/pathFilters/TwoHitVirtualIPFilter.h>
10 #include <tracking/vxdHoughTracking/filters/pathFilters/TwoHitVirtualIPQIFilter.h>
11 #include <tracking/vxdHoughTracking/filters/pathFilters/ThreeHitFilter.h>
12 #include <tracking/vxdHoughTracking/filters/pathFilters/FourHitFilter.h>
13 #include <tracking/vxdHoughTracking/filters/pathFilters/FiveHitFilter.h>
14 #include <tracking/vxdHoughTracking/filters/pathFilters/TwoHitVirtualIPQIFilter.h>
15 #include <tracking/vxdHoughTracking/filters/pathFilters/QualityIndicatorFilter.h>
16 #include <tracking/trackFindingCDC/filters/base/Filter.icc.h>
17 #include <tracking/trackFindingCDC/filters/base/FilterFactory.icc.h>
18 #include <tracking/trackFindingCDC/filters/base/NoneFilter.icc.h>
19 #include <tracking/trackFindingCDC/filters/base/AllFilter.icc.h>
22 using namespace TrackFindingCDC;
23 using namespace vxdHoughTracking;
25 PathFilterFactory::PathFilterFactory(
const std::string& defaultFilterName)
26 :
Super(defaultFilterName)
34 return "SVD Hit Path Filter";
39 return "Rejects track candidates based on the number of hits. ";
45 {
"all",
"all combinations are valid"},
46 {
"none",
"no combination is valid"},
47 {
"twoHitVirtualIP",
"filter using two hits and a virtual IP at the origin"},
48 {
"twoHitVirtualIPQI",
"filter using two hits and a virtual IP at the origin based on a fit quality indicator"},
49 {
"threeHit",
"filter three hits (path of length 2 plus next hit)"},
50 {
"fourHit",
"filter four hits (path of length 3 plus next hit)"},
51 {
"fiveHit",
"filter five hits (path of length 4 plus next hit)"},
52 {
"qualityIndicator",
"filter a path of hits based on a fit quality indicator"},
56 std::unique_ptr<BasePathFilter>
59 if (filterName ==
"all") {
60 return std::make_unique<TrackFindingCDC::AllFilter<BasePathFilter>>();
63 if (filterName ==
"none") {
64 return std::make_unique<TrackFindingCDC::NoneFilter<BasePathFilter>>();
67 if (filterName ==
"twoHitVirtualIP") {
68 return std::make_unique<TwoHitVirtualIPFilter>();
70 if (filterName ==
"twoHitVirtualIPQI") {
71 return std::make_unique<TwoHitVirtualIPQIFilter>();
73 if (filterName ==
"threeHit") {
74 return std::make_unique<ThreeHitFilter>();
76 if (filterName ==
"fourHit") {
77 return std::make_unique<FourHitFilter>();
79 if (filterName ==
"fiveHit") {
80 return std::make_unique<FiveHitFilter>();
82 if (filterName ==
"qualityIndicator") {
83 return std::make_unique<QualityIndicatorFilter>();
virtual std::unique_ptr< BasePathFilter > create(const std::string &filterName) const
Create a filter with the given name, does not set filter specific parameters.
std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const override
Getter for valid filter names and a description for each.
std::string getIdentifier() const override
Getter for a short identifier for the factory.
std::unique_ptr< BasePathFilter > create(const std::string &filterName) const override
Create a filter with the given name.
std::string getFilterPurpose() const override
Getter for a descriptive purpose of the constructed filters.
~PathFilterFactory()
Default destructor.
Abstract base class for different kinds of events.