52 class ModuleCallingContext;
53 class ModuleDescription;
55 class PathsAndConsumesOfModulesBase;
183 TimeStamper(
bool enable) :
189 if (timestamp.enabled_)
354 desc.
addUntracked<
std::string>(
"indention",
"++")->setComment(
"Prefix characters for output. The characters are repeated to form the indentation.");
355 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");
356 desc.
addUntracked<
bool>(
"dumpNonModuleContext",
false)->setComment(
"Prints context information to cout for the transitions not associated with any module label");
357 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");
358 desc.
addUntracked<
bool>(
"printTimestamps",
false)->setComment(
"Prints a time stamp for every transition");
359 descriptions.
add(
"Tracer", desc);
360 descriptions.
setComment(
"This service prints each phase the framework is processing, e.g. constructing a module,running a module, etc.");
375 out <<
"\n" <<
"Process name = " << pc.
processName() <<
"\n";
377 std::vector<std::string>
const& paths = pathsAndConsumes.
paths();
378 for(
auto const&
path : paths) {
379 out <<
" " <<
path <<
"\n";
381 out <<
"end paths:\n";
382 std::vector<std::string>
const& endpaths = pathsAndConsumes.
endPaths();
383 for(
auto const& endpath : endpaths) {
384 out <<
" " << endpath <<
"\n";
386 for(
unsigned int j = 0; j < paths.size(); ++j) {
387 std::vector<ModuleDescription const*>
const& modulesOnPath = pathsAndConsumes.
modulesOnPath(j);
388 out <<
"modules on path " << paths.at(j) <<
":\n";
389 for(
auto const& desc : modulesOnPath) {
390 out <<
" " << desc->moduleLabel() <<
"\n";
393 for(
unsigned int j = 0; j < endpaths.size(); ++j) {
394 std::vector<ModuleDescription const*>
const& modulesOnEndPath = pathsAndConsumes.
modulesOnEndPath(j);
395 out <<
"modules on end path " << endpaths.at(j) <<
":\n";
396 for(
auto const& desc : modulesOnEndPath) {
397 out <<
" " << desc->moduleLabel() <<
"\n";
400 std::vector<ModuleDescription const*>
const& allModules = pathsAndConsumes.
allModules();
401 out <<
"All modules and modules in the current process whose products they consume:\n";
402 out <<
"(This does not include modules from previous processes or the source)\n";
403 for(
auto const&
module : allModules) {
404 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
405 unsigned int moduleID =
module->id();
407 throw cms::Exception(
"TestFailure") <<
"Tracer::preBeginJob, moduleDescription returns incorrect value";
409 std::vector<ModuleDescription const*>
const& modulesWhoseProductsAreConsumedBy =
411 if(!modulesWhoseProductsAreConsumedBy.empty()) {
412 out <<
" consumes products from these modules:\n";
413 for(
auto const& producingModule : modulesWhoseProductsAreConsumedBy) {
414 out <<
" " << producingModule->moduleName() <<
"/\'" << producingModule->moduleLabel() <<
"\'\n";
420 out <<
"All modules (listed by class and label) and all their consumed products.\n";
421 out <<
"Consumed products are listed by type, label, instance, process.\n";
422 out <<
"For products not in the event, \'run\' or \'lumi\' is added to indicate the TTree they are from.\n";
423 out <<
"For products that are declared with mayConsume, \'may consume\' is added.\n";
424 out <<
"For products consumed for Views, \'element type\' is added\n";
425 out <<
"For products only read from previous processes, \'skip current process\' is added\n";
426 for(
auto const*
module : allModules) {
427 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
429 if(!consumesInfo.empty()) {
430 out <<
" consumes:\n";
431 for(
auto const&
info : consumesInfo) {
432 out <<
" " <<
info.type() <<
" \'" <<
info.label() <<
"\' \'" <<
info.instance();
433 out <<
"\' \'" <<
info.process() <<
"\'";
439 if(!
info.alwaysGets()) {
440 out <<
", may consume";
443 out <<
", element type";
445 if(
info.skipCurrentProcess()) {
446 out <<
", skip current process";
821 out <<
" starting: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
832 out <<
" finished: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
843 out <<
" starting: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
854 out <<
" finished: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
864 unsigned int nIndents = mcc.
depth() + 4;
865 for(
unsigned int i = 0;
i < nIndents; ++
i) {
879 unsigned int nIndents = mcc.
depth() + 4;
880 for(
unsigned int i = 0;
i < nIndents; ++
i) {
895 unsigned int nIndents = mcc.
depth() + 4;
896 for(
unsigned int i = 0;
i < nIndents; ++
i) {
910 unsigned int nIndents = mcc.
depth() + 4;
911 for(
unsigned int i = 0;
i < nIndents; ++
i) {
925 unsigned int nIndents = mcc.
depth() + 4;
926 for(
unsigned int i = 0;
i < nIndents; ++
i) {
936 unsigned int nIndents = mcc.
depth() + 4;
937 for(
unsigned int i = 0;
i < nIndents; ++
i) {
947 unsigned int nIndents = mcc.
depth() + 4;
948 for(
unsigned int i = 0;
i < nIndents; ++
i) {
962 unsigned int nIndents = mcc.
depth() + 4;
963 for(
unsigned int i = 0;
i < nIndents; ++
i) {
977 unsigned int nIndents = mcc.
depth() + 5;
978 for(
unsigned int i = 0;
i < nIndents; ++
i) {
988 unsigned int nIndents = mcc.
depth() + 5;
989 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1000 unsigned int nIndents = mcc.
depth() + 3;
1001 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1015 unsigned int nIndents = mcc.
depth() + 3;
1016 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1030 unsigned int nIndents = mcc.
depth() + 3;
1031 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1045 unsigned int nIndents = mcc.
depth() + 3;
1046 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1060 unsigned int nIndents = mcc.
depth() + 3;
1061 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1075 unsigned int nIndents = mcc.
depth() + 3;
1076 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1090 unsigned int nIndents = mcc.
depth() + 3;
1091 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1105 unsigned int nIndents = mcc.
depth() + 3;
1106 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1120 unsigned int nIndents = mcc.
depth() + 3;
1121 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1135 unsigned int nIndents = mcc.
depth() + 3;
1136 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1150 unsigned int nIndents = mcc.
depth() + 3;
1151 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1165 unsigned int nIndents = mcc.
depth() + 3;
1166 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1180 unsigned int nIndents = mcc.
depth() + 3;
1181 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1195 unsigned int nIndents = mcc.
depth() + 3;
1196 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1210 unsigned int nIndents = mcc.
depth() + 3;
1211 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1225 unsigned int nIndents = mcc.
depth() + 3;
1226 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1241 out <<
" starting: constructing source: " << desc.
moduleName();
1243 out <<
"\n" << desc;
1252 out <<
" finished: constructing source: " << desc.
moduleName();
1254 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 watchPreModuleEventAcquire(PreModuleEventAcquire::slot_type const &iSlot)
void postModuleStreamEndLumi(StreamContext const &, ModuleCallingContext const &)
void postModuleEventAcquire(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)
void watchPostModuleEventAcquire(PostModuleEventAcquire::slot_type const &iSlot)
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 &)
void preModuleEventAcquire(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