43 using namespace edm::service;
49 TimeStamper(
bool enable) :
55 if (timestamp.enabled_)
67 indention_(iPS.getUntrackedParameter<std::
string>(
"indention")),
68 dumpContextForLabels_(),
69 dumpNonModuleContext_(iPS.getUntrackedParameter<bool>(
"dumpNonModuleContext")),
70 dumpPathsAndConsumes_(iPS.getUntrackedParameter<bool>(
"dumpPathsAndConsumes")),
71 printTimestamps_(iPS.getUntrackedParameter<bool>(
"printTimestamps"))
214 desc.
addUntracked<
std::string>(
"indention",
"++")->setComment(
"Prefix characters for output. The characters are repeated to form the indentation.");
215 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");
216 desc.
addUntracked<
bool>(
"dumpNonModuleContext",
false)->setComment(
"Prints context information to cout for the transitions not associated with any module label");
217 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");
218 desc.
addUntracked<
bool>(
"printTimestamps",
false)->setComment(
"Prints a time stamp for every transition");
219 descriptions.
add(
"Tracer", desc);
220 descriptions.
setComment(
"This service prints each phase the framework is processing, e.g. constructing a module,running a module, etc.");
235 out <<
"\n" <<
"Process name = " << pc.
processName() <<
"\n";
237 std::vector<std::string>
const&
paths = pathsAndConsumes.
paths();
238 for(
auto const&
path : paths) {
239 out <<
" " <<
path <<
"\n";
241 out <<
"end paths:\n";
242 std::vector<std::string>
const& endpaths = pathsAndConsumes.
endPaths();
243 for(
auto const& endpath : endpaths) {
244 out <<
" " << endpath <<
"\n";
246 for(
unsigned int j = 0;
j < paths.size(); ++
j) {
247 std::vector<ModuleDescription const*>
const& modulesOnPath = pathsAndConsumes.
modulesOnPath(
j);
248 out <<
"modules on path " << paths.at(
j) <<
":\n";
249 for(
auto const& desc : modulesOnPath) {
250 out <<
" " << desc->moduleLabel() <<
"\n";
253 for(
unsigned int j = 0;
j < endpaths.size(); ++
j) {
254 std::vector<ModuleDescription const*>
const& modulesOnEndPath = pathsAndConsumes.
modulesOnEndPath(
j);
255 out <<
"modules on end path " << endpaths.at(
j) <<
":\n";
256 for(
auto const& desc : modulesOnEndPath) {
257 out <<
" " << desc->moduleLabel() <<
"\n";
260 std::vector<ModuleDescription const*>
const& allModules = pathsAndConsumes.
allModules();
261 out <<
"All modules and modules in the current process whose products they consume:\n";
262 out <<
"(This does not include modules from previous processes or the source)\n";
263 for(
auto const&
module : allModules) {
264 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
265 unsigned int moduleID =
module->id();
267 throw cms::Exception(
"TestFailure") <<
"Tracer::preBeginJob, moduleDescription returns incorrect value";
269 std::vector<ModuleDescription const*>
const& modulesWhoseProductsAreConsumedBy =
271 if(!modulesWhoseProductsAreConsumedBy.empty()) {
272 out <<
" consumes products from these modules:\n";
273 for(
auto const& producingModule : modulesWhoseProductsAreConsumedBy) {
274 out <<
" " << producingModule->moduleName() <<
"/\'" << producingModule->moduleLabel() <<
"\'\n";
280 out <<
"All modules (listed by class and label) and all their consumed products.\n";
281 out <<
"Consumed products are listed by type, label, instance, process.\n";
282 out <<
"For products not in the event, \'run\' or \'lumi\' is added to indicate the TTree they are from.\n";
283 out <<
"For products that are declared with mayConsume, \'may consume\' is added.\n";
284 out <<
"For products consumed for Views, \'element type\' is added\n";
285 out <<
"For products only read from previous processes, \'skip current process\' is added\n";
286 for(
auto const*
module : allModules) {
287 out <<
" " <<
module->moduleName() <<
"/\'" <<
module->moduleLabel() <<
"\'";
289 if(!consumesInfo.empty()) {
290 out <<
" consumes:\n";
291 for(
auto const&
info : consumesInfo) {
292 out <<
" " <<
info.type() <<
" \'" <<
info.label() <<
"\' \'" <<
info.instance();
293 out <<
"\' \'" <<
info.process() <<
"\'";
299 if(!
info.alwaysGets()) {
300 out <<
", may consume";
303 out <<
", element type";
305 if(
info.skipCurrentProcess()) {
306 out <<
", skip current process";
681 out <<
" starting: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
692 out <<
" finished: begin job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
703 out <<
" starting: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
714 out <<
" finished: end job for module with label '" << desc.
moduleLabel() <<
"' id = " << desc.
id();
724 unsigned int nIndents = mcc.
depth() + 4;
725 for(
unsigned int i = 0;
i < nIndents; ++
i) {
739 unsigned int nIndents = mcc.
depth() + 4;
740 for(
unsigned int i = 0;
i < nIndents; ++
i) {
755 unsigned int nIndents = mcc.
depth() + 4;
756 for(
unsigned int i = 0;
i < nIndents; ++
i) {
770 unsigned int nIndents = mcc.
depth() + 4;
771 for(
unsigned int i = 0;
i < nIndents; ++
i) {
786 unsigned int nIndents = mcc.
depth() + 3;
787 for(
unsigned int i = 0;
i < nIndents; ++
i) {
801 unsigned int nIndents = mcc.
depth() + 3;
802 for(
unsigned int i = 0;
i < nIndents; ++
i) {
816 unsigned int nIndents = mcc.
depth() + 3;
817 for(
unsigned int i = 0;
i < nIndents; ++
i) {
831 unsigned int nIndents = mcc.
depth() + 3;
832 for(
unsigned int i = 0;
i < nIndents; ++
i) {
846 unsigned int nIndents = mcc.
depth() + 3;
847 for(
unsigned int i = 0;
i < nIndents; ++
i) {
861 unsigned int nIndents = mcc.
depth() + 3;
862 for(
unsigned int i = 0;
i < nIndents; ++
i) {
876 unsigned int nIndents = mcc.
depth() + 3;
877 for(
unsigned int i = 0;
i < nIndents; ++
i) {
891 unsigned int nIndents = mcc.
depth() + 3;
892 for(
unsigned int i = 0;
i < nIndents; ++
i) {
906 unsigned int nIndents = mcc.
depth() + 3;
907 for(
unsigned int i = 0;
i < nIndents; ++
i) {
921 unsigned int nIndents = mcc.
depth() + 3;
922 for(
unsigned int i = 0;
i < nIndents; ++
i) {
936 unsigned int nIndents = mcc.
depth() + 3;
937 for(
unsigned int i = 0;
i < nIndents; ++
i) {
951 unsigned int nIndents = mcc.
depth() + 3;
952 for(
unsigned int i = 0;
i < nIndents; ++
i) {
966 unsigned int nIndents = mcc.
depth() + 3;
967 for(
unsigned int i = 0;
i < nIndents; ++
i) {
981 unsigned int nIndents = mcc.
depth() + 3;
982 for(
unsigned int i = 0;
i < nIndents; ++
i) {
996 unsigned int nIndents = mcc.
depth() + 3;
997 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1011 unsigned int nIndents = mcc.
depth() + 3;
1012 for(
unsigned int i = 0;
i < nIndents; ++
i) {
1027 out <<
" starting: constructing source: " << desc.
moduleName();
1029 out <<
"\n" << desc;
1038 out <<
" finished: constructing source: " << desc.
moduleName();
1040 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)
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