ATLAS Offline Software
Loading...
Searching...
No Matches
TrigOpMonitor Class Reference

#include <TrigOpMonitor.h>

Inheritance diagram for TrigOpMonitor:
Collaboration diagram for TrigOpMonitor:

Classes

struct  FolderHist
 Histograms for COOL folders. More...

Public Member Functions

 TrigOpMonitor (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override
virtual StatusCode start () override
virtual StatusCode execute () override
virtual void handle (const Incident &incident) override
virtual unsigned int cardinality () const override

Private Member Functions

void fillMagFieldHist ()
void fillReleaseDataHist ()
void fillProcThreadHist (int workerID)
void fillSubDetHist ()
void fillIOVDbHist ()
void fillIOVDbChangeHist (const EventContext &ctx)
void fillLumiHist (const EventContext &ctx)
StatusCode bookHists ()

Private Attributes

ServiceHandle< IIncidentSvc > m_incidentSvc { this, "IncidentSvc", "IncidentSvc", "Incident service"}
ServiceHandle< ITHistSvc > m_histSvc {this, "THistSvc", "THistSvc"}
SmartIF< IIOVDbSvcm_IOVDbSvc
TH2I * m_magFieldHist {nullptr}
TH2I * m_iovChangeHist {nullptr}
TH1I * m_releaseHist {nullptr}
TH2I * m_mtConfigHist {nullptr}
TH1I * m_workersHist {nullptr}
TH2I * m_subdetHist {nullptr}
TProfile * m_lumiHist {nullptr}
TProfile * m_muHist {nullptr}
EventIDBase::number_type m_previousLB {0}
 LB of previous event.
std::unordered_map< std::string, IOVRangem_currentIOVs
 current IOVs managed by IOVDbSvc
std::unordered_map< std::string, FolderHistm_folderHist
 histograms for COOL folders
std::string m_histPath
 histogram booking path
SG::ReadCondHandleKey< LuminosityCondDatam_lumiDataKey {this, "LuminosityCondDataKey", ""}
SG::ReadCondHandleKey< AtlasFieldMapCondObjm_fieldMapKey {this, "AtlasFieldMapCondDataKey", ""}
Gaudi::Property< std::string > m_releaseData
Gaudi::Property< bool > m_detailedHists
Gaudi::Property< unsigned short int > m_maxLB

Detailed Description

Definition at line 37 of file TrigOpMonitor.h.

Constructor & Destructor Documentation

◆ TrigOpMonitor()

TrigOpMonitor::TrigOpMonitor ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 54 of file TrigOpMonitor.cxx.

54 :
55 base_class(name, pSvcLocator),
56 m_histPath("/EXPERT/HLTFramework/" + name + "/")
57{}
std::string m_histPath
histogram booking path

Member Function Documentation

◆ bookHists()

StatusCode TrigOpMonitor::bookHists ( )
private

Definition at line 115 of file TrigOpMonitor.cxx.

116{
117 m_iovChangeHist = nullptr;
118 m_currentIOVs.clear();
119 m_folderHist.clear();
120
121 m_iovChangeHist = new TH2I("CoolFolderUpdate_LB", "COOL folder updates;Lumiblock;", 1, 0, 1, 1, 0, 1);
122
123 // create histogram for magnetic field information
124 m_magFieldHist = new TH2I("MagneticFieldSettings", "Magnetic field settings", 2, 0, 2, 2, 0, 2);
125 m_magFieldHist->GetYaxis()->SetBinLabel(1, "off");
126 m_magFieldHist->GetYaxis()->SetBinLabel(2, "on");
127 m_magFieldHist->GetXaxis()->SetBinLabel(1, "Solenoid");
128 m_magFieldHist->GetXaxis()->SetBinLabel(2, "Toroid");
129
130 m_releaseHist = new TH1I("GeneralOpInfo", "General operational info;;Applications", 1, 0, 1);
131
132 m_mtConfigHist = new TH2I("MTConfig", "Multi-threading configuration", 2, 0, 2, 10, 0, 10);
133 m_mtConfigHist->SetCanExtend(TH1::kYaxis);
134 m_mtConfigHist->GetXaxis()->SetBinLabel(1, "N threads");
135 m_mtConfigHist->GetXaxis()->SetBinLabel(2, "N slots");
136
137 m_workersHist = new TH1I("MPWorkers", "Worker IDs;Worker ID;Number of workers", 10, 0, 10);
138 m_workersHist->SetCanExtend(TH1::kXaxis);
139
140 m_subdetHist = new TH2I("Subdetectors", "State of subdetectors", 1, 0, 1, 3, 0, 3);
141 m_subdetHist->SetCanExtend(TH1::kXaxis);
142 m_subdetHist->GetYaxis()->SetBinLabel(1, "# ROB");
143 m_subdetHist->GetYaxis()->SetBinLabel(2, "off");
144 m_subdetHist->GetYaxis()->SetBinLabel(3, "on");
145
146 m_lumiHist = new TProfile("Luminosity", "Luminosity;Lumiblock;Luminosity [10^{33} cm^{-2}s^{-1}]",
147 m_maxLB, 0, m_maxLB);
148
149 m_muHist = new TProfile("Pileup", "Pileup;Lumiblock;Interactions per BX", m_maxLB, 0, m_maxLB);
150
151 // Register histograms
152 TH1* hist[] = {
155 };
156 for (TH1* h : hist) {
157 if (h) ATH_CHECK(m_histSvc->regHist(m_histPath + h->GetName(), h));
158 }
159
160 return StatusCode::SUCCESS;
161}
#define ATH_CHECK
Evaluate an expression and check for errors.
TH1I * m_releaseHist
std::unordered_map< std::string, IOVRange > m_currentIOVs
current IOVs managed by IOVDbSvc
ServiceHandle< ITHistSvc > m_histSvc
TH2I * m_magFieldHist
TProfile * m_lumiHist
TProfile * m_muHist
Gaudi::Property< unsigned short int > m_maxLB
std::unordered_map< std::string, FolderHist > m_folderHist
histograms for COOL folders
TH2I * m_subdetHist
TH2I * m_iovChangeHist
TH2I * m_mtConfigHist
TH1I * m_workersHist

◆ cardinality()

virtual unsigned int TrigOpMonitor::cardinality ( ) const
inlineoverridevirtual

Definition at line 49 of file TrigOpMonitor.h.

49{ return 1; }

◆ execute()

StatusCode TrigOpMonitor::execute ( )
overridevirtual

Definition at line 92 of file TrigOpMonitor.cxx.

93{
94 /* One-time fills */
95 [[maybe_unused]] const static bool once = [&]() {
97 return true;
98 }();
99
100 /* Per-LB fills */
101 const EventContext& ctx = getContext();
102 if (m_previousLB != ctx.eventID().lumi_block()) { // New LB
103 m_previousLB = ctx.eventID().lumi_block();
104
105 // Fill IOV diff histogram
107
108 // Fill lumi histogram
109 fillLumiHist(ctx);
110 }
111
112 return StatusCode::SUCCESS;
113}
void fillIOVDbChangeHist(const EventContext &ctx)
void fillLumiHist(const EventContext &ctx)
EventIDBase::number_type m_previousLB
LB of previous event.

◆ fillIOVDbChangeHist()

void TrigOpMonitor::fillIOVDbChangeHist ( const EventContext & ctx)
private

Definition at line 254 of file TrigOpMonitor.cxx.

255{
256 std::vector<std::string> keys;
257 if (m_IOVDbSvc) keys = m_IOVDbSvc->getKeyList();
258
259 // Loop over all keys known to IOVDbSvc
260 IIOVDbSvc::KeyInfo info;
261 for (const std::string& k : keys) {
262 // cppcheck-suppress nullPointerRedundantCheck
263 if (not m_IOVDbSvc->getKeyInfo(k, info)) continue;
264 if (not info.retrieved) continue;
265
266 const auto curIOV = m_currentIOVs.find(k);
267 if (curIOV == m_currentIOVs.end()) {
268 m_currentIOVs[k] = info.range;
269 continue;
270 }
271
272 // Print IOV changes and fill histogram
273 if (info.range != curIOV->second) {
274 ATH_MSG_INFO("IOV of " << k << " changed from " << curIOV->second << " to " << info.range
275 << " on event: " << ctx.eventID());
276
277 if (m_iovChangeHist) {
278 // Perform a locked fill and remove any empty bins to allow correct gathering
279 oh_scoped_lock_histogram lock;
280 m_iovChangeHist->Fill(std::to_string(ctx.eventID().lumi_block()).c_str(), info.folderName.c_str(),
281 1);
282 m_iovChangeHist->LabelsDeflate("X");
283 m_iovChangeHist->LabelsDeflate("Y");
284 }
285
286 // Create detailed histograms per changed folder
287 if (m_detailedHists) {
288 auto fh = m_folderHist.find(info.folderName);
289 if (fh == m_folderHist.end()) {
290 std::string name(folder2HistName(info.folderName));
291
292 fh = m_folderHist.insert({info.folderName, FolderHist()}).first;
293 fh->second.h_time = new TH1F((name + "_ReadTime").c_str(),
294 ("Update time for " + info.folderName + ";Time [ms];Entries").c_str(),
295 100, 0, 200);
296
297 fh->second.h_bytes = new TH1F(
298 (name + "_BytesRead").c_str(),
299 ("Bytes read for " + info.folderName + ";Data [bytes];Entries").c_str(), 100, 0, 1000);
300
301 for (TH1* h : {fh->second.h_time, fh->second.h_bytes}) {
302 m_histSvc->regHist(m_histPath + h->GetName(), h).ignore();
303 }
304 }
305
306 // Need to plot the difference because IOVDbSvc reports total time and bytes for entire job
307 fh->second.h_time->Fill(info.readTime * 1000 - m_folderHist[info.folderName].total_time);
308 fh->second.total_time += info.readTime * 1000;
309
310 fh->second.h_bytes->Fill(info.bytesRead - m_folderHist[info.folderName].total_bytes);
311 fh->second.total_bytes += info.bytesRead;
312 }
313
314 m_currentIOVs[k] = info.range;
315 }
316 }
317}
#define ATH_MSG_INFO(x)
Gaudi::Property< bool > m_detailedHists
SmartIF< IIOVDbSvc > m_IOVDbSvc
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Histograms for COOL folders.

◆ fillIOVDbHist()

void TrigOpMonitor::fillIOVDbHist ( )
private

Definition at line 174 of file TrigOpMonitor.cxx.

175{
176 // create and fill histogram for IOVDb entries
177 std::vector<std::string> keyList;
178 if (m_IOVDbSvc) keyList = m_IOVDbSvc->getKeyList();
179
180 // set up histograms
181 TH2I* IOVDbRunHist = new TH2I("IOVDbRunRange", "IOVDb Run Range", 1, 0, 1, 1, 0, 1);
182 TH2I* IOVDbTimeHist = new TH2I("IOVDbTimeRange", "IOVDb Time Range", 1, 0, 1, 1, 0, 1);
183 TProfile* IOVDbBytesReadHist = new TProfile("IOVDbBytesRead", "Folder data read", 1, 0, 1);
184 IOVDbBytesReadHist->SetYTitle("Data read [bytes]");
185 TProfile* IOVDbReadTimeHist = new TProfile("IOVDbReadTime", "Folder update time", 1, 0, 1);
186 IOVDbReadTimeHist->SetYTitle("Update time [ms]");
187
188 // fill histograms
189 IIOVDbSvc::KeyInfo info;
190 for (const std::string& key : keyList) {
191 // cppcheck-suppress nullPointerRedundantCheck
192 if (m_IOVDbSvc->getKeyInfo(key, info) && info.retrieved) {
193
194 m_currentIOVs[key] = info.range;
195
196 IOVTime start(info.range.start());
197 IOVTime stop(info.range.stop());
198
199 // fill start condition (run number)
200 if (start.isRunEvent()) {
201 IOVDbRunHist->Fill(std::to_string(start.run()).c_str(), info.folderName.c_str(), 1.0);
202 }
203
204 // fill start condition (timestamp)
205 if (start.isTimestamp()) {
206 IOVDbTimeHist->Fill(std::to_string(start.timestamp()).c_str(), info.folderName.c_str(), 1.0);
207 }
208
209 // fill stop condition (run number)
210 if (stop.isRunEvent()) {
211 if (stop.run() == IOVTime::MAXRUN) {
212 IOVDbRunHist->Fill("infinity", info.folderName.c_str(), 1.0);
213 }
214 else {
215 IOVDbRunHist->Fill(std::to_string(stop.run()).c_str(), info.folderName.c_str(), 1.0);
216 }
217 }
218
219 // fill stop condition (timestamp)
220 if (stop.isTimestamp()) {
221 if (stop.timestamp() == IOVTime::MAXTIMESTAMP) {
222 IOVDbTimeHist->Fill("infinity", info.folderName.c_str(), 1.0);
223 }
224 else {
225 IOVDbTimeHist->Fill(std::to_string(stop.timestamp()).c_str(), info.folderName.c_str(), 1.0);
226 }
227 }
228
229 // fill read bytes and time read
230 IOVDbBytesReadHist->Fill(info.folderName.c_str(), info.bytesRead, 1.0);
231 IOVDbReadTimeHist->Fill(info.folderName.c_str(), info.readTime * 1000, 1.0);
232 }
233 }
234
235 // final configuration of histograms
236 IOVDbRunHist->LabelsDeflate("X");
237 IOVDbRunHist->LabelsDeflate("Y");
238 IOVDbRunHist->GetYaxis()->LabelsOption("a");
239
240 IOVDbTimeHist->LabelsDeflate("X");
241 IOVDbTimeHist->LabelsDeflate("Y");
242 IOVDbTimeHist->GetYaxis()->LabelsOption("a");
243
244 IOVDbBytesReadHist->LabelsDeflate("X");
245 IOVDbReadTimeHist->LabelsDeflate("X");
246
247 // Register histograms
248 TH1* hist[] = {IOVDbRunHist, IOVDbTimeHist, IOVDbBytesReadHist, IOVDbReadTimeHist};
249 for (TH1* h : hist) {
250 m_histSvc->regHist(m_histPath + h->GetName(), h).ignore();
251 }
252}
static constexpr uint64_t MAXTIMESTAMP
Definition IOVTime.h:58
static constexpr uint32_t MAXRUN
Definition IOVTime.h:48
virtual StatusCode start() override

◆ fillLumiHist()

void TrigOpMonitor::fillLumiHist ( const EventContext & ctx)
private

Definition at line 319 of file TrigOpMonitor.cxx.

320{
321 if (!m_lumiDataKey.empty()) {
322 SG::ReadCondHandle<LuminosityCondData> lumiData(m_lumiDataKey, ctx);
323 m_lumiHist->Fill(ctx.eventID().lumi_block(), lumiData->lbAverageLuminosity());
324 m_muHist->Fill(ctx.eventID().lumi_block(), lumiData->lbAverageInteractionsPerCrossing());
325 }
326}
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey

◆ fillMagFieldHist()

void TrigOpMonitor::fillMagFieldHist ( )
private

Definition at line 163 of file TrigOpMonitor.cxx.

164{
165 if (!m_fieldMapKey.empty()) {
166 SG::ReadCondHandle<AtlasFieldMapCondObj> fieldMapHandle(m_fieldMapKey);
167 const MagField::AtlasFieldMap* fieldMap = fieldMapHandle->fieldMap();
168 // if there is no field map, the field is off
169 m_magFieldHist->Fill("Solenoid", fieldMap && fieldMap->solenoidOn() ? "on" : "off", 1.0);
170 m_magFieldHist->Fill("Toroid", fieldMap && fieldMap->toroidOn() ? "on" : "off", 1.0);
171 }
172}
bool solenoidOn() const
status of the magnets
SG::ReadCondHandleKey< AtlasFieldMapCondObj > m_fieldMapKey

◆ fillProcThreadHist()

void TrigOpMonitor::fillProcThreadHist ( int workerID)
private

Definition at line 366 of file TrigOpMonitor.cxx.

367{
368 m_workersHist->Fill(workerID, 1);
369
370 auto getIntProp = [this](std::string_view name, const std::string& prop) -> std::optional<int> {
371 IProperty* svc = serviceLocator()->service(name).as<IProperty>();
372 if (svc == nullptr) return std::nullopt;
373 try {
374 return std::stoi(svc->getProperty(prop).toString());
375 }
376 catch (...) {
377 return std::nullopt;
378 }
379 };
380
381 const std::optional<int> numThreads = getIntProp("AvalancheSchedulerSvc","ThreadPoolSize");
382 if (numThreads.has_value()) {
383 m_mtConfigHist->Fill("N threads", numThreads.value(), 1.0);
384 }
385 else {
386 ATH_MSG_WARNING("Could not retrieve the number of threads to fill the monitoring histogram");
387 }
388
389 const std::optional<int> numSlots = getIntProp("EventDataSvc","NSlots");
390 if (numSlots.has_value()) {
391 m_mtConfigHist->Fill("N slots", numSlots.value(), 1.0);
392 }
393 else {
394 ATH_MSG_WARNING("Could not retrieve the number of slots to fill the monitoring histogram");
395 }
396}
#define ATH_MSG_WARNING(x)
AthROOTErrorHandlerSvc * svc

◆ fillReleaseDataHist()

void TrigOpMonitor::fillReleaseDataHist ( )
private

Definition at line 328 of file TrigOpMonitor.cxx.

329{
330 const char* ld_lib_path = getenv("LD_LIBRARY_PATH");
331 if (ld_lib_path == nullptr) {
332 ATH_MSG_WARNING("LD_LIBRARY_PATH is not defined. Will not fill release histogram.");
333 return;
334 }
335
336 // Find all release metadata files
337 std::list<DirSearchPath::path> file_list = DirSearchPath(ld_lib_path, ":").find_all(m_releaseData.value());
338
339 if (file_list.empty()) {
340 ATH_MSG_WARNING("Could not find release metadata file " << m_releaseData
341 << " in LD_LIBRARY_PATH");
342 m_releaseHist->Fill("Release ?", 1);
343 return;
344 }
345
346 for (const auto& f : file_list) {
347 // Read metadata file
348 std::map<std::string, std::string> result;
349 if (readReleaseData(f.string(), result).isFailure()) {
350 ATH_MSG_WARNING("Could not read release metadata from " << f);
351 m_releaseHist->Fill("Release ?", 1);
352 return;
353 }
354
355 // Check format
356 if (result.find("project name") == result.end() || result.find("release") == result.end()) {
357 ATH_MSG_WARNING("Invalid release metadata format in " << f);
358 m_releaseHist->Fill("Release ?", 1);
359 return;
360 }
361
362 m_releaseHist->Fill((result["project name"] + " " + result["release"]).c_str(), 1);
363 }
364}
Gaudi::Property< std::string > m_releaseData
std::string getenv(const std::string &variableName)
get an environment variable

◆ fillSubDetHist()

void TrigOpMonitor::fillSubDetHist ( )
private

Definition at line 398 of file TrigOpMonitor.cxx.

399{
400 // Retrieve the enabled ROBs/SubDets list from DataFlowConfig which is a special object
401 // used online to hold DF properties passed from TDAQ to HLT as run parameters
402 auto jobOptionsSvc = service<Gaudi::Interfaces::IOptionsSvc>("JobOptionsSvc", /*createIf=*/ false);
403 if (!jobOptionsSvc.isValid()) {
404 ATH_MSG_WARNING("Could not retrieve JobOptionsSvc, will not fill SubDetectors histogram");
405 return;
406 }
407
408 Gaudi::Property<std::vector<uint32_t>> enabledROBsProp("EnabledROBs",{});
409 std::set<uint32_t> enabledROBs;
410 if (enabledROBsProp.fromString(jobOptionsSvc->get("DataFlowConfig.DF_Enabled_ROB_IDs","[]")).isSuccess()) {
411 enabledROBs.insert(enabledROBsProp.value().begin(), enabledROBsProp.value().end());
412 ATH_MSG_DEBUG("Retrieved a list of " << enabledROBs.size()
413 << " ROBs from DataFlowConfig.DF_Enabled_ROB_IDs");
414 }
415 else {
416 ATH_MSG_ERROR("Could not parse DataFlowConfig.DF_Enabled_ROB_IDs from JobOptionsSvc");
417 }
418
419 // Retrieve detector mask from detector store
420 SmartIF<StoreGateSvc> inputMetaDataStore = service<StoreGateSvc>("InputMetaDataStore", /*createIf=*/ false);
421 if (!inputMetaDataStore.isValid()) {
422 ATH_MSG_WARNING("Could not retrieve InputMetaDataStore, will not fill SubDetectors histogram");
423 return;
424 }
425 const ByteStreamMetadataContainer* metadatacont{nullptr};
426 if (inputMetaDataStore->retrieve(metadatacont, "ByteStreamMetadata").isFailure()) {
427 ATH_MSG_WARNING("Could not retrieve ByteStreamMetadata, will not fill SubDetectors histogram");
428 return;
429 }
430
431 const ByteStreamMetadata* metadata = *(metadatacont->begin());
432 uint64_t detMaskLeast = metadata->getDetectorMask();
433 uint64_t detMaskMost = metadata->getDetectorMask2();
434
435 // Decode subdetector masks
436 std::vector<eformat::SubDetector> subDetOn;
437 std::vector<eformat::SubDetector> subDetOff;
438 std::vector<eformat::SubDetector> subDetAll;
439 eformat::helper::DetectorMask(detMaskLeast, detMaskMost).sub_detectors(subDetOn);
440 eformat::helper::DetectorMask(~detMaskLeast, ~detMaskMost).sub_detectors(subDetOff);
441 eformat::helper::DetectorMask(~std::bitset<128>()).sub_detectors(subDetAll);
442
443 // Add bins with labels for every subdetector name
444 for (const eformat::SubDetector sd : subDetAll) {
445 m_subdetHist->GetXaxis()->FindBin(eformat::helper::SubDetectorDictionary.string(sd).data());
446 }
447 m_subdetHist->LabelsDeflate("X");
448
449 // Fill histogram with enabled subdetectors
450 for (const eformat::SubDetector sd : subDetOn) {
451 m_subdetHist->Fill(eformat::helper::SubDetectorDictionary.string(sd).data(), "on", 1.0);
452 }
453
454 // Fill histogram with disabled subdetectors
455 for (const eformat::SubDetector sd : subDetOff) {
456 m_subdetHist->Fill(eformat::helper::SubDetectorDictionary.string(sd).data(), "off", 1.0);
457 }
458
459 // Fill histogram with ROB counts
460 for (const uint32_t robid : enabledROBs) {
461 const std::string sdname = eformat::helper::SourceIdentifier(robid).human_detector();
462 m_subdetHist->Fill(sdname.data(), "# ROB", 1.0);
463 }
464}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
ByteStreamMetadataContainer
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.

◆ handle()

void TrigOpMonitor::handle ( const Incident & incident)
overridevirtual

Definition at line 71 of file TrigOpMonitor.cxx.

71 {
72 // One time fills after fork
73 if (incident.type() == AthenaInterprocess::UpdateAfterFork::type()) {
74 if (!m_IOVDbSvc) m_IOVDbSvc = service("IOVDbSvc", /*createIf=*/false);
77 const AthenaInterprocess::UpdateAfterFork& updinc = dynamic_cast<const AthenaInterprocess::UpdateAfterFork&>(incident);
79 }
80}
static const std::string & type()
Incident type.
Definition Incidents.h:49
int workerID() const
assigned worker ID from processing unit
Definition Incidents.h:40
void fillProcThreadHist(int workerID)

◆ initialize()

StatusCode TrigOpMonitor::initialize ( )
overridevirtual

Definition at line 59 of file TrigOpMonitor.cxx.

60{
61 ATH_CHECK(m_histSvc.retrieve());
64
65 ATH_CHECK( m_incidentSvc.retrieve() );
67
68 return StatusCode::SUCCESS;
69}
ServiceHandle< IIncidentSvc > m_incidentSvc

◆ start()

StatusCode TrigOpMonitor::start ( )
overridevirtual

Definition at line 82 of file TrigOpMonitor.cxx.

83{
84 m_previousLB = 0;
85 if (!m_IOVDbSvc) m_IOVDbSvc = service("IOVDbSvc", /*createIf=*/false);
87
89 return StatusCode::SUCCESS;
90}
void fillReleaseDataHist()
StatusCode bookHists()

Member Data Documentation

◆ m_currentIOVs

std::unordered_map<std::string, IOVRange> TrigOpMonitor::m_currentIOVs
private

current IOVs managed by IOVDbSvc

Definition at line 85 of file TrigOpMonitor.h.

◆ m_detailedHists

Gaudi::Property<bool> TrigOpMonitor::m_detailedHists
private
Initial value:
{this, "DetailedFolderHists", true,
"Detailed histograms for COOL folder updates during run"}

Definition at line 97 of file TrigOpMonitor.h.

97 {this, "DetailedFolderHists", true,
98 "Detailed histograms for COOL folder updates during run"};

◆ m_fieldMapKey

SG::ReadCondHandleKey<AtlasFieldMapCondObj> TrigOpMonitor::m_fieldMapKey {this, "AtlasFieldMapCondDataKey", ""}
private

Definition at line 91 of file TrigOpMonitor.h.

91{this, "AtlasFieldMapCondDataKey", ""};

◆ m_folderHist

std::unordered_map<std::string, FolderHist> TrigOpMonitor::m_folderHist
private

histograms for COOL folders

Definition at line 86 of file TrigOpMonitor.h.

◆ m_histPath

std::string TrigOpMonitor::m_histPath
private

histogram booking path

Definition at line 87 of file TrigOpMonitor.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> TrigOpMonitor::m_histSvc {this, "THistSvc", "THistSvc"}
private

Definition at line 71 of file TrigOpMonitor.h.

71{this, "THistSvc", "THistSvc"};

◆ m_incidentSvc

ServiceHandle<IIncidentSvc> TrigOpMonitor::m_incidentSvc { this, "IncidentSvc", "IncidentSvc", "Incident service"}
private

Definition at line 70 of file TrigOpMonitor.h.

70{ this, "IncidentSvc", "IncidentSvc", "Incident service"};

◆ m_iovChangeHist

TH2I* TrigOpMonitor::m_iovChangeHist {nullptr}
private

Definition at line 76 of file TrigOpMonitor.h.

76{nullptr};

◆ m_IOVDbSvc

SmartIF<IIOVDbSvc> TrigOpMonitor::m_IOVDbSvc
private

Definition at line 73 of file TrigOpMonitor.h.

◆ m_lumiDataKey

SG::ReadCondHandleKey<LuminosityCondData> TrigOpMonitor::m_lumiDataKey {this, "LuminosityCondDataKey", ""}
private

Definition at line 90 of file TrigOpMonitor.h.

90{this, "LuminosityCondDataKey", ""};

◆ m_lumiHist

TProfile* TrigOpMonitor::m_lumiHist {nullptr}
private

Definition at line 81 of file TrigOpMonitor.h.

81{nullptr};

◆ m_magFieldHist

TH2I* TrigOpMonitor::m_magFieldHist {nullptr}
private

Definition at line 75 of file TrigOpMonitor.h.

75{nullptr};

◆ m_maxLB

Gaudi::Property<unsigned short int> TrigOpMonitor::m_maxLB
private
Initial value:
{this, "MaxLumiblocks", 3000,
"Number of lumiblocks for histograms"}

Definition at line 100 of file TrigOpMonitor.h.

100 {this, "MaxLumiblocks", 3000,
101 "Number of lumiblocks for histograms"};

◆ m_mtConfigHist

TH2I* TrigOpMonitor::m_mtConfigHist {nullptr}
private

Definition at line 78 of file TrigOpMonitor.h.

78{nullptr};

◆ m_muHist

TProfile* TrigOpMonitor::m_muHist {nullptr}
private

Definition at line 82 of file TrigOpMonitor.h.

82{nullptr};

◆ m_previousLB

EventIDBase::number_type TrigOpMonitor::m_previousLB {0}
private

LB of previous event.

Definition at line 84 of file TrigOpMonitor.h.

84{0};

◆ m_releaseData

Gaudi::Property<std::string> TrigOpMonitor::m_releaseData
private
Initial value:
{
this, "ReleaseDataFile", "../ReleaseData",
"Path to ReleaseData file (relative to LD_LIBRARY_PATH entries"}

Definition at line 93 of file TrigOpMonitor.h.

93 {
94 this, "ReleaseDataFile", "../ReleaseData",
95 "Path to ReleaseData file (relative to LD_LIBRARY_PATH entries"};

◆ m_releaseHist

TH1I* TrigOpMonitor::m_releaseHist {nullptr}
private

Definition at line 77 of file TrigOpMonitor.h.

77{nullptr};

◆ m_subdetHist

TH2I* TrigOpMonitor::m_subdetHist {nullptr}
private

Definition at line 80 of file TrigOpMonitor.h.

80{nullptr};

◆ m_workersHist

TH1I* TrigOpMonitor::m_workersHist {nullptr}
private

Definition at line 79 of file TrigOpMonitor.h.

79{nullptr};

The documentation for this class was generated from the following files: