Belle II Software  release-05-01-25
DBImportBase.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Marko Staric *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <framework/database/DBStore.h>
13 #include <framework/database/IntervalOfValidity.h>
14 
15 namespace Belle2 {
25  class DBImportBase {
26  public:
27 
32  explicit DBImportBase(const std::string& name): m_name(name) {}
33 
37  virtual ~DBImportBase();
38 
43  const std::string& getName() const {return m_name;}
44 
49  virtual void addEventDependency(unsigned int eventNumber)
50  {
51  addIntraRunDependency(eventNumber, c_Event);
52  }
53 
58  virtual void addTimeStampDependency(unsigned long long int timeStamp)
59  {
60  addIntraRunDependency(timeStamp, c_TimeStamp);
61  }
62 
67  virtual void addSubrunDependency(int subrun)
68  {
69  addIntraRunDependency(subrun, c_Subrun);
70  }
71 
76  bool import(const IntervalOfValidity& iov);
77 
81  virtual void clear();
82 
83  protected:
84 
88  enum EIntraRunDependency { c_None = 0,
89  c_Event = 1,
90  c_TimeStamp = 2,
91  c_Subrun = 3
92  };
93 
99  void addIntraRunDependency(unsigned long long int tag, EIntraRunDependency type);
100 
101  std::string m_name;
102  TObject* m_object = 0;
104  private:
105 
111 
116  template<class IntraRun> bool import(const IntervalOfValidity& iov)
117  {
118  if (m_objects.empty()) return false;
119  IntraRun intraRun(m_objects[0], false); // IntraRun must not own the objects
120 
121  if (m_object) m_objects.push_back(m_object);
122  for (unsigned i = 1; i < m_objects.size(); i++) {
123  intraRun.add(m_tags[i - 1], m_objects[i]);
124  }
125  if (m_object) m_objects.pop_back(); // restore initial state (mandatory!)
126 
127  return storeData(&intraRun, iov);
128  }
129 
136  bool storeData(TObject* intraRun, const IntervalOfValidity& iov);
137 
138 
140  std::vector<TObject*> m_objects;
141  std::vector<unsigned long long int> m_tags;
143  };
145 }
Belle2::IntervalOfValidity
A class that describes the interval of experiments/runs for which an object in the database is valid.
Definition: IntervalOfValidity.h:35
Belle2::DBImportBase::addEventDependency
virtual void addEventDependency(unsigned int eventNumber)
add event dependency
Definition: DBImportBase.h:57
Belle2::DBImportBase
Base class for importing objects to the database.
Definition: DBImportBase.h:33
Belle2::DBImportBase::addSubrunDependency
virtual void addSubrunDependency(int subrun)
add subrun dependency
Definition: DBImportBase.h:75
Belle2::DBImportBase::m_dependency
EIntraRunDependency m_dependency
dependency type
Definition: DBImportBase.h:147
Belle2::DBImportBase::addIntraRunDependency
void addIntraRunDependency(unsigned long long int tag, EIntraRunDependency type)
add intra run dependency
Definition: DBImportBase.cc:19
Belle2::DBImportBase::~DBImportBase
virtual ~DBImportBase()
Destructor.
Definition: DBImportBase.cc:78
Belle2::DBImportBase::m_name
std::string m_name
object or array name in database
Definition: DBImportBase.h:109
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::DBImportBase::addTimeStampDependency
virtual void addTimeStampDependency(unsigned long long int timeStamp)
add time stamp dependency
Definition: DBImportBase.h:66
Belle2::DBImportBase::m_tags
std::vector< unsigned long long int > m_tags
container for intra run dep.
Definition: DBImportBase.h:149
Belle2::DBImportBase::m_object
TObject * m_object
pointer to allocated object or array
Definition: DBImportBase.h:110
Belle2::DBImportBase::getName
const std::string & getName() const
Returns the name under which the object will be stored in the database.
Definition: DBImportBase.h:51
Belle2::DBImportBase::m_objects
std::vector< TObject * > m_objects
container for intra run dependency objects
Definition: DBImportBase.h:148
Belle2::DBImportBase::DBImportBase
DBImportBase(const std::string &name)
Constructor.
Definition: DBImportBase.h:40
Belle2::DBImportBase::storeData
bool storeData(TObject *intraRun, const IntervalOfValidity &iov)
Store intra run dependent objects.
Definition: DBImportBase.cc:73
Belle2::DBImportBase::EIntraRunDependency
EIntraRunDependency
Intra run dependency types (used only internaly)
Definition: DBImportBase.h:96
Belle2::DBImportBase::clear
virtual void clear()
Clear the content, e.g.
Definition: DBImportBase.cc:60