Belle II Software  release-05-01-25
SegmentTrackFilterFactory.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/segmentTrack/SegmentTrackFilterFactory.h>
11 
12 #include <tracking/trackFindingCDC/filters/segmentTrack/SegmentTrackTruthVarSet.h>
13 #include <tracking/trackFindingCDC/filters/segmentTrack/SegmentTrackVarSet.h>
14 
15 #include <tracking/trackFindingCDC/filters/base/MVAFilter.icc.h>
16 #include <tracking/trackFindingCDC/filters/base/AllFilter.icc.h>
17 #include <tracking/trackFindingCDC/filters/base/NoneFilter.icc.h>
18 #include <tracking/trackFindingCDC/filters/base/TruthVarFilter.icc.h>
19 #include <tracking/trackFindingCDC/filters/base/RecordingFilter.icc.h>
20 
21 #include <tracking/trackFindingCDC/filters/base/FilterVarSet.icc.h>
22 
23 #include <tracking/trackFindingCDC/filters/base/FilterFactory.icc.h>
24 
25 #include <tracking/trackFindingCDC/varsets/VariadicUnionVarSet.h>
26 
27 using namespace Belle2;
28 using namespace TrackFindingCDC;
29 
30 namespace {
31  using AllSegmentTrackFilter = AllFilter<BaseSegmentTrackFilter>;
32  using NoneSegmentTrackFilter = NoneFilter<BaseSegmentTrackFilter>;
33  using MCSegmentTrackFilter = TruthVarFilter<SegmentTrackTruthVarSet>;
34  using RecordingSegmentTrackFilter = RecordingFilter<VariadicUnionVarSet<SegmentTrackTruthVarSet, SegmentTrackVarSet>>;
35  using MVASegmentTrackFilter = MVAFilter<SegmentTrackVarSet>;
36 }
37 
39 
40 SegmentTrackFilterFactory::SegmentTrackFilterFactory(const std::string& defaultFilterName)
41  : Super(defaultFilterName)
42 {
43 }
44 
45 std::map<std::string, std::string>
47 {
48  return {
49  {"none", "no segment track combination is valid"},
50  {"truth", "monte carlo truth"},
51  {"mva", "test with a mva method"},
52  {"recording", "record variables to a TTree"},
53  };
54 }
55 
56 std::unique_ptr<BaseSegmentTrackFilter>
57 SegmentTrackFilterFactory::create(const std::string& filterName) const
58 {
59  if (filterName == "none") {
60  return std::make_unique<NoneSegmentTrackFilter>();
61  } else if (filterName == "truth") {
62  return std::make_unique<MCSegmentTrackFilter>();
63  } else if (filterName == "mva") {
64  return std::make_unique<MVASegmentTrackFilter>("trackfindingcdc_SegmentTrackFilter", 0.74);
65  } else if (filterName == "eval") {
66  auto recordedVarSets = std::make_unique<UnionVarSet<BaseSegmentTrackFilter::Object>>();
67  using TrackFilterVarSet = FilterVarSet<BaseSegmentTrackFilter>;
68  recordedVarSets->push_back(std::make_unique<TrackFilterVarSet>("mva", create("mva")));
69  recordedVarSets->push_back(std::make_unique<TrackFilterVarSet>("truth", create("truth")));
70  return std::make_unique<Recording<BaseSegmentTrackFilter>>(std::move(recordedVarSets), "SegmentTrackFilter_eval.root");
71  } else if (filterName == "recording") {
72  return std::make_unique<RecordingSegmentTrackFilter>("SegmentTrackFilter.root");
73  } else {
74  return Super::create(filterName);
75  }
76 }
77 
79 {
80  return "Segment track chooser to be used during the combination of segment track pairs";
81 }
82 
84 {
85  return "SegmentTrackFilter";
86 }
Belle2::TrackFindingCDC::FilterFactory< BaseSegmentTrackFilter >
Belle2::TrackFindingCDC::FilterFactory< BaseSegmentTrackFilter >::create
virtual std::unique_ptr< BaseSegmentTrackFilter > 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::SegmentTrackFilterFactory::getFilterPurpose
std::string getFilterPurpose() const override
Getter for a descriptive purpose of the constructed filters.
Definition: SegmentTrackFilterFactory.cc:78
Belle2::TrackFindingCDC::SegmentTrackFilterFactory::create
std::unique_ptr< BaseSegmentTrackFilter > create(const std::string &filterName) const override
Create a filter with the given name.
Definition: SegmentTrackFilterFactory.cc:57
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::SegmentTrackFilterFactory::getValidFilterNamesAndDescriptions
std::map< std::string, std::string > getValidFilterNamesAndDescriptions() const override
Getter for valid filter names and a description for each.
Definition: SegmentTrackFilterFactory.cc:46
Belle2::TrackFindingCDC::SegmentTrackFilterFactory::getIdentifier
std::string getIdentifier() const override
Getter for a short identifier for the factory.
Definition: SegmentTrackFilterFactory.cc:83
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
Belle2::TrackFindingCDC::SegmentTrackFilterFactory::SegmentTrackFilterFactory
SegmentTrackFilterFactory(const std::string &defaultFilterName="mva")
Constructor forwarding the default filter name.
Definition: SegmentTrackFilterFactory.cc:40