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>
22using namespace TrackFindingCDC;
23using namespace vxdHoughTracking;
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"},
56std::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.
PathFilterFactory(const std::string &defaultFilterName="all")
Constructor forwarding the default filter name.
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.