00001 #ifndef Services_TIMING_h 00002 #define Services_TIMING_h 00003 // -*- C++ -*- 00004 // 00005 // Package: Services 00006 // Class : Timing 00007 // 00008 // 00009 // Original Author: Jim Kowalkowski 00010 // $Id: Timing.h,v 1.6 2007/03/04 05:55:26 wmtan Exp $ 00011 // 00012 #include "sigc++/signal.h" 00013 00014 #include "DataFormats/Provenance/interface/EventID.h" 00015 #include "DataFormats/Provenance/interface/ProvenanceFwd.h" 00016 00017 namespace edm { 00018 struct ActivityRegistry; 00019 class Event; 00020 class EventSetup; 00021 class ParameterSet; 00022 namespace service { 00023 class Timing 00024 { 00025 public: 00026 Timing(const ParameterSet&,ActivityRegistry&); 00027 ~Timing(); 00028 00029 sigc::signal<void, const ModuleDescription&, double> newMeasurementSignal; 00030 private: 00031 void postBeginJob(); 00032 void postEndJob(); 00033 00034 void preEventProcessing(const EventID&, const Timestamp&); 00035 void postEventProcessing(const Event&, const EventSetup&); 00036 00037 void preModule(const ModuleDescription&); 00038 void postModule(const ModuleDescription&); 00039 00040 EventID curr_event_; 00041 double curr_job_; // seconds 00042 double curr_event_time_; // seconds 00043 double curr_module_time_; // seconds 00044 bool summary_only_; 00045 bool report_summary_; 00046 00047 // 00048 // Min Max and average event times for summary 00049 // at end of job 00050 double max_event_time_; // seconds 00051 double min_event_time_; // seconds 00052 int total_event_count_; 00053 }; 00054 } 00055 } 00056 00057 00058 00059 #endif