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
12 #include "GaudiKernel/IIncidentListener.h"
13 #include "GaudiKernel/Service.h"
14 
15 #include "TTree.h"
16 #include "TFile.h"
17 
18 #include "RootCnv/SysProcStat.h"
19 
20 // C/C++ include files
21 #include <set>
22 
23 // Forward declarations
24 class IIncidentSvc;
25 
26 /*
27  * Gaudi namespace declaration
28  */
29 namespace Gaudi {
30 
41  class GAUDI_API RootPerfMonSvc : public Service, virtual public IIncidentListener {
42  protected:
43 
45  SmartIF<IIncidentSvc> m_incidentSvc ;
47  std::string m_ioPerfStats;
49  std::unique_ptr<MsgStream> m_log;
50  // Passed parameters
51  std::string m_setStreams;
52  std::string m_basketSize;
53  std::string m_bufferSize;
54  std::string m_splitLevel;
55  // Reference to a tree with statistics
56  TTree* m_perfTree;
57  // Reference to a file where statistics are persisted
58  std::unique_ptr<TFile> m_perfFile;
59  // Reference to all connected output files
60  std::set<std::string> m_outputs;
61  // The newest observed values
62  Int_t m_eventType;
63  ULong_t m_utime, m_stime, m_vsize;
64  Long_t m_eventNumber, m_rss, m_time;
65 
66  // Types of records
67  enum EventType { EVENT = 1, FSR = 2 };
68 
69  // Adding newest observed values to the tree with statistics
70  virtual void record(EventType eventType);
71 
73  MsgStream& log() const { return *m_log; }
74 
75  public:
77  RootPerfMonSvc(const std::string& name, ISvcLocator* svc);
78 
80  ~RootPerfMonSvc() override = default;
81 
87  StatusCode error(const std::string& msg);
88 
90  StatusCode initialize() override;
91 
93  StatusCode finalize() override;
94 
96  void handle(const Incident& incident) override;
97 
98  // Service overload: Stop the service
99  StatusCode stop() override;
100  };
101 }
102 
103 #endif // GAUDIROOTCNV_GAUDIROOTPERFMONSVC_H
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
def initialize()
Definition: AnalysisTest.py:12
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
#define GAUDI_API
Definition: Kernel.h:107
The interface implemented by any class wanting to listen to Incidents.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
MsgStream & log() const
Helper: Use message streamer.
Base class for all Incidents (computing events).
Definition: Incident.h:16
Base class for all services.
Definition: Service.h:33
Helper functions to set/get the application return code.
Definition: __init__.py:1
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:21