ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
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. More...
 
std::unordered_map< std::string, IOVRangem_currentIOVs
 current IOVs managed by IOVDbSvc More...
 
std::unordered_map< std::string, FolderHistm_folderHist
 histograms for COOL folders More...
 
std::string m_histPath
 histogram booking path More...
 
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 {}

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 }

◆ 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
106  fillIOVDbChangeHist(ctx);
107 
108  // Fill lumi histogram
109  fillLumiHist(ctx);
110  }
111 
112  return StatusCode::SUCCESS;
113 }

◆ 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
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
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 }

◆ 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
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 }

◆ fillLumiHist()

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

Definition at line 319 of file TrigOpMonitor.cxx.

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

◆ fillMagFieldHist()

void TrigOpMonitor::fillMagFieldHist ( )
private

Definition at line 163 of file TrigOpMonitor.cxx.

164 {
165  if (!m_fieldMapKey.empty()) {
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 }

◆ 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 }

◆ 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 }

◆ 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 }

◆ 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);
75  fillIOVDbHist();
77  const AthenaInterprocess::UpdateAfterFork& updinc = dynamic_cast<const AthenaInterprocess::UpdateAfterFork&>(incident);
78  fillProcThreadHist(updinc.workerID());
79  }
80 }

◆ 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 }

◆ 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 }

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.

◆ m_fieldMapKey

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

Definition at line 91 of file TrigOpMonitor.h.

◆ 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.

◆ m_incidentSvc

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

Definition at line 70 of file TrigOpMonitor.h.

◆ m_iovChangeHist

TH2I* TrigOpMonitor::m_iovChangeHist {nullptr}
private

Definition at line 76 of file TrigOpMonitor.h.

◆ 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.

◆ m_lumiHist

TProfile* TrigOpMonitor::m_lumiHist {nullptr}
private

Definition at line 81 of file TrigOpMonitor.h.

◆ m_magFieldHist

TH2I* TrigOpMonitor::m_magFieldHist {nullptr}
private

Definition at line 75 of file TrigOpMonitor.h.

◆ 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.

◆ m_mtConfigHist

TH2I* TrigOpMonitor::m_mtConfigHist {nullptr}
private

Definition at line 78 of file TrigOpMonitor.h.

◆ m_muHist

TProfile* TrigOpMonitor::m_muHist {nullptr}
private

Definition at line 82 of file TrigOpMonitor.h.

◆ m_previousLB

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

LB of previous event.

Definition at line 84 of file TrigOpMonitor.h.

◆ 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.

◆ m_releaseHist

TH1I* TrigOpMonitor::m_releaseHist {nullptr}
private

Definition at line 77 of file TrigOpMonitor.h.

◆ m_subdetHist

TH2I* TrigOpMonitor::m_subdetHist {nullptr}
private

Definition at line 80 of file TrigOpMonitor.h.

◆ m_workersHist

TH1I* TrigOpMonitor::m_workersHist {nullptr}
private

