6#include "GaudiKernel/MsgStream.h"
7#include "GaudiKernel/StatusCode.h"
8#include "GaudiKernel/DataObject.h"
9#include "GaudiKernel/IRegistry.h"
10#include "GaudiKernel/IToolSvc.h"
11#include "GaudiKernel/ServiceHandle.h"
38 ,
m_tool(
"TileRawChannelContByteStreamTool")
67 return StatusCode::SUCCESS;
79 const std::string containerName(*(pRE_Addr->par()));
80 bool isTMDB(containerName == std::string(
"MuRcvRawChCnt"));
82 uint32_t newrob = 0x0;
85 std::vector<uint32_t> robid(1);
87 std::vector<const ROBDataProviderSvc::ROBF*> robf;
98 std::unordered_map<uint32_t,int> bsflags;
104 rawChannelCollection->
clear();
109 newrob =
m_hid2re->getRobFromTileMuRcvFragID(collID);
111 newrob =
m_hid2re->getRobFromFragID(collID);
114 if (newrob != robid[0]) {
117 m_robSvc->getROBData(ctx, robid, robf);
121 if (robf.size() > 0 ) {
123 m_decoder->fillCollection_TileMuRcv_RawChannel(robf[0], *rawChannelCollection);
125 m_decoder->fillCollection(robf[0], *rawChannelCollection, cont);
128 auto result = bsflags.insert(std::pair<uint32_t, int>(flag, 1));
129 if (result.second ==
false) result.first->second++;
131 ATH_MSG_DEBUG(
"ROB for " << ((isTMDB)?
"TMDB ":
"") <<
"drawer 0x" << MSG::hex << collID << MSG::dec <<
" not found in BS" );
134 ATH_MSG_DEBUG(
"Status for " << ((isTMDB)?
"TMDB ":
"") <<
"drawer 0x" << MSG::hex << collID <<
" is 0x" << status << MSG::dec);
138 if (bsflags.size() > 1) {
140 for (
const auto & elem : bsflags) {
141 if (elem.second > n) {
149 uint32_t
unit = ((flag & 0xC0000000) >> 30);
152 ATH_MSG_DEBUG(
"Changing units for " << ((isTMDB)?
"TMDB ":
"") <<
"RawChannelContainer from "
154 <<
" and BS flags from 0x" << cont->
get_bsflags() <<
" to 0x" << flag << MSG::dec);
161 ATH_MSG_DEBUG(
"Creating raw channel container: " << containerName );
167 return StatusCode::SUCCESS;
178 std::string key(
"Tile");
189 return StatusCode::FAILURE;
192 std::string
name = pObj->registry()->name();
194 if ( pAddr !=
nullptr ) pAddr->release();
201 return StatusCode::SUCCESS;
206 return Converter::finalize();
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
#define ATH_CHECK
Evaluate an expression and check for errors.
macros to associate a CLID to a type
Helpers for checking error return status codes and reporting errors.
uint32_t CLID
The Class ID type.
convert to and from a SG storable
Incident sent after a store is cleared.
TileMutableDataContainer< TileRawChannelContainer > TileMutableRawChannelContainer
AthConstConverter(long storage_type, const CLID &class_type, ISvcLocator *svc, const std::string &name)
const std::string & name() const
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
const EventContext & getEventContext() const
static constexpr long storageType()
Template class for assembling a full atlas raw event from subfragments.
virtual std::vector< IdentifierHash > GetAllCurrentHashes() const override final
Returns a collection of all hashes availiable in this IDC.
This is a "hash" representation of an Identifier.
StatusCode status() const
Return the error status from the constructors.
Collection * indexFindPtr(IdentifierHash hash)
Look up a (non-const) collection via hash.
void setFragGlobalCRC(uint32_t globalcrc)
Various set methods.
void clear()
Clear everything for next event.
ToolHandle< TileROD_Decoder > m_decoder
Pointer to TileROD_Decoder.
ServiceHandle< IROBDataProviderSvc > m_robSvc
Pointer to IROBDataProviderSvc.
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
TileRawChannelContByteStreamCnv(ISvcLocator *svcloc)
ToolHandle< TileRawChannelContByteStreamTool > m_tool
virtual StatusCode initialize() override
static long storageType()
const TileHid2RESrcID * m_hid2re
Pointer to TileHid2RESrcID.
virtual StatusCode finalize() override
void set_bsflags(uint32_t bsflags)
uint32_t get_bsflags() const
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
static constexpr CLID ID()