185 {
186
187
188
189
190
192
193
194 SG::WriteHandle<xAOD::gFexJetRoIContainer> gRhoContainer;
195 SG::WriteHandle<xAOD::gFexJetRoIContainer> gSJContainer;
196 SG::WriteHandle<xAOD::gFexJetRoIContainer> gLJContainer;
197 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarEJwojContainer;
198 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsJwojContainer;
199 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMHTComponentsJwojContainer;
200 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMSTComponentsJwojContainer;
201 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsNoiseCutContainer;
202 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsRmsContainer;
203 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarENoiseCutContainer;
204 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarERmsContainer;
205
206 if (decodeStdTOBs) {
207 gRhoContainer = SG::WriteHandle<xAOD::gFexJetRoIContainer>(
m_gFexRhoWriteKey, ctx);
209 gLJContainer = SG::WriteHandle<xAOD::gFexJetRoIContainer>(
m_gFexJetWriteKey, ctx);
218
219 ATH_CHECK(gRhoContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
220 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gRhoContainer.
key());
221 ATH_CHECK(gSJContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
222 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gSJContainer.
key());
223 ATH_CHECK(gLJContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
224 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer with key " << gLJContainer.
key());
225 ATH_CHECK(gScalarEJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
226 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarEJwojContainer.
key());
227 ATH_CHECK(gMETComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
228 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsJwojContainer.
key());
229 ATH_CHECK(gMHTComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
230 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMHTComponentsJwojContainer.
key());
231 ATH_CHECK(gMSTComponentsJwojContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
232 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMSTComponentsJwojContainer.
key());
233 ATH_CHECK(gMETComponentsNoiseCutContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
234 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsNoiseCutContainer.
key());
235 ATH_CHECK(gMETComponentsRmsContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
236 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gMETComponentsRmsContainer.
key());
237 ATH_CHECK(gScalarENoiseCutContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
238 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarENoiseCutContainer.
key());
239 ATH_CHECK(gScalarERmsContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
240 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gScalarERmsContainer.
key());
241 }
242
243
244 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gEspressoContainer(
m_gEspressoWriteKey, ctx);
245 ATH_CHECK(gEspressoContainer.record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
246 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gEspressoContainer.key());
247
248
250 ATH_CHECK(gRistrettoContainer.record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
251 ATH_MSG_DEBUG(
"Recorded gFexJetGlobalContainer with key " << gRistrettoContainer.key());
252
253
255
256
257 SG::WriteHandle<xAOD::gFexJetRoIContainer> gRhoSliceContainer;
258 SG::WriteHandle<xAOD::gFexJetRoIContainer> gSJSliceContainer;
259 SG::WriteHandle<xAOD::gFexJetRoIContainer> gLJSliceContainer;
260
261 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarEJwojSliceContainer;
262 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsJwojSliceContainer;
263 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMHTComponentsJwojSliceContainer;
264 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMSTComponentsJwojSliceContainer;
265 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gEspressoSliceContainer;
266 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gRistrettoSliceContainer;
267 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsNoiseCutSliceContainer;
268 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarENoiseCutSliceContainer;
269 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gMETComponentsRmsSliceContainer;
270 SG::WriteHandle<xAOD::gFexGlobalRoIContainer> gScalarERmsSliceContainer;
271
272 if (multiSlice) {
274 ATH_CHECK(gRhoSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
275 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gRhoSliceContainer.
key());
276
278 ATH_CHECK(gSJSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
279 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gSJSliceContainer.
key());
280
282 ATH_CHECK(gLJSliceContainer.
record(std::make_unique<xAOD::gFexJetRoIContainer>(), std::make_unique<xAOD::gFexJetRoIAuxContainer>()));
283 ATH_MSG_DEBUG(
"Recorded gFexJetRoIContainer (out-of-time) with key " << gLJSliceContainer.
key());
284
286 ATH_CHECK(gScalarEJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
287 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarEJwojSliceContainer.
key());
288
290 ATH_CHECK(gMETComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
291 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsJwojSliceContainer.
key());
292
294 ATH_CHECK(gMHTComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
295 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMHTComponentsJwojSliceContainer.
key());
296
298 ATH_CHECK(gMSTComponentsJwojSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
299 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMSTComponentsJwojSliceContainer.
key());
300
302 ATH_CHECK(gEspressoSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
303 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gEspressoSliceContainer.
key());
304
306 ATH_CHECK(gRistrettoSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
307 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gRistrettoSliceContainer.
key());
308
310 ATH_CHECK(gMETComponentsNoiseCutSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
311 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsNoiseCutSliceContainer.
key());
312
314 ATH_CHECK(gScalarENoiseCutSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
315 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarENoiseCutSliceContainer.
key());
316
318 ATH_CHECK(gMETComponentsRmsSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
319 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gMETComponentsRmsSliceContainer.
key());
320
322 ATH_CHECK(gScalarERmsSliceContainer.
record(std::make_unique<xAOD::gFexGlobalRoIContainer>(), std::make_unique<xAOD::gFexGlobalRoIAuxContainer>()));
323 ATH_MSG_DEBUG(
"Recorded gFexGlobalRoIContainer (out-of-time) with key " << gScalarERmsSliceContainer.
key());
324 }
325
326
327
328 for (
const ROBF* rob : vrobf) {
329
330
331
332 ATH_MSG_DEBUG(
"Starting to decode " << rob->rod_ndata() <<
" ROD words from ROB 0x" << std::hex << rob->rob_source_id());
333
334
335 if(rob->rod_ndata() <= 0){
336 continue;
337 }
338
339 const auto dataArray = std::span{rob->rod_data(), rob->rod_ndata()};
340
341
342
343
344 unsigned int n_words = rob->rod_ndata();
345
346
347
348 constexpr unsigned int ROD_TRAILER_WORDS = 2;
349 if (n_words >= ROD_TRAILER_WORDS)
n_words -= ROD_TRAILER_WORDS;
350
351
352 for(
unsigned int iWord=0; iWord<
n_words; iWord++) {
353 ATH_MSG_DEBUG(
"Raw word 0x" << std::hex << dataArray[iWord] <<
" " << std::bitset<32> (dataArray[iWord]));
354 }
355
356
357
358
359
360 std::vector<int> global_counter;
361 std::vector<std::array<uint32_t, 3>> JWOJ_MHT;
362 std::vector<std::array<uint32_t, 3>> JWOJ_MST;
363 std::vector<std::array<uint32_t, 3>> JWOJ_MET;
364 std::vector<std::array<uint32_t, 3>> JWOJ_SCALAR;
365 std::vector<std::array<uint32_t, 3>>
GESPRESSO;
366 std::vector<std::array<uint32_t, 3>>
GRISTRETTO;
367 std::vector<std::array<uint32_t, 3>> NC_MET;
368 std::vector<std::array<uint32_t, 3>> NC_SCALAR;
369 std::vector<std::array<uint32_t, 3>> RMS_MET;
370 std::vector<std::array<uint32_t, 3>> RMS_SCALAR;
371
372 std::vector<uint32_t> globalSliceNumbers;
373
374
375 auto ensureSliceCapacity = [&](size_t sliceNum) {
376 if (sliceNum >= global_counter.size()) {
377 size_t newSize = sliceNum + 1;
378 global_counter.resize(newSize, 0);
379 JWOJ_MHT.resize(newSize, {0, 0, 0});
380 JWOJ_MST.resize(newSize, {0, 0, 0});
381 JWOJ_MET.resize(newSize, {0, 0, 0});
382 JWOJ_SCALAR.resize(newSize, {0, 0, 0});
385 NC_MET.resize(newSize, {0, 0, 0});
386 NC_SCALAR.resize(newSize, {0, 0, 0});
387 RMS_MET.resize(newSize, {0, 0, 0});
388 RMS_SCALAR.resize(newSize, {0, 0, 0});
389 }
390 };
391
393 while ( index < n_words ) {
399
401 ATH_MSG_DEBUG(
"word "<< std::bitset<32> (dataArray[index]) );
402 ATH_MSG_DEBUG(
"headerWord "<< std::bitset<32> (headerWord) );
404 ATH_MSG_DEBUG(
"headerSize "<< std::bitset<2> (headerSize) );
405 ATH_MSG_DEBUG(
"errorFlags "<< std::bitset<1> (errorFlags) );
407
409 if ( (index + blockSize) > n_words ) {
410
411 std::stringstream sdetail;
412 sdetail <<
"Remaining block size " << (
n_words -
index) <<
" is too small for subblock of type " << blockType <<
" with headerSize " << headerSize <<
" and dataSize " << dataSize ;
413 std::stringstream slocation;
414 slocation <<
"0x"<< std::hex << rob->rob_source_id() << std::dec <<
" type:"<<
blockType;
415 std::stringstream stitle;
416 stitle << "Small subblock size " ;
417 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
418
419 }
420
422
425
427
428 std::stringstream sdetail;
430 std::stringstream slocation;
431 slocation <<
"0x"<< std::hex << rob->rob_source_id()<< std::dec <<
" type:"<<
blockType;
432 std::stringstream stitle;
433 stitle << "Wrong dataSize" ;
434 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
435
436
438 continue;
439
440 }
441
442
443
446
447 for (uint32_t sliceNumber = 0; sliceNumber < numSlices; sliceNumber++) {
448
449
450 if (sliceNumber != 0 && !multiSlice) {
452 continue;
453 }
454
455 if ( !isJet && !isMet ) {
456 std::stringstream sdetail;
457 sdetail <<
"gFexByteStreamTool::decodeGfexTobSlice: Invalid block type " <<
blockType ;
458 std::stringstream slocation;
459 slocation << "0x"<< std::hex << rob->rob_source_id();
460 std::stringstream stitle;
461 stitle << "Invalid block type" ;
462 printError(slocation.str(),stitle.str(),MSG::DEBUG,sdetail.str());
463 }
464
465
466 auto& targetRhoContainer = (sliceNumber == 0) ? gRhoContainer : gRhoSliceContainer;
467 auto& targetSJContainer = (sliceNumber == 0) ? gSJContainer : gSJSliceContainer;
468 auto& targetLJContainer = (sliceNumber == 0) ? gLJContainer : gLJSliceContainer;
469
471
472
473 if (isJet && (sliceNumber != 0 || decodeStdTOBs)) {
474
476 continue;
477 }
478
480 continue;
481 }
482
483
484 static const SG::AuxElement::Decorator<uint32_t> sliceNumberDec("sliceNumber");
485
486
489 targetRhoContainer->push_back(std::move(myEDM));
490 targetRhoContainer->back()->initialize(dataArray[index+iWord],
m_gJ_scale);
491 if (sliceNumber != 0) sliceNumberDec(*targetRhoContainer->back()) = sliceNumber;
492 }
493
496 targetSJContainer->push_back(std::move(myEDM));
497 targetSJContainer->back()->initialize(dataArray[index+iWord],
m_gJ_scale);
498 if (sliceNumber != 0) sliceNumberDec(*targetSJContainer->back()) = sliceNumber;
499 }
500
503 targetLJContainer->push_back(std::move(myEDM));
504 targetLJContainer->back()->initialize(dataArray[index+iWord],
m_gLJ_scale);
505 if (sliceNumber != 0) sliceNumberDec(*targetLJContainer->back()) = sliceNumber;
506 }
507
508 }
509
510
511
512 if (isMet){
513
514 ensureSliceCapacity(sliceNumber);
515
516
518 continue;
519 }
520
522 continue;
523 }
524
526 global_counter[sliceNumber]++;
527 if (blockType == 0x1) {JWOJ_MHT[sliceNumber][0] = dataArray[
index+iWord];}
528 if (blockType == 0x2) {JWOJ_MHT[sliceNumber][1] = dataArray[
index+iWord];}
529 if (blockType == 0x3) {JWOJ_MHT[sliceNumber][2] = dataArray[
index+iWord];}
530 }
531
533 if (blockType == 0x1) {JWOJ_MST[sliceNumber][0] = dataArray[
index+iWord];}
534 if (blockType == 0x2) {JWOJ_MST[sliceNumber][1] = dataArray[
index+iWord];}
535 if (blockType == 0x3) {JWOJ_MST[sliceNumber][2] = dataArray[
index+iWord];}
536 }
537
539 if (blockType == 0x1) {JWOJ_MET[sliceNumber][0] = dataArray[
index+iWord];}
540 if (blockType == 0x2) {JWOJ_MET[sliceNumber][1] = dataArray[
index+iWord];}
541 if (blockType == 0x3) {JWOJ_MET[sliceNumber][2] = dataArray[
index+iWord];}
542 }
543
545 if (blockType == 0x1) {JWOJ_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
546 if (blockType == 0x2) {JWOJ_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
547 if (blockType == 0x3) {JWOJ_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
548 }
549
551 if (blockType == 0x1) {
GESPRESSO[sliceNumber][0] = dataArray[
index+iWord];}
552 if (blockType == 0x2) {
GESPRESSO[sliceNumber][1] = dataArray[
index+iWord];}
553 if (blockType == 0x3) {
GESPRESSO[sliceNumber][2] = dataArray[
index+iWord];}
554 }
555
557 if (blockType == 0x1) {
GRISTRETTO[sliceNumber][0] = dataArray[
index+iWord];}
558 if (blockType == 0x2) {
GRISTRETTO[sliceNumber][1] = dataArray[
index+iWord];}
559 if (blockType == 0x3) {
GRISTRETTO[sliceNumber][2] = dataArray[
index+iWord];}
560 }
561
563 if (blockType == 0x1) {NC_MET[sliceNumber][0] = dataArray[
index+iWord];}
564 if (blockType == 0x2) {NC_MET[sliceNumber][1] = dataArray[
index+iWord];}
565 if (blockType == 0x3) {NC_MET[sliceNumber][2] = dataArray[
index+iWord];}
566 }
567
569 if (blockType == 0x1) {NC_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
570 if (blockType == 0x2) {NC_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
571 if (blockType == 0x3) {NC_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
572 }
573
575 if (blockType == 0x1) {RMS_MET[sliceNumber][0] = dataArray[
index+iWord];}
576 if (blockType == 0x2) {RMS_MET[sliceNumber][1] = dataArray[
index+iWord];}
577 if (blockType == 0x3) {RMS_MET[sliceNumber][2] = dataArray[
index+iWord];}
578 }
579
581 if (blockType == 0x1) {RMS_SCALAR[sliceNumber][0] = dataArray[
index+iWord];}
582 if (blockType == 0x2) {RMS_SCALAR[sliceNumber][1] = dataArray[
index+iWord];}
583 if (blockType == 0x3) {RMS_SCALAR[sliceNumber][2] = dataArray[
index+iWord];}
584 }
585
586 }
587
588 }
589
591 }
592
593
594 for (
size_t slice = 0;
slice < global_counter.size();
slice++) {
595 ATH_MSG_DEBUG(
"global_counter[" << slice <<
"] is " << global_counter[slice]);
596 if (global_counter[slice] == 3) {
597
598 if (slice != 0 && !multiSlice) {
599 global_counter[
slice] = 0;
600 continue;
601 }
602
603
604 if (slice == 0 && !decodeStdTOBs) {
605
606 fillGlobal(GESPRESSO[slice], 1, gEspressoContainer, slice, 0);
607 fillGlobal(GRISTRETTO[slice], 1, gRistrettoContainer, slice, 0);
608 } else {
609 auto& targetMHTContainer = (
slice == 0) ? gMHTComponentsJwojContainer : gMHTComponentsJwojSliceContainer;
610 auto& targetMSTContainer = (
slice == 0) ? gMSTComponentsJwojContainer : gMSTComponentsJwojSliceContainer;
611 auto& targetMETContainer = (
slice == 0) ? gMETComponentsJwojContainer : gMETComponentsJwojSliceContainer;
612 auto& targetScalarContainer = (
slice == 0) ? gScalarEJwojContainer : gScalarEJwojSliceContainer;
613 auto& targetEspressoContainer = (
slice == 0) ? gEspressoContainer : gEspressoSliceContainer;
614 auto& targetRistrettoContainer = (
slice == 0) ? gRistrettoContainer : gRistrettoSliceContainer;
615 auto& targetNCMETContainer = (
slice == 0) ? gMETComponentsNoiseCutContainer : gMETComponentsNoiseCutSliceContainer;
616 auto& targetNCScalarContainer = (
slice == 0) ? gScalarENoiseCutContainer : gScalarENoiseCutSliceContainer;
617 auto& targetRMSMETContainer = (
slice == 0) ? gMETComponentsRmsContainer : gMETComponentsRmsSliceContainer;
618 auto& targetRMSScalarContainer = (
slice == 0) ? gScalarERmsContainer : gScalarERmsSliceContainer;
619
620 fillGlobal(JWOJ_MHT[slice], 3, targetMHTContainer, slice);
621 fillGlobal(JWOJ_MST[slice], 4, targetMSTContainer, slice);
623 fillGlobal(JWOJ_SCALAR[slice], 1, targetScalarContainer, slice, scalar);
624
625 fillGlobal(GESPRESSO[slice], 1, targetEspressoContainer, slice, 0);
626
627 fillGlobal(GRISTRETTO[slice], 1, targetRistrettoContainer, slice, 0);
628
629 scalar =
fillGlobal(NC_MET[slice], 2, targetNCMETContainer, slice);
630 fillGlobal(NC_SCALAR[slice], 1, targetNCScalarContainer, slice, scalar);
631
632 scalar =
fillGlobal(RMS_MET[slice], 2, targetRMSMETContainer, slice);
633 fillGlobal(RMS_SCALAR[slice], 1, targetRMSScalarContainer, slice, scalar);
634 }
635
636 global_counter[
slice] = 0;
637 }
638 }
639
640 }
641 }
642 return StatusCode::SUCCESS;
643}
#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 std::array< unsigned int, 4 > GBLOCK_POSITION
constexpr std::array< unsigned int, 2 > GJET_POSITION
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 std::array< unsigned int, 2 > TRAILER_POSITION
constexpr unsigned int NC_MET_POSITION
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
gFexJetRoI_v1 gFexJetRoI
Define the latest version of the gFexJetRoI class.
setScaleOne setStatusOne setSaturated int16_t