465 {
469
470#define CREATE(__TYPE) \
471 { \
472 plainGenerator<__TYPE> generator; \
473 ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
474 }
475
477
478#undef CREATE
479
480#define CREATE_XAOD(__TYPE, __STORE_TYPE) \
481 { \
482 xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
483 ATH_CHECK( (createIfMissing<xAOD::__TYPE, xAOD::__STORE_TYPE>( context, ConstHandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::viewsMerge<xAOD::__TYPE>)) ); \
484 }
485
486
493 CREATE_XAOD( TrigCaloClusterContainer, TrigCaloClusterAuxContainer );
494 CREATE_XAOD( TrigRingerRingsContainer, TrigRingerRingsAuxContainer );
497
498 CREATE_XAOD( L2StandAloneMuonContainer, L2StandAloneMuonAuxContainer );
499 CREATE_XAOD( L2CombinedMuonContainer, L2CombinedMuonAuxContainer );
500 CREATE_XAOD( L2IsoMuonContainer, L2IsoMuonAuxContainer );
502 CREATE_XAOD( TauJetContainer, TauJetAuxContainer );
503 CREATE_XAOD( DiTauJetContainer, DiTauJetAuxContainer );
504 CREATE_XAOD( TauTrackContainer, TauTrackAuxContainer );
506 CREATE_XAOD( FlowElementContainer, FlowElementAuxContainer );
509 CREATE_XAOD( TrigBphysContainer, TrigBphysAuxContainer );
510 CREATE_XAOD( BTaggingContainer,BTaggingAuxContainer );
511 CREATE_XAOD( BTagVertexContainer,BTagVertexAuxContainer );
513 CREATE_XAOD( HIEventShapeContainer, HIEventShapeAuxContainer );
515 CREATE_XAOD( AFPSiHitsClusterContainer, AFPSiHitsClusterAuxContainer );
516 CREATE_XAOD( AFPTrackContainer, AFPTrackAuxContainer );
517 CREATE_XAOD( AFPToFTrackContainer, AFPToFTrackAuxContainer );
518 CREATE_XAOD( AFPProtonContainer, AFPProtonAuxContainer );
519 CREATE_XAOD( AFPVertexContainer, AFPVertexAuxContainer );
520
521
522 CREATE_XAOD( eFexEMRoIContainer, eFexEMRoIAuxContainer );
523 CREATE_XAOD( eFexTauRoIContainer, eFexTauRoIAuxContainer );
524 CREATE_XAOD( jFexTauRoIContainer, jFexTauRoIAuxContainer );
525 CREATE_XAOD( jFexFwdElRoIContainer, jFexFwdElRoIAuxContainer );
526 CREATE_XAOD( jFexSRJetRoIContainer, jFexSRJetRoIAuxContainer );
527 CREATE_XAOD( jFexLRJetRoIContainer, jFexLRJetRoIAuxContainer );
528 CREATE_XAOD( jFexMETRoIContainer, jFexMETRoIAuxContainer );
529 CREATE_XAOD( jFexSumETRoIContainer, jFexSumETRoIAuxContainer );
530 CREATE_XAOD( gFexJetRoIContainer, gFexJetRoIAuxContainer );
531 CREATE_XAOD( gFexGlobalRoIContainer, gFexGlobalRoIAuxContainer);
532 CREATE_XAOD( MuonRoIContainer, MuonRoIAuxContainer );
533
534
536
537#undef CREATE_XAOD
538
539
540 #define CREATE_SHALLOW(__TYPE) \
541 { \
542 for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
543 auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
544 if ( not readHandle.isValid() ) { \
545 ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
546 auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
547 ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
548 } else { \
549 ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
550 } \
551 } \
552 }
553
556
557 #undef CREATE_SHALLOW
558
561
563 return StatusCode::SUCCESS;
564}
#define CREATE_SHALLOW(__TYPE)
#define CREATE_XAOD(__TYPE, __STORE_TYPE)
Athena::TPCnvVers::Old Athena::TPCnvVers::Old TrigEMClusterContainer
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrigRNNOutputContainer
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrigT2MbtsBitsContainer
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Athena::TPCnvVers::Current TrigMissingETContainer
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrigPhotonContainer
Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrigElectronContainer
Athena::TPCnvVers::Current Athena::TPCnvVers::Old TrigRoiDescriptorCollection
Gaudi::Property< bool > m_dumpSGAfter
Gaudi::Property< bool > m_dumpSGBefore
StatusCode fixLinks(EventContext const &context) const
Athena::TPCnvVers::Old Athena::TPCnvVers::Old PhotonContainer
std::ostream & dump(std::ostream &out, const I4MomIter iBeg, const I4MomIter iEnd)
Helper to stream out a range of I4Momentum objects.