diff --git a/Event/xAOD/xAODTrigger/CMakeLists.txt b/Event/xAOD/xAODTrigger/CMakeLists.txt
index 5f0b72e796662982aa060d2399159828708bc237..73487f2ce92cb27943d88d0875a150e05d88f81a 100644
--- a/Event/xAOD/xAODTrigger/CMakeLists.txt
+++ b/Event/xAOD/xAODTrigger/CMakeLists.txt
@@ -1,38 +1,41 @@
-################################################################################
-# Package: xAODTrigger
-################################################################################
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-# Declare the package name:
+# Declare the package name.
 atlas_subdir( xAODTrigger )
 
-# Extra dependencies, based on what environment we're in:
+# Extra dependencies, based on what environment we're in.
+set( extra_libs )
 if( NOT XAOD_STANDALONE )
-   set( extra_deps Control/AthenaKernel )
    set( extra_libs AthenaKernel )
 endif()
 
-# Declare the package's dependencies:
-atlas_depends_on_subdirs(
-   PUBLIC
-   Control/AthContainers
-   Control/AthContainersInterfaces
-   Control/AthLinks
-   Event/xAOD/xAODCore
-   Event/xAOD/xAODBase
-   Trigger/TrigEvent/TrigNavStructure
-   ${extra_deps} )
-
-# Component(s) in the package:
+# Pull in the helper CMake code.
+find_package( xAODUtilities )
+
+# Component(s) in the package.
 atlas_add_library( xAODTrigger
    xAODTrigger/*.h xAODTrigger/versions/*.h xAODTrigger/versions/*.icc
    Root/*.cxx
    PUBLIC_HEADERS xAODTrigger
-   LINK_LIBRARIES AthContainers AthLinks xAODCore xAODBase TrigNavStructure ${extra_libs} )
+   LINK_LIBRARIES AthContainers AthLinks xAODCore xAODBase TrigNavStructure
+   ${extra_libs} )
+
+atlas_add_xaod_smart_pointer_dicts(
+   INPUT xAODTrigger/selection.xml
+   OUTPUT _selectionFile
+   CONTAINERS "xAOD::MuonRoIContainer_v1" "xAOD::JetRoIContainer_v1"
+              "xAOD::JetRoIContainer_v2" "xAOD::EmTauRoIContainer_v1"
+              "xAOD::EmTauRoIContainer_v2" "xAOD::TriggerMenuContainer_v1"
+              "xAOD::TrigCompositeContainer_v1" "xAOD::BunchConfContainer_v1"
+              "xAOD::TrigPassBitsContainer_v1"
+   OBJECTS "xAOD::EnergySumRoI_v1" "xAOD::EnergySumRoI_v2"
+           "xAOD::TrigDecision_v1" "xAOD::TrigNavigation_v1"
+           "xAOD::RoiDescriptorStore_v1" )
 
 atlas_add_dictionary( xAODTriggerDict
    xAODTrigger/xAODTriggerDict.h
-   xAODTrigger/selection.xml
-   LINK_LIBRARIES xAODTrigger
+   ${_selectionFile}
+   LINK_LIBRARIES xAODCore xAODTrigger
    EXTRA_FILES Root/dict/*.cxx )
 
 atlas_add_test( ut_xaodtrigger_bytestreamauxcontainer_v1_test
diff --git a/Event/xAOD/xAODTrigger/xAODTrigger/selection.xml b/Event/xAOD/xAODTrigger/xAODTrigger/selection.xml
index a336d26549c40ab88c901f80d273464d24d46d90..d316db7bfc34bcecf06ead33a906285e5e1ae57e 100644
--- a/Event/xAOD/xAODTrigger/xAODTrigger/selection.xml
+++ b/Event/xAOD/xAODTrigger/xAODTrigger/selection.xml
@@ -1,7 +1,7 @@
-<!-- $Id: selection.xml 743093 2016-04-26 21:46:56Z watsona $ -->
+<!-- Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -->
 <lcgdict>
 
-   <!-- The byte stream auxiliary container, v1: -->
+   <!-- xAOD::ByteStreamAuxContainer type(s). -->
    <class name="xAOD::ByteStreamAuxContainer_v1" >
      <field name="m_auxids" transient="true" />
      <field name="m_staticVecs" transient="true" />
@@ -20,119 +20,169 @@
      ]]>
    </read>
 
-   <!-- Types used by ByteStreamAuxContainer_v1 internally: -->
-   <class name="std::map<std::string,std::vector<int> >" />
-   <class name="std::map<std::string,std::vector<float> >" />
-   <class name="std::map<std::string,std::vector<std::vector<int> > >" />
-   <class name="std::map<std::string,std::vector<std::vector<float> > >" />
-
-   <!-- Types used by Signature and Sequence info in TriggerMenuAuxContainer_v1 -->
-   <class name="std::vector<std::vector<std::vector<std::string> > >" />
-   <class name="std::vector<std::vector<std::vector<uint32_t> > >" />
-   <class name="std::vector<std::vector<std::vector<std::vector<std::string> > > >" />
-
-   <!-- RoI dictionaries: -->
+   <!-- xAOD::MuonRoI interface type(s). -->
    <class name="xAOD::MuonRoI_v1" />
    <class name="xAOD::MuonRoIContainer_v1"
           id="807F1B34-CFD5-4410-AB98-83231B551D6F" />
+   <typedef name="xAOD::MuonRoI" />
+   <typedef name="xAOD::MuonRoIContainer" />
+
+   <!-- xAOD::MuonRoI auxiliary type(s). -->
    <class name="xAOD::MuonRoIAuxContainer_v1"
           id="242CC7E8-D74C-4208-A3F6-2982628F1F8E" />
+   <typedef name="xAOD::MuonRoIAuxContainer" />
 
+   <!-- xAOD::JetRoI interface type(s). -->
    <class name="xAOD::JetRoI_v1" />
    <class name="xAOD::JetRoIContainer_v1"
           id="ED39F230-5E9A-11E3-9563-02163E00A725" />
-   <class name="xAOD::JetRoIAuxContainer_v1"
-          id="64C2E2A4-5E9A-11E3-BEF2-02163E00A725" />
-
    <class name="xAOD::JetRoI_v2" />
    <class name="xAOD::JetRoIContainer_v2"
           id="8F9A76C9-2083-4774-A0EE-FB585930B664" />
+   <typedef name="xAOD::JetRoI" />
+   <typedef name="xAOD::JetRoIContainer" />
+
+   <!-- xAOD::JetRoI auxiliary type(s). -->
+   <class name="xAOD::JetRoIAuxContainer_v1"
+          id="64C2E2A4-5E9A-11E3-BEF2-02163E00A725" />
    <class name="xAOD::JetRoIAuxContainer_v2"
           id="8448ECAF-10E0-4E8B-9E67-3A00FEA36317" />
-
+   <typedef name="xAOD::JetRoIAuxContainer" />
+
+   <!-- Tell ROOT that it should automatically convert between smart pointer -->
+   <!-- types. -->
+   <read sourceClass="DataLink<xAOD::JetRoIContainer_v1>" version="[1-]"
+         targetClass="DataLink<xAOD::JetRoIContainer_v2>"
+         source="" target="" />
+   <read sourceClass="ElementLink<xAOD::JetRoIContainer_v1>" version="[1-]"
+         targetClass="ElementLink<xAOD::JetRoIContainer_v2>"
+         source="" target="" />
+
+   <!-- xAOD::EmTauRoI interface type(s). -->
    <class name="xAOD::EmTauRoI_v1" />
    <class name="xAOD::EmTauRoIContainer_v1"
           id="101CD1EE-5EA2-11E3-895D-02163E00A743" />
-   <class name="xAOD::EmTauRoIAuxContainer_v1"
-          id="1825AE7E-5EA2-11E3-A41F-02163E00A743" />
-
    <class name="xAOD::EmTauRoI_v2" />
    <class name="xAOD::EmTauRoIContainer_v2"
           id="6AB862C4-31E6-4F66-AAE8-56BA01E350F2" />
+   <typedef name="xAOD::EmTauRoI" />
+   <typedef name="xAOD::EmTauRoIContainer" />
+
+   <!-- xAOD::EmTauRoI auxiliary type(s). -->
+   <class name="xAOD::EmTauRoIAuxContainer_v1"
+          id="1825AE7E-5EA2-11E3-A41F-02163E00A743" />
    <class name="xAOD::EmTauRoIAuxContainer_v2"
           id="74EA3AFB-B7BE-4E4B-AD5D-4297CA6EDBCD" />
-
+   <typedef name="xAOD::EmTauRoIAuxContainer" />
+
+   <!-- Tell ROOT that it should automatically convert between smart pointer -->
+   <!-- types. -->
+   <read sourceClass="DataLink<xAOD::EmTauRoIContainer_v1>" version="[1-]"
+         targetClass="DataLink<xAOD::EmTauRoIContainer_v2>"
+         source="" target="" />
+   <read sourceClass="ElementLink<xAOD::EmTauRoIContainer_v1>" version="[1-]"
+         targetClass="ElementLink<xAOD::EmTauRoIContainer_v2>"
+         source="" target="" />
+
+   <!-- xAOD::JetEtRoI interface type(s). -->
    <class name="xAOD::JetEtRoI_v1"
           id="6018AD28-5EAF-11E3-9B5D-02163E00A743" />
+   <typedef name="xAOD::JetEtRoI" />
+
+   <!-- xAOD::JetEtRoI auxiliary type(s). -->
    <class name="xAOD::JetEtRoIAuxInfo_v1"
           id="6A7C6F7A-5EAF-11E3-BFBC-02163E00A743" />
+   <typedef name="xAOD::JetEtRoIAuxInfo" />
 
+   <!-- xAOD::EnergySumRoI interface type(s). -->
    <class name="xAOD::EnergySumRoI_v1"
           id="727CB19A-5EB8-11E3-81B0-02163E00A743" />
-   <class name="xAOD::EnergySumRoIAuxInfo_v1"
-          id="7BD71A00-5EB8-11E3-95AF-02163E00A743" />
-
    <class name="xAOD::EnergySumRoI_v2"
           id="3F26401F-25D9-4CCA-B883-57EBCEE8D299" />
+   <typedef name="xAOD::EnergySumRoI" />
+
+   <!-- xAOD::EnergySumRoI auxiliary type(s). -->
+   <class name="xAOD::EnergySumRoIAuxInfo_v1"
+          id="7BD71A00-5EB8-11E3-95AF-02163E00A743" />
    <class name="xAOD::EnergySumRoIAuxInfo_v2"
           id="7A0DB6D7-05F6-4D3A-9E8B-0230350E3E25" />
+   <typedef name="xAOD::EnergySumRoIAuxInfo" />
+
+   <!-- Tell ROOT that it should automatically convert between smart pointer -->
+   <!-- types. -->
+   <read sourceClass="DataLink<xAOD::EnergySumRoI_v1>" version="[1-]"
+         targetClass="DataLink<xAOD::EnergySumRoI_v2>"
+         source="" target="" />
 
-   <!-- TriggerMenu dictionaries: -->
+   <!-- xAOD::TriggerMenu interface type(s). -->
    <class name="xAOD::TriggerMenu_v1" />
    <class name="xAOD::TriggerMenuContainer_v1"
           id="AA55120B-11CF-44A3-B1E4-A5AB062207B7" />
+   <typedef name="xAOD::TriggerMenu" />
+   <typedef name="xAOD::TriggerMenuContainer" />
+
+   <!-- xAOD::TriggerMenu auxiliary type(s). -->
    <class name="xAOD::TriggerMenuAuxContainer_v1"
           id="B8614CC5-8696-4170-8CCC-496DA7671246" />
+   <typedef name="xAOD::TriggerMenuAuxContainer" />
 
-   <class name="xAOD::TrigConfKeys_v1"
-          id="A88FD5D2-8BCB-4ADC-978C-0914D86B96B7" />
-
-   <!-- Extra types used by TriggerMenu: -->
-   <class name="std::vector<std::vector<uint16_t> >" />
-   <class name="std::vector<std::vector<std::vector<uint16_t> > >" />
-
-   <!-- TrigDecision_v1 dictionaries: -->
+   <!-- xAOD::TrigDecision interface type(s). -->
    <class name="xAOD::TrigDecision_v1"
           id="092BCB2D-9630-4689-BE86-7B93466420DA" />
+   <typedef name="xAOD::TrigDecision" />
+
+   <!-- xAOD::TrigDecision auxiliary type(s). -->
    <class name="xAOD::TrigDecisionAuxInfo_v1"
           id="F9618829-3B9C-41CB-8A87-D26B5D31CA79" />
+   <typedef name="xAOD::TrigDecisionAuxInfo" />
 
-   <!-- TrigNavigation_v1 dictionaries: -->
+   <!-- xAOD::TrigNavigation interface type(s). -->
    <class name="xAOD::TrigNavigation_v1"
           id="C9131CE0-C4D5-47A2-B088-D49ECE2C3C69" />
+   <typedef name="xAOD::TrigNavigation" />
+
+   <!-- xAOD::TrigNavigation auxiliary type(s). -->
    <class name="xAOD::TrigNavigationAuxInfo_v1"
           id="924049A6-25B4-4406-A70A-CCAC2E4233E1" />
+   <typedef name="xAOD::TrigNavigationAuxInfo" />
 
-   <!-- TrigComposite_v1 dictionaries: -->
+   <!-- xAOD::TrigComposite interface type(s). -->
    <class name="xAOD::TrigComposite_v1" />
    <class name="xAOD::TrigCompositeContainer_v1"
           id="3CB1DCCD-2B78-4E15-AC09-D75B228A29AA" />
+   <typedef name="xAOD::TrigComposite" />
+   <typedef name="xAOD::TrigCompositeContainer" />
+
+   <!-- xAOD::TrigComposite auxiliary type(s). -->
    <class name="xAOD::TrigCompositeAuxContainer_v1"
           id="171EB8B8-A777-47D9-94A9-33B2482E2AAF" />
-
-   <!-- TrigComposite_v2 dictionaries: -->
    <class name="xAOD::TrigCompositeAuxContainer_v2"
           id="3174A8A0-7EA2-436D-93FC-0D058BE99B09" />
+   <typedef name="xAOD::TrigCompositeAuxContainer" />
 
-   <!-- RoiDescriptorStore_v1 dictionaries: -->
+   <!-- xAOD::RoiDescriptorStore interface type(s). -->
    <class name="xAOD::RoiDescriptorStore_v1"
           id="882822c8-906a-11e5-87f4-02163e010d8c" />
+   <typedef name="xAOD::RoiDescriptorStore" />
+
+   <!-- xAOD::RoiDescriptorStore auxiliary type(s). -->
    <class name="xAOD::RoiDescriptorStoreAuxInfo_v1"
           id="8aa7eae2-906a-11e5-a100-02163e010d8c" />
+   <typedef name="xAOD::RoiDescriptorStoreAuxInfo" />
 
-   <!-- Extra types used by TrigComposite: -->
-   <class name="std::vector<std::vector<std::string> >" />
-
-   <!-- Bunch configuration dictionaries: -->
+   <!-- xAOD::BunchConf interface type(s). -->
    <class name="xAOD::BunchConf_v1" />
    <class name="xAOD::BunchConfContainer_v1"
           id="07B1BB98-24EE-4EA3-B0D5-ECB2B0A3CB65" />
+   <typedef name="xAOD::BunchConf" />
+   <typedef name="xAOD::BunchConfContainer" />
+
+   <!-- xAOD::BunchConf auxiliary type(s). -->
    <class name="xAOD::BunchConfAuxContainer_v1"
           id="29CFA84E-5C7C-4AAD-8FB5-F5EB9AF93423" />
-   <class name="xAOD::BunchConfKey_v1"
-          id="B7FA1A14-95A4-4852-813E-CB2271906060" />
+   <typedef name="xAOD::BunchConfAuxContainer" />
 
-   <!-- TrigPassBits dictionaries: -->
+   <!-- xAOD::TrigPassBits interface type(s). -->
    <class name="xAOD::TrigPassBits_v1" >
      <field name="m_container" transient="true" />
    </class>
@@ -145,7 +195,18 @@
    </read>
    <class name="xAOD::TrigPassBitsContainer_v1"
           id="7B5DF7FF-2043-414E-BEDC-2BB0AB518AF7" />
+   <typedef name="xAOD::TrigPassBits" />
+   <typedef name="xAOD::TrigPassBitsContainer" />
+
+   <!-- xAOD::TrigPassBits auxiliary type(s). -->
    <class name="xAOD::TrigPassBitsAuxContainer_v1"
           id="AD293D04-8D40-4704-B945-04283172D035" />
+   <typedef name="xAOD::TrigPassBitsAuxContainer" />
+
+   <!-- Key type(s). -->
+   <class name="xAOD::TrigConfKeys_v1"
+          id="A88FD5D2-8BCB-4ADC-978C-0914D86B96B7" />
+   <class name="xAOD::BunchConfKey_v1"
+          id="B7FA1A14-95A4-4852-813E-CB2271906060" />
 
 </lcgdict>
diff --git a/Event/xAOD/xAODTrigger/xAODTrigger/xAODTriggerDict.h b/Event/xAOD/xAODTrigger/xAODTrigger/xAODTriggerDict.h
index 6ce42c1839a9c1a88cfda109e3c8e1260f130a4d..5b5127c252347499f3700279dd848a66e4cd9c38 100644
--- a/Event/xAOD/xAODTrigger/xAODTrigger/xAODTriggerDict.h
+++ b/Event/xAOD/xAODTrigger/xAODTrigger/xAODTriggerDict.h
@@ -1,149 +1,128 @@
 // Dear emacs, this is -*- c++ -*-
-
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
-
-// $Id: xAODTriggerDict.h 743093 2016-04-26 21:46:56Z watsona $
 #ifndef XAODTRIGGER_XAODTRIGGERDICT_H
 #define XAODTRIGGER_XAODTRIGGERDICT_H
 
-// STL include(s):
-#include <vector>
-
-// EDM include(s):
-#include "AthLinks/DataLink.h"
-#include "AthLinks/ElementLink.h"
-#include "AthLinks/ElementLinkVector.h"
-
-// Local include(s):
+// Local include(s).
 #include "xAODTrigger/versions/ByteStreamAuxContainer_v1.h"
 
+#include "xAODTrigger/TriggerMenu.h"
+#include "xAODTrigger/TriggerMenuContainer.h"
+#include "xAODTrigger/TriggerMenuAuxContainer.h"
 #include "xAODTrigger/versions/TriggerMenu_v1.h"
 #include "xAODTrigger/versions/TriggerMenuContainer_v1.h"
 #include "xAODTrigger/versions/TriggerMenuAuxContainer_v1.h"
 
+#include "xAODTrigger/MuonRoI.h"
+#include "xAODTrigger/MuonRoIContainer.h"
+#include "xAODTrigger/MuonRoIAuxContainer.h"
+#include "xAODTrigger/versions/MuonRoI_v1.h"
 #include "xAODTrigger/versions/MuonRoIContainer_v1.h"
 #include "xAODTrigger/versions/MuonRoIAuxContainer_v1.h"
-#include "xAODTrigger/versions/MuonRoI_v1.h"
 
+#include "xAODTrigger/JetRoI.h"
+#include "xAODTrigger/JetRoIContainer.h"
+#include "xAODTrigger/JetRoIAuxContainer.h"
+#include "xAODTrigger/versions/JetRoI_v1.h"
 #include "xAODTrigger/versions/JetRoIContainer_v1.h"
 #include "xAODTrigger/versions/JetRoIAuxContainer_v1.h"
-#include "xAODTrigger/versions/JetRoI_v1.h"
-
+#include "xAODTrigger/versions/JetRoI_v2.h"
 #include "xAODTrigger/versions/JetRoIContainer_v2.h"
 #include "xAODTrigger/versions/JetRoIAuxContainer_v2.h"
-#include "xAODTrigger/versions/JetRoI_v2.h"
 
+#include "xAODTrigger/EmTauRoI.h"
+#include "xAODTrigger/EmTauRoIContainer.h"
+#include "xAODTrigger/EmTauRoIAuxContainer.h"
+#include "xAODTrigger/versions/EmTauRoI_v1.h"
 #include "xAODTrigger/versions/EmTauRoIContainer_v1.h"
 #include "xAODTrigger/versions/EmTauRoIAuxContainer_v1.h"
-#include "xAODTrigger/versions/EmTauRoI_v1.h"
-
+#include "xAODTrigger/versions/EmTauRoI_v2.h"
 #include "xAODTrigger/versions/EmTauRoIContainer_v2.h"
 #include "xAODTrigger/versions/EmTauRoIAuxContainer_v2.h"
-#include "xAODTrigger/versions/EmTauRoI_v2.h"
 
-#include "xAODTrigger/versions/JetEtRoIAuxInfo_v1.h"
+#include "xAODTrigger/JetEtRoI.h"
+#include "xAODTrigger/JetEtRoIAuxInfo.h"
 #include "xAODTrigger/versions/JetEtRoI_v1.h"
+#include "xAODTrigger/versions/JetEtRoIAuxInfo_v1.h"
 
-#include "xAODTrigger/versions/EnergySumRoIAuxInfo_v2.h"
-#include "xAODTrigger/versions/EnergySumRoI_v2.h"
-
-#include "xAODTrigger/versions/EnergySumRoIAuxInfo_v1.h"
+#include "xAODTrigger/EnergySumRoI.h"
+#include "xAODTrigger/EnergySumRoIAuxInfo.h"
 #include "xAODTrigger/versions/EnergySumRoI_v1.h"
-
-#include "xAODTrigger/versions/EnergySumRoIAuxInfo_v2.h"
+#include "xAODTrigger/versions/EnergySumRoIAuxInfo_v1.h"
 #include "xAODTrigger/versions/EnergySumRoI_v2.h"
+#include "xAODTrigger/versions/EnergySumRoIAuxInfo_v2.h"
 
+#include "xAODTrigger/TrigDecision.h"
+#include "xAODTrigger/TrigDecisionAuxInfo.h"
 #include "xAODTrigger/versions/TrigDecision_v1.h"
 #include "xAODTrigger/versions/TrigDecisionAuxInfo_v1.h"
 
+#include "xAODTrigger/TrigNavigation.h"
+#include "xAODTrigger/TrigNavigationAuxInfo.h"
 #include "xAODTrigger/versions/TrigNavigation_v1.h"
 #include "xAODTrigger/versions/TrigNavigationAuxInfo_v1.h"
 
+#include "xAODTrigger/TrigConfKeys.h"
 #include "xAODTrigger/versions/TrigConfKeys_v1.h"
 
+#include "xAODTrigger/TrigComposite.h"
+#include "xAODTrigger/TrigCompositeContainer.h"
+#include "xAODTrigger/TrigCompositeAuxContainer.h"
 #include "xAODTrigger/versions/TrigComposite_v1.h"
 #include "xAODTrigger/versions/TrigCompositeContainer_v1.h"
 #include "xAODTrigger/versions/TrigCompositeAuxContainer_v1.h"
 #include "xAODTrigger/versions/TrigCompositeAuxContainer_v2.h"
 
+#include "xAODTrigger/BunchConfKey.h"
 #include "xAODTrigger/versions/BunchConfKey_v1.h"
+
+#include "xAODTrigger/BunchConf.h"
+#include "xAODTrigger/BunchConfContainer.h"
+#include "xAODTrigger/BunchConfAuxContainer.h"
+#include "xAODTrigger/versions/BunchConf_v1.h"
 #include "xAODTrigger/versions/BunchConfContainer_v1.h"
 #include "xAODTrigger/versions/BunchConfAuxContainer_v1.h"
 
+#include "xAODTrigger/TrigPassBits.h"
+#include "xAODTrigger/TrigPassBitsContainer.h"
+#include "xAODTrigger/TrigPassBitsAuxContainer.h"
 #include "xAODTrigger/versions/TrigPassBits_v1.h"
 #include "xAODTrigger/versions/TrigPassBitsContainer_v1.h"
 #include "xAODTrigger/versions/TrigPassBitsAuxContainer_v1.h"
 
+#include "xAODTrigger/RoiDescriptorStore.h"
+#include "xAODTrigger/RoiDescriptorStoreAuxInfo.h"
 #include "xAODTrigger/versions/RoiDescriptorStore_v1.h"
 #include "xAODTrigger/versions/RoiDescriptorStoreAuxInfo_v1.h"
 
-namespace{
-  struct GCCXML_DUMMY_INSTANTIATION_XAODTRIGGER {
-
-    xAOD::MuonRoIContainer_v1 muon_c1;
-    DataLink< xAOD::MuonRoIContainer_v1 > muon_l1;
-    ElementLink< xAOD::MuonRoIContainer_v1 > muon_l2;
-    ElementLinkVector< xAOD::MuonRoIContainer_v1 > muon_l3;
-    std::vector< DataLink<xAOD::MuonRoIContainer_v1 > > muon_l4;
-    std::vector< ElementLink<xAOD::MuonRoIContainer_v1 > > muon_l5;
-    std::vector< ElementLinkVector< xAOD::MuonRoIContainer_v1 > > muon_l6;
-
-    xAOD::JetRoIContainer_v1 jet_c1;
-    DataLink< xAOD::JetRoIContainer_v1 > jet_l1;
-    ElementLink< xAOD::JetRoIContainer_v1 > jet_l2;
-    ElementLinkVector< xAOD::JetRoIContainer_v1 > jet_l3;
-    std::vector< DataLink<xAOD::JetRoIContainer_v1 > > jet_l4;
-    std::vector< ElementLink<xAOD::JetRoIContainer_v1 > > jet_l5;
-    std::vector< ElementLinkVector< xAOD::JetRoIContainer_v1 > > jet_l6;
-
-    xAOD::JetRoIContainer_v2 jet_v2_c1;
-    DataLink< xAOD::JetRoIContainer_v2 > jet_v2_l1;
-    ElementLink< xAOD::JetRoIContainer_v2 > jet_v2_l2;
-    ElementLinkVector< xAOD::JetRoIContainer_v2 > jet_v2_l3;
-    std::vector< DataLink<xAOD::JetRoIContainer_v2 > > jet_v2_l4;
-    std::vector< ElementLink<xAOD::JetRoIContainer_v2 > > jet_v2_l5;
-    std::vector< ElementLinkVector< xAOD::JetRoIContainer_v2 > > jet_v2_l6;
-
-    xAOD::EmTauRoIContainer_v1 emtau_c1;
-    DataLink< xAOD::EmTauRoIContainer_v1 > emtau_l1;
-    ElementLink< xAOD::EmTauRoIContainer_v1 > emtau_l2;
-    ElementLinkVector< xAOD::EmTauRoIContainer_v1 > emtau_l3;
-    std::vector< DataLink<xAOD::EmTauRoIContainer_v1 > > emtau_l4;
-    std::vector< ElementLink<xAOD::EmTauRoIContainer_v1 > > emtau_l5;
-    std::vector< ElementLinkVector< xAOD::EmTauRoIContainer_v1 > > emtau_l6;
-
-    xAOD::EmTauRoIContainer_v2 emtau_v2_c1;
-    DataLink< xAOD::EmTauRoIContainer_v2 > emtau_v2_l1;
-    ElementLink< xAOD::EmTauRoIContainer_v2 > emtau_v2_l2;
-    ElementLinkVector< xAOD::EmTauRoIContainer_v2 > emtau_v2_l3;
-    std::vector< DataLink<xAOD::EmTauRoIContainer_v2 > > emtau_v2_l4;
-    std::vector< ElementLink<xAOD::EmTauRoIContainer_v2 > > emtau_v2_l5;
-    std::vector< ElementLinkVector< xAOD::EmTauRoIContainer_v2 > > emtau_v2_l6;
-
-    DataLink< xAOD::JetEtRoI_v1 > jetEt_l1;
-    std::vector< DataLink< xAOD::JetEtRoI_v1 > > jetEt_l2;
-
-    DataLink< xAOD::EnergySumRoI_v1 > esum_l1;
-    std::vector< DataLink< xAOD::EnergySumRoI_v1 > > esum_l2;
-
-    DataLink< xAOD::EnergySumRoI_v2 > esum_v2_l1;
-    std::vector< DataLink< xAOD::EnergySumRoI_v2 > > esum_v2_l2;
-
-    xAOD::TriggerMenuContainer_v1 c2;
-
-    xAOD::TrigCompositeContainer_v1 comp_c1;
-
-    xAOD::BunchConfContainer_v1 c5;
-
-    xAOD::TrigPassBitsContainer_v1 pb_c1;
-    DataLink< xAOD::TrigPassBitsContainer_v1 > pb_l1;
-    ElementLink< xAOD::TrigPassBitsContainer_v1 > pb_l2;
-    std::vector< DataLink< xAOD::TrigPassBitsContainer_v1 > > pb_l3;
-    std::vector< ElementLink< xAOD::TrigPassBitsContainer_v1 > > pb_l4;
-
-  };
+// EDM include(s).
+#include "xAODCore/tools/DictHelpers.h"
+
+// Instantiate all necessary types for the dictionary.
+namespace {
+   struct GCCXML_DUMMY_INSTANTIATION_XAODTRIGGER {
+      // Local type(s).
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, TriggerMenuContainer_v1 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, BunchConfContainer_v1 );
+
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, MuonRoIContainer_v1 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, JetRoIContainer_v1 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, JetRoIContainer_v2 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, EmTauRoIContainer_v1 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, EmTauRoIContainer_v2 );
+
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, TrigCompositeContainer_v1 );
+      XAOD_INSTANTIATE_NS_CONTAINER_TYPES( xAOD, TrigPassBitsContainer_v1 );
+
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, JetEtRoI_v1 );
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, EnergySumRoI_v1 );
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, EnergySumRoI_v2 );
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, TrigDecision_v1 );
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, TrigNavigation_v1 );
+      XAOD_INSTANTIATE_NS_OBJECT_TYPES( xAOD, RoiDescriptorStore_v1 );
+   };
 }
 
 #endif // XAODTRIGGER_XAODTRIGGERDICT_H