Belle II Software  release-05-02-19
MonitoringObject.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010-2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Luka Santelj *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <TObject.h>
14 #include <TNamed.h>
15 #include <TCanvas.h>
16 
17 #include <vector>
18 #include <string>
19 #include <map>
20 #include <framework/logging/Logger.h>
21 
22 namespace Belle2 {
33  class MonitoringObject : public TNamed {
34 
35  public:
38  MonitoringObject() {};
41  explicit MonitoringObject(const std::string& name)
42  {
43  fName = name;
44  }
45 
50  void addCanvas(TCanvas* canv)
51  {
52  for (auto cc : m_Canvases) {
53  if (cc->GetName() == canv->GetName()) {
54  B2ERROR("Canvas with name " << canv->GetName() << " already in the " << fName <<
55  " MonitoringObject! Use different name (or call getCanvas(name) to access pointer to the existing TCanvas).");
56  return;
57  }
58  }
59  m_Canvases.push_back(canv);
60  };
61 
65  const std::map<std::string, float>& getVariables()
66  {
67  return m_vars;
68  }
69 
73  const std::map<std::string, float>& getUpError()
74  {
75  return m_upErr;
76  }
77 
81  const std::map<std::string, float>& getLowError()
82  {
83  return m_dwErr;
84  }
85 
89  const std::vector<std::pair<std::string, std::string>>& getStringVariables()
90  {
91  return m_strVars;
92  }
93 
97  TCanvas* getCanvas(const std::string& name)
98  {
99  for (auto cc : m_Canvases) {
100  if (cc->GetName() == name) return cc;
101  }
102  B2WARNING("TCanvas with name " << name << " not found in MonitoringObject " << fName);
103  return NULL;
104  };
105 
109  const std::vector<TCanvas*>& getListOfCanvases()
110  {
111  return m_Canvases;
112  }
113 
117  void print() const;
118 
126  void setVariable(const std::string& var, float val, float upErr = -1., float dwErr = -1)
127  {
128 
129  auto vv = m_vars.find(var);
130  if (vv != m_vars.end()) vv->second = val;
131  else m_vars.insert({var, val});
132 
133  if (upErr > 0) {
134  auto vvE = m_upErr.find(var);
135  if (vvE != m_upErr.end()) vvE->second = upErr;
136  else m_upErr.insert({var, upErr});
137  }
138 
139  if (dwErr > 0) {
140  auto vvE = m_dwErr.find(var);
141  if (vvE != m_dwErr.end()) vvE->second = dwErr;
142  else m_dwErr.insert({var, dwErr});
143  }
144 
145  }
146 
152  void setVariable(const std::string& var, const std::string& val)
153  {
154 
155  for (auto& pair : m_strVars) {
156  if (pair.first == var) {
157  pair.second = val;
158  return;
159  }
160  }
161  m_strVars.push_back(std::pair<std::string, std::string>(var, val));
162  }
163 
164 
165  private:
166 
167  std::vector<TCanvas*> m_Canvases;
169  std::map<std::string, float> m_vars;
170  std::map<std::string, float> m_upErr;
171  std::map<std::string, float> m_dwErr;
173  std::vector<std::pair<std::string, std::string>> m_strVars;
177  }; //class
178 
180 } // namespace Belle2
Belle2::MonitoringObject::m_dwErr
std::map< std::string, float > m_dwErr
map of lower errors of variables
Definition: MonitoringObject.h:179
Belle2::MonitoringObject::print
void print() const
Print content of MonitoringObject.
Definition: MonitoringObject.cc:21
Belle2::MonitoringObject::m_strVars
std::vector< std::pair< std::string, std::string > > m_strVars
map of all string variables
Definition: MonitoringObject.h:181
Belle2::MonitoringObject::MonitoringObject
MonitoringObject()
Constructor.
Definition: MonitoringObject.h:46
Belle2::MonitoringObject::m_upErr
std::map< std::string, float > m_upErr
map of upper errors of variables
Definition: MonitoringObject.h:178
Belle2::MonitoringObject::getVariables
const std::map< std::string, float > & getVariables()
Get map of all float variables.
Definition: MonitoringObject.h:73
Belle2::MonitoringObject::getLowError
const std::map< std::string, float > & getLowError()
Get map of all float variables lower errors.
Definition: MonitoringObject.h:89
Belle2::MonitoringObject::getCanvas
TCanvas * getCanvas(const std::string &name)
Get pointer to existing canvas with given name (NULL is returned if not existing)
Definition: MonitoringObject.h:105
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::MonitoringObject::ClassDefOverride
ClassDefOverride(MonitoringObject, 1)
classdef
Belle2::MonitoringObject::addCanvas
void addCanvas(TCanvas *canv)
Add Canvas to monitoring object.
Definition: MonitoringObject.h:58
Belle2::MonitoringObject::m_Canvases
std::vector< TCanvas * > m_Canvases
vector of all TCanvases
Definition: MonitoringObject.h:175
Belle2::MonitoringObject::setVariable
void setVariable(const std::string &var, float val, float upErr=-1., float dwErr=-1)
set value to float variable (new variable is made if not yet existing)
Definition: MonitoringObject.h:134
Belle2::MonitoringObject::getStringVariables
const std::vector< std::pair< std::string, std::string > > & getStringVariables()
Get vector of all string variables.
Definition: MonitoringObject.h:97
Belle2::MonitoringObject::getUpError
const std::map< std::string, float > & getUpError()
Get map of all float variables upper errors.
Definition: MonitoringObject.h:81
Belle2::MonitoringObject::m_vars
std::map< std::string, float > m_vars
map of all float variables
Definition: MonitoringObject.h:177
Belle2::MonitoringObject::getListOfCanvases
const std::vector< TCanvas * > & getListOfCanvases()
Get list of all canvases.
Definition: MonitoringObject.h:117
Belle2::MonitoringObject
MonitoringObject is a basic object to hold data for the run-dependency monitoring Run summary TCanvas...
Definition: MonitoringObject.h:41