ATLAS Offline Software
ByteStreamEmonInputSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //===================================================================
6 // Implementation of ByteStreamEmonInputSvc
7 //===================================================================
8 
9 // Include files.
10 #include "ByteStreamEmonInputSvc.h"
11 
12 #include "eformat/Version.h"
13 #include "eformat/HeaderMarker.h"
14 #include "eformat/DetectorMask.h"
15 #include "oh/OHRootProvider.h"
16 #include "rc/RunParamsNamed.h"
17 #include "TProfile.h"
18 #include "TEfficiency.h"
19 #include "TProfile2D.h"
20 
21 #include "StoreGate/StoreGateSvc.h"
30 
31 #include <cstdlib>
32 #include <csignal>
33 #include <sstream>
34 
35 #include <memory>
36 
37 namespace {
38 
39  void handle_terminate ATLAS_NOT_THREAD_SAFE (int)
40  {
41  // online wants
42  ::exit(0);
43  }
44 }
45 
46 namespace {
47  void copyAttributes(TH1* prof, const TEfficiency* eff) {
48  // we take the profile as a TH1 since TProfile2D is not descended from TProfile
49  // code adapted from TEfficiency::FillHistogram
50  const auto* tot{eff->GetTotalHistogram()};
51 
52  // set the axis labels
53  TString xlabel{tot->GetXaxis()->GetTitle()};
54  TString ylabel{tot->GetYaxis()->GetTitle()};
55  TString zlabel{tot->GetZaxis()->GetTitle()};
56  if (xlabel) prof->GetXaxis()->SetTitle(xlabel);
57  if (ylabel) prof->GetYaxis()->SetTitle(ylabel);
58  if (zlabel) prof->GetZaxis()->SetTitle(zlabel);
59 
60  Int_t nbinsx = prof->GetNbinsX();
61  Int_t nbinsy = prof->GetNbinsY();
62 
63  // copy axis labels if existing. Assume are there in the total histogram
64  if (tot->GetXaxis()->GetLabels() != nullptr) {
65  for (int ibinx = 1; ibinx <= nbinsx; ++ibinx)
66  prof->GetXaxis()->SetBinLabel(ibinx, tot->GetXaxis()->GetBinLabel(ibinx));
67  }
68  if (tot->GetYaxis()->GetLabels() != nullptr) {
69  for (int ibiny = 1; ibiny <= nbinsy; ++ibiny)
70  prof->GetYaxis()->SetBinLabel(ibiny, tot->GetYaxis()->GetBinLabel(ibiny));
71  }
72 
73  //copying style information
74  eff->TAttLine::Copy(*prof);
75  eff->TAttFill::Copy(*prof);
76  eff->TAttMarker::Copy(*prof);
77  prof->SetStats(0);
78  }
79 
80  std::unique_ptr<const TProfile> create1DProfile(const TEfficiency* eff) {
81  const auto* tot{eff->GetTotalHistogram()};
82  const auto* pass{eff->GetPassedHistogram()};
83  std::unique_ptr<TProfile> prof;
84  const auto* xaxis{tot->GetXaxis()};
85  if (xaxis->IsVariableBinSize()) {
86  prof = std::make_unique<TProfile>("eff_histo",eff->GetTitle(),
87  xaxis->GetNbins(), xaxis->GetXbins()->GetArray());
88  } else {
89  prof = std::make_unique<TProfile>("eff_histo",eff->GetTitle(),
90  xaxis->GetNbins(), xaxis->GetXmin(), xaxis->GetXmax());
91  }
92  prof->SetDirectory(0);
93 
94  for (Int_t ibin = 0; ibin < tot->GetNbinsX()+2; ++ibin) {
95  auto center{tot->GetBinCenter(ibin)};
96  prof->Fill(center, 1, pass->GetBinContent(ibin));
97  prof->Fill(center, 0, tot->GetBinContent(ibin)-pass->GetBinContent(ibin));
98  prof->SetBinEntries(ibin, tot->GetBinContent(ibin));
99  }
100  copyAttributes(prof.get(), eff);
101 
102  return prof;
103  }
104 
105  std::unique_ptr<const TProfile2D> create2DProfile(const TEfficiency* eff) {
106  const auto* tot{eff->GetTotalHistogram()};
107  const auto* pass{eff->GetPassedHistogram()};
108  std::unique_ptr<TProfile2D> prof;
109  Int_t nbinsx{tot->GetNbinsX()};
110  Int_t nbinsy{tot->GetNbinsY()};
111  const auto* xaxis{tot->GetXaxis()};
112  const auto* yaxis{tot->GetYaxis()};
113 
114  if (xaxis->IsVariableBinSize() && yaxis->IsVariableBinSize() ) {
115  prof = std::make_unique<TProfile2D>("eff_histo",
116  eff->GetTitle(), nbinsx, xaxis->GetXbins()->GetArray(),
117  nbinsy, yaxis->GetXbins()->GetArray());
118  } else if (xaxis->IsVariableBinSize() && ! yaxis->IsVariableBinSize() ) {
119  prof = std::make_unique<TProfile2D>("eff_histo",
120  eff->GetTitle(), nbinsx, xaxis->GetXbins()->GetArray(),
121  nbinsy, yaxis->GetXmin(), yaxis->GetXmax());
122  } else if (!xaxis->IsVariableBinSize() && yaxis->IsVariableBinSize() ) {
123  prof = std::make_unique<TProfile2D>("eff_histo",
124  eff->GetTitle(), nbinsx, xaxis->GetXmin(), xaxis->GetXmax(),
125  nbinsy, yaxis->GetXbins()->GetArray());
126  } else {
127  prof = std::make_unique<TProfile2D>("eff_histo",
128  eff->GetTitle(), nbinsx, xaxis->GetXmin(), xaxis->GetXmax(),
129  nbinsy, yaxis->GetXmin(), yaxis->GetXmax());
130  }
131  prof->SetDirectory(0);
132 
133  for (Int_t ibinx = 0; ibinx < tot->GetNbinsX()+2; ++ibinx) {
134  auto centerx{tot->GetXaxis()->GetBinCenter(ibinx)};
135  for (Int_t ibiny = 0; ibiny < tot->GetNbinsY()+2; ++ibiny) {
136  auto centery{tot->GetYaxis()->GetBinCenter(ibiny)};
137  prof->Fill(centerx, centery, 1, pass->GetBinContent(ibinx, ibiny));
138  prof->Fill(centerx, centery, 0,
139  tot->GetBinContent(ibinx, ibiny)-pass->GetBinContent(ibinx, ibiny));
140  prof->SetBinEntries(prof->GetBin(ibinx, ibiny),
141  tot->GetBinContent(ibinx, ibiny));
142 
143  }
144  }
145  copyAttributes(prof.get(), eff);
146 
147  return prof;
148  }
149 }
150 
151 // Constructor.
152 ByteStreamEmonInputSvc::ByteStreamEmonInputSvc(const std::string& name, ISvcLocator* svcloc) :
153  base_class(name,svcloc),
154  m_inputMetaDataStore("StoreGateSvc/InputMetaDataStore", name ),
155  m_sgSvc("StoreGateSvc", name),
156  m_robProvider("ROBDataProviderSvc", name),
157  m_histSvc("THistSvc", name)
158 {
159 }
160 
161 // Open the first input file and read the first event.
163 {
164  setProperty("State", "Init").ignore();
165 
166  // check properties
167  if(m_partition.empty() && getenv("TDAQ_PARTITION") != 0) {
168  m_partition = getenv("TDAQ_PARTITION");
169  }
170 
171  if(m_partition.empty()){
172  ATH_MSG_ERROR("initialize: No partition name specified");
173  return StatusCode::FAILURE;
174  }
175 
176  if(m_key.empty()) {
177  ATH_MSG_ERROR("initialize: No emon key ");
178  return StatusCode::FAILURE;
179  }
180 
181  m_connect = true;
182 
183  if (m_histSvc.retrieve().isFailure()) {
184  ATH_MSG_ERROR("Unable to locate THistSvc");
185  m_is_server.clear();
186  } else {
187  if(!m_include.empty()) m_include_rex = m_include.value();
188  if(!m_exclude.empty()) m_exclude_rex = m_exclude.value();
189  if(m_frequency < 0) m_frequency = 100000;
191 
192  // if time based update, disable frequency based update
193  if(m_updatePeriod) {
194  m_frequency = 0;
195  // calculate our next target for publishing
196  time_t now = time(0);
198  }
199  }
200 
201  //-------------------------------------------------------------------------
202  // Setup the InputMetaDataStore
203  //-------------------------------------------------------------------------
204  ATH_CHECK( m_inputMetaDataStore.retrieve() );
205  ATH_CHECK( m_robProvider.retrieve() );
206 
207  // Initialise the L1Menu read handle if we need to map L1 item names to IDs
208  ATH_CHECK(m_l1MenuKey.initialize(not m_l1names.value().empty()));
209 
210  signal(SIGTERM, handle_terminate);
211 
212  // Read run parameters from the partition
213  if (m_readDetectorMask) {
214  get_runparams();
215  }
216 
217  ATH_MSG_INFO("initialized for: " << m_partition << " " << m_key << "/" << m_value);
218 
219  return StatusCode::SUCCESS;
220 }
221 
223 {
224  setProperty("State", "Init").ignore();
225 
226  if(!IPCCore::isInitialised()) {
227  char* argv[2] = { 0 };
228  int argc = 0;
230  }
231 
232  IPCPartition partition(m_partition);
233  while(!partition.isValid()) {
234  if(m_exit) {
235  ATH_MSG_ERROR("No such partition: " << m_partition);
236  return false;
237  }
238  ATH_MSG_INFO("No such partition (yet?): " << m_partition);
239  sleep(20);
240  }
241 
242  delete m_provider;
243  m_provider = nullptr;
244 
245  std::unique_ptr<emon::SamplingAddress> address;
246 
247  if(m_key_count > 0) {
248  address.reset(new emon::SamplingAddress(m_key, m_key_count));
249  } else {
250  address.reset(new emon::SamplingAddress(m_key, m_value));
251  }
252 
253  emon::Logic l1_logic = emon::logic::IGNORE;
254  emon::Logic stream_logic = emon::logic::IGNORE;
255  emon::Origin l1_origin = emon::origin::AFTER_VETO;
256 
257  if(m_l1logic == "Or") {
258  l1_logic = emon::logic::OR;
259  } else if (m_l1logic == "And") {
260  l1_logic = emon::logic::AND;
261  } else if (m_l1logic == "Ignore") {
262  l1_logic = emon::logic::IGNORE;
263  }
264 
265  if(m_l1origin == "TBP") {
266  l1_origin = emon::origin::BEFORE_PRESCALE;
267  } else if (m_l1origin == "TAP") {
268  l1_origin = emon::origin::AFTER_PRESCALE;
269  } else if(m_l1origin == "TAV") {
270  l1_origin = emon::origin::AFTER_VETO;
271  } else {
272  ATH_MSG_FATAL("Invalid L1 origin");
273  }
274 
275  if(m_stream_logic == "Or") {
276  stream_logic = emon::logic::OR;
277  } else if (m_stream_logic == "And") {
278  stream_logic = emon::logic::AND;
279  } else if (m_stream_logic == "Ignore") {
280  stream_logic = emon::logic::IGNORE;
281  }
282 
283  // now put together the bit mask from all
284  // three sources: l1 bit mask, l1 names, l1 items
285 
286  std::vector<unsigned short> l1bits(m_l1items.begin(), m_l1items.end());
287 
288  // if names are given, read the mapping information from L1Menu
289  if (not m_l1names.value().empty()) {
290  ATH_MSG_DEBUG("Reading L1Menu to map " << m_l1names.name() << " to CTP IDs");
292  if (not l1Menu.isValid()) {
293  ATH_MSG_ERROR("Cannot read L1Menu to map L1 item names to IDs. The property " << m_l1names.name() << " will be ignored!");
294  } else {
295  for (const std::string& l1name : m_l1names) {
296  try {
297  const unsigned int id = l1Menu->item(l1name).ctpId();
298  ATH_MSG_DEBUG("Item " << l1name << " mapped to CTP ID " << id);
299  l1bits.push_back(static_cast<unsigned short>(id));
300  } catch (const std::exception& ex) {
301  ATH_MSG_ERROR(ex.what());
302  continue;
303  }
304  }
305  }
306  }
307 
308  typedef emon::MaskedValue<unsigned char> L1TriggerType;
309 
310  emon::SmartBitValue l1pattern(l1bits, l1_logic, l1_origin);
311  emon::SmartStreamValue streamTags(m_stream_type, m_stream_names, stream_logic);
312 
313  emon::L1TriggerType l1triggerType(static_cast<unsigned char>(m_trigger_type), m_trigger_type > 255);
314 
315  emon::SelectionCriteria criteria(l1triggerType,
316  std::move(l1pattern),
317  std::move(streamTags),
318  emon::StatusWord());
319 
320  while (true) {
321 
322  if (partition.name() != m_partition) {
323  ATH_MSG_INFO("Partition name changed - reconnecting to " << m_partition);
324  return getIterator();
325  }
326 
327  try {
328  m_eventIt.reset(0);
329  m_eventIt.reset(new emon::EventIterator(partition, *address, criteria, m_buffer_size, m_groupName));
330  if(m_readDetectorMask) {
331  get_runparams();
332  }
333  setProperty("State", "Connected").ignore();
334  return true;
335  } catch(ers::Issue& ex) {
336  ATH_MSG_INFO("Cannot connect to sampler (will wait 20s): " << m_key << "/" << m_value
337  << " Reason: " << ex.what());
338  sleep(20);
339  }
340  }
341 }
342 
343 // Read previous event should not be called for this version of input svc
345 {
346  ATH_MSG_WARNING("previousEvent not implemented for ByteStreamEmonInputSvc");
347 
348  return nullptr;
349 }
350 
351 // Read the next event.
353 {
354  if (m_re) {
356  m_re->start(st);
357  if (st) delete [] st;
358  m_re.reset();
359  }
360 
361  while(m_re == nullptr) {
362 
363  if(m_connect) {
364 
365  if(!getIterator()) {
366  return nullptr;
367  } else {
368  ATH_MSG_INFO("Got sampler...");
369  m_connect = false;
370  }
371  }
372 
374  try {
375  int timeout = m_timeout;
376  if(m_updatePeriod) {
377  // try to hit lower end of update period
379  if(timeout <= 0) timeout = 1000;
380  }
381  event = m_eventIt->nextEvent(timeout);
382  } catch(emon::NoMoreEvents& ex) {
383  if(m_exit) {
384  return nullptr;
385  }
386  check_publish();
387  continue;
388  } catch (ers::Issue& ex) {
389  m_connect = true;
390  continue;
391  }
392 
393  setProperty("State", "Processing").ignore();
394 
396  memcpy(buf, event.data(), event.size() * sizeof(OFFLINE_FRAGMENTS_NAMESPACE::DataType));
397 
398 
399  if (buf[0] == eformat::FULL_EVENT) {
400 
401  // We got a full event
402  m_re = std::make_unique<RawEvent>(buf);
403  try {
404  m_re->check_tree();
405  ATH_MSG_INFO("nextEvent: Got valid fragment of size:" << event.size());
406  } catch (ers::Issue& ex) {
407 
408  // log in any case
409  std::stringstream ss;
410  ss << ex;
411  ATH_MSG_ERROR("nextEvent: Invalid event fragment: " << ss.str());
412 
413  if(!m_corrupted_events) {
414 
415  delete [] buf;
416  m_re.reset();
417  continue;
418  } // else fall through
419  }
420  m_robProvider->setNextEvent(Gaudi::Hive::currentContext(), m_re.get());
421  m_robProvider->setEventStatus(Gaudi::Hive::currentContext(), 0);
422 
423  } else {
424  // We got something we didn't expect.
425  ATH_MSG_ERROR("nextEvent: Got invalid fragment of unknown type: 0x"
426  << std::hex << buf[0] << std::dec);
427  delete [] buf;
428  continue;
429  }
431  }
432 
433  // generate DataHeader
434  DataHeader* Dh = new DataHeader();
435 
436  // Declare header primary
438 
439  // Now add ref to xAOD::EventInfo objects
441  (new ByteStreamAddress(ClassID_traits<xAOD::EventInfo>::ID(), "EventInfo", ""));
442  StatusCode ioc = m_sgSvc->recordAddress("EventInfo",std::move(iop));
443  if (ioc.isSuccess()) {
444  const SG::DataProxy* ptmp = m_sgSvc->transientProxy(ClassID_traits<xAOD::EventInfo>::ID(), "EventInfo");
445  if (ptmp !=0) {
446  DataHeaderElement DheEI(ptmp, nullptr, "EventInfo");
447  Dh->insert(DheEI);
448  }
449  //else ATH_MSG_ERROR("Failed to create xAOD::EventInfo proxy " << ptmp);
450  }
451 
452  // Now add ref to xAOD::EventAuxInfo objects
454  (new ByteStreamAddress(ClassID_traits<xAOD::EventAuxInfo>::ID(), "EventInfoAux.", ""));
455  StatusCode iocaux = m_sgSvc->recordAddress("EventInfoAux.",std::move(iopaux));
456  if (iocaux.isSuccess()) {
457  const SG::DataProxy* ptmpaux = m_sgSvc->transientProxy(ClassID_traits<xAOD::EventAuxInfo>::ID(), "EventInfoAux.");
458  if (ptmpaux !=0) {
459  DataHeaderElement DheEIAux(ptmpaux, nullptr, "EventInfoAux.");
460  Dh->insert(DheEIAux);
461  }
462  //else ATH_MSG_ERROR("Failed to create xAOD::EventAuxInfo proxy " << ptmpaux);
463  }
464 
465  // Record new data header.Boolean flags will allow it's deletion in case
466  // of skipped events.
467  StatusCode rec_sg = m_sgSvc->record<DataHeader>(Dh, "ByteStreamDataHeader", true, false, true);
468  if (rec_sg != StatusCode::SUCCESS) {
469  ATH_MSG_ERROR("Fail to record BS DataHeader in StoreGate. Skipping events?! " << rec_sg);
470  }
471 
472  // we got an event, check if we have to publish
473  check_publish();
474 
475  return m_re.get();
476 
477 }
478 
479 // Get a pointer to the current event.
481 {
482  return m_re.get();
483 }
484 
486 {
487  // is a server specified ?
488  if(m_is_server.empty()) return;
489 
490  // a time based update ?
491  if(m_updatePeriod) {
492  time_t now = time(0);
493 
495  // it's too early to publish
496  return;
497  }
498 
500  // it's too late
501  unsigned int missed_publications = 0;
502  while(m_publish_target < now) {
503  missed_publications++;
505  }
506 
507  // do NOT publish, but print a warning
508  ATH_MSG_WARNING(" check_publish: missed " << missed_publications << " publications to OH");
509 
510  return;
511  }
512  }
513 
514  // an event based update ?
515  if(m_frequency && --m_frequency_counter > 0) return;
516 
518 
519  try {
520 
521  if(m_provider == nullptr) {
522  IPCPartition part(m_partition);
523  if(!part.isValid()) return;
524  // might throw...
525  m_provider = new OHRootProvider(part, m_is_server, m_publish);
526  }
527 
528  for(const std::string& name : m_histSvc->getHists()) {
529 
530  if(!m_include.empty() && !regex_match(name, m_include_rex)) {
531  continue;
532  }
533 
534  if(!m_exclude.empty() && regex_match(name, m_exclude_rex)) {
535  continue;
536  }
537 
538  TH1 *h = nullptr;
539  if(m_histSvc->getHist(name, h)) {
540  // might throw...
541  auto name_tag = detail::extract_histogram_tag(name);
542  m_provider->publish(*h, name_tag.first, name_tag.second);
543  };
544  }
545  for(const std::string& name : m_histSvc->getEfficiencies()) {
546 
547  if(!m_include.empty() && !regex_match(name, m_include_rex)) {
548  continue;
549  }
550 
551  if(!m_exclude.empty() && regex_match(name, m_exclude_rex)) {
552  continue;
553  }
554 
555  TEfficiency *h = nullptr;
556  if(m_histSvc->getEfficiency(name, h)) {
557  if (m_convertEfficiency) {
558  std::unique_ptr<const TH1> p;
559  if (h->GetDimension() == 1) {
560  p = create1DProfile(h);
561  } else if (h->GetDimension() == 2) {
562  p = create2DProfile(h);
563  }
564  // might throw...
565  auto name_tag = detail::extract_histogram_tag(name);
566  m_provider->publish(*p, name_tag.first, name_tag.second);
567  //m_provider->publish(*h, name_tag.first, name_tag.second);
568  } // tdaq doesn't currently support publishing efficiencies, will change in the future
569  };
570  }
571  } catch (daq::oh::Exception& ex) {
572  ATH_MSG_ERROR(ex.what());
573  }
574 
576 }
577 
579 {
580  IPCPartition p(m_partition);
581 
582  RunParamsNamed runParams(p, "RunParams.RunParams");
583  try {
584  runParams.checkout();
585 
586  eformat::helper::DetectorMask mask(runParams.det_mask);
587 
588  auto metadatacont = std::make_unique<ByteStreamMetadataContainer>();
589  metadatacont->push_back(std::make_unique<ByteStreamMetadata>(
590  runParams.run_number,
591  0,
592  0,
593  runParams.recording_enabled,
594  runParams.trigger_type,
595  mask.serialize().second,
596  runParams.beam_type,
597  runParams.beam_energy,
598  "",
599  "",
600  runParams.T0_project_tag,
601  0,
602  std::vector<std::string>()
603  ));
604  // Record ByteStreamMetadataContainer in MetaData Store
605  if(m_inputMetaDataStore->record(std::move(metadatacont),"ByteStreamMetadata").isFailure()) {
606  ATH_MSG_WARNING("Unable to record MetaData in InputMetaDataStore");
607  }
608  else {
609  ATH_MSG_DEBUG("Recorded MetaData in InputMetaDataStore");
610  }
611 
612  } catch(ers::Issue& ex) {
613  ATH_MSG_ERROR("Cannot get run parameters:" << ex.what());
614  }
615 }
616 
617 // start of run
619 {
620  if(m_clearHistograms) {
621  ATH_MSG_INFO("Resetting histograms...");
622  for(const std::string& name : m_histSvc->getHists()) {
623  TH1 *h = nullptr;
624  if(m_histSvc->getHist(name, h)) {
625  h->Reset();
626  };
627  }
628  for(const std::string& name : m_histSvc->getEfficiencies()) {
629  TEfficiency *h = nullptr;
630  if(m_histSvc->getEfficiency(name, h)) {
631  std::unique_ptr<TH1> pass{h->GetCopyPassedHisto()};
632  pass->Reset();
633  h->SetPassedHistogram(*pass.get(), "");
634  std::unique_ptr<TH1> tot{h->GetCopyTotalHisto()};
635  tot->Reset();
636  h->SetTotalHistogram(*tot.get(), "");
637  h->SetWeight(1);
638  };
639  }
640  }
641  return StatusCode::SUCCESS;
642 }
643 
644 void ByteStreamEmonInputSvc::updateHandler(Gaudi::Details::PropertyBase& /* p */)
645 {
646  if(! m_connect) {
647  m_connect = true;
648  sleep(2);
649  setProperty("State","Reconnect").ignore();
650  }
651 }
652 
653 
655 {
656  setProperty("State","Shutdown").ignore();
657  m_inputMetaDataStore.release().ignore();
658  m_robProvider.release().ignore();
659  m_sgSvc.release().ignore();
660  return StatusCode::SUCCESS;
661 }
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
ByteStreamMetadata.h
This file contains the class definition for the ByteStreamMetadata class.
ByteStreamEmonInputSvc::m_re
std::unique_ptr< RawEvent > m_re
current event
Definition: ByteStreamEmonInputSvc.h:64
ByteStreamEmonInputSvc::m_exit
Gaudi::Property< bool > m_exit
Definition: ByteStreamEmonInputSvc.h:72
ByteStreamEmonInputSvc::m_sgSvc
ServiceHandle< StoreGateSvc > m_sgSvc
Definition: ByteStreamEmonInputSvc.h:113
OFFLINE_FRAGMENTS_NAMESPACE::PointerType
const DataType * PointerType
Definition: RawEvent.h:25
ByteStreamEmonInputSvc::m_connect
bool m_connect
Definition: ByteStreamEmonInputSvc.h:101
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
detail::extract_histogram_tag
std::pair< std::string, int > extract_histogram_tag(const std::string &histo_name)
Extract tag/LB number from per-LBN histogram name.
Definition: extract_histogram_tag.cxx:16
ByteStreamEmonInputSvc::m_stream_type
Gaudi::Property< std::string > m_stream_type
Definition: ByteStreamEmonInputSvc.h:84
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
ByteStreamEmonInputSvc::m_totalEventCounter
int m_totalEventCounter
event Counter
Definition: ByteStreamEmonInputSvc.h:62
python.ZdcOnlineRecMonitorConfig.partition
partition
Definition: ZdcOnlineRecMonitorConfig.py:328
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ByteStreamEmonInputSvc::m_publish_target
int m_publish_target
Definition: ByteStreamEmonInputSvc.h:110
ByteStreamEmonInputSvc::m_l1logic
Gaudi::Property< std::string > m_l1logic
Definition: ByteStreamEmonInputSvc.h:82
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
TrigConf::L1Item::ctpId
unsigned int ctpId() const
Accessor to the CTP ID.
Definition: L1Item.cxx:34
DataHeader::Input
@ Input
Definition: DataHeader.h:125
ByteStreamEmonInputSvc::check_publish
void check_publish()
Definition: ByteStreamEmonInputSvc.cxx:485
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ByteStreamEmonInputSvc::nextEvent
virtual const RawEvent * nextEvent() override
Definition: ByteStreamEmonInputSvc.cxx:352
ByteStreamEmonInputSvc::m_groupName
Gaudi::Property< std::string > m_groupName
Definition: ByteStreamEmonInputSvc.h:89
Issue
Configuration Issue
Definition: PscIssues.h:31
ByteStreamEmonInputSvc::m_robProvider
ServiceHandle< IROBDataProviderSvc > m_robProvider
Definition: ByteStreamEmonInputSvc.h:114
TRT::Track::event
@ event
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:74
JiveXML::Event
struct Event_t Event
Definition: ONCRPCServer.h:65
ByteStreamEmonInputSvc::m_exclude
Gaudi::Property< std::string > m_exclude
Definition: ByteStreamEmonInputSvc.h:75
ByteStreamMetadataContainer.h
This file contains the class definition for the ByteStreamMetadataContainer class.
ByteStreamEmonInputSvc::m_trigger_type
Gaudi::Property< unsigned int > m_trigger_type
Definition: ByteStreamEmonInputSvc.h:88
Root::AND
@ AND
Definition: TGRLCollection.h:32
ByteStreamEmonInputSvc::ByteStreamEmonInputSvc
ByteStreamEmonInputSvc(const std::string &name, ISvcLocator *svcloc)
Constructors:
Definition: ByteStreamEmonInputSvc.cxx:152
ByteStreamEmonInputSvc::m_partition
Gaudi::Property< std::string > m_partition
Definition: ByteStreamEmonInputSvc.h:67
ByteStreamEmonInputSvc::initialize
virtual StatusCode initialize() override
Definition: ByteStreamEmonInputSvc.cxx:162
CxxUtils::RefCountedPtr
Simple smart pointer for Gaudi-style refcounted objects.
Definition: RefCountedPtr.h:39
ByteStreamEmonInputSvc::start
virtual StatusCode start() override
Definition: ByteStreamEmonInputSvc.cxx:618
ByteStreamEmonInputSvc::m_l1origin
Gaudi::Property< std::string > m_l1origin
Definition: ByteStreamEmonInputSvc.h:83
Logic
@ Logic
Definition: BaseObject.h:11
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:459
ByteStreamEmonInputSvc::m_l1MenuKey
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
Definition: ByteStreamEmonInputSvc.h:98
ByteStreamEmonInputSvc::getIterator
bool getIterator()
Definition: ByteStreamEmonInputSvc.cxx:222
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
ByteStreamEmonInputSvc::m_frequency_counter
int m_frequency_counter
Definition: ByteStreamEmonInputSvc.h:109
ByteStreamEmonInputSvc::m_l1items
Gaudi::Property< std::vector< unsigned int > > m_l1items
Definition: ByteStreamEmonInputSvc.h:81
ByteStreamEmonInputSvc::finalize
virtual StatusCode finalize() override
Definition: ByteStreamEmonInputSvc.cxx:654
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
Cut::signal
@ signal
Definition: SUSYToolsAlg.cxx:67
ByteStreamEmonInputSvc::m_convertEfficiency
Gaudi::Property< bool > m_convertEfficiency
Definition: ByteStreamEmonInputSvc.h:95
ByteStreamEmonInputSvc::m_include_rex
boost::regex m_include_rex
Definition: ByteStreamEmonInputSvc.h:106
setProperty
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Definition: NanobindBindings.cxx:67
DataHeaderElement
This class provides a persistent form for the TransientAddress.
Definition: DataHeader.h:37
python.handimod.now
now
Definition: handimod.py:674
ByteStreamEmonInputSvc::m_timeout
Gaudi::Property< int > m_timeout
Definition: ByteStreamEmonInputSvc.h:92
ByteStreamEmonInputSvc::m_eventIt
std::auto_ptr< emon::EventIterator > m_eventIt
Event iterator.
Definition: ByteStreamEmonInputSvc.h:102
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
ByteStreamEmonInputSvc::m_buffer_size
Gaudi::Property< unsigned int > m_buffer_size
Definition: ByteStreamEmonInputSvc.h:90
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
OFFLINE_FRAGMENTS_NAMESPACE::DataType
uint32_t DataType
Definition: RawEvent.h:24
ByteStreamEmonInputSvc::m_frequency
Gaudi::Property< int > m_frequency
Definition: ByteStreamEmonInputSvc.h:76
ByteStreamEmonInputSvc::updateHandler
void updateHandler(Gaudi::Details::PropertyBase &p)
Definition: ByteStreamEmonInputSvc.cxx:644
DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition: DataHeader.h:123
LArCellNtuple.argv
argv
Definition: LArCellNtuple.py:152
ByteStreamEmonInputSvc::m_stream_names
Gaudi::Property< std::vector< std::string > > m_stream_names
Definition: ByteStreamEmonInputSvc.h:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
python.getProblemFolderFromLogs.st
st
Definition: getProblemFolderFromLogs.py:68
ByteStreamEmonInputSvc::get_runparams
void get_runparams()
Definition: ByteStreamEmonInputSvc.cxx:578
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition: ByteStreamAddress.h:28
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:37
TrigConf::L1Menu::item
L1Item item(const std::string &itemName) const
Get item by name.
Definition: L1Menu.cxx:201
calibdata.exception
exception
Definition: calibdata.py:495
ByteStreamEmonInputSvc::m_inputMetaDataStore
ServiceHandle< StoreGateSvc > m_inputMetaDataStore
Definition: ByteStreamEmonInputSvc.h:112
ByteStreamEmonInputSvc::m_corrupted_events
Gaudi::Property< bool > m_corrupted_events
Definition: ByteStreamEmonInputSvc.h:93
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ByteStreamEmonInputSvc::previousEvent
virtual const RawEvent * previousEvent() override
Implementation of the ByteStreamInputSvc interface methods.
Definition: ByteStreamEmonInputSvc.cxx:344
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:19
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
ByteStreamAddress.h
ByteStreamEmonInputSvc::m_exclude_rex
boost::regex m_exclude_rex
Definition: ByteStreamEmonInputSvc.h:107
DataHeader.h
This file contains the class definition for the DataHeader and DataHeaderElement classes.
calibdata.exit
exit
Definition: calibdata.py:235
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ByteStreamEmonInputSvc::m_provider
OHRootProvider * m_provider
Definition: ByteStreamEmonInputSvc.h:104
ByteStreamEmonInputSvc::m_publish
Gaudi::Property< std::string > m_publish
Definition: ByteStreamEmonInputSvc.h:71
DataHeader::insert
void insert(const SG::TransientAddress *sgAddress, IOpaqueAddress *tokAddress=0, const std::string &pTag="")
Insert a new element into the "DataObject" vector.
Definition: DataHeader.cxx:261
ByteStreamEmonInputSvc::m_readDetectorMask
Gaudi::Property< bool > m_readDetectorMask
Definition: ByteStreamEmonInputSvc.h:91
ByteStreamEmonInputSvc::m_histSvc
ServiceHandle< ITHistSvc > m_histSvc
Definition: ByteStreamEmonInputSvc.h:115
DataHeader::setStatus
void setStatus(statusFlag status)
Set StatusFlag enum for DataHeader.
Definition: DataHeader.cxx:229
EventAuxInfo.h
PixelCalibrationConfig.tot
tot
Definition: PixelCalibrationConfig.py:28
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ByteStreamEmonInputSvc::currentEvent
virtual const RawEvent * currentEvent() const override
Implementation of the ByteStreamInputSvc interface methods.
Definition: ByteStreamEmonInputSvc.cxx:480
ByteStreamEmonInputSvc::m_key_count
Gaudi::Property< unsigned int > m_key_count
Definition: ByteStreamEmonInputSvc.h:70
ByteStreamEmonInputSvc::m_is_server
Gaudi::Property< std::string > m_is_server
Definition: ByteStreamEmonInputSvc.h:73
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
python.PyKernel.init
def init(v_theApp, v_rootStream=None)
Definition: PyKernel.py:45
EventInfo.h
ByteStreamEmonInputSvc::m_include
Gaudi::Property< std::string > m_include
Definition: ByteStreamEmonInputSvc.h:74
ByteStreamEmonInputSvc::m_clearHistograms
Gaudi::Property< bool > m_clearHistograms
Definition: ByteStreamEmonInputSvc.h:79
ByteStreamEmonInputSvc::m_updatePeriod
Gaudi::Property< int > m_updatePeriod
Definition: ByteStreamEmonInputSvc.h:77
ByteStreamEmonInputSvc::m_value
Gaudi::Property< std::vector< std::string > > m_value
Definition: ByteStreamEmonInputSvc.h:69
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
h
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Root::OR
@ OR
Definition: TGRLCollection.h:32
extract_histogram_tag.h
ByteStreamEmonInputSvc::m_l1names
Gaudi::Property< std::vector< std::string > > m_l1names
Definition: ByteStreamEmonInputSvc.h:80
ByteStreamEmonInputSvc.h
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
ByteStreamEmonInputSvc::m_stream_logic
Gaudi::Property< std::string > m_stream_logic
Definition: ByteStreamEmonInputSvc.h:86
checker_macros.h
Define macros for attributes used to control the static checker.
SG::DataProxy
Definition: DataProxy.h:45
python.TrigInDetArtSteps.timeout
timeout
Definition: TrigInDetArtSteps.py:36
StoreGateSvc.h
ByteStreamEmonInputSvc::m_updatePeriodRange
Gaudi::Property< float > m_updatePeriodRange
Definition: ByteStreamEmonInputSvc.h:78
ByteStreamEmonInputSvc::m_key
Gaudi::Property< std::string > m_key
Definition: ByteStreamEmonInputSvc.h:68