52 class ModuleCallingContext;
53 class ModuleDescription;
55 class PathsAndConsumesOfModulesBase;
175 using namespace edm::service;
181 TimeStamper(
bool enable) :
187 if (timestamp.enabled_)
199 indention_(iPS.getUntrackedParameter<std::
string>(
"indention")),
200 dumpContextForLabels_(),
201 dumpNonModuleContext_(iPS.getUntrackedParameter<bool>(
"dumpNonModuleContext")),
202 dumpPathsAndConsumes_(iPS.getUntrackedParameter<bool>(
"dumpPathsAndConsumes")),
203 printTimestamps_(iPS.getUntrackedParameter<bool>(
"printTimestamps"))
350 desc.
addUntracked<
std::string>(
"indention",
"++")->setComment(
"Prefix characters for output. The characters are repeated to form the indentation.");
351 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");
352 desc.
addUntracked<
bool>(
"dumpNonModuleContext",
false)->setComment(
"Prints context information to cout for the transitions not associated with any module label");
353 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");
354 desc.
addUntracked<
bool>(
"printTimestamps",
false)->setComment(
"Prints a time stamp for every transition");
355 descriptions.
add(
"Tracer", desc);
356 descriptions.
setComment(
"This service prints each phase the framework is processing, e.g. constructing a module,running a module, etc.");
371 out <<
"\n" <<
"Process name = " << pc.
processName() <<
"\n";
373 std::vector<std::string>
const&
paths = pathsAndConsumes.
paths();
374 for(
auto const&
path : paths) {
375 out <<
" " <<
path <<
"\n";
377 out <<
"end paths:\n";
378 std::vector<std::string>
const& endpaths = pathsAndConsumes.
endPaths();
379 for(
auto const& endpath : endpaths) {
380 out <<
" " << endpath <<
"\n";
382 for(
unsigned int j = 0;
j < paths.size(); ++
j) {
383 std::vector<ModuleDescription const*>
const& modulesOnPath = pathsAndConsumes.
modulesOnPath(
j);
384 out <<
"modules on path " << paths.at(
j) <<
":\n";
385 for(
auto const& desc : modulesOnPath) {
386 out <<
" " << desc->moduleLabel() <<
"\n";
389 for(
unsigned int j = 0;
j < endpaths.size(); ++
j) {
390 std::vector<ModuleDescription const*>
const& modulesOnEndPath = pathsAndConsumes.
modulesOnEndPath(
j);
391 out <<
"modules on end path " << endpaths.at(
j) <<
":\n";
392 for(
auto const& desc : modulesOnEndPath) {
393 out <<
" " << desc->moduleLabel() <<
"\n";
396 std::vector<ModuleDescription const*>
const& allModules = pathsAndConsumes.
allModules();
397 out <<
"All modules and modules in the current process whose products they consume:\n";
398 out <<
"(This does not include modules from previous processes or the source)\n";
399 for(
auto const&
module : allModules) {
400 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
401 unsigned int moduleID =
module->id();
403 throw cms::Exception(
"TestFailure") <<
"Tracer::preBeginJob, moduleDescription returns incorrect value";
405 std::vector<ModuleDescription const*>
const& modulesWhoseProductsAreConsumedBy =
407 if(!modulesWhoseProductsAreConsumedBy.empty()) {
408 out <<
" consumes products from these modules:\n";
409 for(
auto const& producingModule : modulesWhoseProductsAreConsumedBy) {
410 out <<
" " << producingModule->moduleName() <<
"/\'" << producingModule->moduleLabel() <<
"\'\n";
416 out <<
"All modules (listed by class and label) and all their consumed products.\n";
417 out <<
"Consumed products are listed by type, label, instance, process.\n";
418 out <<
"For products not in the event, \'run\' or \'lumi\' is added to indicate the TTree they are from.\n";
419 out <<
"For products that are declared with mayConsume, \'may consume\' is added.\n";
420 out <<
"For products consumed for Views, \'element type\' is added\n";
421 out <<
"For products only read from previous processes, \'skip current process\' is added\n";
422 for(
auto const*
module : allModules) {
423 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
425 if(!consumesInfo.empty()) {
426 out <<
" consumes:\n";
427 for(
auto const&
info : consumesInfo) {
428 out <<
" " <<
info.type() <<
" \'" <<
info.label() <<
"\' \'" <<
info.instance();
429 out <<
"\' \'" <<
info.process() <<
"\'";
435 if(!
info.alwaysGets()) {
436 out <<
", may consume";
439 out <<
", element type";
441 if(
info.skipCurrentProcess()) {
442 out <<
", skip current process";
817 out <<
" starting: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
828 out <<
" finished: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
839 out <<
" starting: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
850 out <<
" finished: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
860 unsigned int nIndents = mcc.
depth() + 4;
861 for(
unsigned int i = 0;
i < nIndents; ++
i) {
875 unsigned int nIndents = mcc.
depth() + 4;
876 for(
unsigned int i = 0;
i < nIndents; ++
i) {
891 unsigned int nIndents = mcc.
depth() + 4;
892 for(
unsigned int i = 0;
i < nIndents; ++
i) {
906 unsigned int nIndents = mcc.
depth() + 4;
907 for(
unsigned int i = 0;
i < nIndents; ++
i) {
922 unsigned int nIndents = mcc.
depth() + 4;
923 for(
unsigned int i = 0;
i < nIndents; ++
i) {
937 unsigned int nIndents = mcc.
depth() + 4;
938 for(
unsigned int i = 0;
i < nIndents; ++
i) {
952 unsigned int nIndents = mcc.
depth() + 5;
953 for(
unsigned int i = 0;
i < nIndents; ++
i) {
963 unsigned int nIndents = mcc.
depth() + 5;
964 for(
unsigned int i = 0;
i < nIndents; ++
i) {
975 unsigned int nIndents = mcc.
depth() + 3;
976 for(
unsigned int i = 0;
i < nIndents; ++
i) {
990 unsigned int nIndents = mcc.
depth() + 3;
991 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1005 unsigned int nIndents = mcc.
depth() + 3;
1006 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1020 unsigned int nIndents = mcc.
depth() + 3;
1021 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1035 unsigned int nIndents = mcc.
depth() + 3;
1036 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1050 unsigned int nIndents = mcc.
depth() + 3;
1051 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1065 unsigned int nIndents = mcc.
depth() + 3;
1066 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1080 unsigned int nIndents = mcc.
depth() + 3;
1081 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1095 unsigned int nIndents = mcc.
depth() + 3;
1096 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1110 unsigned int nIndents = mcc.
depth() + 3;
1111 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1125 unsigned int nIndents = mcc.
depth() + 3;
1126 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1140 unsigned int nIndents = mcc.
depth() + 3;
1141 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1155 unsigned int nIndents = mcc.
depth() + 3;
1156 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1170 unsigned int nIndents = mcc.
depth() + 3;
1171 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1185 unsigned int nIndents = mcc.
depth() + 3;
1186 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1200 unsigned int nIndents = mcc.
depth() + 3;
1201 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1216 out <<
" starting: constructing source: " << desc.
moduleName();
1218 out <<
"\n" << desc;
1227 out <<
" finished: constructing source: " << desc.
moduleName();
1229 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)
void postEventReadFromSource(StreamContext const &, ModuleCallingContext const &)
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
void watchPreEventReadFromSource(PreEventReadFromSource::slot_type const &iSlot)
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 watchPreModuleEventPrefetching(PreModuleEventPrefetching::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 &)
void watchPostModuleEventPrefetching(PostModuleEventPrefetching::slot_type const &iSlot)
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)
void postModuleEventPrefetching(StreamContext const &, ModuleCallingContext const &)
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)
void preEventReadFromSource(StreamContext const &, ModuleCallingContext const &)
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 preModuleEventPrefetching(StreamContext const &, ModuleCallingContext const &)
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 watchPostEventReadFromSource(PostEventReadFromSource::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