231 {
232
233
234
235
236
238
239
240 SG::WriteHandle<xAOD::gFexJetRoIContainer> gRhoContainer;
241 SG::WriteHandle<xAOD::gFexJetRoIContainer> gSJContainer;
242 SG::WriteHandle<xAOD::gFexJetRoIContainer> gLJContainer;
243 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarEJwojContainer;
244 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsJwojContainer;
245 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMHTComponentsJwojContainer;
246 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMSTComponentsJwojContainer;
247 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsNoiseCutContainer;
248 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsRmsContainer;
249 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarENoiseCutContainer;
250 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarERmsContainer;
251
252 if (decodeStdTOBs) {
253 gRhoContainer = SG::WriteHandle<xAOD::gFexJetRoIContainer>(
m_gFexRhoWriteKey, ctx);
255 gLJContainer = SG::WriteHandle<xAOD::gFexJetRoIContainer>(
m_gFexJetWriteKey, ctx);
264
265 ATH_CHECK(gRhoContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
266 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gRhoContainer.
key());
267 ATH_CHECK(gSJContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
268 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gSJContainer.
key());
269 ATH_CHECK(gLJContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
270 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gLJContainer.
key());
271 ATH_CHECK(gScalarEJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
272 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarEJwojContainer.
key());
273 ATH_CHECK(gMETComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
274 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsJwojContainer.
key());
275 ATH_CHECK(gMHTComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
276 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMHTComponentsJwojContainer.
key());
277 ATH_CHECK(gMSTComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
278 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMSTComponentsJwojContainer.
key());
279 ATH_CHECK(gMETComponentsNoiseCutContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
280 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsNoiseCutContainer.
key());
281 ATH_CHECK(gMETComponentsRmsContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
282 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsRmsContainer.
key());
283 ATH_CHECK(gScalarENoiseCutContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
284 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarENoiseCutContainer.
key());
285 ATH_CHECK(gScalarERmsContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
286 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarERmsContainer.
key());
287 }
288
289
290 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gEspressoContainer(
m_gEspressoWriteKey, ctx);
291 ATH_CHECK(gEspressoContainer.record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
292 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gEspressoContainer.key());
293
294
296 ATH_CHECK(gRistrettoContainer.record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
297 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gRistrettoContainer.key());
298
299
301
302
303 SG::WriteHandle<xAOD::gFexJetRoIContainer> gRhoSliceContainer;
304 SG::WriteHandle<xAOD::gFexJetRoIContainer> gSJSliceContainer;
305 SG::WriteHandle<xAOD::gFexJetRoIContainer> gLJSliceContainer;
306
307 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarEJwojSliceContainer;
308 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsJwojSliceContainer;
309 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMHTComponentsJwojSliceContainer;
310 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMSTComponentsJwojSliceContainer;
311 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gEspressoSliceContainer;
312 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gRistrettoSliceContainer;
313 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsNoiseCutSliceContainer;
314 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarENoiseCutSliceContainer;
315 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsRmsSliceContainer;
316 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarERmsSliceContainer;
317
318 if (multiSlice) {
320 ATH_CHECK(gRhoSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
321 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gRhoSliceContainer.
key());
322
324 ATH_CHECK(gSJSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
325 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gSJSliceContainer.
key());
326
328 ATH_CHECK(gLJSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
329 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gLJSliceContainer.
key());
330
332 ATH_CHECK(gScalarEJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
333 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarEJwojSliceContainer.
key());
334
336 ATH_CHECK(gMETComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
337 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsJwojSliceContainer.
key());
338
340 ATH_CHECK(gMHTComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
341 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMHTComponentsJwojSliceContainer.
key());
342
344 ATH_CHECK(gMSTComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
345 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMSTComponentsJwojSliceContainer.
key());
346
348 ATH_CHECK(gEspressoSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
349 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gEspressoSliceContainer.
key());
350
352 ATH_CHECK(gRistrettoSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
353 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gRistrettoSliceContainer.
key());
354
356 ATH_CHECK(gMETComponentsNoiseCutSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
357 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsNoiseCutSliceContainer.
key());
358
360 ATH_CHECK(gScalarENoiseCutSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
361 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarENoiseCutSliceContainer.
key());
362
364 ATH_CHECK(gMETComponentsRmsSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
365 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsRmsSliceContainer.
key());
366
368 ATH_CHECK(gScalarERmsSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
369 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarERmsSliceContainer.
key());
370 }
371
372
373
374 for (
const ROBF* rob : vrobf) {
375
376
377
378 ATH_MSG_DEBUG(
"Starting to decode " << rob->rod_ndata() <<
" ROD words from ROB 0x" << std::hex << rob->rob_source_id());
379
380
381 if(rob->rod_ndata() <= 0){
382 continue;
383 }
384
385 const auto dataArray = std::span{rob->rod_data(), rob->rod_ndata()};
386
387
388
389
390 unsigned int n_words = rob->rod_ndata();
391
392
393 for(
unsigned int iWord=0; iWord<
n_words; iWord++) {
394 ATH_MSG_DEBUG(
"Raw word 0x" << std::hex << dataArray[iWord] <<
" " << std::bitset<32> (dataArray[iWord]));
395 }
396
397
398
399
400
401 std::vector<int> global_counter;
402 std::vector<std::array<uint32_t, 3>> JWOJ_MHT;
403 std::vector<std::array<uint32_t, 3>> JWOJ_MST;
404 std::vector<std::array<uint32_t, 3>> JWOJ_MET;
405 std::vector<std::array<uint32_t, 3>> JWOJ_SCALAR;
406 std::vector<std::array<uint32_t, 3>>
GESPRESSO;
407 std::vector<std::array<uint32_t, 3>>
GRISTRETTO;
408 std::vector<std::array<uint32_t, 3>> NC_MET;
409 std::vector<std::array<uint32_t, 3>> NC_SCALAR;
410 std::vector<std::array<uint32_t, 3>> RMS_MET;
411 std::vector<std::array<uint32_t, 3>> RMS_SCALAR;
412
413 std::vector<uint32_t> globalSliceNumbers;
414
415
416 auto ensureSliceCapacity = [&](size_t sliceNum) {
417 if (sliceNum >= global_counter.size()) {
418 size_t newSize = sliceNum + 1;
419 global_counter.resize(newSize, 0);
420 JWOJ_MHT.resize(newSize, {0, 0, 0});
421 JWOJ_MST.resize(newSize, {0, 0, 0});
422 JWOJ_MET.resize(newSize, {0, 0, 0});
423 JWOJ_SCALAR.resize(newSize, {0, 0, 0});
426 NC_MET.resize(newSize, {0, 0, 0});
427 NC_SCALAR.resize(newSize, {0, 0, 0});
428 RMS_MET.resize(newSize, {0, 0, 0});
429 RMS_SCALAR.resize(newSize, {0, 0, 0});
430 }
431 };
432
434 while ( index < n_words ) {
440
442 ATH_MSG_DEBUG(
"word "<< std::bitset<32> (dataArray[index]) );
443 ATH_MSG_DEBUG(
"headerWord "<< std::bitset<32> (headerWord) );
445 ATH_MSG_DEBUG(
"headerSize "<< std::bitset<2> (headerSize) );
446 ATH_MSG_DEBUG(
"errorFlags "<< std::bitset<1> (errorFlags) );
448
450 if ( (index + blockSize) > n_words ) {
451
452 std::stringstream sdetail;
453 sdetail <<
"Remaining block size " << (
n_words -
index) <<
" is too small for subblock of type " << blockType <<
" with headerSize " << headerSize <<
" and dataSize " << dataSize ;
454 std::stringstream slocation;
455 slocation <<
"0x"<< std::hex << rob->rob_source_id() << std::dec <<
" type:"<<
blockType;
456 std::stringstream stitle;
457 stitle << "Small subblock size " ;
458 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
459
460 }
461
463
466
468
469 std::stringstream sdetail;
471 std::stringstream slocation;
472 slocation <<
"0x"<< std::hex << rob->rob_source_id()<< std::dec <<
" type:"<<
blockType;
473 std::stringstream stitle;
474 stitle << "Wrong dataSize" ;
475 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
476
477
479 continue;
480
481 }
482
483
484
487
488 for (uint32_t sliceNumber = 0; sliceNumber < numSlices; sliceNumber++) {
489
490
491 if (sliceNumber != 0 && !multiSlice) {
493 continue;
494 }
495
496 if ( !isJet && !isMet ) {
497 std::stringstream sdetail;
498 sdetail <<
"gFexByteStreamTool::decodeGfexTobSlice: Invalid block type " <<
blockType ;
499 std::stringstream slocation;
500 slocation << "0x"<< std::hex << rob->rob_source_id();
501 std::stringstream stitle;
502 stitle << "Invalid block type" ;
503 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
504 }
505
506
507 auto& targetRhoContainer = (sliceNumber == 0) ? gRhoContainer : gRhoSliceContainer;
508 auto& targetSJContainer = (sliceNumber == 0) ? gSJContainer : gSJSliceContainer;
509 auto& targetLJContainer = (sliceNumber == 0) ? gLJContainer : gLJSliceContainer;
510
512
513
514 if (isJet && (sliceNumber != 0 || decodeStdTOBs)) {
515
517 continue;
518 }
519
521 continue;
522 }
523
524
525 static const SG::AuxElement::Decorator<uint32_t> sliceNumberDec("sliceNumber");
526
527
530 targetRhoContainer->push_back(std::move(myEDM));
531 targetRhoContainer->back()->initialize(dataArray[index+iWord],
m_gJ_scale);
532 if (sliceNumber != 0) sliceNumberDec(*targetRhoContainer->back()) = sliceNumber;
533 }
534
537 targetSJContainer->push_back(std::move(myEDM));
538 targetSJContainer->back()->initialize(dataArray[index+iWord],
m_gJ_scale);
539 if (sliceNumber != 0) sliceNumberDec(*targetSJContainer->back()) = sliceNumber;
540 }
541
544 targetLJContainer->push_back(std::move(myEDM));
545 targetLJContainer->back()->initialize(dataArray[index+iWord],
m_gLJ_scale);
546 if (sliceNumber != 0) sliceNumberDec(*targetLJContainer->back()) = sliceNumber;
547 }
548
549 }
550
551
552
553 if (isMet){
554
555 ensureSliceCapacity(sliceNumber);
556
557
559 continue;
560 }
561
563 continue;
564 }
565
567 global_counter[sliceNumber]++;
568 if (blockType == 0x1) {JWOJ_MHT[sliceNumber][0] = dataArray[
index+iWord];}
569 if (blockType == 0x2) {JWOJ_MHT[sliceNumber][1] = dataArray[
index+iWord];}
570 if (blockType == 0x3) {JWOJ_MHT[sliceNumber][2] = dataArray[
index+iWord];}
571 }
572
574 if (blockType == 0x1) {JWOJ_MST[sliceNumber][0] = dataArray[
index+iWord];}
575 if (blockType == 0x2) {JWOJ_MST[sliceNumber][1] = dataArray[
index+iWord];}
576 if (blockType == 0x3) {JWOJ_MST[sliceNumber][2] = dataArray[
index+iWord];}
577 }
578
580 if (blockType == 0x1) {JWOJ_MET[sliceNumber][0] = dataArray[
index+iWord];}
581 if (blockType == 0x2) {JWOJ_MET[sliceNumber][1] = dataArray[
index+iWord];}
582 if (blockType == 0x3) {JWOJ_MET[sliceNumber][2] = dataArray[
index+iWord];}
583 }
584
586 if (blockType == 0x1) {JWOJ_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
587 if (blockType == 0x2) {JWOJ_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
588 if (blockType == 0x3) {JWOJ_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
589 }
590
592 if (blockType == 0x1) {
GESPRESSO[sliceNumber][0] = dataArray[
index+iWord];}
593 if (blockType == 0x2) {
GESPRESSO[sliceNumber][1] = dataArray[
index+iWord];}
594 if (blockType == 0x3) {
GESPRESSO[sliceNumber][2] = dataArray[
index+iWord];}
595 }
596
598 if (blockType == 0x1) {
GRISTRETTO[sliceNumber][0] = dataArray[
index+iWord];}
599 if (blockType == 0x2) {
GRISTRETTO[sliceNumber][1] = dataArray[
index+iWord];}
600 if (blockType == 0x3) {
GRISTRETTO[sliceNumber][2] = dataArray[
index+iWord];}
601 }
602
604 if (blockType == 0x1) {NC_MET[sliceNumber][0] = dataArray[
index+iWord];}
605 if (blockType == 0x2) {NC_MET[sliceNumber][1] = dataArray[
index+iWord];}
606 if (blockType == 0x3) {NC_MET[sliceNumber][2] = dataArray[
index+iWord];}
607 }
608
610 if (blockType == 0x1) {NC_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
611 if (blockType == 0x2) {NC_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
612 if (blockType == 0x3) {NC_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
613 }
614
616 if (blockType == 0x1) {RMS_MET[sliceNumber][0] = dataArray[
index+iWord];}
617 if (blockType == 0x2) {RMS_MET[sliceNumber][1] = dataArray[
index+iWord];}
618 if (blockType == 0x3) {RMS_MET[sliceNumber][2] = dataArray[
index+iWord];}
619 }
620
622 if (blockType == 0x1) {RMS_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
623 if (blockType == 0x2) {RMS_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
624 if (blockType == 0x3) {RMS_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
625 }
626
627 }
628
629 }
630
632 }
633
634
635 for (
size_t slice = 0;
slice < global_counter.size();
slice++) {
636 ATH_MSG_DEBUG(
"global_counter[" << slice <<
"] is " << global_counter[slice]);
637 if (global_counter[slice] == 3) {
638
639 if (slice != 0 && !multiSlice) {
640 global_counter[
slice] = 0;
641 continue;
642 }
643
644
645 if (slice == 0 && !decodeStdTOBs) {
646
647 fillGlobal(GESPRESSO[slice], 1, gEspressoContainer, slice, 0);
648 fillGlobal(GRISTRETTO[slice], 1, gRistrettoContainer, slice, 0);
649 } else {
650 auto& targetMHTContainer = (
slice == 0) ? gMHTComponentsJwojContainer : gMHTComponentsJwojSliceContainer;
651 auto& targetMSTContainer = (
slice == 0) ? gMSTComponentsJwojContainer : gMSTComponentsJwojSliceContainer;
652 auto& targetMETContainer = (
slice == 0) ? gMETComponentsJwojContainer : gMETComponentsJwojSliceContainer;
653 auto& targetScalarContainer = (
slice == 0) ? gScalarEJwojContainer : gScalarEJwojSliceContainer;
654 auto& targetEspressoContainer = (
slice == 0) ? gEspressoContainer : gEspressoSliceContainer;
655 auto& targetRistrettoContainer = (
slice == 0) ? gRistrettoContainer : gRistrettoSliceContainer;
656 auto& targetNCMETContainer = (
slice == 0) ? gMETComponentsNoiseCutContainer : gMETComponentsNoiseCutSliceContainer;
657 auto& targetNCScalarContainer = (
slice == 0) ? gScalarENoiseCutContainer : gScalarENoiseCutSliceContainer;
658 auto& targetRMSMETContainer = (
slice == 0) ? gMETComponentsRmsContainer : gMETComponentsRmsSliceContainer;
659 auto& targetRMSScalarContainer = (
slice == 0) ? gScalarERmsContainer : gScalarERmsSliceContainer;
660
661 fillGlobal(JWOJ_MHT[slice], 3, targetMHTContainer, slice);
662 fillGlobal(JWOJ_MST[slice], 4, targetMSTContainer, slice);
664 fillGlobal(JWOJ_SCALAR[slice], 1, targetScalarContainer, slice, scalar);
665
666 fillGlobal(GESPRESSO[slice], 1, targetEspressoContainer, slice, 0);
667
668 fillGlobal(GRISTRETTO[slice], 1, targetRistrettoContainer, slice, 0);
669
670 scalar =
fillGlobal(NC_MET[slice], 2, targetNCMETContainer, slice);
671 fillGlobal(NC_SCALAR[slice], 1, targetNCScalarContainer, slice, scalar);
672
673 scalar =
fillGlobal(RMS_MET[slice], 2, targetRMSMETContainer, slice);
674 fillGlobal(RMS_SCALAR[slice], 1, targetRMSScalarContainer, slice, scalar);
675 }
676
677 global_counter[
slice] = 0;
678 }
679 }
680
681 }
682 }
683 return StatusCode::SUCCESS;
684}
#define ATH_CHECK
Evaluate an expression and check for errors.
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::ROBFragment ROBF
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
L1Topo::BlockTypes blockType(const uint32_t word, uint32_t offset=28, uint32_t size=0x0f)
Function to return the block type of a data word from L1Topo.
constexpr unsigned int WORDS_PER_SLICE
constexpr std::array< unsigned int, 4 > GBLOCK_POSITION
constexpr unsigned int BLOCK_TYPE_BIT
constexpr std::array< unsigned int, 2 > GJET_POSITION
constexpr unsigned int DATA_SIZE_MASK
constexpr unsigned int JWOJ_MHT_POSITION
constexpr unsigned int GESPRESSO_POSITION
constexpr unsigned int RMS_MET_POSITION
constexpr unsigned int NC_SCALAR_POSITION
constexpr std::array< unsigned int, 2 > GLOBAL_UNUSED_POSITION
constexpr unsigned int BLOCK_TYPE_MASK
constexpr unsigned int ERROR_FLAG_BIT
constexpr std::array< unsigned int, 2 > TRAILER_POSITION
constexpr unsigned int HEADER_SIZE_MASK
constexpr unsigned int NC_MET_POSITION
constexpr unsigned int HEADER_SIZE_BIT
constexpr unsigned int ERROR_FLAG_MASK
constexpr std::array< unsigned int, 5 > JET_UNUSED_POSITION
constexpr unsigned int GRHO_POSITION
constexpr unsigned int JWOJ_SCALAR_POSITION
constexpr unsigned int GRISTRETTO_POSITION
constexpr unsigned int JWOJ_MST_POSITION
constexpr unsigned int RMS_SCALAR_POSITION
constexpr unsigned int JWOJ_MET_POSITION
constexpr std::size_t n_words
constexpr size_t dataSize(TDA::PayloadIterator start)
Size in bytes of the buffer that is needed to decode next fragment data content.
gFexJetRoI_v1 gFexJetRoI
Define the latest version of the gFexJetRoI class.
setScaleOne setStatusOne setSaturated int16_t