Implementation of IHistogramProvider for offline histograms.
More...
#include <OfflineHistogramProvider.h>
◆ OfflineHistogramProvider()
Constructor.
- Parameters
-
| gmTool | Source of the lumi block info |
| factory | ROOT object factory |
| def | General definition of a histogram |
Definition at line 38 of file OfflineHistogramProvider.h.
41 : IHistogramProvider()
45 , m_objcache({0, 0, nullptr})
46 {}
GenericMonitoringTool *const m_gmTool
std::shared_ptr< HistogramDef > m_histDef
std::shared_ptr< HistogramFactory > m_factory
◆ ~OfflineHistogramProvider()
| virtual Monitored::OfflineHistogramProvider::~OfflineHistogramProvider |
( |
| ) |
|
|
inlineoverridevirtual |
Definition at line 49 of file OfflineHistogramProvider.h.
49 {
50 try {
52 }
53 catch (const GaudiException&) {
54
55 std::abort();
56 }
57 }
void storeMetadata() const
Store metadata trees.
◆ histogram()
| TNamed * Monitored::OfflineHistogramProvider::histogram |
( |
| ) |
|
|
inlineoverridevirtual |
Getter of ROOT object.
Each time the method is called, factory produces ROOT object based on the current lumi block. Note: ROOT objects are cached at the factory. Nevertheless, it is recommended to call this method as rarely as possible.
- Returns
- ROOT object
Implements Monitored::IHistogramProvider.
Definition at line 68 of file OfflineHistogramProvider.h.
68 {
71
72
75 if (objcacheref.lumiBlock == lumiBlock
76 && objcacheref.runNumber == runNumber
77 && objcacheref.object) {
78 return objcacheref.object;
79 }
80
81 std::string lbString;
84 lbString = "";
87 lbString = "/lowStat_LB"+std::to_string(lbBase)+"-"+std::to_string(lbBase+19);
88 } else {
89 lbString = "/lb_"+std::to_string(lumiBlock);
90 }
91 m_histDef->tld =
"/run_"+std::to_string(runNumber)+lbString+
"/";
92
99 }
100 return objcacheref.object;
101 }
std::vector< std::string > m_storedPaths
@ LowStat
rebook histogram after every 20 lumiblocks
@ Run
rebook histogram after each run
◆ storeMetadata()
| void Monitored::OfflineHistogramProvider::storeMetadata |
( |
| ) |
const |
|
inlineprivate |
Store metadata trees.
Offline ROOT output should have "metadata" TTrees; this function makes them
Definition at line 124 of file OfflineHistogramProvider.h.
124 {
125 std::scoped_lock<std::mutex> metadataLock(s_metadataMutex);
127
128 size_t pos =
path.find_last_of(
'/');
129 auto splitPath = std::make_pair(
path.substr(0, pos),
path.substr(pos + 1));
130 std::string treePath = splitPath.first + "/metadata";
133 char triggerData[] = "<none>";
134 const std::string mergeDataStr =
m_histDef->merge ==
"" ?
"<default>" :
m_histDef->merge;
135 std::vector<char> mergeData{mergeDataStr.begin(), mergeDataStr.end()};
136 mergeData.push_back('\0');
137
143 } else {
145 }
146 if (!
histSvc->existsTree(treePath)) {
147 auto tree = std::make_unique<TTree>(
"metadata",
"Monitoring Metadata");
148
149 tree->Branch(
"Name", &(splitPath.second[0]),
"Name/C");
150 tree->Branch(
"Interval", &(interval[0]),
"Interval/C");
151 tree->Branch(
"TriggerChain", triggerData,
"TriggerChain/C");
152 tree->Branch(
"MergeMethod", mergeData.data(),
"MergeMethod/C");
154
155 if (!
histSvc->regTree(treePath, std::move(
tree))) {
158 <<
"Failed to register DQ metadata TTree " << treePath <<
endmsg;
159 }
160 } else {
161 TTree *
tree{
nullptr};
162 if (
histSvc->getTree(treePath,
tree).isSuccess()) {
163 tree->SetBranchAddress(
"Name", &(splitPath.second[0]));
164 tree->SetBranchAddress(
"Interval", &(interval[0]));
165 tree->SetBranchAddress(
"TriggerChain", triggerData);
166 tree->SetBranchAddress(
"MergeMethod", mergeData.data());
168 } else {
171 <<
"Failed to retrieve DQ metadata TTree " << treePath <<
" which is reported to exist" <<
endmsg;
172 }
173 }
174 }
175 }
IMessageSvc * getMessageSvc(bool quiet=false)
path
python interpreter configuration --------------------------------------—
◆ ATLAS_THREAD_SAFE
| Gaudi::Hive::ContextSpecificData<objcache> m_objcache Monitored::OfflineHistogramProvider::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ m_cacheMutex
| std::mutex Monitored::OfflineHistogramProvider::m_cacheMutex |
|
private |
◆ m_factory
| std::shared_ptr<HistogramFactory> Monitored::OfflineHistogramProvider::m_factory |
|
private |
◆ m_gmTool
◆ m_histDef
| std::shared_ptr<HistogramDef> Monitored::OfflineHistogramProvider::m_histDef |
|
private |
◆ m_storedPaths
| std::vector<std::string> Monitored::OfflineHistogramProvider::m_storedPaths |
|
private |
The documentation for this class was generated from the following file: