CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Timer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Timer
4 // Class: Timer
5 //
14 //
15 // Original Author: Christos Leonidopoulos
16 // Created: Mon Jul 10 14:13:58 CEST 2006
17 // $Id: Timer.cc,v 1.9 2007/03/27 19:10:58 cleonido Exp $
18 //
19 //
20 
21 
23 
24 #include <iostream>
25 
26 using edm::ParameterSet;
27 using edm::Service;
29 //
30 using edm::ModuleTime;
31 using edm::EventTime;
32 
33 using std::string;
34 
35 Timer::Timer(const ParameterSet& iConfig)
36 {
37  // produces<EventTime>("Timing");
38  produces<EventTime>();
39 
40  // whether to include timing info about Timer module (default: false)
41  includeSelf = iConfig.getUntrackedParameter<bool>("includeSelf", false);
42 
43  timing.reset();
44 
45  // attach method to Timing service's "new measurement" signal
47  time->newMeasurementSignal.connect(boost::bind(boost::mem_fn(&Timer::newTimingMeasurement), this, _1, _2) );
48 
49  self_module_name = string(iConfig.getParameter<string>("@module_type"));
50 }
51 
53 {
54  using namespace std;
55 
56  if(!includeSelf){
57  string longLine("==========================================================");
58  cout << longLine << endl;
59  cout << " Timer Info:\n";
60  cout << " Timer module was excluded from time measurements\n";
61  cout << " (to include, set 'bool includeSelf = true' in .cfg file)\n";
62  cout << longLine << endl << endl;
63  }
64 
65 }
66 
67 // fwk calls this method when new module measurement arrives
68 void Timer::newTimingMeasurement(const ModuleDescription& iMod, double iTime)
69 {
70  // check if module name corresponds to "this" and skip if needed
71  if(!includeSelf && iMod.moduleName() == self_module_name)
72  return;
73 
74  // new measurement; add to private member
75  ModuleTime newModuleTime(iMod.moduleLabel(), iTime);
76  timing.addModuleTime(newModuleTime);
77 }
78 
79 
80 //
81 // member functions
82 //
83 
84 // ------------ method called to produce the data ------------
85 void
87 {
88  std::auto_ptr<EventTime> out(new EventTime(timing));
89  // reset data so that we can start from scratch for next event
90  timing.reset();
91  //
92  iEvent.put(out);
93 }
94 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
Timer(const edm::ParameterSet &)
Definition: Timer.cc:35
~Timer()
Definition: Timer.cc:52
std::string const & moduleName() const
std::string const & moduleLabel() const
void addModuleTime(const ModuleTime &m)
Definition: ModuleTiming.h:58
std::string self_module_name
Definition: Timer.h:59
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:94
void newTimingMeasurement(const edm::ModuleDescription &iMod, double iTime)
Definition: Timer.cc:68
tuple out
Definition: dbtoconf.py:99
edm::EventTime timing
Definition: Timer.h:54
virtual void produce(edm::Event &, const edm::EventSetup &)
Definition: Timer.cc:86
sigc::signal< void, const edm::ModuleDescription &, double > newMeasurementSignal
Definition: TimerService.h:86
tuple cout
Definition: gather_cfg.py:121
bool includeSelf
Definition: Timer.h:56