Belle II Software  release-05-02-19
BaseVarSet.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/utilities/CompositeProcessingSignalListener.h>
13 
14 #include <tracking/trackFindingCDC/utilities/Named.h>
15 #include <tracking/trackFindingCDC/utilities/MayBePtr.h>
16 
17 #include <RtypesCore.h>
18 
19 #include <map>
20 #include <vector>
21 #include <string>
22 
23 namespace Belle2 {
28  namespace TrackFindingCDC {
34  template<class AObject>
35  class BaseVarSet : public CompositeProcessingSignalListener {
36 
37  public:
39  using Object = AObject;
40 
41  public:
43  virtual ~BaseVarSet() = default;
44 
50  virtual bool extract(const Object* obj __attribute__((unused)))
51  {
52  return true;
53  }
54 
56  bool extract(const Object& obj)
57  {
58  return extract(&obj);
59  }
60 
66  virtual std::vector<Named<Float_t*> > getNamedVariables(const std::string& prefix __attribute__((unused)))
67  {
68  return {};
69  }
70 
72  std::vector<Named<Float_t*> > getNamedVariables()
73  {
74  const std::string prefix = "";
75  return this->getNamedVariables(prefix);
76  }
77 
82  std::map<std::string, Float_t> getNamedValues(const std::string& prefix) const
83  {
84  std::map<std::string, Float_t> result;
85  std::vector<Named<Float_t*> > namedVariables = this->getNamedVariables(prefix);
86  for (const Named<Float_t*>& namedVariable : namedVariables) {
87  Float_t* variable = namedVariable;
88  result[namedVariable.getName()] = *variable;
89  }
90  return result;
91  }
92 
94  std::map<std::string, Float_t> getNamedValues() const
95  {
96  const std::string prefix = "";
97  return this->getNamedValues(prefix);
98  }
99 
104  virtual MayBePtr<Float_t> find(const std::string& varName)
105  {
106  std::vector<Named<Float_t*> > namedVariables = this->getNamedVariables();
107  for (const Named<Float_t* >& namedVariable : namedVariables) {
108  if (namedVariable.getName() == varName) {
109  Float_t* variable = namedVariable;
110  return variable;
111  }
112  }
113  return nullptr;
114  }
115  };
116  }
118 }
Belle2::TrackFindingCDC::BaseVarSet::getNamedValues
std::map< std::string, Float_t > getNamedValues() const
Getter for a map of names to float values.
Definition: BaseVarSet.h:102
Belle2::TrackFindingCDC::Named< Float_t * >
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::BaseVarSet::find
virtual MayBePtr< Float_t > find(const std::string &varName)
Pointer to the variable with the given name.
Definition: BaseVarSet.h:112
Belle2::Named
A mixin class to attach a name to an object. Based on class with same name in CDC package.
Definition: Named.h:31
Belle2::TrackFindingCDC::BaseVarSet::getNamedVariables
std::vector< Named< Float_t * > > getNamedVariables()
Getter for the named references to the individual variables.
Definition: BaseVarSet.h:80
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::BaseVarSet::~BaseVarSet
virtual ~BaseVarSet()=default
Making destructor virtual.
Belle2::TrackFindingCDC::BaseVarSet::Object
AObject Object
Object type from which variables shall be extracted.
Definition: BaseVarSet.h:47