67 return StatusCode::SUCCESS;
79 decoder->fillCollection(rob, digitsCollection);
88 decoder->fillCollection(rob, rawChannelCollection, container);
107 decoder->fillCollection_TileMuRcv_RawChannel(rob, rawChannelCollection);
130 return StatusCode::SUCCESS;
134 template <
class GetRobOperation,
class FillCollOperation>
137 GetRobOperation getRobFromFragID, FillCollOperation fillCollection,
138 unsigned int offsetID)
const {
141 std::vector<uint32_t> robid{0};
142 std::vector<const ROBDataProviderSvc::ROBF*> robf;
152 newrob = getRobFromFragID(hid2re, collID + offsetID);
153 if (newrob != robid[0]) {
156 m_robSvc->getROBData(ctx, robid, robf);
159 if (robf.size() > 0 ) {
160 fillCollection(&*
m_decoder, robf[0], *digitsCollection);
165 << collID <<
" in Digi frag is 0x" <<
status << MSG::dec);
174 return StatusCode::SUCCESS;
177 template <
class GetRobOperation,
class FillCollOperation>
180 GetRobOperation getRobFromFragID, FillCollOperation fillCollection,
185 std::vector<uint32_t> robid{0};
186 std::vector<const ROBDataProviderSvc::ROBF*> robf;
187 std::unordered_map<uint32_t, int> bsflags;
199 newrob = getRobFromFragID(hid2re, collID);
200 if (newrob != robid[0]) {
203 m_robSvc->getROBData(ctx, robid, robf);
207 if (robf.size() > 0 ) {
211 auto result = bsflags.insert(std::pair<uint32_t, int>(
flags, 1));
212 if (
result.second ==
false) {
216 ATH_MSG_DEBUG(
"ROB [" << rawChannelsKey.
key() <<
"] for " <<
"drawer 0x" << MSG::hex << collID << MSG::dec <<
" not found in BS" );
219 ATH_MSG_DEBUG(
"Status [" << rawChannelsKey.
key() <<
"] for " <<
"drawer 0x" << MSG::hex << collID <<
" is 0x" <<
status << MSG::dec);
223 if (bsflags.size() > 1) {
225 for (
const auto & elem : bsflags) {
226 if (elem.second >
n) {
235 if ((
flags & 0x30000000) < 0x30000000) {
239 ATH_MSG_DEBUG(
"Changing units [" << rawChannelsKey.
key() <<
"] for " <<
"RawChannelContainer from "
248 ATH_MSG_DEBUG(
"Creating raw channel container: " << rawChannelsKey );
253 return StatusCode::SUCCESS;
260 std::vector<uint32_t> robid{0};
261 std::vector<const ROBDataProviderSvc::ROBF*> robf;
263 auto beamElementsContainer = std::make_unique<TileMutableBeamElemContainer>(
true);
264 ATH_CHECK( beamElementsContainer->status() );
273 if (newrob != robid[0]) {
276 m_robSvc->getROBData(ctx, robid, robf);
280 if (robf.size() > 0 ) {
281 m_decoder->fillCollection(robf[0], *beamElementsCollection);
285 ATH_MSG_DEBUG(
"Creating beam elements container: " << beamElementsKey );
290 return StatusCode::SUCCESS;
297 std::vector<uint32_t> robid{0};
298 std::vector<const ROBDataProviderSvc::ROBF*> robf;
300 auto laserObject = std::make_unique<TileLaserObject>() ;
301 m_decoder->setLaserVersion(*laserObject);
304 m_robSvc->getROBData(ctx, robid, robf);
306 if (robf.size() > 0 ) {
307 m_decoder->fillTileLaserObj(robf[0], *laserObject);
309 ATH_MSG_DEBUG(
" No LASTROD fragment in BS, TileLaserObject will be empty." );
312 ATH_MSG_DEBUG(
"Creating laser object: " << laserObjectKey );
317 return StatusCode::SUCCESS;
322 const EventContext& ctx)
const {
326 ATH_MSG_ERROR(
"Could not get raw event from ByteStreamInputSvc" );
327 return StatusCode::FAILURE;
330 auto muonReceiverContainer = std::make_unique<TileMuonReceiverContainer>();
332 if (!
m_decoder->convertTMDBDecision(
re, muonReceiverContainer.get()).isSuccess()) {
333 ATH_MSG_WARNING(
"Conversion tool returned an error. TileMuonReceiverContainer might be empty." );
339 return StatusCode::SUCCESS;
344 const EventContext& ctx)
const {
348 ATH_MSG_ERROR(
"Could not get raw event from ByteStreamInputSvc" );
349 return StatusCode::FAILURE;
352 auto l2Container = std::make_unique<TileL2Container>();
353 l2Container->reserve(256);
354 for(
int i = 0;
i < 256; ++
i) {
355 int collId =
m_decoder->hashFunc()->identifier(
i);
356 l2Container->push_back (std::make_unique<TileL2>(collId));
359 if (!
m_decoder->convert(
re, l2Container.get()).isSuccess()) {
360 ATH_MSG_WARNING(
"Conversion tool returned an error. TileL2Container might be empty." );
366 return StatusCode::SUCCESS;