Belle II Software  release-05-02-19
TOPCalModuleT0.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - 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 <top/dbobjects/TOPCalModuleT0.h>
12 #include <framework/logging/Logger.h>
13 
14 using namespace std;
15 
16 namespace Belle2 {
22  void TOPCalModuleT0::setT0(int moduleID, double T0, double errT0)
23  {
24  unsigned module = moduleID - 1;
25  if (module >= c_numModules) {
26  B2ERROR("Invalid module number, constant not set (" << ClassName() << ")");
27  return;
28  }
29  m_T0[module] = T0;
30  m_errT0[module] = errT0;
31  m_status[module] = c_Calibrated;
32  }
33 
34 
35  void TOPCalModuleT0::setUnusable(int moduleID)
36  {
37  unsigned module = moduleID - 1;
38  if (module >= c_numModules) {
39  B2ERROR("Invalid module number, status not set (" << ClassName() << ")");
40  return;
41  }
42  m_status[module] = c_Unusable;
43  }
44 
45 
46  void TOPCalModuleT0::suppressAverage()
47  {
48  float s = 0;
49  int n = 0;
50  for (int i = 0; i < c_numModules; i++) {
51  if (m_status[i] == c_Calibrated) {
52  s += m_T0[i];
53  n++;
54  }
55  }
56  if (n == 0) return;
57  s /= n;
58  for (int i = 0; i < c_numModules; i++) {
59  if (m_status[i] != c_Default) m_T0[i] -= s;
60  }
61  B2INFO("Average of " << s << " ns subtracted.");
62  }
63 
64 
65  double TOPCalModuleT0::getT0(int moduleID) const
66  {
67  unsigned module = moduleID - 1;
68  if (module >= c_numModules) {
69  B2WARNING("Invalid module number, returning 0 (" << ClassName() << ")");
70  return 0;
71  }
72  return m_T0[module];
73  }
74 
75 
76  double TOPCalModuleT0::getT0Error(int moduleID) const
77  {
78  unsigned module = moduleID - 1;
79  if (module >= c_numModules) {
80  B2WARNING("Invalid module number, returning 0 (" << ClassName() << ")");
81  return 0;
82  }
83  return m_errT0[module];
84  }
85 
86 
87  bool TOPCalModuleT0::isCalibrated(int moduleID) const
88  {
89  unsigned module = moduleID - 1;
90  if (module >= c_numModules) return false;
91  return m_status[module] == c_Calibrated;
92  }
93 
94 
95  bool TOPCalModuleT0::isDefault(int moduleID) const
96  {
97  unsigned module = moduleID - 1;
98  if (module >= c_numModules) return false;
99  return m_status[module] == c_Default;
100  }
101 
102 
103  bool TOPCalModuleT0::isUnusable(int moduleID) const
104  {
105  unsigned module = moduleID - 1;
106  if (module >= c_numModules) return false;
107  return m_status[module] == c_Unusable;
108  }
109 
110 
112 } // end Belle2 namespace
113 
114 
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19