Belle II Software  release-05-02-19
UnionVarSet.h
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 *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <tracking/trackFindingCDC/varsets/BaseVarSet.h>
13 
14 #include <tracking/trackFindingCDC/utilities/Named.h>
15 #include <tracking/trackFindingCDC/utilities/MayBePtr.h>
16 
17 #include <vector>
18 #include <string>
19 #include <memory>
20 
21 namespace Belle2 {
26  namespace TrackFindingCDC {
28  template <class AObject>
29  class UnionVarSet : public BaseVarSet<AObject> {
30 
31  private:
33  using Super = BaseVarSet<AObject>;
34 
35  public:
37  using Object = AObject;
38 
41 
42  public:
44  void initialize() final {
45  for (std::unique_ptr<ContainedVarSet>& varSet : m_varSets)
46  {
47  this->addProcessingSignalListener(varSet.get());
48  }
50  }
51 
53  using Super::extract;
54 
60  bool extract(const Object* obj) final {
61  bool result = true;
62  for (std::unique_ptr<ContainedVarSet>& varSet : m_varSets)
63  {
64  result &= varSet->extract(obj);
65  }
66  return result;
67  }
68 
73  std::vector<Named<Float_t*>> getNamedVariables(const std::string& prefix) override
74  {
75  std::vector<Named<Float_t*> > result;
76  for (std::unique_ptr<ContainedVarSet>& varSet : m_varSets) {
77  std::vector<Named<Float_t*> > extend = varSet->getNamedVariables(prefix);
78  result.insert(result.end(), extend.begin(), extend.end());
79  }
80  return result;
81  }
82 
87  MayBePtr<Float_t> find(const std::string& varName) override
88  {
89  for (std::unique_ptr<ContainedVarSet>& varSet : m_varSets) {
90  MayBePtr<Float_t> found = varSet->find(varName);
91  if (found) return found;
92  }
93  return nullptr;
94  }
95 
97  void push_back(std::unique_ptr<ContainedVarSet> varSet)
98  {
99  if (varSet) {
100  m_varSets.push_back(std::move(varSet));
101  }
102  }
103 
105  void clear()
106  {
107  m_varSets.clear();
108  }
109 
111  size_t size() const
112  {
113  return m_varSets.size();
114  }
115 
116  private:
118  std::vector<std::unique_ptr<ContainedVarSet>> m_varSets;
119  };
120  }
122 }
Belle2::TrackFindingCDC::BaseVarSet::extract
virtual bool extract(const Object *obj __attribute__((unused)))
Main method that extracts the variable values from the complex object.
Definition: BaseVarSet.h:58
Belle2::TrackFindingCDC::UnionVarSet::clear
void clear()
Remove all contained variable sets.
Definition: UnionVarSet.h:113
Belle2::TrackFindingCDC::UnionVarSet::push_back
void push_back(std::unique_ptr< ContainedVarSet > varSet)
Add a variable set to the contained variable sets.
Definition: UnionVarSet.h:105
Belle2::TrackFindingCDC::UnionVarSet::size
size_t size() const
Return the number of currently contained variable sets.
Definition: UnionVarSet.h:119
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::addProcessingSignalListener
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Definition: CompositeProcessingSignalListener.cc:57
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::initialize
void initialize() override
Receive and dispatch signal before the start of the event processing.
Definition: CompositeProcessingSignalListener.cc:17
Belle2::TrackFindingCDC::BaseVarSet::getNamedVariables
std::vector< Named< Float_t * > > getNamedVariables()
Getter for the named references to the individual variables.
Definition: BaseVarSet.h:80
Belle2::TrackFindingCDC::UnionVarSet::extract
bool extract(const Object *obj) final
Main method that extracts the variable values from the complex object.
Definition: UnionVarSet.h:68
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::UnionVarSet::initialize
void initialize() final
Initialize all contained variable set before event processing.
Definition: UnionVarSet.h:52
Belle2::TrackFindingCDC::UnionVarSet::Object
AObject Object
Object type from which variables shall be extracted.
Definition: UnionVarSet.h:45
Belle2::TrackFindingCDC::UnionVarSet::m_varSets
std::vector< std::unique_ptr< ContainedVarSet > > m_varSets
Collection of contained variables sets.
Definition: UnionVarSet.h:126
Belle2::TrackFindingCDC::UnionVarSet::find
MayBePtr< Float_t > find(const std::string &varName) override
Pointer to the variable with the given name.
Definition: UnionVarSet.h:95
Belle2::TrackFindingCDC::BaseVarSet< Object >
Belle2::TrackFindingCDC::BaseVarSet::Object
AObject Object
Object type from which variables shall be extracted.
Definition: BaseVarSet.h:47
Belle2::TrackFindingCDC::UnionVarSet::Super
BaseVarSet< AObject > Super
Type of the super class.
Definition: UnionVarSet.h:41