Definition at line 79 of file TrigOpMonitor.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
TrigOpMonitor::m_releaseData
Gaudi::Property< std::string > m_releaseData
Definition: TrigOpMonitor.h:93
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
get_generator_info.result
result
Definition: get_generator_info.py:21
IOVTime::MAXRUN
static constexpr uint32_t MAXRUN
Definition: IOVTime.h:48
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
AthenaInterprocess::UpdateAfterFork
Definition: Incidents.h:22
plotmaker.hist
hist
Definition: plotmaker.py:148
TrigOpMonitor::m_histSvc
ServiceHandle< ITHistSvc > m_histSvc
Definition: TrigOpMonitor.h:71
MagField::AtlasFieldMap::solenoidOn
bool solenoidOn() const
status of the magnets
Definition: AtlasFieldMap.h:57
TrigOpMonitor::bookHists
StatusCode bookHists()
Definition: TrigOpMonitor.cxx:115
ByteStreamMetadata
This class is the StoreGate data object for bytestream metadata.
Definition: ByteStreamMetadata.h:25
PixelModuleFeMask_create_db.stop
int stop
Definition: PixelModuleFeMask_create_db.py:76
TrigOpMonitor::m_lumiHist
TProfile * m_lumiHist
Definition: TrigOpMonitor.h:81
TrigOpMonitor::fillIOVDbHist
void fillIOVDbHist()
Definition: TrigOpMonitor.cxx:174
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
AthenaInterprocess::UpdateAfterFork::workerID
int workerID() const
assigned worker ID from processing unit
Definition: Incidents.h:40
TrigOpMonitor::m_workersHist
TH1I * m_workersHist
Definition: TrigOpMonitor.h:79
TrigOpMonitor::fillIOVDbChangeHist
void fillIOVDbChangeHist(const EventContext &ctx)
Definition: TrigOpMonitor.cxx:254
TrigOpMonitor::fillMagFieldHist
void fillMagFieldHist()
Definition: TrigOpMonitor.cxx:163
oh_scoped_lock_histogram
Scoped lock to be used for threaded histogram operations.
Definition: OHLockedHist.h:108
python.selector.AtlRunQuerySelectorLhcOlc.sd
sd
Definition: AtlRunQuerySelectorLhcOlc.py:612
TrigOpMonitor::m_lumiDataKey
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Definition: TrigOpMonitor.h:90
python.checkMetadata.metadata
metadata
Definition: checkMetadata.py:175
IOVTime
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Definition: IOVTime.h:33
RpcMonitorAlgorithm.file_list
list file_list
Definition: RpcMonitorAlgorithm.py:383
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ByteStreamMetadataContainer
This class is the StoreGate data object for bytestream metadata.
Definition: ByteStreamMetadataContainer.h:22
TrigOpMonitor::start
virtual StatusCode start() override
Definition: TrigOpMonitor.cxx:82
TrigOpMonitor::m_magFieldHist
TH2I * m_magFieldHist
Definition: TrigOpMonitor.h:75
TrigOpMonitor::m_histPath
std::string m_histPath
histogram booking path
Definition: TrigOpMonitor.h:87
python.TrigEgammaMonitorHelper.TProfile
def TProfile(*args, **kwargs)
Definition: TrigEgammaMonitorHelper.py:81
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
IOVTime::MAXTIMESTAMP
static constexpr uint64_t MAXTIMESTAMP
Definition: IOVTime.h:58
TrigOpMonitor::m_mtConfigHist
TH2I * m_mtConfigHist
Definition: TrigOpMonitor.h:78
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
hist_file_dump.f
f
Definition: hist_file_dump.py:135
TrigOpMonitor::m_previousLB
EventIDBase::number_type m_previousLB
LB of previous event.
Definition: TrigOpMonitor.h:84
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
TrigOpMonitor::fillSubDetHist
void fillSubDetHist()
Definition: TrigOpMonitor.cxx:398
TrigOpMonitor::m_maxLB
Gaudi::Property< unsigned short int > m_maxLB
Definition: TrigOpMonitor.h:100
TrigOpMonitor::m_IOVDbSvc
SmartIF< IIOVDbSvc > m_IOVDbSvc
Definition: TrigOpMonitor.h:73
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TrigOpMonitor::m_currentIOVs
std::unordered_map< std::string, IOVRange > m_currentIOVs
current IOVs managed by IOVDbSvc
Definition: TrigOpMonitor.h:85
TrigOpMonitor::m_fieldMapKey
SG::ReadCondHandleKey< AtlasFieldMapCondObj > m_fieldMapKey
Definition: TrigOpMonitor.h:91
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TrigOpMonitor::m_folderHist
std::unordered_map< std::string, FolderHist > m_folderHist
histograms for COOL folders
Definition: TrigOpMonitor.h:86
MagField::AtlasFieldMap
Map for magnetic field.
Definition: AtlasFieldMap.h:39
AthenaInterprocess::UpdateAfterFork::type
static const std::string & type()
Incident type.
Definition: Incidents.h:49
TrigOpMonitor::fillProcThreadHist
void fillProcThreadHist(int workerID)
Definition: TrigOpMonitor.cxx:366
MagField::AtlasFieldMap::toroidOn
bool toroidOn() const
Definition: AtlasFieldMap.h:58
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
h
python.BackTrackingConfig.numThreads
int numThreads
Definition: BackTrackingConfig.py:61
TrigOpMonitor::m_muHist
TProfile * m_muHist
Definition: TrigOpMonitor.h:82
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DeMoScan.first
bool first
Definition: DeMoScan.py:536
TrigOpMonitor::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Definition: TrigOpMonitor.h:70
TrigOpMonitor::m_detailedHists
Gaudi::Property< bool > m_detailedHists
Definition: TrigOpMonitor.h:97
TrigOpMonitor::m_iovChangeHist
TH2I * m_iovChangeHist
Definition: TrigOpMonitor.h:76
IIOVDbSvc::KeyInfo
Filled by IIOVDbSvc::getKeyInfo.
Definition: IIOVDbSvc.h:44
RatesAnalysisFullMenu.fh
fh
Definition: RatesAnalysisFullMenu.py:127
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
TrigOpMonitor::fillLumiHist
void fillLumiHist(const EventContext &ctx)
Definition: TrigOpMonitor.cxx:319
TrigOpMonitor::m_releaseHist
TH1I * m_releaseHist
Definition: TrigOpMonitor.h:77
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
TrigOpMonitor::fillReleaseDataHist
void fillReleaseDataHist()
Definition: TrigOpMonitor.cxx:328
TrigOpMonitor::m_subdetHist
TH2I * m_subdetHist
Definition: TrigOpMonitor.h:80
fitman.k
k
Definition: fitman.py:528
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37