diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx
index ed3cc2b89f774f6eeb1c01112b86230b3340f3fa..9ddcd6c228b8ad00b63d918750b2f3d33cbe44aa 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  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: JetMetExAlg.cxx 770492 2016-08-28 16:52:40Z rwhite $
@@ -74,7 +74,7 @@ StatusCode JetMetExAlg::initialize() {
    CHECK( m_histSvc->regHist( "/Trigger/JetMet/EmulationAccepts", m_h_emulationAccepts ) );
    CHECK( m_histSvc->regHist( "/Trigger/JetMet/TriggerAcceptsRaw", m_h_triggerAcceptsRaw ) );
    CHECK( m_histSvc->regHist( "/Trigger/JetMet/TriggerPrescaled", m_h_triggerPrescaled ) );
-   for(const std::string chain:m_hltchainList){
+   for(const std::string& chain:m_hltchainList){
        ATH_MSG_INFO( chain );
        m_numSelectedEvents[chain]=0;
        m_numL1PassedEvents[chain]=0;
@@ -139,7 +139,7 @@ StatusCode JetMetExAlg::finalize() {
    ATH_MSG_INFO( "Selection cuts: " );
    ATH_MSG_INFO( "jet pT > " << m_ptCut << " GeV" );
    ATH_MSG_INFO( "lepton |eta| < " << m_etaMax );
-   for(const std::string chain:m_hltchainList){
+   for(const std::string& chain:m_hltchainList){
        ATH_MSG_INFO( " Chain " << chain);
        ATH_MSG_INFO( "Number of selected events: " << m_numSelectedEvents[chain] );
        ATH_MSG_INFO( "Number of events with a L1 passed probe muon: " << m_numL1PassedEvents[chain] );
@@ -185,7 +185,7 @@ StatusCode JetMetExAlg::finalize() {
 StatusCode JetMetExAlg::collectTriggerStatistics() {
 
    // Now we'd like to collect some trigger statistics for the chains specified 
-    for(const auto chain : m_hltchainList){
+    for(const auto& chain : m_hltchainList){
         // Get the bits, this tell us more 
         const unsigned int bits = m_trigDec->isPassedBits(chain);
         bool efprescale=bits & TrigDefs::EF_prescaled;
@@ -218,7 +218,7 @@ StatusCode JetMetExAlg::collectTriggerStatistics() {
  * *******************************************************************************************/
 StatusCode JetMetExAlg::TriggerAnalysis (const xAOD::IParticleContainer *cont){
     bool isTriggered=false; 
-    for(const auto chain : m_hltchainList)
+    for(const auto& chain : m_hltchainList)
         if( m_trigDec->isPassed( chain ) ) isTriggered=true;
 
 
@@ -231,7 +231,7 @@ StatusCode JetMetExAlg::TriggerAnalysis (const xAOD::IParticleContainer *cont){
         probeEta=obj->eta();
         probeEt=(obj->e()/obj->eta())*0.001; //GeV
         ATH_MSG_INFO(" Probe et: " << probeEt << " eta: " << probeEta);
-        for(const std::string chain:m_hltchainList){
+        for(const std::string& chain:m_hltchainList){
             ATH_MSG_INFO("Matching to chain " << chain);
             m_numSelectedEvents[chain]+=1;
             if(!passHLT(*obj,chain)){
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx
index e5ef6fb2e2d2a07b36743999cab9b1c9b50f40a6..b78509da0bb26875c264586fb113462d9506b822 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // $Id: TDTExample.cxx 779433 2016-10-20 15:22:56Z rwhite $
@@ -133,7 +133,7 @@ StatusCode Trig::TDTExample::checkTriggerDecision(){
     // Expert methods updates the cache object
     ExpertMethods *em = m_trigDec->ExperimentalAndExpertMethods();
     
-    for(const auto chain:m_cfg_chains){
+    for(const auto& chain:m_cfg_chains){
         //  By default, this returns the "Physics condition
         ATH_MSG_INFO(chain << " Passed " << m_trigDec->isPassed(chain));
         ATH_MSG_INFO(chain << " Passed Physics " << m_trigDec->isPassed(chain,TrigDefs::Physics));
@@ -225,7 +225,7 @@ StatusCode Trig::TDTExample::printLevels() {
     std::vector<std::string> allL1 =m_allL1->getListOfTriggers();
     std::vector<std::string> allHLT = m_allHLT->getListOfTriggers();
     // Create list of configured chains from input list
-    for(const std::string chain:m_allHLT->getListOfTriggers()){
+    for(const std::string& chain:m_allHLT->getListOfTriggers()){
         if(std::find(m_chain_names.begin(), m_chain_names.end(), chain) != m_chain_names.end()){ 
             ATH_MSG_INFO("Found corresponding chain in list " << chain); 
             m_cfg_chains.push_back(chain);
@@ -254,7 +254,7 @@ StatusCode Trig::TDTExample::printChainConfiguration() {
     // Expert TDT method
     // print the trigger chain configuration
     // See TrigConfHLTData/HLTChain.h
-    for(const std::string trigger : m_cfg_chains){
+    for(const std::string& trigger : m_cfg_chains){
 
         const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(trigger);
         ATH_MSG_INFO("Chain passes " << m_trigDec->isPassed(trigger));
@@ -310,7 +310,7 @@ StatusCode Trig::TDTExample::electronsAndFlags() {
    std::vector<Feature<xAOD::ElectronContainer> > vec = f.get<xAOD::ElectronContainer>("egamma_Electrons");
    
    // Loop over the features of type ElectornContainer
-   for( const Trig::Feature<xAOD::ElectronContainer> feat : vec ) {
+   for( const Trig::Feature<xAOD::ElectronContainer>& feat : vec ) {
        // Feature label, is the TriggerElement active w/ this feature?
        // For a given feature, feat.te() gives the TriggerElement
        // From the TE, can retrieve other features in the trigger chain
@@ -558,11 +558,11 @@ StatusCode Trig::TDTExample::featuresOfCompositeChain() {
            
    // Range based loop over Combination container
    std::string label;
-   for( const Combination comb : f2.getCombinations()){ 
+   for( const Combination& comb : f2.getCombinations()){ 
        std::vector< Trig::Feature <xAOD::ElectronContainer> > elfeats = comb.get<xAOD::ElectronContainer>();
        ATH_MSG_INFO("Combination has " << elfeats.size() << " Electron features "); 
        
-       for(const Trig::Feature<xAOD::ElectronContainer> els:elfeats){
+       for(const Trig::Feature<xAOD::ElectronContainer>& els:elfeats){
            const xAOD::ElectronContainer *cont = els.cptr(); 
            TrigConf::HLTTriggerElement::getLabel (els.te()->getId(), label );
            ATH_MSG_INFO("Electron feature: " << els.label() 
@@ -582,7 +582,7 @@ StatusCode Trig::TDTExample::featuresOfCompositeChain() {
        
        std::vector< Trig::Feature <xAOD::JetContainer> > jetfeats = comb.get<xAOD::JetContainer>();
        ATH_MSG_INFO("Combination has " << jetfeats.size() << " Jet features ");
-       for(const Trig::Feature<xAOD::JetContainer> jets:jetfeats){
+       for(const Trig::Feature<xAOD::JetContainer>& jets:jetfeats){
            TrigConf::HLTTriggerElement::getLabel (jets.te()->getId(), label );
            ATH_MSG_INFO("Jet feature label " << jets.label() 
                    << " TE Id: " << jets.te()->getId() 
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx
index f821c689e3a13e5e64b6833f8afb825b9703d70a..a9fed6edcde647b26b58f76adf73cebc69aaa628 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  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: TagAndProbeExAlg.cxx 785295 2016-11-19 03:18:52Z ssnyder $
@@ -84,7 +84,7 @@ StatusCode TagAndProbeExAlg::initialize() {
    CHECK( m_histSvc->regHist( "/Trigger/TagAndProbe/TriggerAcceptsRaw", m_h_triggerAcceptsRaw ) );
    CHECK( m_histSvc->regHist( "/Trigger/TagAndProbe/TriggerPrescaled", m_h_triggerPrescaled ) );
    CHECK( m_histSvc->regHist( "/Trigger/TagAndProbe/ZMass", m_h_zMass ) );
-   for(const std::string chain:m_hltchainList){
+   for(const std::string& chain:m_hltchainList){
        m_numSelectedEvents[chain]=0;
        m_numHLTPassedEvents[chain]=0;
        std::string histName="Eff_et_"+chain;
@@ -94,7 +94,7 @@ StatusCode TagAndProbeExAlg::initialize() {
        m_h_eff_eta[chain] = new TProfile( histName.c_str(), "#epsilon(Et)", 20, (-1.*m_etaMax), m_etaMax );
        CHECK( m_histSvc->regHist( "/Trigger/TagAndProbe/"+histName, m_h_eff_eta[chain] ) );
    }
-   for(const std::string chain:m_hltchainList){
+   for(const std::string& chain:m_hltchainList){
        m_numSelectedEvents[chain]=0;
        m_numL1PassedEvents[chain]=0;
    }
@@ -147,7 +147,7 @@ StatusCode TagAndProbeExAlg::finalize() {
    ATH_MSG_INFO( "lepton |eta| < " << m_etaMax );
    ATH_MSG_INFO( m_massMin << " GeV < mZ < " << m_massMax << " GeV" );
    ATH_MSG_INFO( "Number of events with a tag muon: " << m_numTaggedEvents );
-   for(const std::string chain:m_hltchainList){
+   for(const std::string& chain:m_hltchainList){
        ATH_MSG_INFO( " Chain " << chain);
        ATH_MSG_INFO( "Number of selected events: " << m_numSelectedEvents[chain] );
        //ATH_MSG_INFO( "Number of events with a L1 passed matched probe: " << m_numL1PassedEvents[chain] );
@@ -158,7 +158,7 @@ StatusCode TagAndProbeExAlg::finalize() {
        //        << (float)m_numHLTPassedEvents[chain]/(float)m_numL1PassedEvents[chain] * 100. << "%" );
        ATH_MSG_INFO( "" );
    }
-   for(const std::string chain:m_l1chainList){
+   for(const std::string& chain:m_l1chainList){
        ATH_MSG_INFO( " Chain " << chain);
        ATH_MSG_INFO( "Number of events with a L1 passed matched probe: " << m_numL1PassedEvents[chain] );
        ATH_MSG_INFO(" L1 Trigger efficiency (relative to offline): " 
@@ -173,7 +173,7 @@ StatusCode TagAndProbeExAlg::finalize() {
 StatusCode TagAndProbeExAlg::collectTriggerStatistics() {
 
    // Now we'd like to collect some trigger statistics for the chains specified 
-    for(const auto chain : m_hltchainList){
+    for(const auto& chain : m_hltchainList){
         // Get the bits, this tell us more 
         const unsigned int bits = m_trigDec->isPassedBits(chain);
         bool efprescale=bits & TrigDefs::EF_prescaled;
@@ -212,7 +212,7 @@ StatusCode TagAndProbeExAlg::collectTriggerStatistics() {
  * *******************************************************************************************/
 StatusCode TagAndProbeExAlg::TriggerAnalysis (const xAOD::IParticleContainer *cont){
     bool isTriggered=false; 
-    for(const auto chain : m_hltchainList)
+    for(const auto& chain : m_hltchainList)
         if( m_trigDec->isPassed( chain ) ) isTriggered=true;
 
 
@@ -263,12 +263,12 @@ StatusCode TagAndProbeExAlg::TriggerAnalysis (const xAOD::IParticleContainer *co
         probeEt=(z.second->e()/cosh(z.second->eta()))/GeV;
         ATH_MSG_INFO("Z Mass " << mass << " Probe et: " << probeEt << " eta: " << probeEta);
         m_h_zMass->Fill(mass);
-        for(const std::string chain:m_l1chainList){
+        for(const std::string& chain:m_l1chainList){
             m_numSelectedEvents[chain]+=1;
             if(passL1(*z.second,chain))
                 m_numL1PassedEvents[chain]+=1;
         }
-        for(const std::string chain:m_hltchainList){
+        for(const std::string& chain:m_hltchainList){
             ATH_MSG_INFO("Mathcing to chain " << chain);
             m_numSelectedEvents[chain]+=1;
             // L1 measurement
@@ -288,7 +288,7 @@ StatusCode TagAndProbeExAlg::TriggerAnalysis (const xAOD::IParticleContainer *co
                     // Retrieve a vector of Trigger Element (TE) features, i.e. collect all the TEs that contain ElectronContainers
                     std::vector<Trig::Feature<xAOD::ElectronContainer> > vec = f.get<xAOD::ElectronContainer>("egamma_Electrons");
                     // Loop over the features of type ElectornContainer
-                    for( const Trig::Feature<xAOD::ElectronContainer> feat : vec ) {
+                    for( const Trig::Feature<xAOD::ElectronContainer>& feat : vec ) {
                         // Use the helper util to retrieve trigger decision at each step in electron trigger sequence 
                         ATH_MSG_INFO( "TagAndProbe L2Calo Active " << m_tah->ancestorPassed<xAOD::TrigEMCluster>(feat.te())
                                 << " L2Electron Active " << m_tah->ancestorPassed<xAOD::TrigElectronContainer>(feat.te())
@@ -419,7 +419,7 @@ bool TagAndProbeExAlg::passHLT( const xAOD::IParticle &recoObj, const std::strin
 //Just find a match to any trigger in a list or group
 bool TagAndProbeExAlg::passHLT( const xAOD::IParticle &recoObj, std::vector<std::string> chainList) {
     bool match=false;
-    for(const std::string chain:chainList){
+    for(const std::string& chain:chainList){
         if(m_matchTool->match(recoObj,chain,m_dRMax))
             match=true;
     }
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx
index 94e28fe9bab90c2b1131d1e97c780498e28cc33d..df8efbd03228612f55c939538bbfd8e9a348c099 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  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: TrigEmulatorExAlg.cxx 770492 2016-08-28 16:52:40Z rwhite $
@@ -244,7 +244,7 @@ StatusCode TrigEmulatorExAlg::EmulationAnalysis () {
     ATH_MSG_INFO("Checking " << l1jets->size() << " jets ");
     for(const auto l1jet:*l1jets){
         auto names = l1jet->thrNames();
-        for(const auto thr:names){
+        for(const auto& thr:names){
             ATH_MSG_INFO("L1 jet et8x8 " << l1jet->et8x8() << " passing threshold " << thr);
         }
     }
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx
index 7369db8ede8852348cf10c7ce5421653bb17fbbb..236f29eeba6972f4c39d2864d8d2a1474ca4e2a2 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // C/C++
@@ -63,7 +63,7 @@ StatusCode TrigExpressStreamAlg::execute()
 
     const std::vector< xAOD::EventInfo::StreamTag > streamTags =evtInfo->streamTags(); 
     bool found_express_stream = false;
-    for(const xAOD::EventInfo::StreamTag stag:streamTags){
+    for(const xAOD::EventInfo::StreamTag& stag:streamTags){
         if(stag.type() == "express" && stag.name() == "express") {
             found_express_stream = true;
             break;
@@ -81,7 +81,7 @@ StatusCode TrigExpressStreamAlg::execute()
     if(m_evtNr==1){
         std::vector<std::string> configuredHLTChains = m_trigDec->getListOfTriggers( "HLT_.*" );
         // Get list of triggers in the Express Stream
-        for(const auto chain:configuredHLTChains){
+        for(const auto& chain:configuredHLTChains){
             const HLT::Chain *aChain=em->getChainDetails(chain);
             const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chain);
             const std::vector<TrigConf::HLTStreamTag*> chainStreams=trig_conf->streams();
@@ -106,7 +106,7 @@ StatusCode TrigExpressStreamAlg::execute()
     // Trigger bits only stored for event not per stream 
     // No way to determine whether a trigger was disabled due to
     // physics prescale or ES prescale
-    for(const auto chain:m_streamTriggers){
+    for(const auto& chain:m_streamTriggers){
         const unsigned int bits = m_trigDec->isPassedBits(chain);
         bool isPassed = m_trigDec->isPassed(chain);
 
@@ -162,7 +162,7 @@ StatusCode TrigExpressStreamAlg::execute()
 //---------------------------------------------------------------------------------------
 StatusCode TrigExpressStreamAlg::finalize()
 {
-   for(const std::string chain:m_streamTriggers){
+   for(const std::string& chain:m_streamTriggers){
        ATH_MSG_INFO( " Chain " << chain);
        ATH_MSG_INFO( "Number of events with a HLT passed probe muon: " << m_numHLTPassedEvents[chain] );
        ATH_MSG_INFO( "Number of events with a HLT passed probe muon: " << m_numL1PrescaledEvents[chain] );
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisHelper.h b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisHelper.h
index ca494a577524701eeb41705b20885c02db54a78c..eac981dbb7df70857d383570f0094fdaa861ae41 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisHelper.h
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisHelper.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 /*
  * TriggerAnalysisHelper.h
@@ -141,7 +141,7 @@ namespace Trig{
 
             // Loop over Combination container
             std::string label;
-            for( const Combination comb : features.getCombinations()){
+            for( const Combination& comb : features.getCombinations()){
                 ATH_MSG_INFO( "COMB Combination was " << ( comb.active() ? "" : "not " ) << "active." );
                 std::vector< Trig::Feature <T1> > feature1 = comb.get<T1>(key1);
                 ATH_MSG_INFO("COMB Combination has " << feature1.size() << " T1 features "); 
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx
index ec1531f686d7812c57110b7bae316237dde47cfc..bb29b4b32230b5066e90982bd04fb5d983b8cc56 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // System include(s):
@@ -90,14 +90,14 @@ StatusCode TriggerAnalysisTutorial::execute() {
    if(m_eventNr==1){
        std::vector<std::string> allHLT = m_trigDec->getChainGroup("HLT_.*")->getListOfTriggers();
        // Create list of configured chains from input list
-       for(const std::string chain:allHLT){
+       for(const std::string& chain:allHLT){
            if(std::find(m_chain_names.begin(), m_chain_names.end(), chain) != m_chain_names.end()){ 
                ATH_MSG_INFO("Found corresponding chain in list " << chain); 
                m_cfg_chains.push_back(chain);
            }
        }
    }
-   for(const auto chain : m_cfg_chains){
+   for(const auto& chain : m_cfg_chains){
        if( m_trigDec->isPassed( chain ) )
            m_h_triggerAccepts->Fill( chain.c_str(), 1 );
    }
diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/apps/TrigAnalysisExApp.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/apps/TrigAnalysisExApp.cxx
index 51b5dc9e4442d2ebb24477aeec66f2b0b9bd1f5f..f8205710008ce34f00036070af39108373272409 100644
--- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/apps/TrigAnalysisExApp.cxx
+++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/apps/TrigAnalysisExApp.cxx
@@ -106,7 +106,7 @@ int main() {
         // Retrieve a vector of Trigger Element (TE) features, i.e. collect all the TEs that contain ElectronContainers
         std::vector<Trig::Feature<xAOD::ElectronContainer> > vec = fcel.containerFeature<xAOD::ElectronContainer>("egamma_Electrons");
         std::cout << "Electron trigger has " << vec.size() << " electron features " << std::endl;
-        for( const Trig::Feature<xAOD::ElectronContainer> feat : vec ) {
+        for( const Trig::Feature<xAOD::ElectronContainer>& feat : vec ) {
             // With a TE, retrieve ancestors and activeState (did the hypo pass/fail?)
             // Which step is active?
             const xAOD::ElectronContainer *cont=feat.cptr();
@@ -124,7 +124,7 @@ int main() {
         // Retrieve featues from L2 step
         std::vector<Trig::Feature<xAOD::TrigElectronContainer> > vecl2 = fcel.containerFeature<xAOD::TrigElectronContainer>();
         std::cout << "Electron trigger has " << vecl2.size() << " trig electron features " << std::endl;
-        for( const Trig::Feature<xAOD::TrigElectronContainer> feat : vecl2 ) {
+        for( const Trig::Feature<xAOD::TrigElectronContainer>& feat : vecl2 ) {
             // With a TE, retrieve ancestors and activeState (did the hypo pass/fail?)
             // Which step is active?
             const xAOD::TrigElectronContainer *cont=feat.cptr();
@@ -141,7 +141,7 @@ int main() {
         // Can also look at the combinations of the two rois 
         std::cout << eltrigger << " has " << fcel.getCombinations().size() << " combinations, " 
             << fcel.containerFeature<xAOD::ElectronContainer>().size() << " Electron features, " << std::endl;
-        for( const Trig::Combination comb : fcel.getCombinations()){ 
+        for( const Trig::Combination& comb : fcel.getCombinations()){ 
             std::vector< Trig::Feature <xAOD::ElectronContainer> > elfeats = comb.containerFeature<xAOD::ElectronContainer>();
             std::cout << "Combination has " << elfeats.size() << " Electron features " << std::endl;
         }