Belle II Software  release-06-01-15
TOPCalTimebase.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <top/dbobjects/TOPCalTimebase.h>
10 
11 #include <framework/logging/Logger.h>
12 
13 #include <iostream>
14 
15 using namespace std;
16 
17 namespace Belle2 {
23  typedef map<unsigned, const TOPSampleTimes*>::const_iterator Iterator;
26  void TOPCalTimebase::append(unsigned scrodID, unsigned channel,
27  const vector<double>& sampleTimes,
28  bool replace)
29  {
30  unsigned key = (scrodID << 16) + (channel % 128);
31  Iterator it = m_map.find(key);
32  if (it == m_map.end()) { // constants not appended yet
33  m_sampleTimes.push_back(TOPSampleTimes(scrodID, channel, m_syncTimeBase));
34  m_sampleTimes.back().setTimeAxis(sampleTimes, m_syncTimeBase);
35  m_map[key] = &m_sampleTimes.back();
36  } else { // constants already there
37  if (replace) {
38  const_cast<TOPSampleTimes*>(it->second)->setTimeAxis(sampleTimes, m_syncTimeBase);
39  B2WARNING("TOPCalTimebase: constants replaced."
40  << LogVar("scrodID", scrodID)
41  << LogVar("channel", channel));
42  } else {
43  B2WARNING("TOPCalTimebase: old constants kept."
44  << LogVar("scrodID", scrodID)
45  << LogVar("channel", channel));
46  }
47  }
48 
49  }
50 
51 
52  const TOPSampleTimes* TOPCalTimebase::getSampleTimes(unsigned scrodID,
53  unsigned channel) const
54  {
55  if (m_map.empty()) createMap();
56 
57  unsigned key = (scrodID << 16) + (channel % 128);
58  Iterator it = m_map.find(key);
59  if (it == m_map.end()) {
60  if (!m_sampleTime) m_sampleTime = new TOPSampleTimes(0, 0, m_syncTimeBase);
61  return m_sampleTime;
62  }
63  return it->second;
64  }
65 
66 
67  bool TOPCalTimebase::isAvailable(unsigned scrodID, unsigned channel) const
68  {
69  if (m_map.empty()) createMap();
70 
71  unsigned key = (scrodID << 16) + (channel % 128);
72  Iterator it = m_map.find(key);
73  return (it != m_map.end());
74 
75  }
76 
77 
79  {
80  for (const auto& sampleTime : m_sampleTimes) {
81  unsigned key = (sampleTime.getScrodID() << 16) + sampleTime.getChannel();
82  m_map[key] = &sampleTime;
83  }
84 
85  B2DEBUG(29, "TOPCalTimebase: map created, size = " << m_map.size());
86  }
87 
89 } // end Belle2 namespace
Calibration constants of a singe ASIC channel: time axis (sample times)
Class to store variables with their name which were sent to the logging service.
map< unsigned, const TOPSampleTimes * >::const_iterator Iterator
Iteratior for m_map.
i2dMap createMap(int nEntries, Functor funct)
create a multimap with
Abstract base class for different kinds of events.