Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
WebdaqHistSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef WEBDAQHISTSVC_THISTSVC_H
6 #define WEBDAQHISTSVC_THISTSVC_H
7 
8 #include "GaudiKernel/ITHistSvc.h"
9 #include "GaudiKernel/IIncidentListener.h"
10 #include "Gaudi/Interfaces/IOptionsSvc.h"
13 
14 class TObject;
15 class TH1;
16 class TH2;
17 class TH3;
18 class TGraph;
19 class TTree;
20 
21 #include <vector>
22 #include <string>
23 #include <mutex>
24 #include <atomic>
25 #include <thread>
26 
27 #include <boost/regex.hpp>
28 #include <boost/date_time/posix_time/posix_time_types.hpp>
29 #include <tbb/concurrent_hash_map.h>
30 
31 // Helper to mark unsupported interfaces
32 #define NOSUPPORT(lvl, what) \
33  do { \
34  ATH_MSG_LVL(MSG::lvl, what << "is not supported by this implementation"); \
35  return {}; \
36  } while (0)
37 
38 
52 class WebdaqHistSvc: public extends<AthService, ITHistSvc, IIncidentListener>
53 {
54 public:
55  WebdaqHistSvc(const std::string& name, ISvcLocator *svc );
56  virtual ~WebdaqHistSvc() noexcept override {}
57 
59  virtual void handle( const Incident& incident ) override;
60  virtual StatusCode stop() override;
61  virtual StatusCode finalize() override;
62 
63  virtual StatusCode regHist(const std::string& name) override;
64  virtual StatusCode regHist(const std::string& name, std::unique_ptr<TH1> hist) override;
65  virtual StatusCode regHist(const std::string& name, TH1*) override;
66  virtual StatusCode getHist(const std::string& id, TH1*& hist, size_t ind) const override;
67  virtual StatusCode getHist(const std::string& id, TH2*& hist, size_t ind) const override;
68  virtual StatusCode getHist(const std::string& id, TH3*& hist, size_t ind) const override;
69 
70  virtual StatusCode deReg(TObject* obj) override; //<! very slow
71  virtual StatusCode deReg(const std::string& name) override; //<! use this instead
72 
73  virtual std::vector<std::string> getHists() const override;
74  std::set<std::string> getSet(boost::regex) const;
75 
76  virtual StatusCode regShared( const std::string&, std::unique_ptr<TH1>, LockedHandle<TH1>& ) override;
77  virtual StatusCode regShared( const std::string&, std::unique_ptr<TH2>, LockedHandle<TH2>& ) override;
78  virtual StatusCode regShared( const std::string&, std::unique_ptr<TH3>, LockedHandle<TH3>& ) override;
79  virtual StatusCode getShared( const std::string&, LockedHandle<TH1>& ) const override;
80  virtual StatusCode getShared( const std::string&, LockedHandle<TH2>& ) const override;
81  virtual StatusCode getShared( const std::string&, LockedHandle<TH3>& ) const override;
82 
83  virtual StatusCode getTHists(TDirectory *td, TList &, bool recurse=false) const override;
84  virtual StatusCode getTHists(const std::string& name, TList &, bool recurse=false) const override;
85  virtual StatusCode getTHists(TDirectory *td, TList &tl, bool recurse=false, bool reg=false) override;
86  virtual StatusCode getTHists(const std::string& name, TList &tl, bool recurse=false, bool reg=false) override;
87 
88  virtual bool exists( const std::string& name ) const override { return existsHist(name); }
89  virtual bool existsHist( const std::string& name ) const override;
90 
91  /* Unsupported interfaces */
92  virtual StatusCode regTree(const std::string&) override { NOSUPPORT(WARNING, "TTree"); }
93  virtual StatusCode regTree(const std::string&, std::unique_ptr<TTree>) override { NOSUPPORT(WARNING, "TTree"); }
94  virtual StatusCode regTree(const std::string&, TTree*) override { NOSUPPORT(WARNING, "TTree"); }
95  virtual StatusCode getTree(const std::string&, TTree*&) const override { NOSUPPORT(WARNING, "TTree"); }
96 
97  virtual std::vector<std::string> getTrees() const override { NOSUPPORT(DEBUG, "TTree"); }
98  virtual StatusCode getTTrees(TDirectory*, TList&, bool) const override { NOSUPPORT(DEBUG, "TTree"); }
99  virtual StatusCode getTTrees(const std::string&, TList&, bool) const override { NOSUPPORT(DEBUG, "TTree"); }
100  virtual StatusCode getTTrees(TDirectory*, TList&, bool, bool) override { NOSUPPORT(DEBUG, "TTree"); }
101  virtual StatusCode getTTrees(const std::string&, TList&, bool, bool) override { NOSUPPORT(DEBUG, "TTree"); }
102 
103  virtual StatusCode regGraph(const std::string&) override { NOSUPPORT(WARNING, "TGraph"); }
104  virtual StatusCode regGraph(const std::string&, std::unique_ptr<TGraph>) override { NOSUPPORT(WARNING, "TGraph"); }
105  virtual StatusCode regGraph(const std::string&, TGraph*) override { NOSUPPORT(WARNING, "TGraph"); }
106  virtual std::vector<std::string> getGraphs() const override { NOSUPPORT(DEBUG, "TGraph"); }
107  virtual StatusCode getGraph(const std::string&, TGraph*&) const override { NOSUPPORT(DEBUG, "TGraph"); }
108 
109  virtual StatusCode regEfficiency(const std::string&) override { NOSUPPORT(WARNING, "TEfficiency"); }
110  virtual StatusCode regEfficiency(const std::string&, std::unique_ptr<TEfficiency>) override { NOSUPPORT(WARNING, "TEfficiency"); }
111  virtual StatusCode regEfficiency(const std::string&, TEfficiency*) override { NOSUPPORT(WARNING, "TEfficiency"); }
112  virtual StatusCode getEfficiency(const std::string&, TEfficiency*&) const override { NOSUPPORT(WARNING, "TEfficiency"); }
113  virtual std::vector<std::string> getEfficiencies() const override { NOSUPPORT(WARNING, "TEfficiency"); }
114 
115  virtual StatusCode getTEfficiencies(TDirectory*, TList&, bool) const override { NOSUPPORT(WARNING, "TEfficiency"); }
116  virtual StatusCode getTEfficiencies(const std::string&, TList&, bool) const override { NOSUPPORT(WARNING, "TEfficiency"); }
117  virtual StatusCode getTEfficiencies(TDirectory*, TList&, bool, bool) override { NOSUPPORT(WARNING, "TEfficiency"); }
118  virtual StatusCode getTEfficiencies(const std::string&, TList&, bool, bool) override { NOSUPPORT(WARNING, "TEfficiency"); }
119 
120  virtual StatusCode regShared( const std::string&, std::unique_ptr<TGraph>, LockedHandle<TGraph>& ) override { NOSUPPORT(WARNING, "TGraph"); }
121  virtual StatusCode getShared( const std::string&, LockedHandle<TGraph>& ) const override { NOSUPPORT(WARNING, "TGraph"); }
122  virtual StatusCode regShared( const std::string&, std::unique_ptr<TEfficiency>, LockedHandle<TEfficiency>& ) override { NOSUPPORT(WARNING, "TEfficiency"); }
123  virtual StatusCode getShared( const std::string&, LockedHandle<TEfficiency>& ) const override { NOSUPPORT(WARNING, "TEfficiency"); }
124 
125  virtual StatusCode merge( const std::string& ) override { NOSUPPORT(WARNING, "merge"); }
126  virtual StatusCode merge( TObject* ) override { NOSUPPORT(WARNING, "merge"); }
127 
128  virtual bool existsTree( const std::string& ) const override { NOSUPPORT(DEBUG, "TTree"); }
129  virtual bool existsGraph( const std::string& ) const override { NOSUPPORT(WARNING, "TGraph"); }
130  virtual bool existsEfficiency( const std::string& ) const override { NOSUPPORT(WARNING, "TEfficiency"); }
131 
132 private:
134  struct THistID {
135  THistID(const std::string& s, TObject* o) : id(s), obj(o) {};
136  THistID() : id(""), obj(nullptr) {};
137  ~THistID() { delete mutex; }
138  std::string id;
139  TObject* obj{nullptr};
140  std::mutex* mutex{nullptr};
141  };
142 
144  std::atomic<bool> m_stopFlag{false};
146  void monitoringTask(int, int, std::atomic<bool>&, boost::regex);
148  void syncPublish(long int, boost::posix_time::ptime);
150  void conditionedSleep(std::chrono::milliseconds, const std::atomic<bool>&);
152  std::thread m_thread;
153  std::thread m_threadFast;
155  std::string m_partition;
157  std::string m_tdaqWebdaqBase;
159  std::string m_tdaqOHServerName;
161  std::atomic<bool> m_histoMapUpdated{false};
163  std::atomic<bool> m_histoMapUpdatedFast{false};
164 
166  ServiceHandle<Gaudi::Interfaces::IOptionsSvc> m_jobOptionsSvc{this, "JobOptionsSvc", "JobOptionsSvc"};
167 
169  tbb::concurrent_hash_map<std::string, THistID> m_hists;
170 
172  bool isObjectAllowed(const std::string& path, const TObject *o) const;
173 
175  StatusCode getTHists_i(const std::string& name, TList &) const;
176 
177  // Templated methods implementing the virtual interface methods
178  template <typename T> StatusCode regHist_i(std::unique_ptr<T> hist, const std::string& name, bool shared, THistID*& phid);
179  template <typename T> T* getHist_i(const std::string& id, const size_t& ind, bool quiet = false) const;
180  template <typename T> LockedHandle<T> regShared_i( const std::string& id, std::unique_ptr<T> hist);
181  template <typename T> LockedHandle<T> getShared_i( const std::string& id ) const;
182 
183  // Properties
184  Gaudi::Property<std::string> m_excludeType{this, "ExcludeType", "()"};
185  Gaudi::Property<std::string> m_includeType{this, "IncludeType", ".+"};
186  Gaudi::Property<std::string> m_excludeName{this, "ExcludeName", ".*\\..*"};
187  Gaudi::Property<std::string> m_includeName{this, "IncludeName",
188  "^/((run_[0-9]+/lb_[0-9]+/LB)|(SHIFT)|(EXPERT)|(DEBUG)|(EXPRESS)|(RUNSTAT))/.+/.+"};
189 
190  //New properties for the monitoring task
191  Gaudi::Property<int> m_numSlots{this, "NumSlots", 8, "Number of slots for the main monitoring task"};
192  Gaudi::Property<int> m_numSlotsFast{this, "NumSlotsFast", 1, "Number of slots for the fast monitoring task"};
193  Gaudi::Property<int> m_intervalSeconds{this, "IntervalSeconds", 80, "Interval between histogram publications periods in seconds"};
194  Gaudi::Property<int> m_intervalSecondsFast{this, "IntervalSecondsFast", 10, "Interval between histogram publications periods in seconds for the fast publication"};
195  Gaudi::Property<std::string> m_OHServerName{this, "OHServerName", "Histogramming", "Name of the OH server to publish histograms into"};
196  Gaudi::Property<std::string> m_PublicationIncludeName{this, "PublicationIncludeName",".*","Regex to select histograms for publication"};
197  Gaudi::Property<std::string> m_fastPublicationIncludeName{this, "FastPublicationIncludeName","^.EXPERT.HLTFramework.TrigSignatureMoni.*","Regex to select histograms for fast publication"};
198 
199  // Dummy properties for compatibility with THistSvc
200  Gaudi::Property<int> m_autoSave{this, "AutoSave", 0, "Not supported by WebdaqHistSvc"};
201  Gaudi::Property<int> m_autoFlush{this, "AutoFlush", 0, "Not supported by WebdaqHistSvc"};
202  Gaudi::Property<bool> m_print{this, "PrintAll", false, "Not supported by WebdaqHistSvc"};
203  Gaudi::Property<int> m_maxFileSize{this, "MaxFileSize", 10240, "Not supported by WebdaqHistSvc"};
204  Gaudi::Property<std::vector<std::string>> m_outputfile{this, "Output", {}, "Not supported by WebdaqHistSvc"};
205  Gaudi::Property<std::vector<std::string>> m_inputfile{this, "Input", {}, "Not supported by WebdaqHistSvc"};
206 
207  // compiled regexes
214 
215 };
216 
217 #endif // WEBDAQHISTSVC_THISTSVC_H
WebdaqHistSvc::getTEfficiencies
virtual StatusCode getTEfficiencies(const std::string &, TList &, bool, bool) override
Definition: WebdaqHistSvc.h:118
WebdaqHistSvc::getHist_i
T * getHist_i(const std::string &id, const size_t &ind, bool quiet=false) const
Definition: WebdaqHistSvc.cxx:236
WebdaqHistSvc::getShared
virtual StatusCode getShared(const std::string &, LockedHandle< TGraph > &) const override
Definition: WebdaqHistSvc.h:121
WebdaqHistSvc::getTTrees
virtual StatusCode getTTrees(const std::string &, TList &, bool) const override
Definition: WebdaqHistSvc.h:99
WebdaqHistSvc::regShared
virtual StatusCode regShared(const std::string &, std::unique_ptr< TGraph >, LockedHandle< TGraph > &) override
Definition: WebdaqHistSvc.h:120
NOSUPPORT
#define NOSUPPORT(lvl, what)
Definition: WebdaqHistSvc.h:32
WebdaqHistSvc::existsTree
virtual bool existsTree(const std::string &) const override
Definition: WebdaqHistSvc.h:128
WebdaqHistSvc::m_includeType
Gaudi::Property< std::string > m_includeType
Definition: WebdaqHistSvc.h:185
WebdaqHistSvc::regEfficiency
virtual StatusCode regEfficiency(const std::string &, std::unique_ptr< TEfficiency >) override
Definition: WebdaqHistSvc.h:110
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
WebdaqHistSvc::handle
virtual void handle(const Incident &incident) override
Definition: WebdaqHistSvc.cxx:97
WebdaqHistSvc::getTEfficiencies
virtual StatusCode getTEfficiencies(const std::string &, TList &, bool) const override
Definition: WebdaqHistSvc.h:116
WebdaqHistSvc::~WebdaqHistSvc
virtual ~WebdaqHistSvc() noexcept override
Definition: WebdaqHistSvc.h:56
WebdaqHistSvc::regTree
virtual StatusCode regTree(const std::string &, TTree *) override
Definition: WebdaqHistSvc.h:94
WebdaqHistSvc::regGraph
virtual StatusCode regGraph(const std::string &) override
Definition: WebdaqHistSvc.h:103
quiet
bool quiet
Definition: TrigGlobEffCorrValidation.cxx:190
WebdaqHistSvc::m_fastPublicationIncludeName
Gaudi::Property< std::string > m_fastPublicationIncludeName
Definition: WebdaqHistSvc.h:197
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
WebdaqHistSvc::regTree
virtual StatusCode regTree(const std::string &) override
Definition: WebdaqHistSvc.h:92
WebdaqHistSvc::getSet
std::set< std::string > getSet(boost::regex) const
Definition: WebdaqHistSvc.cxx:343
WebdaqHistSvc::regHist
virtual StatusCode regHist(const std::string &name) override
Definition: WebdaqHistSvc.cxx:397
WebdaqHistSvc::getShared
virtual StatusCode getShared(const std::string &, LockedHandle< TH1 > &) const override
Definition: WebdaqHistSvc.cxx:492
plotmaker.hist
hist
Definition: plotmaker.py:148
initialize
void initialize()
Definition: run_EoverP.cxx:894
WebdaqHistSvc::finalize
virtual StatusCode finalize() override
Definition: WebdaqHistSvc.cxx:143
WebdaqHistSvc::existsHist
virtual bool existsHist(const std::string &name) const override
Definition: WebdaqHistSvc.cxx:388
WebdaqHistSvc::stop
virtual StatusCode stop() override
Definition: WebdaqHistSvc.cxx:108
WebdaqHistSvc::m_intervalSeconds
Gaudi::Property< int > m_intervalSeconds
Definition: WebdaqHistSvc.h:193
WebdaqHistSvc::regGraph
virtual StatusCode regGraph(const std::string &, TGraph *) override
Definition: WebdaqHistSvc.h:105
WebdaqHistSvc::m_inputfile
Gaudi::Property< std::vector< std::string > > m_inputfile
Definition: WebdaqHistSvc.h:205
WebdaqHistSvc::m_jobOptionsSvc
ServiceHandle< Gaudi::Interfaces::IOptionsSvc > m_jobOptionsSvc
joboptions service
Definition: WebdaqHistSvc.h:166
WebdaqHistSvc
HLT online histogram service.
Definition: WebdaqHistSvc.h:53
WebdaqHistSvc::m_includeName
Gaudi::Property< std::string > m_includeName
Definition: WebdaqHistSvc.h:187
WebdaqHistSvc::existsGraph
virtual bool existsGraph(const std::string &) const override
Definition: WebdaqHistSvc.h:129
WebdaqHistSvc::m_stopFlag
std::atomic< bool > m_stopFlag
Flag to stop the monitoring task.
Definition: WebdaqHistSvc.h:144
dq_make_web_display.recurse
def recurse(rdir, dqregion, ignorepath, reffile=None)
Definition: dq_make_web_display.py:23
WebdaqHistSvc::m_OHServerName
Gaudi::Property< std::string > m_OHServerName
Definition: WebdaqHistSvc.h:195
WebdaqHistSvc::THistID
Helper struct that bundles the histogram, name and mutex.
Definition: WebdaqHistSvc.h:134
WebdaqHistSvc::exists
virtual bool exists(const std::string &name) const override
Definition: WebdaqHistSvc.h:88
WebdaqHistSvc::m_thread
std::thread m_thread
Publication thread.
Definition: WebdaqHistSvc.h:152
WebdaqHistSvc::THistID::THistID
THistID(const std::string &s, TObject *o)
Definition: WebdaqHistSvc.h:135
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
WebdaqHistSvc::m_tdaqOHServerName
std::string m_tdaqOHServerName
The OH server name (TDAQ_OH_SERVER if defined, m_OHServerName otherwise)
Definition: WebdaqHistSvc.h:159
WebdaqHistSvc::ATLAS_NOT_THREAD_SAFE
virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE() override
WebdaqHistSvc::THistID::mutex
std::mutex * mutex
Definition: WebdaqHistSvc.h:140
WebdaqHistSvc::THistID::~THistID
~THistID()
Definition: WebdaqHistSvc.h:137
WebdaqHistSvc::getShared_i
LockedHandle< T > getShared_i(const std::string &id) const
Definition: WebdaqHistSvc.cxx:273
WebdaqHistSvc::m_includeTypeRegex
boost::regex m_includeTypeRegex
Definition: WebdaqHistSvc.h:209
WebdaqHistSvc::getTTrees
virtual StatusCode getTTrees(TDirectory *, TList &, bool, bool) override
Definition: WebdaqHistSvc.h:100
WebdaqHistSvc::getTHists_i
StatusCode getTHists_i(const std::string &name, TList &) const
Get TList of registered histograms.
Definition: WebdaqHistSvc.cxx:258
WebdaqHistSvc::m_maxFileSize
Gaudi::Property< int > m_maxFileSize
Definition: WebdaqHistSvc.h:203
WebdaqHistSvc::getGraphs
virtual std::vector< std::string > getGraphs() const override
Definition: WebdaqHistSvc.h:106
WebdaqHistSvc::merge
virtual StatusCode merge(const std::string &) override
Definition: WebdaqHistSvc.h:125
WebdaqHistSvc::m_fastPublicationIncludeNameRegex
boost::regex m_fastPublicationIncludeNameRegex
Definition: WebdaqHistSvc.h:213
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
WebdaqHistSvc::m_tdaqWebdaqBase
std::string m_tdaqWebdaqBase
Webdaq configuration variable, see https://gitlab.cern.ch/atlas-tdaq-software/webdaq.
Definition: WebdaqHistSvc.h:157
WebdaqHistSvc::THistID::obj
TObject * obj
Definition: WebdaqHistSvc.h:139
WebdaqHistSvc::getHist
virtual StatusCode getHist(const std::string &id, TH1 *&hist, size_t ind) const override
Definition: WebdaqHistSvc.cxx:419
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
WebdaqHistSvc::m_threadFast
std::thread m_threadFast
Definition: WebdaqHistSvc.h:153
python.Constants.WARNING
int WARNING
Definition: Control/AthenaCommon/python/Constants.py:16
WebdaqHistSvc::regShared_i
LockedHandle< T > regShared_i(const std::string &id, std::unique_ptr< T > hist)
Definition: WebdaqHistSvc.cxx:197
WebdaqHistSvc::getTEfficiencies
virtual StatusCode getTEfficiencies(TDirectory *, TList &, bool) const override
Definition: WebdaqHistSvc.h:115
WebdaqHistSvc::regShared
virtual StatusCode regShared(const std::string &, std::unique_ptr< TEfficiency >, LockedHandle< TEfficiency > &) override
Definition: WebdaqHistSvc.h:122
WebdaqHistSvc::regHist_i
StatusCode regHist_i(std::unique_ptr< T > hist, const std::string &name, bool shared, THistID *&phid)
Definition: WebdaqHistSvc.cxx:155
WebdaqHistSvc::monitoringTask
void monitoringTask(int, int, std::atomic< bool > &, boost::regex)
The actual publication Task.
Definition: WebdaqHistSvc.cxx:522
WebdaqHistSvc::m_PublicationIncludeNameRegex
boost::regex m_PublicationIncludeNameRegex
Definition: WebdaqHistSvc.h:212
WebdaqHistSvc::m_excludeName
Gaudi::Property< std::string > m_excludeName
Definition: WebdaqHistSvc.h:186
WebdaqHistSvc::regGraph
virtual StatusCode regGraph(const std::string &, std::unique_ptr< TGraph >) override
Definition: WebdaqHistSvc.h:104
WebdaqHistSvc::m_excludeNameRegex
boost::regex m_excludeNameRegex
Definition: WebdaqHistSvc.h:210
WebdaqHistSvc::existsEfficiency
virtual bool existsEfficiency(const std::string &) const override
Definition: WebdaqHistSvc.h:130
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
WebdaqHistSvc::getEfficiency
virtual StatusCode getEfficiency(const std::string &, TEfficiency *&) const override
Definition: WebdaqHistSvc.h:112
WebdaqHistSvc::m_excludeTypeRegex
boost::regex m_excludeTypeRegex
Definition: WebdaqHistSvc.h:208
WebdaqHistSvc::getTEfficiencies
virtual StatusCode getTEfficiencies(TDirectory *, TList &, bool, bool) override
Definition: WebdaqHistSvc.h:117
WebdaqHistSvc::getHists
virtual std::vector< std::string > getHists() const override
Definition: WebdaqHistSvc.cxx:331
WebdaqHistSvc::merge
virtual StatusCode merge(TObject *) override
Definition: WebdaqHistSvc.h:126
WebdaqHistSvc::deReg
virtual StatusCode deReg(TObject *obj) override
Definition: WebdaqHistSvc.cxx:297
WebdaqHistSvc::m_print
Gaudi::Property< bool > m_print
Definition: WebdaqHistSvc.h:202
WebdaqHistSvc::getTree
virtual StatusCode getTree(const std::string &, TTree *&) const override
Definition: WebdaqHistSvc.h:95
WebdaqHistSvc::regEfficiency
virtual StatusCode regEfficiency(const std::string &) override
Definition: WebdaqHistSvc.h:109
WebdaqHistSvc::m_histoMapUpdated
std::atomic< bool > m_histoMapUpdated
Flag to indicate when the histogram map is updated.
Definition: WebdaqHistSvc.h:161
WebdaqHistSvc::regShared
virtual StatusCode regShared(const std::string &, std::unique_ptr< TH1 >, LockedHandle< TH1 > &) override
Definition: WebdaqHistSvc.cxx:469
WebdaqHistSvc::m_hists
tbb::concurrent_hash_map< std::string, THistID > m_hists
Map of the registered histograms.
Definition: WebdaqHistSvc.h:169
WebdaqHistSvc::getTHists
virtual StatusCode getTHists(TDirectory *td, TList &, bool recurse=false) const override
Definition: WebdaqHistSvc.cxx:439
WebdaqHistSvc::m_excludeType
Gaudi::Property< std::string > m_excludeType
Definition: WebdaqHistSvc.h:184
WebdaqHistSvc::THistID::id
std::string id
Definition: WebdaqHistSvc.h:138
WebdaqHistSvc::m_histoMapUpdatedFast
std::atomic< bool > m_histoMapUpdatedFast
Flag to indicate when the histogram map is updated for the fast publication
Definition: WebdaqHistSvc.h:163
WebdaqHistSvc::m_intervalSecondsFast
Gaudi::Property< int > m_intervalSecondsFast
Definition: WebdaqHistSvc.h:194
DEBUG
#define DEBUG
Definition: page_access.h:11
WebdaqHistSvc::syncPublish
void syncPublish(long int, boost::posix_time::ptime)
Sync the publication to a multiple of the interval.
Definition: WebdaqHistSvc.cxx:650
WebdaqHistSvc::getTTrees
virtual StatusCode getTTrees(const std::string &, TList &, bool, bool) override
Definition: WebdaqHistSvc.h:101
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:146
WebdaqHistSvc::getTTrees
virtual StatusCode getTTrees(TDirectory *, TList &, bool) const override
Definition: WebdaqHistSvc.h:98
AthService.h
WebdaqHistSvc::m_includeNameRegex
boost::regex m_includeNameRegex
Definition: WebdaqHistSvc.h:211
WebdaqHistSvc::m_outputfile
Gaudi::Property< std::vector< std::string > > m_outputfile
Definition: WebdaqHistSvc.h:204
WebdaqHistSvc::regTree
virtual StatusCode regTree(const std::string &, std::unique_ptr< TTree >) override
Definition: WebdaqHistSvc.h:93
WebdaqHistSvc::getShared
virtual StatusCode getShared(const std::string &, LockedHandle< TEfficiency > &) const override
Definition: WebdaqHistSvc.h:123
WebdaqHistSvc::m_autoSave
Gaudi::Property< int > m_autoSave
Definition: WebdaqHistSvc.h:200
dqt_zlumi_alleff_HIST.tl
tl
Definition: dqt_zlumi_alleff_HIST.py:73
WebdaqHistSvc::WebdaqHistSvc
WebdaqHistSvc(const std::string &name, ISvcLocator *svc)
Definition: WebdaqHistSvc.cxx:34
WebdaqHistSvc::m_autoFlush
Gaudi::Property< int > m_autoFlush
Definition: WebdaqHistSvc.h:201
WebdaqHistSvc::m_numSlots
Gaudi::Property< int > m_numSlots
Definition: WebdaqHistSvc.h:191
checker_macros.h
Define macros for attributes used to control the static checker.
python.PyAthena.obj
obj
Definition: PyAthena.py:132
WebdaqHistSvc::conditionedSleep
void conditionedSleep(std::chrono::milliseconds, const std::atomic< bool > &)
Sleep for a duration or until the stop flag is set.
Definition: WebdaqHistSvc.cxx:664
WebdaqHistSvc::m_numSlotsFast
Gaudi::Property< int > m_numSlotsFast
Definition: WebdaqHistSvc.h:192
WebdaqHistSvc::m_partition
std::string m_partition
The partition to publish to.
Definition: WebdaqHistSvc.h:155
WebdaqHistSvc::getEfficiencies
virtual std::vector< std::string > getEfficiencies() const override
Definition: WebdaqHistSvc.h:113
WebdaqHistSvc::getTrees
virtual std::vector< std::string > getTrees() const override
Definition: WebdaqHistSvc.h:97
WebdaqHistSvc::regEfficiency
virtual StatusCode regEfficiency(const std::string &, TEfficiency *) override
Definition: WebdaqHistSvc.h:111
WebdaqHistSvc::THistID::THistID
THistID()
Definition: WebdaqHistSvc.h:136
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
WebdaqHistSvc::isObjectAllowed
bool isObjectAllowed(const std::string &path, const TObject *o) const
Does the histogram follow the naming rules ?
Definition: WebdaqHistSvc.cxx:359
WebdaqHistSvc::getGraph
virtual StatusCode getGraph(const std::string &, TGraph *&) const override
Definition: WebdaqHistSvc.h:107
WebdaqHistSvc::m_PublicationIncludeName
Gaudi::Property< std::string > m_PublicationIncludeName
Definition: WebdaqHistSvc.h:196
ServiceHandle< Gaudi::Interfaces::IOptionsSvc >