52 class ModuleCallingContext;
53 class ModuleDescription;
55 class PathsAndConsumesOfModulesBase;
171 using namespace edm::service;
177 TimeStamper(
bool enable) :
183 if (timestamp.enabled_)
195 indention_(iPS.getUntrackedParameter<std::
string>(
"indention")),
196 dumpContextForLabels_(),
197 dumpNonModuleContext_(iPS.getUntrackedParameter<bool>(
"dumpNonModuleContext")),
198 dumpPathsAndConsumes_(iPS.getUntrackedParameter<bool>(
"dumpPathsAndConsumes")),
199 printTimestamps_(iPS.getUntrackedParameter<bool>(
"printTimestamps"))
342 desc.
addUntracked<
std::string>(
"indention",
"++")->setComment(
"Prefix characters for output. The characters are repeated to form the indentation.");
343 desc.
addUntracked<std::vector<std::string>>(
"dumpContextForLabels", std::vector<std::string>{})->setComment(
"Prints context information to cout for the module transitions associated with these modules' labels");
344 desc.
addUntracked<
bool>(
"dumpNonModuleContext",
false)->setComment(
"Prints context information to cout for the transitions not associated with any module label");
345 desc.
addUntracked<
bool>(
"dumpPathsAndConsumes",
false)->setComment(
"Prints information to cout about paths, endpaths, products consumed by modules and the dependencies between modules created by the products they consume");
346 desc.
addUntracked<
bool>(
"printTimestamps",
false)->setComment(
"Prints a time stamp for every transition");
347 descriptions.
add(
"Tracer", desc);
348 descriptions.
setComment(
"This service prints each phase the framework is processing, e.g. constructing a module,running a module, etc.");
363 out <<
"\n" <<
"Process name = " << pc.
processName() <<
"\n";
365 std::vector<std::string>
const&
paths = pathsAndConsumes.
paths();
366 for(
auto const&
path : paths) {
367 out <<
" " <<
path <<
"\n";
369 out <<
"end paths:\n";
370 std::vector<std::string>
const& endpaths = pathsAndConsumes.
endPaths();
371 for(
auto const& endpath : endpaths) {
372 out <<
" " << endpath <<
"\n";
374 for(
unsigned int j = 0;
j < paths.size(); ++
j) {
375 std::vector<ModuleDescription const*>
const& modulesOnPath = pathsAndConsumes.
modulesOnPath(
j);
376 out <<
"modules on path " << paths.at(
j) <<
":\n";
377 for(
auto const& desc : modulesOnPath) {
378 out <<
" " << desc->moduleLabel() <<
"\n";
381 for(
unsigned int j = 0;
j < endpaths.size(); ++
j) {
382 std::vector<ModuleDescription const*>
const& modulesOnEndPath = pathsAndConsumes.
modulesOnEndPath(
j);
383 out <<
"modules on end path " << endpaths.at(
j) <<
":\n";
384 for(
auto const& desc : modulesOnEndPath) {
385 out <<
" " << desc->moduleLabel() <<
"\n";
388 std::vector<ModuleDescription const*>
const& allModules = pathsAndConsumes.
allModules();
389 out <<
"All modules and modules in the current process whose products they consume:\n";
390 out <<
"(This does not include modules from previous processes or the source)\n";
391 for(
auto const&
module : allModules) {
392 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
393 unsigned int moduleID =
module->id();
395 throw cms::Exception(
"TestFailure") <<
"Tracer::preBeginJob, moduleDescription returns incorrect value";
397 std::vector<ModuleDescription const*>
const& modulesWhoseProductsAreConsumedBy =
399 if(!modulesWhoseProductsAreConsumedBy.empty()) {
400 out <<
" consumes products from these modules:\n";
401 for(
auto const& producingModule : modulesWhoseProductsAreConsumedBy) {
402 out <<
" " << producingModule->moduleName() <<
"/\'" << producingModule->moduleLabel() <<
"\'\n";
408 out <<
"All modules (listed by class and label) and all their consumed products.\n";
409 out <<
"Consumed products are listed by type, label, instance, process.\n";
410 out <<
"For products not in the event, \'run\' or \'lumi\' is added to indicate the TTree they are from.\n";
411 out <<
"For products that are declared with mayConsume, \'may consume\' is added.\n";
412 out <<
"For products consumed for Views, \'element type\' is added\n";
413 out <<
"For products only read from previous processes, \'skip current process\' is added\n";
414 for(
auto const*
module : allModules) {
415 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
417 if(!consumesInfo.empty()) {
418 out <<
" consumes:\n";
419 for(
auto const&
info : consumesInfo) {
420 out <<
" " <<
info.type() <<
" \'" <<
info.label() <<
"\' \'" <<
info.instance();
421 out <<
"\' \'" <<
info.process() <<
"\'";
427 if(!
info.alwaysGets()) {
428 out <<
", may consume";
431 out <<
", element type";
433 if(
info.skipCurrentProcess()) {
434 out <<
", skip current process";
809 out <<
" starting: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
820 out <<
" finished: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
831 out <<
" starting: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
842 out <<
" finished: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
852 unsigned int nIndents = mcc.
depth() + 4;
853 for(
unsigned int i = 0;
i < nIndents; ++
i) {
867 unsigned int nIndents = mcc.
depth() + 4;
868 for(
unsigned int i = 0;
i < nIndents; ++
i) {
883 unsigned int nIndents = mcc.
depth() + 4;
884 for(
unsigned int i = 0;
i < nIndents; ++
i) {
898 unsigned int nIndents = mcc.
depth() + 4;
899 for(
unsigned int i = 0;
i < nIndents; ++
i) {
914 unsigned int nIndents = mcc.
depth() + 3;
915 for(
unsigned int i = 0;
i < nIndents; ++
i) {
929 unsigned int nIndents = mcc.
depth() + 3;
930 for(
unsigned int i = 0;
i < nIndents; ++
i) {
944 unsigned int nIndents = mcc.
depth() + 3;
945 for(
unsigned int i = 0;
i < nIndents; ++
i) {
959 unsigned int nIndents = mcc.
depth() + 3;
960 for(
unsigned int i = 0;
i < nIndents; ++
i) {
974 unsigned int nIndents = mcc.
depth() + 3;
975 for(
unsigned int i = 0;
i < nIndents; ++
i) {
989 unsigned int nIndents = mcc.
depth() + 3;
990 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1004 unsigned int nIndents = mcc.
depth() + 3;
1005 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1019 unsigned int nIndents = mcc.
depth() + 3;
1020 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1034 unsigned int nIndents = mcc.
depth() + 3;
1035 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1049 unsigned int nIndents = mcc.
depth() + 3;
1050 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1064 unsigned int nIndents = mcc.
depth() + 3;
1065 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1079 unsigned int nIndents = mcc.
depth() + 3;
1080 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1094 unsigned int nIndents = mcc.
depth() + 3;
1095 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1109 unsigned int nIndents = mcc.
depth() + 3;
1110 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1124 unsigned int nIndents = mcc.
depth() + 3;
1125 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1139 unsigned int nIndents = mcc.
depth() + 3;
1140 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1155 out <<
" starting: constructing source: " << desc.
moduleName();
1157 out <<
"\n" << desc;
1166 out <<
" finished: constructing source: " << desc.
moduleName();
1168 out <<
"\n" << desc;
void preCloseFile(std::string const &lfn, bool primary)
void watchPostModuleGlobalEndLumi(PostModuleGlobalEndLumi::slot_type const &iSlot)
void watchPostModuleConstruction(PostModuleConstruction::slot_type const &iSlot)
std::string const & pathName() const
EventNumber_t event() const
void watchPreModuleGlobalBeginRun(PreModuleGlobalBeginRun::slot_type const &iSlot)
T getUntrackedParameter(std::string const &, T const &) const
void watchPreEvent(PreEvent::slot_type const &iSlot)
std::string const & processName() const
boost::uint64_t value() const
void watchPrePathEvent(PrePathEvent::slot_type const &iSlot)
void postModuleGlobalBeginRun(GlobalContext const &, ModuleCallingContext const &)
void watchPreallocate(Preallocate::slot_type const &iSlot)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void postModuleGlobalBeginLumi(GlobalContext const &, ModuleCallingContext const &)
void postModuleStreamEndLumi(StreamContext const &, ModuleCallingContext const &)
void watchPostEndJob(PostEndJob::slot_type const &iSlot)
void preModuleGlobalBeginLumi(GlobalContext const &, ModuleCallingContext const &)
void postModuleConstruction(ModuleDescription const &md)
void postModuleEndStream(StreamContext const &, ModuleCallingContext const &)
std::vector< ConsumesInfo > consumesInfo(unsigned int moduleID) const
void postModuleGlobalEndLumi(GlobalContext const &, ModuleCallingContext const &)
void watchPostModuleEndStream(PostModuleEndStream::slot_type const &iSlot)
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void watchPreModuleConstruction(PreModuleConstruction::slot_type const &iSlot)
void watchPreGlobalEndLumi(PreGlobalEndLumi::slot_type const &iSlot)
void watchPostEvent(PostEvent::slot_type const &iSlot)
void preallocate(service::SystemBounds const &)
LuminosityBlockID const & luminosityBlockID() const
void postStreamBeginLumi(StreamContext const &)
void watchPreStreamEndRun(PreStreamEndRun::slot_type const &iSlot)
void watchPreSourceConstruction(PreSourceConstruction::slot_type const &iSlot)
void preModuleGlobalEndLumi(GlobalContext const &, ModuleCallingContext const &)
void watchPostSourceConstruction(PostSourceConstruction::slot_type const &iSlot)
void watchPostStreamEndLumi(PostStreamEndLumi::slot_type const &iSlot)
void watchPreGlobalBeginLumi(PreGlobalBeginLumi::slot_type const &iSlot)
std::vector< ModuleDescription const * > const & modulesOnEndPath(unsigned int endPathIndex) const
std::string const & moduleName() const
void watchPostPathEvent(PostPathEvent::slot_type const &iSlot)
void watchPostModuleEvent(PostModuleEvent::slot_type const &iSlot)
void preModuleStreamBeginLumi(StreamContext const &, ModuleCallingContext const &)
void watchPostModuleGlobalBeginLumi(PostModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamEndLumi(PostModuleStreamEndLumi::slot_type const &iSlot)
void preGlobalEndLumi(GlobalContext const &)
void preModuleEndJob(ModuleDescription const &md)
void watchPostGlobalBeginLumi(PostGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamBeginRun(PostModuleStreamBeginRun::slot_type const &iSlot)
void watchPostSourceEvent(PostSourceEvent::slot_type const &iSlot)
void preModuleConstruction(ModuleDescription const &md)
std::vector< ModuleDescription const * > const & modulesOnPath(unsigned int pathIndex) const
void preBeginJob(PathsAndConsumesOfModulesBase const &, ProcessContext const &)
void watchPreModuleBeginStream(PreModuleBeginStream::slot_type const &iSlot)
void postStreamEndRun(StreamContext const &)
void postGlobalEndLumi(GlobalContext const &)
LuminosityBlockNumber_t luminosityBlock() const
void postModuleBeginJob(ModuleDescription const &md)
void watchPreStreamEndLumi(PreStreamEndLumi::slot_type const &iSlot)
void postModuleStreamEndRun(StreamContext const &, ModuleCallingContext const &)
std::string const & moduleLabel() const
void watchPreModuleGlobalEndRun(PreModuleGlobalEndRun::slot_type const &iSlot)
void postCloseFile(std::string const &, bool)
std::vector< ModuleDescription const * > const & allModules() const
Timestamp const & timestamp() const
void preStreamEndLumi(StreamContext const &)
std::vector< std::string > const & endPaths() const
void preOpenFile(std::string const &, bool)
unsigned int maxNumberOfStreams() const
void watchPreOpenFile(PreOpenFile::slot_type const &iSlot)
void watchPostGlobalBeginRun(PostGlobalBeginRun::slot_type const &iSlot)
void watchPostCloseFile(PostCloseFile::slot_type const &iSlot)
void watchPreGlobalEndRun(PreGlobalEndRun::slot_type const &iSlot)
void preGlobalBeginRun(GlobalContext const &)
PreStreamEarlyTermination preStreamEarlyTerminationSignal_
PreSourceEarlyTermination preSourceEarlyTerminationSignal_
void preSourceEvent(StreamID)
void preGlobalEndRun(GlobalContext const &)
void watchPostSourceRun(PostSourceRun::slot_type const &iSlot)
void watchPostStreamBeginLumi(PostStreamBeginLumi::slot_type const &iSlot)
void preModuleStreamEndLumi(StreamContext const &, ModuleCallingContext const &)
Tracer(const ParameterSet &, ActivityRegistry &)
void preModuleStreamBeginRun(StreamContext const &, ModuleCallingContext const &)
void watchPreSourceLumi(PreSourceLumi::slot_type const &iSlot)
ModuleDescription const * moduleDescription(unsigned int moduleID) const
void prePathEvent(StreamContext const &, PathContext const &)
void watchPreModuleEventDelayedGet(PreModuleEventDelayedGet::slot_type const &iSlot)
ModuleDescription const * moduleDescription() const
void postModuleStreamBeginLumi(StreamContext const &, ModuleCallingContext const &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool dumpPathsAndConsumes_
void watchPreModuleEndJob(PreModuleEndJob::slot_type const &iSlot)
void watchPostGlobalEndLumi(PostGlobalEndLumi::slot_type const &iSlot)
void watchPreSourceRun(PreSourceRun::slot_type const &iSlot)
void preModuleGlobalEndRun(GlobalContext const &, ModuleCallingContext const &)
void postStreamBeginRun(StreamContext const &)
std::ostream & operator<<(std::ostream &os, SimpleMemoryCheck::SignificantEvent const &se)
void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const &iSlot)
void preStreamEndRun(StreamContext const &)
void watchPostStreamEndRun(PostStreamEndRun::slot_type const &iSlot)
void postOpenFile(std::string const &, bool)
PreGlobalEarlyTermination preGlobalEarlyTerminationSignal_
void watchPreModuleGlobalBeginLumi(PreModuleGlobalBeginLumi::slot_type const &iSlot)
void watchPostModuleStreamEndRun(PostModuleStreamEndRun::slot_type const &iSlot)
void postPathEvent(StreamContext const &, PathContext const &, HLTPathStatus const &)
StreamID const & streamID() const
void watchPreGlobalBeginRun(PreGlobalBeginRun::slot_type const &iSlot)
void watchPreModuleStreamBeginLumi(PreModuleStreamBeginLumi::slot_type const &iSlot)
#define DEFINE_FWK_SERVICE(type)
void setComment(std::string const &value)
void postModuleEventDelayedGet(StreamContext const &, ModuleCallingContext const &)
void watchPostModuleBeginStream(PostModuleBeginStream::slot_type const &iSlot)
unsigned int maxNumberOfConcurrentLuminosityBlocks() const
void watchPostSourceLumi(PostSourceLumi::slot_type const &iSlot)
void watchPreCloseFile(PreCloseFile::slot_type const &iSlot)
void watchPostModuleEventDelayedGet(PostModuleEventDelayedGet::slot_type const &iSlot)
void watchPostModuleGlobalEndRun(PostModuleGlobalEndRun::slot_type const &iSlot)
void watchPostModuleStreamBeginLumi(PostModuleStreamBeginLumi::slot_type const &iSlot)
void postSourceEvent(StreamID)
void watchPreModuleStreamEndLumi(PreModuleStreamEndLumi::slot_type const &iSlot)
void watchPreModuleStreamBeginRun(PreModuleStreamBeginRun::slot_type const &iSlot)
void watchPostGlobalEndRun(PostGlobalEndRun::slot_type const &iSlot)
LuminosityBlockNumber_t luminosityBlock() const
void watchPreStreamBeginLumi(PreStreamBeginLumi::slot_type const &iSlot)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void watchPostOpenFile(PostOpenFile::slot_type const &iSlot)
void watchPreModuleEndStream(PreModuleEndStream::slot_type const &iSlot)
std::vector< ModuleDescription const * > const & modulesWhoseProductsAreConsumedBy(unsigned int moduleID) const
void preSourceConstruction(ModuleDescription const &md)
void watchPreBeginJob(PreBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
void preModuleEvent(StreamContext const &, ModuleCallingContext const &)
void preModuleBeginStream(StreamContext const &, ModuleCallingContext const &)
void watchPostStreamBeginRun(PostStreamBeginRun::slot_type const &iSlot)
void postGlobalBeginRun(GlobalContext const &)
void postGlobalEndRun(GlobalContext const &)
void postGlobalBeginLumi(GlobalContext const &)
void watchPreStreamBeginRun(PreStreamBeginRun::slot_type const &iSlot)
std::vector< std::string > const & paths() const
void watchPreModuleStreamEndRun(PreModuleStreamEndRun::slot_type const &iSlot)
void preEvent(StreamContext const &)
void watchPostModuleBeginJob(PostModuleBeginJob::slot_type const &iSlot)
void watchPostModuleGlobalBeginRun(PostModuleGlobalBeginRun::slot_type const &iSlot)
unsigned int maxNumberOfConcurrentRuns() const
void preStreamBeginLumi(StreamContext const &)
void postModuleEndJob(ModuleDescription const &md)
void preModuleEndStream(StreamContext const &, ModuleCallingContext const &)
void postModuleEvent(StreamContext const &, ModuleCallingContext const &)
EventID const & eventID() const
void preModuleEventDelayedGet(StreamContext const &, ModuleCallingContext const &)
void watchPreSourceEvent(PreSourceEvent::slot_type const &iSlot)
void postModuleBeginStream(StreamContext const &, ModuleCallingContext const &)
bool dumpNonModuleContext_
void preModuleBeginJob(ModuleDescription const &md)
void postStreamEndLumi(StreamContext const &)
void preModuleStreamEndRun(StreamContext const &, ModuleCallingContext const &)
void postEvent(StreamContext const &)
void preStreamBeginRun(StreamContext const &)
TimeValue_t value() const
void watchPostModuleEndJob(PostModuleEndJob::slot_type const &iSlot)
void postModuleStreamBeginRun(StreamContext const &, ModuleCallingContext const &)
void preGlobalBeginLumi(GlobalContext const &)
void watchPreModuleGlobalEndLumi(PreModuleGlobalEndLumi::slot_type const &iSlot)
void postModuleGlobalEndRun(GlobalContext const &, ModuleCallingContext const &)
void postSourceConstruction(ModuleDescription const &md)
std::set< std::string > dumpContextForLabels_
void preModuleGlobalBeginRun(GlobalContext const &, ModuleCallingContext const &)
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal
Timestamp const & timestamp() const