Skip to content
Snippets Groups Projects
Commit c17f974d authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

HLTEDMCreator: register Aux keys to avoid hash collisions

Register the Aux keys for all EDM containers to avoid hash collisions.

Closes ATR-26386.
parent cc3f6d0b
4 merge requests!69091Fix correlated smearing bug in JER in JetUncertainties in 22.0,!58791DataQualityConfigurations: Modify L1Calo config for web display,!572792022-10-05: daily merge of 22.0 into master,!57209HLTEDMCreator: register Aux keys to avoid hash collisions
......@@ -35,6 +35,16 @@ StatusCode HLTEDMCreator::initHandles( const HandlesGroup<T>& handles ) {
return StatusCode::SUCCESS;
}
template<typename T>
StatusCode HLTEDMCreator::initAuxKey( const std::vector<SG::VarHandleKey*>& keys ) {
// Register Aux keys for all handles to avoid hash collisions (ATR-26386).
for (const SG::VarHandleKey* k : keys) {
SG::WriteHandleKey<T> auxkey(k->key()+"Aux.");
ATH_CHECK( auxkey.initialize() );
}
return StatusCode::SUCCESS;
}
StatusCode HLTEDMCreator::initialize()
{
......@@ -69,55 +79,56 @@ StatusCode HLTEDMCreator::initialize()
#define INIT(__TYPE) \
ATH_CHECK( initHandles( HandlesGroup<__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) );
#define INIT_XAOD(__TYPE) \
ATH_CHECK( initHandles( HandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) );
#define INIT_XAOD(__TYPE, __STORE_TYPE) \
ATH_CHECK( initHandles( HandlesGroup<xAOD::__TYPE>( m_##__TYPE, m_##__TYPE##InViews, m_##__TYPE##Views ) ) ); \
ATH_CHECK( initAuxKey<xAOD::__STORE_TYPE>( m_##__TYPE.keys() ) );
INIT( TrigRoiDescriptorCollection );
INIT_XAOD( TrigCompositeContainer );
INIT_XAOD( TrigCompositeContainer, TrigCompositeAuxContainer );
INIT_XAOD( TrigEMClusterContainer );
INIT_XAOD( TrigCaloClusterContainer );
INIT_XAOD( TrigRingerRingsContainer );
INIT_XAOD( TrigElectronContainer );
INIT_XAOD( ElectronContainer );
INIT_XAOD( PhotonContainer );
INIT_XAOD( TrigPhotonContainer );
INIT_XAOD( TrackParticleContainer );
INIT_XAOD( TrigMissingETContainer );
INIT_XAOD( L2StandAloneMuonContainer );
INIT_XAOD( L2CombinedMuonContainer );
INIT_XAOD( L2IsoMuonContainer );
INIT_XAOD( MuonContainer );
INIT_XAOD( TauJetContainer );
INIT_XAOD( TauTrackContainer );
INIT_XAOD( JetContainer );
INIT_XAOD( VertexContainer );
INIT_XAOD( TrigBphysContainer );
INIT_XAOD( BTaggingContainer );
INIT_XAOD( BTagVertexContainer );
INIT_XAOD( CaloClusterContainer );
INIT_XAOD( TrigT2MbtsBitsContainer );
INIT_XAOD( HIEventShapeContainer );
INIT_XAOD( TrigRNNOutputContainer );
INIT_XAOD( AFPSiHitsClusterContainer );
INIT_XAOD( AFPTrackContainer );
INIT_XAOD( AFPToFTrackContainer );
INIT_XAOD( AFPProtonContainer );
INIT_XAOD( AFPVertexContainer );
INIT_XAOD( TrigEMClusterContainer, TrigEMClusterAuxContainer );
INIT_XAOD( TrigCaloClusterContainer, TrigCaloClusterAuxContainer );
INIT_XAOD( TrigRingerRingsContainer, TrigRingerRingsAuxContainer );
INIT_XAOD( TrigElectronContainer, TrigElectronAuxContainer );
INIT_XAOD( ElectronContainer, ElectronAuxContainer );
INIT_XAOD( PhotonContainer, PhotonAuxContainer );
INIT_XAOD( TrigPhotonContainer, TrigPhotonAuxContainer );
INIT_XAOD( TrackParticleContainer, TrackParticleAuxContainer );
INIT_XAOD( TrigMissingETContainer, TrigMissingETAuxContainer );
INIT_XAOD( L2StandAloneMuonContainer, L2StandAloneMuonAuxContainer );
INIT_XAOD( L2CombinedMuonContainer, L2CombinedMuonAuxContainer );
INIT_XAOD( L2IsoMuonContainer, L2IsoMuonAuxContainer );
INIT_XAOD( MuonContainer, MuonAuxContainer );
INIT_XAOD( TauJetContainer, TauJetAuxContainer );
INIT_XAOD( TauTrackContainer, TauTrackAuxContainer );
INIT_XAOD( JetContainer, JetAuxContainer );
INIT_XAOD( VertexContainer, VertexAuxContainer );
INIT_XAOD( TrigBphysContainer, TrigBphysAuxContainer );
INIT_XAOD( BTaggingContainer, BTaggingAuxContainer );
INIT_XAOD( BTagVertexContainer, BTagVertexAuxContainer );
INIT_XAOD( CaloClusterContainer, CaloClusterTrigAuxContainer ); // NOTE: Difference in interface and aux
INIT_XAOD( TrigT2MbtsBitsContainer, TrigT2MbtsBitsAuxContainer );
INIT_XAOD( HIEventShapeContainer, HIEventShapeAuxContainer );
INIT_XAOD( TrigRNNOutputContainer, TrigRNNOutputAuxContainer );
INIT_XAOD( AFPSiHitsClusterContainer, AFPSiHitsClusterAuxContainer );
INIT_XAOD( AFPTrackContainer, AFPTrackAuxContainer );
INIT_XAOD( AFPToFTrackContainer, AFPToFTrackAuxContainer );
INIT_XAOD( AFPProtonContainer, AFPProtonAuxContainer );
INIT_XAOD( AFPVertexContainer, AFPVertexAuxContainer );
// Phase-I L1 RoIs EDM
INIT_XAOD( eFexEMRoIContainer );
INIT_XAOD( eFexTauRoIContainer );
INIT_XAOD( jFexTauRoIContainer );
INIT_XAOD( jFexFwdElRoIContainer );
INIT_XAOD( jFexSRJetRoIContainer );
INIT_XAOD( jFexLRJetRoIContainer );
INIT_XAOD( jFexMETRoIContainer );
INIT_XAOD( jFexSumETRoIContainer );
INIT_XAOD( gFexJetRoIContainer );
INIT_XAOD( gFexGlobalRoIContainer );
INIT_XAOD( MuonRoIContainer );
INIT_XAOD( eFexEMRoIContainer, eFexEMRoIAuxContainer );
INIT_XAOD( eFexTauRoIContainer, eFexTauRoIAuxContainer );
INIT_XAOD( jFexTauRoIContainer, jFexTauRoIAuxContainer );
INIT_XAOD( jFexFwdElRoIContainer, jFexFwdElRoIAuxContainer );
INIT_XAOD( jFexSRJetRoIContainer, jFexSRJetRoIAuxContainer );
INIT_XAOD( jFexLRJetRoIContainer, jFexLRJetRoIAuxContainer );
INIT_XAOD( jFexMETRoIContainer, jFexMETRoIAuxContainer );
INIT_XAOD( jFexSumETRoIContainer, jFexSumETRoIAuxContainer );
INIT_XAOD( gFexJetRoIContainer, gFexJetRoIAuxContainer );
INIT_XAOD( gFexGlobalRoIContainer, gFexGlobalRoIAuxContainer);
INIT_XAOD( MuonRoIContainer, MuonRoIAuxContainer );
#undef INIT
#undef INIT_XAOD
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGOUTPUTHANDLING_HLTEDMCREATOR_H
#define TRIGOUTPUTHANDLING_HLTEDMCREATOR_H 1
......@@ -252,6 +252,14 @@ class HLTEDMCreator: public extends<AthAlgTool, IHLTOutputTool> {
template<typename T>
StatusCode initHandles( const HandlesGroup<T>& handles );
/**
* Register AuxStore keys for the given keys
*
* This is required to avoid hash collisions (ATR-26386).
*/
template<typename T>
StatusCode initAuxKey( const std::vector<SG::VarHandleKey*>& keys );
template<typename T>
struct ConstHandlesGroup {
ConstHandlesGroup(const SG::WriteHandleKeyArray<T>& out_,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment