ATLAS Offline Software
Loading...
Searching...
No Matches
WebdaqHistSvc.cxx File Reference
#include "WebdaqHistSvc.h"
#include "GaudiKernel/ISvcLocator.h"
#include "GaudiKernel/IIncidentSvc.h"
#include "AthenaInterprocess/Incidents.h"
#include "CxxUtils/checker_macros.h"
#include "AthenaMonitoringKernel/OHLockedHist.h"
#include "hltinterface/IInfoRegister.h"
#include "webdaq/webdaq-root.hpp"
#include "webdaq/webdaq.hpp"
#include "TError.h"
#include "TGraph.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TObject.h"
#include "TROOT.h"
#include "TTree.h"
#include <TBufferJSON.h>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/gregorian/gregorian_types.hpp>
#include <cstdlib>

Go to the source code of this file.

Functions

StatusCode WebdaqHistSvc::initialize ATLAS_NOT_THREAD_SAFE ()
 Install fatal handler with default options.

Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

StatusCode WebdaqHistSvc::initialize ATLAS_NOT_THREAD_SAFE ( void )
inline

Install fatal handler with default options.

This is meant to be easy to call from python via ctypes.

Definition at line 39 of file WebdaqHistSvc.cxx.

40{
41 // Protect against multiple instances of TROOT
42 if (0 == gROOT) {
43 static TROOT root("root", "ROOT I/O");
44 }
45 else {
46 ATH_MSG_VERBOSE("ROOT already initialized, debug = " << gDebug);
47 }
48
49 gErrorIgnoreLevel = kBreak; // ignore warnings see TError.h in ROOT base src
50
51 // compile regexes
52 m_excludeTypeRegex = boost::regex(m_excludeType.value());
53 m_includeTypeRegex = boost::regex(m_includeType.value());
54 m_excludeNameRegex = boost::regex(m_excludeName.value());
55 m_includeNameRegex = boost::regex(m_includeName.value());
56 m_PublicationIncludeNameRegex = boost::regex(m_PublicationIncludeName.value());
57 m_fastPublicationIncludeNameRegex = boost::regex(m_fastPublicationIncludeName.value());
58
59 // Retrieve and set OH mutex
60 ATH_MSG_INFO("Enabling use of OH histogram mutex");
61 static std::mutex mutex;
63 ATH_CHECK( m_jobOptionsSvc.retrieve() );
64
65 //Retireve enviroment variables
66 const char* tdaq_partition_cstr = std::getenv("TDAQ_PARTITION");
67 if (tdaq_partition_cstr != nullptr) {
68 m_partition = std::string(tdaq_partition_cstr);
69 ATH_MSG_INFO("Partition: " << m_partition);
70 } else {
71 ATH_MSG_ERROR("TDAQ_PARTITION environment variable not set");
72 return StatusCode::FAILURE;
73 }
74 const char* tdaqWebdaqBase_cstr = std::getenv("TDAQ_WEBDAQ_BASE");
75 if (tdaqWebdaqBase_cstr != nullptr) {
76 m_tdaqWebdaqBase = std::string(tdaqWebdaqBase_cstr);
77 ATH_MSG_INFO("TDAQ_WEBDAQ_BASE value: " << m_tdaqWebdaqBase);
78 } else {
79 ATH_MSG_ERROR("TDAQ_WEBDAQ_BASE environment variable not set! Is needed for the OH publication through webdaq");
80 return StatusCode::FAILURE;
81 }
82 const char* tdaq_oh_server = std::getenv("TDAQ_OH_SERVER");
83 if (tdaq_oh_server != nullptr) {
84 m_tdaqOHServerName = std::string(tdaq_oh_server);
85 } else {
86 m_tdaqOHServerName = m_OHServerName.value();
87 }
88 ATH_MSG_INFO("TDAQ_OH_SERVER value: " << m_tdaqOHServerName);
89 ServiceHandle<IIncidentSvc> incSvc("IncidentSvc", name());
90 ATH_CHECK( incSvc.retrieve() );
91 incSvc->addListener(this, AthenaInterprocess::UpdateAfterFork::type());
92 return StatusCode::SUCCESS;
93}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)
static const std::string & type()
Incident type.
Definition Incidents.h:49
STL class.
static void set_histogram_mutex(std::mutex &mutex)
Set mutex to be used in oh_lock_histogram.