464 {
468
469#define CREATE(__TYPE) \
470 { \
471 plainGenerator<__TYPE> generator; \
472 ATH_CHECK( (createIfMissing<__TYPE, void>( context, ConstHandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ), generator, &HLTEDMCreator::noMerge<__TYPE>)) ); \
473 }
474
476
477#undef CREATE
478
479#define CREATE_XAOD(__TYPE, __STORE_TYPE) \
480 { \
481 xAODGenerator<xAOD::__TYPE, xAOD::__STORE_TYPE> generator; \
482 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>)) ); \
483 }
484
485
486 CREATE_XAOD( TrigCompositeContainer, TrigCompositeAuxContainer );
492 CREATE_XAOD( TrigCaloClusterContainer, TrigCaloClusterAuxContainer );
493 CREATE_XAOD( TrigRingerRingsContainer, TrigRingerRingsAuxContainer );
496
497 CREATE_XAOD( L2StandAloneMuonContainer, L2StandAloneMuonAuxContainer );
498 CREATE_XAOD( L2CombinedMuonContainer, L2CombinedMuonAuxContainer );
499 CREATE_XAOD( L2IsoMuonContainer, L2IsoMuonAuxContainer );
501 CREATE_XAOD( TauJetContainer, TauJetAuxContainer );
502 CREATE_XAOD( DiTauJetContainer, DiTauJetAuxContainer );
503 CREATE_XAOD( TauTrackContainer, TauTrackAuxContainer );
505 CREATE_XAOD( FlowElementContainer, FlowElementAuxContainer );
508 CREATE_XAOD( TrigBphysContainer, TrigBphysAuxContainer );
509 CREATE_XAOD( BTaggingContainer,BTaggingAuxContainer );
510 CREATE_XAOD( BTagVertexContainer,BTagVertexAuxContainer );
512 CREATE_XAOD( HIEventShapeContainer, HIEventShapeAuxContainer );
514 CREATE_XAOD( AFPSiHitsClusterContainer, AFPSiHitsClusterAuxContainer );
515 CREATE_XAOD( AFPTrackContainer, AFPTrackAuxContainer );
516 CREATE_XAOD( AFPToFTrackContainer, AFPToFTrackAuxContainer );
517 CREATE_XAOD( AFPProtonContainer, AFPProtonAuxContainer );
518 CREATE_XAOD( AFPVertexContainer, AFPVertexAuxContainer );
519
520
521 CREATE_XAOD( eFexEMRoIContainer, eFexEMRoIAuxContainer );
522 CREATE_XAOD( eFexTauRoIContainer, eFexTauRoIAuxContainer );
523 CREATE_XAOD( jFexTauRoIContainer, jFexTauRoIAuxContainer );
524 CREATE_XAOD( jFexFwdElRoIContainer, jFexFwdElRoIAuxContainer );
525 CREATE_XAOD( jFexSRJetRoIContainer, jFexSRJetRoIAuxContainer );
526 CREATE_XAOD( jFexLRJetRoIContainer, jFexLRJetRoIAuxContainer );
527 CREATE_XAOD( jFexMETRoIContainer, jFexMETRoIAuxContainer );
528 CREATE_XAOD( jFexSumETRoIContainer, jFexSumETRoIAuxContainer );
529 CREATE_XAOD( gFexJetRoIContainer, gFexJetRoIAuxContainer );
530 CREATE_XAOD( gFexGlobalRoIContainer, gFexGlobalRoIAuxContainer);
531 CREATE_XAOD( MuonRoIContainer, MuonRoIAuxContainer );
532
533
535
536#undef CREATE_XAOD
537
538
539 #define CREATE_SHALLOW(__TYPE) \
540 { \
541 for ( size_t index = 0; index < m_##__TYPE##ShallowCopy.size(); ++index ){ \
542 auto readHandle = SG::makeHandle<xAOD::__TYPE> ( m_##__TYPE##ShallowCopy[index], context ); \
543 if ( not readHandle.isValid() ) { \
544 ATH_MSG_DEBUG( "Creating missing "#__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopy[index].key() ); \
545 auto writeHandle = SG::makeHandle( m_##__TYPE##ShallowCopyOut[index], context ); \
546 ATH_CHECK( writeHandle.record( std::make_unique<xAOD::__TYPE>(), std::make_unique<xAOD::ShallowAuxContainer>() )); \
547 } else { \
548 ATH_MSG_DEBUG( #__TYPE"ShallowCopy " << m_##__TYPE##ShallowCopyOut[index].key() << " present in the event, done nothing"); \
549 } \
550 } \
551 }
552
555
556 #undef CREATE_SHALLOW
557
560
562 return StatusCode::SUCCESS;
563}
#define CREATE_SHALLOW(__TYPE)
#define CREATE_XAOD(__TYPE, __STORE_TYPE)
void dump() const
Debugging dump.
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