CMS 3D CMS Logo

tracer_setupFile.cc
Go to the documentation of this file.
1 #include "tracer_setupFile.h"
3 
4 #include <chrono>
5 
6 #include <sstream>
7 #include <type_traits>
8 #include <cassert>
9 #include <typeindex>
10 
12 
18 
26 
29 
31 
33 
34 namespace {
35  using duration_t = std::chrono::microseconds;
36  using clock_t = std::chrono::steady_clock;
37  auto const now = clock_t::now;
38 
39  enum class Step : char {
40  preSourceTransition = 'S',
41  postSourceTransition = 's',
42  preModulePrefetching = 'P',
43  postModulePrefetching = 'p',
44  preModuleEventAcquire = 'A',
45  postModuleEventAcquire = 'a',
46  preModuleTransition = 'M',
47  preEventReadFromSource = 'R',
48  postEventReadFromSource = 'r',
49  preModuleEventDelayedGet = 'D',
50  postModuleEventDelayedGet = 'd',
51  postModuleTransition = 'm',
52  preESModulePrefetching = 'Q',
53  postESModulePrefetching = 'q',
54  preESModule = 'N',
55  postESModule = 'n',
56  preESModuleAcquire = 'B',
57  postESModuleAcquire = 'b',
58  preFrameworkTransition = 'F',
59  postFrameworkTransition = 'f'
60  };
61 
62  enum class Phase : short {
63  destruction = -14,
64  endJob = -11,
65  endStream = -10,
66  writeProcessBlock = -9,
67  endProcessBlock = -8,
68  globalWriteRun = -6,
69  globalEndRun = -5,
70  streamEndRun = -4,
71  globalWriteLumi = -3,
72  globalEndLumi = -2,
73  streamEndLumi = -1,
74  Event = 0,
75  streamBeginLumi = 1,
76  globalBeginLumi = 2,
77  streamBeginRun = 4,
78  globalBeginRun = 5,
79  accessInputProcessBlock = 7,
80  beginProcessBlock = 8,
81  beginStream = 10,
82  beginJob = 11,
83  esSync = 12,
84  esSyncEnqueue = 13,
85  construction = 14,
86  startTracing = 15
87  };
88 
89  std::ostream& operator<<(std::ostream& os, Step const s) {
90  os << static_cast<std::underlying_type_t<Step>>(s);
91  return os;
92  }
93 
94  std::ostream& operator<<(std::ostream& os, Phase const s) {
95  os << static_cast<std::underlying_type_t<Phase>>(s);
96  return os;
97  }
98 
99  template <Step S, typename... ARGS>
100  std::string assembleMessage(ARGS const... args) {
101  std::ostringstream oss;
102  oss << S;
103  concatenate(oss, args...);
104  oss << '\n';
105  return oss.str();
106  }
107 
108  Phase toTransitionImpl(edm::StreamContext const& iContext) {
109  using namespace edm;
110  switch (iContext.transition()) {
112  return Phase::beginStream;
114  return Phase::streamBeginRun;
116  return Phase::streamBeginLumi;
118  return Phase::Event;
120  return Phase::streamEndLumi;
122  return Phase::streamEndRun;
124  return Phase::endStream;
125  default:
126  break;
127  }
128  assert(false);
129  return Phase::Event;
130  }
131 
132  auto toTransition(edm::StreamContext const& iContext) -> std::underlying_type_t<Phase> {
133  return static_cast<std::underlying_type_t<Phase>>(toTransitionImpl(iContext));
134  }
135 
136  Phase toTransitionImpl(edm::GlobalContext const& iContext) {
137  using namespace edm;
138  switch (iContext.transition()) {
140  return Phase::beginProcessBlock;
142  return Phase::accessInputProcessBlock;
144  return Phase::globalBeginRun;
146  return Phase::globalBeginLumi;
148  return Phase::globalEndLumi;
150  return Phase::globalWriteLumi;
152  return Phase::globalEndRun;
154  return Phase::globalWriteRun;
156  return Phase::endProcessBlock;
158  return Phase::writeProcessBlock;
159  default:
160  break;
161  }
162  assert(false);
163  return Phase::Event;
164  }
165  auto toTransition(edm::GlobalContext const& iContext) -> std::underlying_type_t<Phase> {
166  return static_cast<std::underlying_type_t<Phase>>(toTransitionImpl(iContext));
167  }
168 
169  unsigned int toTransitionIndex(edm::GlobalContext const& iContext) {
174  return 0;
175  }
179  return iContext.runIndex();
180  }
181  return iContext.luminosityBlockIndex();
182  }
183 
184  template <Step S>
185  struct ESModuleState {
186  ESModuleState(std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile,
187  decltype(now()) beginTime,
188  std::shared_ptr<std::vector<std::type_index>> recordIndices)
189  : logFile_{logFile}, recordIndices_{recordIndices}, beginTime_{beginTime} {}
190 
191  void operator()(edm::eventsetup::EventSetupRecordKey const& iKey,
192  edm::ESModuleCallingContext const& iContext) const {
193  using namespace edm;
194  auto const t = std::chrono::duration_cast<duration_t>(now() - beginTime_).count();
195  auto top = iContext.getTopModuleCallingContext();
196  short int phase = 0;
197  unsigned long phaseID = 0xFFFFFFFF;
198  if (top->type() == ParentContext::Type::kGlobal) {
199  auto global = top->globalContext();
200  phase = toTransition(*global);
201  phaseID = toTransitionIndex(*global);
202  } else if (top->type() == ParentContext::Type::kStream) {
203  auto stream = top->getStreamContext();
204  phase = toTransition(*stream);
205  phaseID = stream_id(*stream);
206  } else if (top->type() == ParentContext::Type::kPlaceInPath) {
207  auto stream = top->getStreamContext();
208  phase = toTransition(*stream);
209  phaseID = stream_id(*stream);
210  }
211  auto recordIndex = findRecordIndices(iKey);
212  long long requestingModuleID;
213  if (iContext.type() == ESParentContext::Type::kModule) {
214  requestingModuleID = iContext.moduleCallingContext()->moduleDescription()->id();
215  } else {
216  requestingModuleID =
217  -1 * static_cast<long long>(iContext.esmoduleCallingContext()->componentDescription()->id_ + 1);
218  }
219  auto msg = assembleMessage<S>(
220  phase, phaseID, iContext.componentDescription()->id_ + 1, recordIndex, requestingModuleID, t);
221  logFile_->write(std::move(msg));
222  }
223 
224  private:
225  int findRecordIndices(edm::eventsetup::EventSetupRecordKey const& iKey) const {
226  auto index = std::type_index(iKey.type().value());
227  auto itFind = std::find(recordIndices_->begin(), recordIndices_->end(), index);
228  return itFind - recordIndices_->begin();
229  }
230 
231  std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile_;
232  std::shared_ptr<std::vector<std::type_index>> recordIndices_;
233  decltype(now()) beginTime_;
234  };
235 
236  template <Step S>
237  struct GlobalEDModuleState {
238  GlobalEDModuleState(std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile, decltype(now()) beginTime)
239  : logFile_{logFile}, beginTime_{beginTime} {}
240 
241  void operator()(edm::GlobalContext const& gc, edm::ModuleCallingContext const& mcc) {
242  using namespace edm;
243  auto const t = std::chrono::duration_cast<duration_t>(now() - beginTime_).count();
244  long requestingModuleID = 0;
245  if (mcc.type() == ParentContext::Type::kModule) {
246  requestingModuleID = module_id(*mcc.parent().moduleCallingContext());
247  }
248  auto msg = assembleMessage<S>(toTransition(gc), toTransitionIndex(gc), module_id(mcc), requestingModuleID, t);
249  logFile_->write(std::move(msg));
250  }
251 
252  private:
253  std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile_;
254  decltype(now()) beginTime_;
255  };
256 
257  template <Step S>
258  struct StreamEDModuleState {
259  StreamEDModuleState(std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile, decltype(now()) beginTime)
260  : logFile_{logFile}, beginTime_{beginTime} {}
261 
262  void operator()(edm::StreamContext const& sc, edm::ModuleCallingContext const& mcc) {
263  using namespace edm;
264  auto const t = std::chrono::duration_cast<duration_t>(now() - beginTime_).count();
265  long requestingModuleID = 0;
266  if (mcc.type() == ParentContext::Type::kModule) {
267  requestingModuleID = module_id(*mcc.parent().moduleCallingContext());
268  }
269  auto msg = assembleMessage<S>(toTransition(sc), stream_id(sc), module_id(mcc), requestingModuleID, t);
270  logFile_->write(std::move(msg));
271  }
272 
273  private:
274  std::shared_ptr<edm::ThreadSafeOutputFileStream> logFile_;
275  decltype(now()) beginTime_;
276  };
277 
278  struct ModuleCtrDtr {
279  long long beginConstruction = 0;
280  long long endConstruction = 0;
281  long long beginDestruction = 0;
282  long long endDestruction = 0;
283  };
284 } // namespace
285 
287  void setupFile(std::string const& iFileName, edm::ActivityRegistry& iRegistry) {
288  auto beginTracer = now();
289  using namespace std::chrono;
290 
291  if (iFileName.empty()) {
292  return;
293  }
294 
295  auto logFile = std::make_shared<edm::ThreadSafeOutputFileStream>(iFileName);
296 
297  auto beginTime = TimingServiceBase::jobStartTime();
298 
299  auto esModuleLabelsPtr = std::make_shared<std::vector<std::string>>();
300  auto& esModuleLabels = *esModuleLabelsPtr;
301  //acquire names for all the ED and ES modules
302  iRegistry.watchPostESModuleRegistration([&esModuleLabels](auto const& iDescription) {
303  if (esModuleLabels.size() <= iDescription.id_ + 1) {
304  esModuleLabels.resize(iDescription.id_ + 2);
305  }
306  //NOTE: we want the id to start at 1 not 0
307  if (not iDescription.label_.empty()) {
308  esModuleLabels[iDescription.id_ + 1] = iDescription.label_;
309  } else {
310  esModuleLabels[iDescription.id_ + 1] = iDescription.type_;
311  }
312  });
313  auto moduleCtrDtrPtr = std::make_shared<std::vector<ModuleCtrDtr>>();
314  auto& moduleCtrDtr = *moduleCtrDtrPtr;
315  auto moduleLabelsPtr = std::make_shared<std::vector<std::string>>();
316  auto& moduleLabels = *moduleLabelsPtr;
317  iRegistry.watchPreModuleConstruction([&moduleLabels, &moduleCtrDtr, beginTime](ModuleDescription const& md) {
318  auto const t = duration_cast<duration_t>(now() - beginTime).count();
319 
320  auto const mid = md.id();
321  if (mid < moduleLabels.size()) {
322  moduleLabels[mid] = md.moduleLabel();
323  moduleCtrDtr[mid].beginConstruction = t;
324  } else {
325  moduleLabels.resize(mid + 1);
326  moduleLabels.back() = md.moduleLabel();
327  moduleCtrDtr.resize(mid + 1);
328  moduleCtrDtr.back().beginConstruction = t;
329  }
330  });
331  iRegistry.watchPostModuleConstruction([&moduleCtrDtr, beginTime](auto const& md) {
332  auto const t = duration_cast<duration_t>(now() - beginTime).count();
333  moduleCtrDtr[md.id()].endConstruction = t;
334  });
335 
336  iRegistry.watchPreModuleDestruction([&moduleCtrDtr, beginTime](auto const& md) {
337  auto const t = duration_cast<duration_t>(now() - beginTime).count();
338  moduleCtrDtr[md.id()].beginDestruction = t;
339  });
340  iRegistry.watchPostModuleDestruction([&moduleCtrDtr, beginTime](auto const& md) {
341  auto const t = duration_cast<duration_t>(now() - beginTime).count();
342  moduleCtrDtr[md.id()].endDestruction = t;
343  });
344 
345  auto sourceCtrPtr = std::make_shared<ModuleCtrDtr>();
346  auto& sourceCtr = *sourceCtrPtr;
347  iRegistry.watchPreSourceConstruction([&sourceCtr, beginTime](auto const&) {
348  auto const t = duration_cast<duration_t>(now() - beginTime).count();
349  sourceCtr.beginConstruction = t;
350  });
351  iRegistry.watchPostSourceConstruction([&sourceCtr, beginTime](auto const&) {
352  auto const t = duration_cast<duration_t>(now() - beginTime).count();
353  sourceCtr.endConstruction = t;
354  });
355  //iRegistry.watchPreModuleDestruction([&moduleLabels](auto& md) { moduleLabels[md.id()] = ""; });
356 
357  auto recordIndices = std::make_shared<std::vector<std::type_index>>();
359  [logFile, recordIndices](auto const& recordsToResolvers, auto const&) mutable {
360  std::ostringstream oss;
361 
362  auto recordKeys = recordsToResolvers.recordKeys();
363  std::sort(recordKeys.begin(), recordKeys.end());
364  std::vector<std::string> recordNames;
365  //want id to start at 1 not 0
366  recordNames.reserve(recordKeys.size() + 1);
367  recordNames.emplace_back("");
368  recordIndices->reserve(recordKeys.size() + 1);
369  recordIndices->push_back(std::type_index(typeid(void)));
370  for (auto const& r : recordKeys) {
371  recordNames.push_back(r.name());
372  recordIndices->push_back(std::type_index(r.type().value()));
373  }
374 
375  moduleIdToLabel(oss, recordNames, 'R', "Record ID", "Record name");
376  logFile->write(oss.str());
377  });
378 
379  iRegistry.watchPreBeginJob(
380  [logFile, moduleLabelsPtr, esModuleLabelsPtr, moduleCtrDtrPtr, sourceCtrPtr, beginTime, beginTracer](
381  auto&, auto&) mutable {
382  {
383  std::ostringstream oss;
384  moduleIdToLabel(oss, *moduleLabelsPtr, 'M', "EDModule ID", "Module label");
385  logFile->write(oss.str());
386  moduleLabelsPtr.reset();
387  }
388  {
389  std::ostringstream oss;
390  moduleIdToLabel(oss, *esModuleLabelsPtr, 'N', "ESModule ID", "ESModule label");
391  logFile->write(oss.str());
392  esModuleLabelsPtr.reset();
393  }
394  {
395  auto const tracerStart = duration_cast<duration_t>(beginTracer - beginTime).count();
396  auto msg = assembleMessage<Step::preFrameworkTransition>(
397  static_cast<std::underlying_type_t<Phase>>(Phase::startTracing), 0, 0, 0, 0, tracerStart);
398  logFile->write(std::move(msg));
399  }
400  //NOTE: the source construction can run concurently with module construction so we need to properly
401  // interleave its timing in with the modules
402  auto srcBeginConstruction = sourceCtrPtr->beginConstruction;
403  auto srcEndConstruction = sourceCtrPtr->endConstruction;
404  sourceCtrPtr.reset();
405  auto handleSource = [&srcBeginConstruction, &srcEndConstruction, &logFile](long long iTime) mutable {
406  if (srcBeginConstruction != 0 and srcBeginConstruction < iTime) {
407  auto bmsg = assembleMessage<Step::preSourceTransition>(
408  static_cast<std::underlying_type_t<Phase>>(Phase::construction), 0, srcBeginConstruction);
409  logFile->write(std::move(bmsg));
410  srcBeginConstruction = 0;
411  }
412  if (srcEndConstruction != 0 and srcEndConstruction < iTime) {
413  auto bmsg = assembleMessage<Step::postSourceTransition>(
414  static_cast<std::underlying_type_t<Phase>>(Phase::construction), 0, srcEndConstruction);
415  logFile->write(std::move(bmsg));
416  srcEndConstruction = 0;
417  }
418  };
419  {
420  int id = 0;
421  for (auto const& ctr : *moduleCtrDtrPtr) {
422  if (ctr.beginConstruction != 0) {
423  handleSource(ctr.beginConstruction);
424  auto bmsg = assembleMessage<Step::preModuleTransition>(
425  static_cast<std::underlying_type_t<Phase>>(Phase::construction), 0, id, 0, ctr.beginConstruction);
426  logFile->write(std::move(bmsg));
427  handleSource(ctr.endConstruction);
428  auto emsg = assembleMessage<Step::postModuleTransition>(
429  static_cast<std::underlying_type_t<Phase>>(Phase::construction), 0, id, 0, ctr.endConstruction);
430  logFile->write(std::move(emsg));
431  }
432  ++id;
433  }
434  id = 0;
435  for (auto const& dtr : *moduleCtrDtrPtr) {
436  if (dtr.beginDestruction != 0) {
437  handleSource(dtr.beginDestruction);
438  auto bmsg = assembleMessage<Step::preModuleTransition>(
439  static_cast<std::underlying_type_t<Phase>>(Phase::destruction), 0, id, 0, dtr.beginDestruction);
440  logFile->write(std::move(bmsg));
441  handleSource(dtr.endDestruction);
442  auto emsg = assembleMessage<Step::postModuleTransition>(
443  static_cast<std::underlying_type_t<Phase>>(Phase::destruction), 0, id, 0, dtr.endDestruction);
444  logFile->write(std::move(emsg));
445  }
446  ++id;
447  }
448  moduleCtrDtrPtr.reset();
449  }
450  auto const t = duration_cast<duration_t>(now() - beginTime).count();
451  handleSource(t);
452  auto msg = assembleMessage<Step::preFrameworkTransition>(
453  static_cast<std::underlying_type_t<Phase>>(Phase::beginJob), 0, 0, 0, 0, t);
454  logFile->write(std::move(msg));
455  });
456  iRegistry.watchPostBeginJob([logFile, beginTime]() {
457  auto const t = duration_cast<duration_t>(now() - beginTime).count();
458  auto msg = assembleMessage<Step::postFrameworkTransition>(
459  static_cast<std::underlying_type_t<Phase>>(Phase::beginJob), 0, 0, 0, 0, t);
460  logFile->write(std::move(msg));
461  });
462 
463  iRegistry.watchPreEndJob([logFile, beginTime]() {
464  auto const t = duration_cast<duration_t>(now() - beginTime).count();
465  auto msg = assembleMessage<Step::preFrameworkTransition>(
466  static_cast<std::underlying_type_t<Phase>>(Phase::endJob), 0, 0, 0, 0, t);
467  logFile->write(std::move(msg));
468  });
469  iRegistry.watchPostEndJob([logFile, beginTime]() {
470  auto const t = duration_cast<duration_t>(now() - beginTime).count();
471  auto msg = assembleMessage<Step::postFrameworkTransition>(
472  static_cast<std::underlying_type_t<Phase>>(Phase::endJob), 0, 0, 0, 0, t);
473  logFile->write(std::move(msg));
474  });
475 
476  iRegistry.watchPreEvent([logFile, beginTime](auto const& sc) {
477  auto const t = duration_cast<duration_t>(now() - beginTime).count();
478  auto msg = assembleMessage<Step::preFrameworkTransition>(static_cast<std::underlying_type_t<Phase>>(Phase::Event),
479  stream_id(sc),
480  sc.eventID().run(),
481  sc.eventID().luminosityBlock(),
482  sc.eventID().event(),
483  t);
484  logFile->write(std::move(msg));
485  });
486  iRegistry.watchPostEvent([logFile, beginTime](auto const& sc) {
487  auto const t = duration_cast<duration_t>(now() - beginTime).count();
488  auto msg =
489  assembleMessage<Step::postFrameworkTransition>(static_cast<std::underlying_type_t<Phase>>(Phase::Event),
490  stream_id(sc),
491  sc.eventID().run(),
492  sc.eventID().luminosityBlock(),
493  sc.eventID().event(),
494  t);
495  logFile->write(std::move(msg));
496  });
497  {
498  auto preGlobal = [logFile, beginTime](GlobalContext const& gc) {
499  auto const t = duration_cast<duration_t>(now() - beginTime).count();
500  auto msg = assembleMessage<Step::preFrameworkTransition>(toTransition(gc),
501  toTransitionIndex(gc),
502  gc.luminosityBlockID().run(),
504  0,
505  t);
506  logFile->write(std::move(msg));
507  };
508  iRegistry.watchPreBeginProcessBlock(preGlobal);
509  iRegistry.watchPreEndProcessBlock(preGlobal);
510  iRegistry.watchPreWriteProcessBlock(preGlobal);
511  iRegistry.watchPreAccessInputProcessBlock(preGlobal);
512  iRegistry.watchPreGlobalBeginRun(preGlobal);
513  iRegistry.watchPreGlobalBeginLumi(preGlobal);
514  iRegistry.watchPreGlobalEndLumi(preGlobal);
515  iRegistry.watchPreGlobalWriteLumi(preGlobal);
516  iRegistry.watchPreGlobalEndRun(preGlobal);
517  iRegistry.watchPreGlobalWriteRun(preGlobal);
518  }
519  {
520  auto postGlobal = [logFile, beginTime](GlobalContext const& gc) {
521  auto const t = duration_cast<duration_t>(now() - beginTime).count();
522  auto msg = assembleMessage<Step::postFrameworkTransition>(toTransition(gc),
523  toTransitionIndex(gc),
524  gc.luminosityBlockID().run(),
526  0,
527  t);
528  logFile->write(std::move(msg));
529  };
530  iRegistry.watchPostBeginProcessBlock(postGlobal);
531  iRegistry.watchPostEndProcessBlock(postGlobal);
532  iRegistry.watchPostWriteProcessBlock(postGlobal);
533  iRegistry.watchPostAccessInputProcessBlock(postGlobal);
534  iRegistry.watchPostGlobalBeginRun(postGlobal);
535  iRegistry.watchPostGlobalBeginLumi(postGlobal);
536  iRegistry.watchPostGlobalEndLumi(postGlobal);
537  iRegistry.watchPostGlobalWriteLumi(postGlobal);
538  iRegistry.watchPostGlobalEndRun(postGlobal);
539  iRegistry.watchPostGlobalWriteRun(postGlobal);
540  }
541  {
542  auto preStream = [logFile, beginTime](StreamContext const& sc) {
543  auto const t = duration_cast<duration_t>(now() - beginTime).count();
544  auto msg = assembleMessage<Step::preFrameworkTransition>(
545  toTransition(sc), stream_id(sc), sc.eventID().run(), sc.eventID().luminosityBlock(), 0, t);
546  logFile->write(std::move(msg));
547  };
548  iRegistry.watchPreStreamBeginRun(preStream);
549  iRegistry.watchPreStreamBeginLumi(preStream);
550  iRegistry.watchPreStreamEndLumi(preStream);
551  iRegistry.watchPreStreamEndRun(preStream);
552  }
553  {
554  auto postStream = [logFile, beginTime](StreamContext const& sc) {
555  auto const t = duration_cast<duration_t>(now() - beginTime).count();
556  auto msg = assembleMessage<Step::postFrameworkTransition>(
557  toTransition(sc), stream_id(sc), sc.eventID().run(), sc.eventID().luminosityBlock(), 0, t);
558  logFile->write(std::move(msg));
559  };
560  iRegistry.watchPostStreamBeginRun(postStream);
561  iRegistry.watchPostStreamBeginLumi(postStream);
562  iRegistry.watchPostStreamEndLumi(postStream);
563  iRegistry.watchPostStreamEndRun(postStream);
564  }
565  {
566  iRegistry.watchESSyncIOVQueuing([logFile, beginTime](IOVSyncValue const& sv) {
567  auto const t = duration_cast<duration_t>(now() - beginTime).count();
568  auto msg = assembleMessage<Step::preFrameworkTransition>(
569  static_cast<std::underlying_type_t<Phase>>(Phase::esSyncEnqueue),
570  -1,
571  sv.eventID().run(),
572  sv.eventID().luminosityBlock(),
573  0,
574  t);
575  logFile->write(std::move(msg));
576  });
577  iRegistry.watchPreESSyncIOV([logFile, beginTime](IOVSyncValue const& sv) {
578  auto const t = duration_cast<duration_t>(now() - beginTime).count();
579  auto msg =
580  assembleMessage<Step::preFrameworkTransition>(static_cast<std::underlying_type_t<Phase>>(Phase::esSync),
581  -1,
582  sv.eventID().run(),
583  sv.eventID().luminosityBlock(),
584  0,
585  t);
586  logFile->write(std::move(msg));
587  });
588  iRegistry.watchPostESSyncIOV([logFile, beginTime](IOVSyncValue const& sv) {
589  auto const t = duration_cast<duration_t>(now() - beginTime).count();
590  auto msg =
591  assembleMessage<Step::postFrameworkTransition>(static_cast<std::underlying_type_t<Phase>>(Phase::esSync),
592  -1,
593  sv.eventID().run(),
594  sv.eventID().luminosityBlock(),
595  0,
596  t);
597  logFile->write(std::move(msg));
598  });
599  }
600  {
601  iRegistry.watchPreSourceEvent([logFile, beginTime](StreamID id) {
602  auto const t = duration_cast<duration_t>(now() - beginTime).count();
603  auto msg = assembleMessage<Step::preSourceTransition>(
604  static_cast<std::underlying_type_t<Phase>>(Phase::Event), id.value(), t);
605  logFile->write(std::move(msg));
606  });
607  iRegistry.watchPostSourceEvent([logFile, beginTime](StreamID id) {
608  auto const t = duration_cast<duration_t>(now() - beginTime).count();
609  auto msg = assembleMessage<Step::postSourceTransition>(
610  static_cast<std::underlying_type_t<Phase>>(Phase::Event), id.value(), t);
611  logFile->write(std::move(msg));
612  });
613 
614  iRegistry.watchPreSourceRun([logFile, beginTime](RunIndex id) {
615  auto const t = duration_cast<duration_t>(now() - beginTime).count();
616  auto msg = assembleMessage<Step::preSourceTransition>(
617  static_cast<std::underlying_type_t<Phase>>(Phase::globalBeginRun), id.value(), t);
618  logFile->write(std::move(msg));
619  });
620  iRegistry.watchPostSourceRun([logFile, beginTime](RunIndex id) {
621  auto const t = duration_cast<duration_t>(now() - beginTime).count();
622  auto msg = assembleMessage<Step::postSourceTransition>(
623  static_cast<std::underlying_type_t<Phase>>(Phase::globalBeginRun), id.value(), t);
624  logFile->write(std::move(msg));
625  });
626 
627  iRegistry.watchPreSourceLumi([logFile, beginTime](auto id) {
628  auto const t = duration_cast<duration_t>(now() - beginTime).count();
629  auto msg = assembleMessage<Step::preSourceTransition>(
630  static_cast<std::underlying_type_t<Phase>>(Phase::globalBeginLumi), id.value(), t);
631  logFile->write(std::move(msg));
632  });
633  iRegistry.watchPostSourceLumi([logFile, beginTime](auto id) {
634  auto const t = duration_cast<duration_t>(now() - beginTime).count();
635  auto msg = assembleMessage<Step::postSourceTransition>(
636  static_cast<std::underlying_type_t<Phase>>(Phase::globalBeginLumi), id.value(), t);
637  logFile->write(std::move(msg));
638  });
639 
640  //ED Modules
641  iRegistry.watchPreModuleBeginJob([logFile, beginTime](auto const& md) {
642  auto const t = duration_cast<duration_t>(now() - beginTime).count();
643  auto msg = assembleMessage<Step::preModuleTransition>(
644  static_cast<std::underlying_type_t<Phase>>(Phase::beginJob), 0, md.id(), 0, t);
645  logFile->write(std::move(msg));
646  });
647  iRegistry.watchPostModuleBeginJob([logFile, beginTime](auto const& md) {
648  auto const t = duration_cast<duration_t>(now() - beginTime).count();
649  auto msg = assembleMessage<Step::postModuleTransition>(
650  static_cast<std::underlying_type_t<Phase>>(Phase::beginJob), 0, md.id(), 0, t);
651  logFile->write(std::move(msg));
652  });
653 
654  iRegistry.watchPreModuleBeginStream(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
655  iRegistry.watchPostModuleBeginStream(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
656 
657  iRegistry.watchPreModuleEndStream(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
658  iRegistry.watchPostModuleEndStream(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
659 
660  iRegistry.watchPreModuleEndJob([logFile, beginTime](auto const& md) {
661  auto const t = duration_cast<duration_t>(now() - beginTime).count();
662  auto msg = assembleMessage<Step::preModuleTransition>(
663  static_cast<std::underlying_type_t<Phase>>(Phase::endJob), 0, md.id(), 0, t);
664  logFile->write(std::move(msg));
665  });
666  iRegistry.watchPostModuleEndJob([logFile, beginTime](auto const& md) {
667  auto const t = duration_cast<duration_t>(now() - beginTime).count();
668  auto msg = assembleMessage<Step::postModuleTransition>(
669  static_cast<std::underlying_type_t<Phase>>(Phase::endJob), 0, md.id(), 0, t);
670  logFile->write(std::move(msg));
671  });
672 
673  iRegistry.watchPreModuleEventPrefetching(StreamEDModuleState<Step::preModulePrefetching>(logFile, beginTime));
674  iRegistry.watchPostModuleEventPrefetching(StreamEDModuleState<Step::postModulePrefetching>(logFile, beginTime));
675 
676  iRegistry.watchPreModuleEvent(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
677  iRegistry.watchPostModuleEvent(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
678  iRegistry.watchPreModuleEventAcquire(StreamEDModuleState<Step::preModuleEventAcquire>(logFile, beginTime));
679  iRegistry.watchPostModuleEventAcquire(StreamEDModuleState<Step::postModuleEventAcquire>(logFile, beginTime));
680  iRegistry.watchPreModuleEventDelayedGet(StreamEDModuleState<Step::preModuleEventDelayedGet>(logFile, beginTime));
682  StreamEDModuleState<Step::postModuleEventDelayedGet>(logFile, beginTime));
683  iRegistry.watchPreEventReadFromSource(StreamEDModuleState<Step::preEventReadFromSource>(logFile, beginTime));
684  iRegistry.watchPostEventReadFromSource(StreamEDModuleState<Step::postEventReadFromSource>(logFile, beginTime));
685 
686  iRegistry.watchPreModuleStreamPrefetching(StreamEDModuleState<Step::preModulePrefetching>(logFile, beginTime));
687  iRegistry.watchPostModuleStreamPrefetching(StreamEDModuleState<Step::postModulePrefetching>(logFile, beginTime));
688 
689  iRegistry.watchPreModuleStreamBeginRun(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
690  iRegistry.watchPostModuleStreamBeginRun(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
691  iRegistry.watchPreModuleStreamEndRun(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
692  iRegistry.watchPostModuleStreamEndRun(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
693 
694  iRegistry.watchPreModuleStreamBeginLumi(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
695  iRegistry.watchPostModuleStreamBeginLumi(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
696  iRegistry.watchPreModuleStreamEndLumi(StreamEDModuleState<Step::preModuleTransition>(logFile, beginTime));
697  iRegistry.watchPostModuleStreamEndLumi(StreamEDModuleState<Step::postModuleTransition>(logFile, beginTime));
698 
699  iRegistry.watchPreModuleBeginProcessBlock(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
700  iRegistry.watchPostModuleBeginProcessBlock(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
702  GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
704  GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
705  iRegistry.watchPreModuleEndProcessBlock(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
706  iRegistry.watchPostModuleEndProcessBlock(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
707 
708  iRegistry.watchPreModuleGlobalPrefetching(GlobalEDModuleState<Step::preModulePrefetching>(logFile, beginTime));
709  iRegistry.watchPostModuleGlobalPrefetching(GlobalEDModuleState<Step::postModulePrefetching>(logFile, beginTime));
710 
711  iRegistry.watchPreModuleGlobalBeginRun(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
712  iRegistry.watchPostModuleGlobalBeginRun(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
713  iRegistry.watchPreModuleGlobalEndRun(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
714  iRegistry.watchPostModuleGlobalEndRun(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
715 
716  iRegistry.watchPreModuleGlobalBeginLumi(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
717  iRegistry.watchPostModuleGlobalBeginLumi(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
718  iRegistry.watchPreModuleGlobalEndLumi(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
719  iRegistry.watchPostModuleGlobalEndLumi(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
720 
721  iRegistry.watchPreModuleWriteProcessBlock(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
722  iRegistry.watchPostModuleWriteProcessBlock(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
723 
724  iRegistry.watchPreModuleWriteRun(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
725  iRegistry.watchPostModuleWriteRun(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
726 
727  iRegistry.watchPreModuleWriteLumi(GlobalEDModuleState<Step::preModuleTransition>(logFile, beginTime));
728  iRegistry.watchPostModuleWriteLumi(GlobalEDModuleState<Step::postModuleTransition>(logFile, beginTime));
729 
730  //ES Modules
731  iRegistry.watchPreESModulePrefetching(
732  ESModuleState<Step::preESModulePrefetching>(logFile, beginTime, recordIndices));
734  ESModuleState<Step::postESModulePrefetching>(logFile, beginTime, recordIndices));
735  iRegistry.watchPreESModule(ESModuleState<Step::preESModule>(logFile, beginTime, recordIndices));
736  iRegistry.watchPostESModule(ESModuleState<Step::postESModule>(logFile, beginTime, recordIndices));
737  iRegistry.watchPreESModuleAcquire(ESModuleState<Step::preESModuleAcquire>(logFile, beginTime, recordIndices));
738  iRegistry.watchPostESModuleAcquire(ESModuleState<Step::postESModuleAcquire>(logFile, beginTime, recordIndices));
739  }
740 
741  std::ostringstream oss;
742  oss << "# Transition Symbol\n";
743  oss << "#------------------------ ------\n";
744  oss << "# construction " << Phase::construction << " \n"
745  << "# esSyncEnqueue " << Phase::esSyncEnqueue << "\n"
746  << "# esSync " << Phase::esSync << "\n"
747  << "# beginJob " << Phase::beginJob << "\n"
748  << "# beginStream " << Phase::beginStream << "\n"
749  << "# beginProcessBlock " << Phase::beginProcessBlock << "\n"
750  << "# accessInputProcessBlock " << Phase::accessInputProcessBlock << "\n"
751  << "# globalBeginRun " << Phase::globalBeginRun << "\n"
752  << "# streamBeginRun " << Phase::streamBeginRun << "\n"
753  << "# globalBeginLumi " << Phase::globalBeginLumi << "\n"
754  << "# streamBeginLumi " << Phase::streamBeginLumi << "\n"
755  << "# Event " << Phase::Event << "\n"
756  << "# streamEndLumi " << Phase::streamEndLumi << "\n"
757  << "# globalEndLumi " << Phase::globalEndLumi << "\n"
758  << "# globalWriteLumi " << Phase::globalWriteLumi << "\n"
759  << "# streamEndRun " << Phase::streamEndRun << "\n"
760  << "# globalEndRun " << Phase::globalEndRun << "\n"
761  << "# globalWriteRun " << Phase::globalWriteRun << "\n"
762  << "# endProcessBlock " << Phase::endProcessBlock << "\n"
763  << "# writeProcessBlock " << Phase::writeProcessBlock << "\n"
764  << "# endStream " << Phase::endStream << "\n"
765  << "# endJob " << Phase::endJob << "\n\n";
766  oss << "# Step Symbol Entries\n"
767  << "# -------------------------- ------ ------------------------------------------\n"
768  << "# preSourceTransition " << Step::preSourceTransition
769  << " <Transition type> <Transition ID> <Time since beginJob (us)>\n"
770  << "# postSourceTransition " << Step::postSourceTransition
771  << " <Transition type> <Transition ID> <Time since beginJob (us)>\n"
772  << "# preModulePrefetching " << Step::preModulePrefetching
773  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
774  "(us)>\n"
775  << "# postModulePrefetching " << Step::postModulePrefetching
776  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
777  "(us)>\n"
778  << "# preModuleEventAcquire " << Step::preModuleEventAcquire
779  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
780  "(us)>\n"
781  << "# postModuleEventAcquire " << Step::postModuleEventAcquire
782  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
783  "(us)>\n"
784  << "# preModuleTransition " << Step::preModuleTransition
785  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
786  "(us)>\n"
787  << "# preEventReadFromSource " << Step::preEventReadFromSource
788  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
789  "(us)>\n"
790  << "# postEventReadFromSource " << Step::postEventReadFromSource
791  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID or 0> <Time since beginJob "
792  "(us)>\n"
793  << "# postModuleTransition " << Step::postModuleTransition
794  << " <Transition type> <Transition ID> <EDModule ID> <Requesting EDModule ID> <Time since beginJob (us)>\n"
795  << "# preESModulePrefetching " << Step::preESModulePrefetching
796  << " <Transition type> <Transition ID> <ESModule ID> <Record ID> <Requesting module ID (+ED, -ES)> <Time "
797  "since beginJob (us)>\n"
798  << "# postESModulePrefetching " << Step::postESModulePrefetching
799  << " <Transition type> <Transition ID> <ESModule ID> <Record ID> <Requesting module ID (+ED, -ES)> <Time "
800  "since beginJob (us)>\n"
801  << "# preESModuleTransition " << Step::preESModule
802  << " <TransitionType> <Transition ID> <ESModule ID> <Record ID> <Requesting module ID (+ED, -ES)> <Time "
803  "since beginJob (us)>\n"
804  << "# postESModuleTransition " << Step::postESModule
805  << " <TransitionType> <Transition ID> <ESModule ID> <Record ID> <Requesting module ID (+ED, -ES)> <Time "
806  "since beginJob (us)>\n"
807  << "# preFrameworkTransition " << Step::preFrameworkTransition
808  << " <Transition type> <Transition ID> <Run#> <LumiBlock#> <Event #> <Time since beginJob (ms)>\n"
809  << "# postFrameworkTransition " << Step::postFrameworkTransition
810  << " <Transition type> <Transition ID> <Run#> <LumiBlock#> <Event #> <Time since beginJob (ms)>\n";
811  logFile->write(oss.str());
812  return;
813  }
814 } // namespace edm::service::tracer
void watchPostModuleGlobalEndLumi(PostModuleGlobalEndLumi::slot_type const &iSlot)
void watchPostModuleConstruction(PostModuleConstruction::slot_type const &iSlot)
void watchPreModuleGlobalBeginRun(PreModuleGlobalBeginRun::slot_type const &iSlot)
void watchPreEvent(PreEvent::slot_type const &iSlot)
void watchPostESModuleRegistration(PostESModuleRegistration::slot_type const &iSlot)
ModuleDescription const * moduleDescription() const
void watchPreModuleStreamPrefetching(PreModuleStreamPrefetching::slot_type const &iSlot)
void watchPreAccessInputProcessBlock(PreAccessInputProcessBlock::slot_type const &iSlot)
LuminosityBlockNumber_t luminosityBlock() const
ModuleCallingContext const * moduleCallingContext() const
void watchPostModuleEndProcessBlock(PostModuleEndProcessBlock::slot_type const &iSlot)
void watchPreESModule(PreESModule::slot_type const &iSlot)
void watchPreModuleEventAcquire(PreModuleEventAcquire::slot_type const &iSlot)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
void watchPostModuleEndStream(PostModuleEndStream::slot_type const &iSlot)
auto module_id(edm::ModuleCallingContext const &mcc)
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void watchPreModuleConstruction(PreModuleConstruction::slot_type const &iSlot)
void watchPreModuleEndProcessBlock(PreModuleEndProcessBlock::slot_type const &iSlot)
void watchPreGlobalEndLumi(PreGlobalEndLumi::slot_type const &iSlot)
void watchPostESModuleAcquire(PostESModuleAcquire::slot_type const &iSlot)
ModuleCallingContext const * getTopModuleCallingContext() const
void watchPostEvent(PostEvent::slot_type const &iSlot)
void watchPreStreamEndRun(PreStreamEndRun::slot_type const &iSlot)
void watchPreSourceConstruction(PreSourceConstruction::slot_type const &iSlot)
void watchPostSourceConstruction(PostSourceConstruction::slot_type const &iSlot)
void watchPostModuleGlobalPrefetching(PostModuleGlobalPrefetching::slot_type const &iSlot)
void watchPostStreamEndLumi(PostStreamEndLumi::slot_type const &iSlot)
void watchPreGlobalBeginLumi(PreGlobalBeginLumi::slot_type const &iSlot)
void watchPostEndProcessBlock(PostEndProcessBlock::slot_type const &iSlot)
void watchPreEventReadFromSource(PreEventReadFromSource::slot_type const &iSlot)
void watchPreModuleDestruction(PreModuleDestruction::slot_type const &iSlot)
void watchPostESModulePrefetching(PostESModulePrefetching::slot_type const &iSlot)
void watchPostModuleEvent(PostModuleEvent::slot_type const &iSlot)
void watchPostModuleGlobalBeginLumi(PostModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamEndLumi(PostModuleStreamEndLumi::slot_type const &iSlot)
Phase
void watchPostGlobalBeginLumi(PostGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamBeginRun(PostModuleStreamBeginRun::slot_type const &iSlot)
void watchPostSourceEvent(PostSourceEvent::slot_type const &iSlot)
void watchPreModuleAccessInputProcessBlock(PreModuleAccessInputProcessBlock::slot_type const &iSlot)
void watchPreBeginProcessBlock(PreBeginProcessBlock::slot_type const &iSlot)
ESModuleCallingContext const * esmoduleCallingContext() const
void watchPreEndProcessBlock(PreEndProcessBlock::slot_type const &iSlot)
void watchPreModuleBeginStream(PreModuleBeginStream::slot_type const &iSlot)
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
void watchPostESModule(PostESModule::slot_type const &iSlot)
void watchPreESSyncIOV(PreESSyncIOV::slot_type const &iSlot)
assert(be >=bs)
void watchPreStreamEndLumi(PreStreamEndLumi::slot_type const &iSlot)
void watchPreModuleGlobalEndRun(PreModuleGlobalEndRun::slot_type const &iSlot)
void watchPreModuleEventPrefetching(PreModuleEventPrefetching::slot_type const &iSlot)
void watchPostModuleWriteRun(PostModuleWriteRun::slot_type const &iSlot)
void watchPostModuleWriteProcessBlock(PostModuleWriteProcessBlock::slot_type const &iSlot)
void watchPostModuleWriteLumi(PostModuleWriteLumi::slot_type const &iSlot)
void beginJob()
Definition: Breakpoints.cc:14
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:39
void watchPostModuleEventPrefetching(PostModuleEventPrefetching::slot_type const &iSlot)
void setupFile(std::string const &iFileName, edm::ActivityRegistry &iRegistry)
std::type_info const & value() const
Definition: HCTypeTag.h:45
void watchPostGlobalBeginRun(PostGlobalBeginRun::slot_type const &iSlot)
void watchPreGlobalEndRun(PreGlobalEndRun::slot_type const &iSlot)
unsigned int id() const
void watchPostBeginProcessBlock(PostBeginProcessBlock::slot_type const &iSlot)
void watchEventSetupConfiguration(EventSetupConfiguration::slot_type const &iSlot)
void watchPostSourceRun(PostSourceRun::slot_type const &iSlot)
void watchPostStreamBeginLumi(PostStreamBeginLumi::slot_type const &iSlot)
void watchPreSourceLumi(PreSourceLumi::slot_type const &iSlot)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void watchPreModuleEventDelayedGet(PreModuleEventDelayedGet::slot_type const &iSlot)
void watchPreModuleBeginProcessBlock(PreModuleBeginProcessBlock::slot_type const &iSlot)
void watchPostModuleEventAcquire(PostModuleEventAcquire::slot_type const &iSlot)
void watchPreModuleEndJob(PreModuleEndJob::slot_type const &iSlot)
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
void watchPostGlobalEndLumi(PostGlobalEndLumi::slot_type const &iSlot)
ModuleCallingContext const * moduleCallingContext() const
void watchPreWriteProcessBlock(PreWriteProcessBlock::slot_type const &iSlot)
Transition transition() const
Definition: StreamContext.h:56
void watchPreSourceRun(PreSourceRun::slot_type const &iSlot)
LuminosityBlockIndex const & luminosityBlockIndex() const
Definition: GlobalContext.h:64
std::ostream & operator<<(std::ostream &os, SimpleMemoryCheck::SignificantEvent const &se)
void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const &iSlot)
void watchPostStreamEndRun(PostStreamEndRun::slot_type const &iSlot)
LuminosityBlockID const & luminosityBlockID() const
Definition: GlobalContext.h:62
RunNumber_t run() const
void watchPreModuleGlobalBeginLumi(PreModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamEndRun(PostModuleStreamEndRun::slot_type const &iSlot)
void watchPostModuleBeginProcessBlock(PostModuleBeginProcessBlock::slot_type const &iSlot)
void watchPreGlobalBeginRun(PreGlobalBeginRun::slot_type const &iSlot)
void watchPreModuleStreamBeginLumi(PreModuleStreamBeginLumi::slot_type const &iSlot)
void watchPreGlobalWriteLumi(PreGlobalWriteLumi::slot_type const &iSlot)
RunNumber_t run() const
Definition: EventID.h:38
void moduleIdToLabel(std::ostream &oStream, std::vector< std::string > const &iModuleLabels, char moduleIdSymbol, std::string const &iIDHeader, std::string const &iLabelHeader)
void watchPostModuleBeginStream(PostModuleBeginStream::slot_type const &iSlot)
void watchPostAccessInputProcessBlock(PostAccessInputProcessBlock::slot_type const &iSlot)
void watchPostSourceLumi(PostSourceLumi::slot_type const &iSlot)
void watchPostModuleEventDelayedGet(PostModuleEventDelayedGet::slot_type const &iSlot)
void watchPostModuleGlobalEndRun(PostModuleGlobalEndRun::slot_type const &iSlot)
void watchPostGlobalWriteRun(PostGlobalWriteRun::slot_type const &iSlot)
void watchPostModuleStreamBeginLumi(PostModuleStreamBeginLumi::slot_type const &iSlot)
void watchESSyncIOVQueuing(ESSyncIOVQueuing::slot_type const &iSlot)
void watchPreModuleStreamEndLumi(PreModuleStreamEndLumi::slot_type const &iSlot)
void watchPreModuleStreamBeginRun(PreModuleStreamBeginRun::slot_type const &iSlot)
std::enable_if_t< std::is_integral< T >::value > concatenate(std::ostream &os, T const t)
void watchPostGlobalEndRun(PostGlobalEndRun::slot_type const &iSlot)
void watchPreStreamBeginLumi(PreStreamBeginLumi::slot_type const &iSlot)
tuple msg
Definition: mps_check.py:286
void watchPreModuleEndStream(PreModuleEndStream::slot_type const &iSlot)
void watchPreBeginJob(PreBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
void watchPreModuleWriteRun(PreModuleWriteRun::slot_type const &iSlot)
void watchPreEndJob(PreEndJob::slot_type const &iSlot)
Transition transition() const
Definition: GlobalContext.h:55
void watchPostStreamBeginRun(PostStreamBeginRun::slot_type const &iSlot)
void watchPostGlobalWriteLumi(PostGlobalEndLumi::slot_type const &iSlot)
RunIndex const & runIndex() const
Definition: GlobalContext.h:63
HLT enums.
void watchPreStreamBeginRun(PreStreamBeginRun::slot_type const &iSlot)
void watchPostModuleAccessInputProcessBlock(PostModuleAccessInputProcessBlock::slot_type const &iSlot)
void watchPostModuleDestruction(PostModuleDestruction::slot_type const &iSlot)
void watchPreModuleStreamEndRun(PreModuleStreamEndRun::slot_type const &iSlot)
void watchPreModuleWriteProcessBlock(PreModuleWriteProcessBlock::slot_type const &iSlot)
EventID const & eventID() const
Definition: StreamContext.h:60
void watchPostModuleBeginJob(PostModuleBeginJob::slot_type const &iSlot)
void watchPostEventReadFromSource(PostEventReadFromSource::slot_type const &iSlot)
void watchPostModuleGlobalBeginRun(PostModuleGlobalBeginRun::slot_type const &iSlot)
void watchPreModuleWriteLumi(PreModuleWriteLumi::slot_type const &iSlot)
void watchPreSourceEvent(PreSourceEvent::slot_type const &iSlot)
static std::chrono::steady_clock::time_point jobStartTime()
void watchPreESModulePrefetching(PreESModulePrefetching::slot_type const &iSlot)
void watchPostModuleStreamPrefetching(PostModuleStreamPrefetching::slot_type const &iSlot)
std::string const & moduleLabel() const
auto stream_id(edm::StreamContext const &cs)
void watchPreGlobalWriteRun(PreGlobalWriteRun::slot_type const &iSlot)
void watchPostModuleEndJob(PostModuleEndJob::slot_type const &iSlot)
void watchPreModuleGlobalPrefetching(PreModuleGlobalPrefetching::slot_type const &iSlot)
def move(src, dest)
Definition: eostools.py:511
edm::eventsetup::ComponentDescription const * componentDescription() const
EventNumber_t event() const
Definition: EventID.h:40
void watchPreModuleGlobalEndLumi(PreModuleGlobalEndLumi::slot_type const &iSlot)
void watchPreESModuleAcquire(PreESModuleAcquire::slot_type const &iSlot)
ParentContext const & parent() const
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
void watchPostESSyncIOV(PostESSyncIOV::slot_type const &iSlot)
void watchPostWriteProcessBlock(PostWriteProcessBlock::slot_type const &iSlot)