ATLAS Offline Software
TrigByteStreamCnvSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGBYTESTREAMCNVSVC_H
6 #define TRIGBYTESTREAMCNVSVC_H
7 
11 
12 // Forward declarations
13 class StoreGateSvc;
15 
23 public:
25  TrigByteStreamCnvSvc(const std::string& name, ISvcLocator* svcLoc);
27  virtual ~TrigByteStreamCnvSvc();
28 
29  // ------------------------- IService methods --------------------------------
30  virtual StatusCode initialize() override;
31  virtual StatusCode finalize() override;
32 
33  // ------------------------- IConversionSvc methods --------------------------
35  virtual StatusCode connectOutput(const std::string& outputFile) override;
37  StatusCode connectOutput(const std::string& outputFile, const EventContext& eventContext);
39  virtual StatusCode connectOutput(const std::string& outputFile, const std::string& openMode) override;
41  virtual StatusCode commitOutput(const std::string& outputFile, bool do_commit) override;
43  StatusCode commitOutput(const std::string& outputFile, bool do_commit, const EventContext& eventContext);
44 
45  // ------------------------- IByteStreamEventAccess methods ------------------
47  virtual RawEventWrite* getRawEvent() override;
49  RawEventWrite* getRawEvent(const EventContext& eventContext) const;
50 
51 private:
52  // ------------------------- Helper methods ----------------------------------
54  RawEventWrite* setRawEvent(std::unique_ptr<RawEventWrite>&& rawEventWrite, const EventContext& eventContext);
56  void clearRawEvent(const EventContext& eventContext);
58  void printRawEvent(const EventContext& eventContext) const;
60  void monitorRawEvent(const std::unique_ptr<uint32_t[]>& rawEventPtr) const;
62  const EventContext* currentContext() const;
63 
64  // ------------------------- Service / Tool handles --------------------------
65  ServiceHandle<StoreGateSvc> m_evtStore {this, "EventStore", "StoreGateSvc"};
66  ServiceHandle<IROBDataProviderSvc> m_robDataProviderSvc {this, "ROBDataProvider", "ROBDataProviderSvc"};
67  ToolHandle<GenericMonitoringTool> m_monTool {this, "MonTool", "" , "Monitoring tool"};
68 
69  // ------------------------- Other private members ---------------------------
71 };
72 
73 #endif // TRIGBYTESTREAMCNVSVC_H
RawEventWrite
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::FullEventFragment RawEventWrite
data type for writing raw event
Definition: RawEvent.h:39
TrigByteStreamCnvSvc::commitOutput
virtual StatusCode commitOutput(const std::string &outputFile, bool do_commit) override
In the case of online BS data, this method binds and sends out the output FullEventFragment.
Definition: TrigByteStreamCnvSvc.cxx:163
TrigByteStreamCnvSvc::monitorRawEvent
void monitorRawEvent(const std::unique_ptr< uint32_t[]> &rawEventPtr) const
Fill histograms from contents of a FullEventFragment.
Definition: TrigByteStreamCnvSvc.cxx:266
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TrigByteStreamCnvSvc::m_rawEventWriteCache
SG::SlotSpecificObj< std::unique_ptr< RawEventWrite > > m_rawEventWriteCache
Definition: TrigByteStreamCnvSvc.h:70
TrigByteStreamCnvSvc::connectOutput
virtual StatusCode connectOutput(const std::string &outputFile) override
In the case of online BS data, this method creates the output FullEventFragment and fills its header.
Definition: TrigByteStreamCnvSvc.cxx:125
compareGeometries.outputFile
string outputFile
Definition: compareGeometries.py:25
TrigByteStreamCnvSvc::~TrigByteStreamCnvSvc
virtual ~TrigByteStreamCnvSvc()
Standard destructor.
Definition: TrigByteStreamCnvSvc.cxx:92
IROBDataProviderSvc
Interface class for managing ROB for both online and offline.
Definition: IROBDataProviderSvc.h:25
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
SG::SlotSpecificObj
Maintain a set of objects, one per slot.
Definition: AthenaKernel/AthenaKernel/SlotSpecificObj.h:70
TrigByteStreamCnvSvc::setRawEvent
RawEventWrite * setRawEvent(std::unique_ptr< RawEventWrite > &&rawEventWrite, const EventContext &eventContext)
Store new raw event in the cache.
Definition: TrigByteStreamCnvSvc.cxx:255
TrigByteStreamCnvSvc::m_robDataProviderSvc
ServiceHandle< IROBDataProviderSvc > m_robDataProviderSvc
Definition: TrigByteStreamCnvSvc.h:66
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TrigByteStreamCnvSvc::finalize
virtual StatusCode finalize() override
Definition: TrigByteStreamCnvSvc.cxx:110
TrigByteStreamCnvSvc::TrigByteStreamCnvSvc
TrigByteStreamCnvSvc(const std::string &name, ISvcLocator *svcLoc)
Standard constructor.
Definition: TrigByteStreamCnvSvc.cxx:86
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigByteStreamCnvSvc::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigByteStreamCnvSvc.h:67
TrigByteStreamCnvSvc::m_evtStore
ServiceHandle< StoreGateSvc > m_evtStore
Definition: TrigByteStreamCnvSvc.h:65
ByteStreamCnvSvcBase
The base class for offline and HLT ByteStream conversion services.
Definition: ByteStreamCnvSvcBase.h:19
TrigByteStreamCnvSvc::printRawEvent
void printRawEvent(const EventContext &eventContext) const
Print contents of the raw event.
Definition: TrigByteStreamCnvSvc.cxx:390
TrigByteStreamCnvSvc::currentContext
const EventContext * currentContext() const
Hack used in HLT to avoid using ThreadLocalContext, see explanation in the implementation.
Definition: TrigByteStreamCnvSvc.cxx:230
SlotSpecificObj.h
Maintain a set of objects, one per slot.
ByteStreamCnvSvcBase.h
TrigByteStreamCnvSvc::clearRawEvent
void clearRawEvent(const EventContext &eventContext)
Delete raw event from the cache.
Definition: TrigByteStreamCnvSvc.cxx:261
TrigByteStreamCnvSvc
A ByteStreamCnvSvc implementation for online use.
Definition: TrigByteStreamCnvSvc.h:22
TrigByteStreamCnvSvc::getRawEvent
virtual RawEventWrite * getRawEvent() override
Return a pointer to the raw event for the current event context.
Definition: TrigByteStreamCnvSvc.cxx:243
ServiceHandle< StoreGateSvc >
TrigByteStreamCnvSvc::initialize
virtual StatusCode initialize() override
Required of all Gaudi Services.
Definition: TrigByteStreamCnvSvc.cxx:97