Belle II Software  release-05-02-19
FiltersContainer.h
1 /********************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Eugenio Paoloni, Thomas Lueck *
7  * *
8  * This software is provided "as is" without any warranty. *
9  *******************************************************************************/
10 
11 #ifndef FILTERSCONTAINER_HH
12 #define FILTERSCONTAINER_HH
13 
14 #include "tracking/trackFindingVXD/environment/VXDTFFilters.h"
15 #include <unordered_map>
16 #include <string>
17 
18 namespace Belle2 {
29  template<class point_t>
30  class FiltersContainer {
31  public:
32 
34  using setupNameToFilters_t = std::unordered_map< std::string, Belle2::VXDTFFilters<point_t>*>;
35 
36  private:
37 
40 
41 
44  FiltersContainer(const FiltersContainer& filtersContainer) = delete;
47 
50  {
51  }
52 
53  public:
54 
57  {
59  static std::unique_ptr<FiltersContainer> instance(new FiltersContainer());
60  return * instance;
61  }
62 
63 
65  virtual ~FiltersContainer()
66  {
67  for (auto& filter : m_allSetupsFilters)
68  delete filter.second;
69  }
70 
71 
73  VXDTFFilters<point_t>* getFilters(const std::string& setupName)
74  {
75  auto result = m_allSetupsFilters.find(setupName);
76  if (result == m_allSetupsFilters.end())
77  return NULL;
78  return result->second;
79  }
80 
81 
84  {
85  return m_allSetupsFilters;
86  }
87 
88 
90  void assignFilters(const std::string& setupName ,
92  {
93  // case there is already a filter with this name in the container, we delete that filter!
94  if (m_allSetupsFilters.count(setupName)) {
95  B2INFO("FiltersContainer: Replacing existing filter for setup name: " << setupName);
96  if (m_allSetupsFilters[ setupName ] && filters != m_allSetupsFilters[ setupName ]) delete m_allSetupsFilters[ setupName ];
97  }
98  m_allSetupsFilters[ setupName ] = filters;
99  }
100 
101  };
103 }
104 #endif
Belle2::FiltersContainer
This class contains everything needed by the VXDTF that is not going to change during a RUN,...
Definition: FiltersContainer.h:38
Belle2::VXDTFFilters
Class that contains all the static sectors to which the filters are attached.
Definition: VXDTFFilters.h:75
Belle2::filter
std::map< ExpRun, std::pair< double, double > > filter(const std::map< ExpRun, std::pair< double, double >> &runs, double cut, std::map< ExpRun, std::pair< double, double >> &runsRemoved)
filter events to remove runs shorter than cut, it stores removed runs in runsRemoved
Definition: Splitter.cc:43
Belle2::FiltersContainer::getFilters
VXDTFFilters< point_t > * getFilters(const std::string &setupName)
Gives access to the sector map and filters of a given setup.
Definition: FiltersContainer.h:81
Belle2::FiltersContainer::FiltersContainer
FiltersContainer()
Singleton so use a hidden Constructor.
Definition: FiltersContainer.h:57
Belle2::FiltersContainer::m_allSetupsFilters
setupNameToFilters_t m_allSetupsFilters
Container of all the Filters indexed by their setupNames.
Definition: FiltersContainer.h:47
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::FiltersContainer::assignFilters
void assignFilters(const std::string &setupName, VXDTFFilters< point_t > *filters)
assigns filters.
Definition: FiltersContainer.h:98
Belle2::FiltersContainer::~FiltersContainer
virtual ~FiltersContainer()
Destructor deleting all filters stored.
Definition: FiltersContainer.h:73
Belle2::FiltersContainer::operator=
FiltersContainer & operator=(const FiltersContainer &)=delete
dont allow copies
Belle2::FiltersContainer::getInstance
static FiltersContainer & getInstance()
one and only way to access the singleton object
Definition: FiltersContainer.h:64
Belle2::FiltersContainer::getAllSetups
const setupNameToFilters_t & getAllSetups(void)
returns all the available setups.
Definition: FiltersContainer.h:91
Belle2::FiltersContainer::setupNameToFilters_t
std::unordered_map< std::string, Belle2::VXDTFFilters< point_t > * > setupNameToFilters_t
typedef for better readability. Index is name of the setup.
Definition: FiltersContainer.h:42