ATLAS Offline Software
TileLaserObjByteStreamCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //author Renato Febbraro
6 //renato.febbraro@cern.ch
7 //date February 2008
8 
9 // Gaudi includes
10 #include "GaudiKernel/StatusCode.h"
11 #include "GaudiKernel/DataObject.h"
12 #include "GaudiKernel/IRegistry.h"
13 #include "GaudiKernel/IToolSvc.h"
14 
15 // Athena includes
18 
23 #include "ByteStreamData/RawEvent.h"
24 
25 #include "AthenaKernel/CLASS_DEF.h"
26 
27 // Tile includes
34 
35 
36 
38  : AthConstConverter(storageType(), classID(), svcloc, "TileLaserObjByteStreamCnv")
39  , m_robSvc("ROBDataProviderSvc", name())
40  , m_decoder("TileROD_Decoder")
41  , m_ROBID()
42  , m_hid2re(0)
43 {
44 }
45 
47 
49 
51 
53 
54  ATH_MSG_DEBUG(" initialize ");
55 
56  ATH_CHECK( m_robSvc.retrieve() );
57 
58  // retrieve Tool
59  ATH_CHECK( m_decoder.retrieve() );
60 
61  m_hid2re = m_decoder->getHid2re();
62 
63  m_ROBID.clear();
64  // m_ROBID.push_back( 0x500000 );
65  // m_ROBID.push_back( 0x520010 );
67 
68  return StatusCode::SUCCESS ;
69 }
70 
71 
72 StatusCode TileLaserObjByteStreamCnv::createObjConst(IOpaqueAddress* pAddr, DataObject*& pObj) const
73 {
74  ATH_MSG_DEBUG( " Executing createObj method" );
75 
76  ByteStreamAddress *pRE_Addr;
77  pRE_Addr = dynamic_cast<ByteStreamAddress*>(pAddr);
78  if(!pRE_Addr) {
79  ATH_MSG_ERROR( " Can not cast to ByteStreamAddress " );
80  return StatusCode::FAILURE;
81  }
82 
83  /*FIND ROB*/
84  std::vector<const ROBDataProviderSvc::ROBF*> robf;
85  m_robSvc->getROBData(m_ROBID, robf);
86 
87  // create TileLaserObject
88  auto cont = std::make_unique<TileLaserObject>() ;
89  m_decoder->setLaserVersion(*cont);
90 
91  if (robf.size() > 0 ) {
92  m_decoder->fillTileLaserObj(robf[0], *cont);
93  } else {
94  ATH_MSG_DEBUG( " No LASTROD fragment in BS, TileLaserObject will be empty." );
95  }
96 
97  pObj = SG::asStorable( std::move(cont) ) ;
98 
99  return StatusCode::SUCCESS;
100 }
101 
102 StatusCode TileLaserObjByteStreamCnv::createRepConst(DataObject* /* pObj */, IOpaqueAddress*& /* pAddr */) const
103 {
104  // No conversion from TileLaserObj to BS
105 
106  ATH_MSG_ERROR( " Can not create BS from TileLaserObject " );
107 
108  return StatusCode::FAILURE ;
109 }
110 
TileLaserObjByteStreamCnv::classID
static const CLID & classID()
Definition: TileLaserObjByteStreamCnv.cxx:46
StorableConversions.h
convert to and from a SG storable
initialize
void initialize()
Definition: run_EoverP.cxx:894
TileHid2RESrcID::getRobFromFragID
uint32_t getRobFromFragID(int frag_id) const
make a ROB SrcID for a fragment ID
Definition: TileHid2RESrcID.cxx:457
SG::asStorable
DataObject * asStorable(T *pObject)
Definition: StorableConversions.h:158
ROBDataProviderSvc.h
TileLaserObject.h
AthConstConverter
Gaudi converter base class with const interfaces.
Definition: AthConstConverter.h:33
TileLaserObjByteStreamCnv::storageType
static long storageType()
Definition: TileLaserObjByteStreamCnv.cxx:48
ClassID_traits::ID
static const CLID & ID()
the CLID of T
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:50
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TileROD_Decoder.h
TileLaserObjByteStreamCnv::m_hid2re
const TileHid2RESrcID * m_hid2re
Pointer to TileHid2RESrcID.
Definition: TileLaserObjByteStreamCnv.h:65
RawEvent.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition: ByteStreamAddress.h:28
TileLaserObjByteStreamCnv::createRepConst
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
Definition: TileLaserObjByteStreamCnv.cxx:102
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ByteStreamAddress.h
ByteStreamCnvSvc.h
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
TileHid2RESrcID.h
ByteStreamAddress::storageType
static constexpr long storageType()
Definition: ByteStreamAddress.h:51
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LASER_OBJ_FRAG
#define LASER_OBJ_FRAG
Definition: TileTBFrag.h:49
errorcheck.h
Helpers for checking error return status codes and reporting errors.
TileTBFrag.h
TileLaserObjByteStreamCnv::initialize
virtual StatusCode initialize() override
Definition: TileLaserObjByteStreamCnv.cxx:50
TileLaserObjByteStreamCnv::m_decoder
ToolHandle< TileROD_Decoder > m_decoder
Pointer to TileROD_Decoder.
Definition: TileLaserObjByteStreamCnv.h:60
TileLaserObjByteStreamCnv::createObjConst
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
Definition: TileLaserObjByteStreamCnv.cxx:72
TileLaserObjByteStreamCnv::m_robSvc
ServiceHandle< IROBDataProviderSvc > m_robSvc
Pointer to IROBDataProviderSvc.
Definition: TileLaserObjByteStreamCnv.h:57
ByteStreamCnvSvcBase.h
TileLaserObjByteStreamCnv::m_ROBID
std::vector< uint32_t > m_ROBID
Definition: TileLaserObjByteStreamCnv.h:62
TileLaserObjByteStreamTool.h
TileLaserObjByteStreamCnv.h
CLASS_DEF.h
macros to associate a CLID to a type
TileLaserObjByteStreamCnv::TileLaserObjByteStreamCnv
TileLaserObjByteStreamCnv(ISvcLocator *svcloc)
Definition: TileLaserObjByteStreamCnv.cxx:37