The Gaudi Framework  master (9f3f8895)
Loading...
Searching...
No Matches
TimelineSvc.h
Go to the documentation of this file.
1/***********************************************************************************\
2* (c) Copyright 1998-2026 CERN for the benefit of the LHCb and ATLAS collaborations *
3* *
4* This software is distributed under the terms of the Apache version 2 licence, *
5* copied verbatim in the file "LICENSE". *
6* *
7* In applying this licence, CERN does not waive the privileges and immunities *
8* granted to it by virtue of its status as an Intergovernmental Organization *
9* or submit itself to any jurisdiction. *
10\***********************************************************************************/
11
12#pragma once
13
15#include <GaudiKernel/Service.h>
16#include <string>
17
18#include <boost/functional/hash.hpp>
19#include <tbb/concurrent_unordered_map.h>
20
21class TimelineSvc : public extends<Service, ITimelineSvc> {
22public:
23 using extends::extends;
24
25 StatusCode initialize() override;
26 StatusCode reinitialize() override;
27 StatusCode finalize() override;
28
29 TimelineRecorder getRecorder( std::string alg, const EventContext& ctx ) override;
30
31 bool getTimelineEvent( TimelineEvent& ) const override;
32 bool getFirstMatching( TimelineEvent& ) const override;
33 bool getLastMatching( TimelineEvent& ) const override;
34 bool isEnabled() const override { return m_isEnabled; }
35
36private:
37 void outputTimeline();
38
39 Gaudi::Property<std::string> m_timelineFile{ this, "TimelineFile", "timeline.csv", "" };
40 Gaudi::Property<bool> m_isEnabled{ this, "RecordTimeline", false, "Enable recording of the timeline events" };
41 Gaudi::Property<bool> m_dumpTimeline{ this, "DumpTimeline", false, "Enable dumping of the timeline events" };
42 Gaudi::Property<bool> m_partial{ this, "Partial", false, "" };
43
44 using key_type = std::tuple<std::string, std::size_t>;
45 tbb::concurrent_unordered_multimap<key_type, TimelineEvent, boost::hash<key_type>> m_events;
46};
This class represents an entry point to all the event specific data.
Implementation of property with value of concrete type.
Definition Property.h:35
This class is used for returning status codes from appropriate routines.
Definition StatusCode.h:64
Gaudi::Property< bool > m_isEnabled
Definition TimelineSvc.h:40
Gaudi::Property< bool > m_partial
Definition TimelineSvc.h:42
void outputTimeline()
bool getTimelineEvent(TimelineEvent &) const override
StatusCode initialize() override
StatusCode reinitialize() override
bool getFirstMatching(TimelineEvent &) const override
StatusCode finalize() override
Gaudi::Property< std::string > m_timelineFile
Definition TimelineSvc.h:39
bool isEnabled() const override
Definition TimelineSvc.h:34
std::tuple< std::string, std::size_t > key_type
Definition TimelineSvc.h:44
TimelineRecorder getRecorder(std::string alg, const EventContext &ctx) override
Gaudi::Property< bool > m_dumpTimeline
Definition TimelineSvc.h:41
bool getLastMatching(TimelineEvent &) const override
tbb::concurrent_unordered_multimap< key_type, TimelineEvent, boost::hash< key_type > > m_events
Definition TimelineSvc.h:45
Base class used to extend a class implementing other interfaces.
Definition extends.h:19