ATLAS Offline Software
Loading...
Searching...
No Matches
TileBeamElemContByteStreamCnv.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 TILEBYTESTREAM_TILEBEAMELEM_BYTESTREAMCNV_H
6#define TILEBYTESTREAM_TILEBEAMELEM_BYTESTREAMCNV_H
7
8// Gaudi includes
10#include "GaudiKernel/ToolHandle.h"
11#include "GaudiKernel/ServiceHandle.h"
12#include "GaudiKernel/ContextSpecificPtr.h"
13
14
15// Athena includes
19
20
21#include "eformat/ROBFragment.h"
22#include "eformat/FullEventFragment.h"
23
25
26class DataObject;
27class StatusCode;
28class IAddressCreator;
30class TileHid2RESrcID;
31class TileROD_Decoder;
32
33#include <stdint.h>
34#include <vector>
35
36
37// Abstract factory to create the converter
38template <class TYPE> class CnvFactory;
39
45
47 : public AthConstConverter
48{
49 public:
50 TileBeamElemContByteStreamCnv(ISvcLocator* svcloc);
51
52 virtual StatusCode initialize() override;
53 virtual StatusCode createObjConst(IOpaqueAddress* pAddr, DataObject*& pObj) const override;
54 virtual StatusCode createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const override;
55 virtual StatusCode finalize() override;
56
58 virtual long repSvcType() const override { return i_repSvcType(); }
59 static long storageType();
60 static const CLID& classID();
61
62 // FIXME: Eliminate this backdoor access to RAW data.
63 // If clients need raw data, they should get it from the
64 // existing ByteStreamSvc interfaces.
65 inline const eformat::FullEventFragment<const uint32_t*> * eventFragment() const { return m_event.get(); }
66 inline const eformat::ROBFragment<const uint32_t*> * robFragment() const { return m_robFrag.get(); }
67 inline bool validBeamFrag() const { return m_robFrag.isValid(); }
68
69 private:
72
74 ToolHandle<TileROD_Decoder> m_decoder;
75
76 mutable Gaudi::Hive::ContextSpecificPtr<
77 const eformat::FullEventFragment<const uint32_t*> > m_event ATLAS_THREAD_SAFE;
78
79 mutable Gaudi::Hive::ContextSpecificPtr<
81
82 std::vector<uint32_t> m_ROBID;
83
86
89};
90#endif
91
Gaudi converter base class with const interfaces.
uint32_t CLID
The Class ID type.
Helper for recycling objects from event to event.
Helper for holding non-const raw data prior to recording in SG.
Define macros for attributes used to control the static checker.
AthConstConverter(long storage_type, const CLID &class_type, ISvcLocator *svc, const std::string &name)
Holder for recyclable objects.
Abstract factory to create the converter.
Interface class for managing ROB for both online and offline.
virtual long repSvcType() const override
Storage type and class ID.
ServiceHandle< IROBDataProviderSvc > m_robSvc
Pointer to IROBDataProviderSvc.
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
const eformat::FullEventFragment< const uint32_t * > * eventFragment() const
ToolHandle< TileROD_Decoder > m_decoder
Pointer to TileROD_Decoder.
Gaudi::Hive::ContextSpecificPtr< const eformat::FullEventFragment< const uint32_t * > > m_event ATLAS_THREAD_SAFE
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
const eformat::ROBFragment< const uint32_t * > * robFragment() const
const TileHid2RESrcID * m_hid2re
Pointer to TileHid2RESrcID.
This class provides conversion between fragment ID and RESrcID.
Decodes the different TileCal ROD subfragment types in bytestream data and fills TileDigitsContainer,...