8#include <tracking/ckf/cdc/filters/pathPairs/CDCPathPairFilterFactory.h>
10#include <tracking/trackFindingCDC/filters/base/FilterFactory.icc.h>
12#include <tracking/ckf/cdc/filters/pathPairs/DistanceBasedCDCPathPairFilter.h>
13#include <tracking/ckf/cdc/filters/pathPairs/DuplicateCDCPathPairFilter.h>
14#include <tracking/ckf/cdc/filters/pathPairs/Chi2BasedCDCPathPairFilter.h>
15#include <tracking/ckf/cdc/filters/pathPairs/HitDistanceBasedCDCPathPairFilter.h>
16#include <tracking/ckf/cdc/filters/pathPairs/ArcLengthBasedCDCPathPairFilter.h>
17#include <tracking/ckf/cdc/filters/pathPairs/ArcLengthBasedCDCfromEclPathPairFilter.h>
18#include <tracking/ckf/cdc/filters/pathPairs/MCTruthCDCPathPairFilter.h>
20#include <tracking/trackFindingCDC/filters/base/AllFilter.icc.h>
21#include <tracking/trackFindingCDC/filters/base/NoneFilter.icc.h>
24using namespace TrackFindingCDC;
28 :
Super(defaultFilterName)
36 return "CDCCKFPathPair";
41 return "Order CDC CKF path pairs. ";
47 {
"none",
"no track combination is valid"},
48 {
"all",
"set all track combinations as good"},
49 {
"distance",
"ordering based on distance"},
50 {
"chi2",
"ordering based on chi2"},
51 {
"duplicateHits",
"compares last hits of both tracks to check for duplicates"},
52 {
"hitDistance",
"ordering based on hitDistance"},
53 {
"arc_length",
"ordering based on arc_length"},
54 {
"arc_length_fromEcl",
"ordering based on arc_length; track from Ecl seed"},
55 {
"mc_truth",
"ordering based on mc truth information"},
59std::unique_ptr<BaseCDCPathPairFilter>
62 if (filterName ==
"none") {
63 return std::make_unique<TrackFindingCDC::NoneFilter<BaseCDCPathPairFilter>>();
65 }
else if (filterName ==
"all") {
66 return std::make_unique<TrackFindingCDC::AllFilter<BaseCDCPathPairFilter>>();
68 }
else if (filterName ==
"distance") {
69 return std::make_unique<DistanceBasedCDCPathPairFilter>();
71 }
else if (filterName ==
"chi2") {
72 return std::make_unique<Chi2BasedCDCPathPairFilter>();
74 }
else if (filterName ==
"duplicateHits") {
75 return std::make_unique<DuplicateCDCPathPairFilter>();
77 }
else if (filterName ==
"hitDistance") {
78 return std::make_unique<HitDistanceBasedCDCPathPairFilter>();
80 }
else if (filterName ==
"arc_length") {
81 return std::make_unique<ArcLengthBasedCDCPathPairFilter>();
83 }
else if (filterName ==
"arc_length_fromEcl") {
84 return std::make_unique<ArcLengthBasedCDCfromEclPathPairFilter>();
86 }
else if (filterName ==
"mc_truth") {
87 return std::make_unique<MCTruthCDCPathPairFilter>();
CDCPathPairFilterFactory(const std::string &defaultFilterName="distance")
Constructor forwarding the default filter name.
std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const override
Getter for valid filter names and a description for each.
std::unique_ptr< BaseCDCPathPairFilter > create(const std::string &filterName) const override
Create a filter with the given name.
~CDCPathPairFilterFactory()
Default destructor.
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.
virtual std::unique_ptr< BaseCDCPathPairFilter > 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.