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