Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
RootPerfMonSvc.h
Go to the documentation of this file.
1 //====================================================================
2 // RootPerfMonSvc definition
3 //--------------------------------------------------------------------
4 //
5 // Author : M.Frank
6 //====================================================================
7 #ifndef GAUDIROOTCNV_GAUDIROOTPERFMONSVC_H
8 #define GAUDIROOTCNV_GAUDIROOTPERFMONSVC_H
9 
10 #include <memory>
11 // Framework include files
14 #include "GaudiKernel/Service.h"
15 
16 #include "TFile.h"
17 #include "TTree.h"
18 
19 #include "RootCnv/SysProcStat.h"
20 
21 // C/C++ include files
22 #include <set>
23 
24 /*
25  * Gaudi namespace declaration
26  */
27 namespace Gaudi {
28 
39  class GAUDI_API RootPerfMonSvc : public extends<Service, IIncidentListener> {
40  protected:
41  Gaudi::Property<std::string> m_ioPerfStats{this, "IOPerfStats", "",
42  "Enable TTree IOperfStats if not empty; otherwise perf stat file name"};
43  // Passed parameters
44  Gaudi::Property<std::string> m_setStreams{this, "Streams", "", ""};
45  Gaudi::Property<std::string> m_basketSize{this, "BasketSize", "", ""};
46  Gaudi::Property<std::string> m_bufferSize{this, "BufferSize", "", ""};
47  Gaudi::Property<std::string> m_splitLevel{this, "SplitLevel", "", ""};
48 
53  // Reference to a tree with statistics
54  TTree* m_perfTree;
55  // Reference to a file where statistics are persisted
57  // Reference to all connected output files
59  // The newest observed values
60  Int_t m_eventType;
61  ULong_t m_utime, m_stime, m_vsize;
62  Long_t m_eventNumber, m_rss, m_time;
63 
64  // Types of records
65  enum EventType { EVENT = 1, FSR = 2 };
66 
67  // Adding newest observed values to the tree with statistics
68  virtual void record( EventType eventType );
69 
71  MsgStream& log() const { return *m_log; }
72 
73  public:
75  using extends::extends;
76 
82  StatusCode error( const std::string& msg );
83 
85  StatusCode initialize() override;
86 
88  StatusCode finalize() override;
89 
91  void handle( const Incident& incident ) override;
92 
93  // Service overload: Stop the service
94  StatusCode stop() override;
95  };
96 } // namespace Gaudi
97 
98 #endif // GAUDIROOTCNV_GAUDIROOTPERFMONSVC_H
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
Implementation of property with value of concrete type.
Definition: Property.h:352
std::unique_ptr< TFile > m_perfFile
SmartIF< IIncidentSvc > m_incidentSvc
Reference to incident service.
STL class.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
MsgStream & log() const
Helper: Use message streamer.
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
Base class for all Incidents (computing events).
Definition: Incident.h:17
std::set< std::string > m_outputs
#define GAUDI_API
Definition: Kernel.h:71
std::unique_ptr< MsgStream > m_log
Message streamer.
Helper functions to set/get the application return code.
Definition: __init__.py:1