Belle II Software  release-05-01-25
TrackFilterFactory.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost, Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/filters/track/TrackFilterFactory.h>
11 
12 #include <tracking/trackFindingCDC/filters/track/TruthTrackVarSet.h>
13 #include <tracking/trackFindingCDC/filters/track/BasicTrackVarSet.h>
14 
15 #include <tracking/trackFindingCDC/filters/base/MVAFilter.icc.h>
16 
17 #include <tracking/trackFindingCDC/filters/base/RecordingFilter.icc.h>
18 #include <tracking/trackFindingCDC/filters/base/TruthVarFilter.icc.h>
19 #include <tracking/trackFindingCDC/filters/base/AllFilter.icc.h>
20 #include <tracking/trackFindingCDC/filters/base/NoneFilter.icc.h>
21 
22 #include <tracking/trackFindingCDC/filters/base/FilterFactory.icc.h>
23 #include <tracking/trackFindingCDC/filters/base/FilterVarSet.icc.h>
24 
25 #include <tracking/trackFindingCDC/varsets/VariadicUnionVarSet.h>
26 
27 using namespace Belle2;
28 using namespace TrackFindingCDC;
29 
30 namespace {
31  using AllTrackFilter = AllFilter<BaseTrackFilter>;
32  using NoneTrackFilter = NoneFilter<BaseTrackFilter>;
33  using MCTrackFilter = TruthVarFilter<TruthTrackVarSet>;
34  using RecordingTrackFilter = RecordingFilter<VariadicUnionVarSet<TruthTrackVarSet, BasicTrackVarSet>>;
35  using RecordingDataTrackFilter = RecordingFilter<BasicTrackVarSet>;
36  using MVATrackFilter = MVAFilter<BasicTrackVarSet>;
37 }
38 
40 
41 TrackFilterFactory::TrackFilterFactory(const std::string& defaultFilterName)
42  : Super(defaultFilterName)
43 {
44 }
45 
47 {
48  return "Track";
49 }
50 
52 {
53  return "Track filter to reject fakes";
54 }
55 
56 std::map<std::string, std::string>
58 {
59  return {
60  {"none", "no track is valid"},
61  {"all", "set all tracks as good"},
62  {"truth", "monte carlo truth"},
63  {"recording", "record variables to a TTree"},
64  {"recording_data", "record reco-variables to a TTree (no truth information)"},
65  {"eval", "record truth and the mva response for insitu comparision"},
66  {"mva", "test with a mva method"}
67  };
68 }
69 
70 std::unique_ptr<BaseTrackFilter>
71 TrackFilterFactory::create(const std::string& filterName) const
72 {
73  if (filterName == "none") {
74  return std::make_unique<NoneTrackFilter>();
75  } else if (filterName == "all") {
76  return std::make_unique<AllTrackFilter>();
77  } else if (filterName == "truth") {
78  return std::make_unique<MCTrackFilter>();
79  } else if (filterName == "recording") {
80  return std::make_unique<RecordingTrackFilter>("TrackFilter.root");
81  } else if (filterName == "recording_data") {
82  return std::make_unique<RecordingDataTrackFilter>("TrackFilter.root");
83  } else if (filterName == "eval") {
84  auto recordedVarSets = std::make_unique<UnionVarSet<CDCTrack>>();
85  using TrackFilterVarSet = FilterVarSet<BaseTrackFilter>;
86  recordedVarSets->push_back(std::make_unique<TrackFilterVarSet>("mva", create("mva")));
87  recordedVarSets->push_back(std::make_unique<TrackFilterVarSet>("truth", create("truth")));
88  return std::make_unique<Recording<BaseTrackFilter>>(std::move(recordedVarSets), "TrackFilter_eval.root");
89  } else if (filterName == "mva") {
90  return std::make_unique<MVATrackFilter>("trackfindingcdc_TrackFilter", 0.10);
91  } else {
92  return Super::create(filterName);
93  }
94 }
Belle2::TrackFindingCDC::FilterFactory< BaseTrackFilter >
Belle2::TrackFindingCDC::FilterFactory< BaseTrackFilter >::create
virtual std::unique_ptr< BaseTrackFilter > create(const std::string &filterName) const
Create a filter with the given name, does not set filter specific parameters.
Definition: FilterFactory.icc.h:54
Belle2::TrackFindingCDC::TrackFilterFactory::getValidFilterNamesAndDescriptions
std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const override
Getter for valid filter names and a description for each.
Definition: TrackFilterFactory.cc:57
Belle2::TrackFindingCDC::TrackFilterFactory::create
std::unique_ptr< BaseTrackFilter > create(const std::string &filterName) const override
Create a filter with the given name.
Definition: TrackFilterFactory.cc:71
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::TrackFilterFactory::getIdentifier
std::string getIdentifier() const override
Getter for a short identifier for the factory.
Definition: TrackFilterFactory.cc:46
Belle2::TrackFindingCDC::TrackFilterFactory::getFilterPurpose
std::string getFilterPurpose() const override
Getter for a descriptive purpose of the constructed filters.
Definition: TrackFilterFactory.cc:51
Belle2::TrackFindingCDC::TrackFilterFactory::TrackFilterFactory
TrackFilterFactory(const std::string &defaultFilterName="mva")
Constructor forwarding the default filter name.
Definition: TrackFilterFactory.cc:41
Belle2::TrackFindingCDC::FilterVarSet
Class to compute floating point variables from a filter response which can be recorded as a flat TNtu...
Definition: FilterVarSet.dcl.h:57