Belle II Software  release-05-02-19
DBImportBase.cc
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 
11 #include <framework/database/DBImportBase.h>
12 #include <framework/database/EventDependency.h>
13 #include <framework/database/Database.h>
14 #include <framework/logging/Logger.h>
15 
16 using namespace std;
17 using namespace Belle2;
18 
19 void DBImportBase::addIntraRunDependency(unsigned long long int tag,
20  EIntraRunDependency dependency)
21 {
22 
23  if (!m_object) return;
24 
25  if (m_dependency == c_None) m_dependency = dependency;
26  if (dependency == m_dependency) {
27  m_objects.push_back(m_object);
28  m_tags.push_back(tag);
29  m_object = nullptr;
30  } else {
31  B2FATAL("DBImportBase::addIntraRunDependency: " <<
32  "intra run dependency cannot be of mixed types");
33  }
34 
35 }
36 
37 
38 bool DBImportBase::import(const IntervalOfValidity& iov)
39 {
40 
41  switch (m_dependency) {
42  case c_Event:
43  return import<EventDependency>(iov);
44  case c_TimeStamp:
45  B2ERROR("DBImportBase::import: " <<
46  "intra run dependency of type 'time stamp' not supported yet");
47  return false;
48  case c_Subrun:
49  B2ERROR("DBImportBase::import: " <<
50  "intra run dependency of type 'subrun' not supported yet");
51  return false;
52  default:
53  if (!m_object) return false;
54  return Database::Instance().storeData(m_name, m_object, iov);
55  }
56 
57 }
58 
59 
60 void DBImportBase::clear()
61 {
62  if (m_object) {
63  delete m_object;
64  m_object = nullptr;
65  }
66 
67  m_dependency = c_None;
68  for (auto& object : m_objects) delete object;
69  m_objects.clear();
70  m_tags.clear();
71 }
72 
73 bool DBImportBase::storeData(TObject* intraRun, const IntervalOfValidity& iov)
74 {
75  return Database::Instance().storeData(m_name, intraRun, iov);
76 }
77 
78 DBImportBase::~DBImportBase()
79 {
80  for (auto& object : m_objects) delete object;
81 }
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
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::DBImportBase::EIntraRunDependency
EIntraRunDependency
Intra run dependency types (used only internaly)
Definition: DBImportBase.h:96