From d4883bba6dd97307ac818bc0c3e226eafa8cf890 Mon Sep 17 00:00:00 2001
From: James Beacham <j.beacham@cern.ch>
Date: Sun, 24 Jun 2018 19:49:03 +0000
Subject: [PATCH] Merge branch 'b21-fix-copies' into '21.0'

Avoid copying elements when performing loops in tau EDM

See merge request atlas/athena!12239

(cherry picked from commit c7e97f41b642a1258b98950c78ff3069a34fa5ff)

fdea2993 avoid copying elements when performing loops in tau EDM
---
 Event/EventContainers/test/ID_ContainerTest.h | 0
 Event/xAOD/xAODTau/Root/TauJet_v3.cxx         | 8 ++++----
 2 files changed, 4 insertions(+), 4 deletions(-)
 mode change 100644 => 100755 Event/EventContainers/test/ID_ContainerTest.h

diff --git a/Event/EventContainers/test/ID_ContainerTest.h b/Event/EventContainers/test/ID_ContainerTest.h
old mode 100644
new mode 100755
diff --git a/Event/xAOD/xAODTau/Root/TauJet_v3.cxx b/Event/xAOD/xAODTau/Root/TauJet_v3.cxx
index 51448da90a7..ef85767143f 100644
--- a/Event/xAOD/xAODTau/Root/TauJet_v3.cxx
+++ b/Event/xAOD/xAODTau/Root/TauJet_v3.cxx
@@ -465,7 +465,7 @@ namespace xAOD {
 
   const TauJet_v3::TauTrackLinks_t TauJet_v3::tauTrackLinksWithMask(unsigned int mask) const{
     TauJet_v3::TauTrackLinks_t links;
-    for(const ElementLink< xAOD::TauTrackContainer > link : tauTrackAcc(*this) ){
+    for(const ElementLink< xAOD::TauTrackContainer >& link : tauTrackAcc(*this) ){
       if( (*link)->flagWithMask(mask))
 	links.push_back(link);
     }
@@ -485,7 +485,7 @@ namespace xAOD {
   const TauTrack* TauJet_v3::trackWithMask( size_t i, unsigned int mask, int* container_index ) const {
     uint tracks_pass_mask=0;
 
-    for(const ElementLink< xAOD::TauTrackContainer > link : tauTrackAcc(*this) ){
+    for(const ElementLink< xAOD::TauTrackContainer >& link : tauTrackAcc(*this) ){
       const TauTrack* trk = *link;
       if(trk->flagWithMask(mask)){
 	if(tracks_pass_mask==i) {
@@ -552,7 +552,7 @@ namespace xAOD {
   /// Get the v<pointer> to all tracks associated with this tau, regardless of classification
   std::vector<TauTrack*> TauJet_v3::allTracks() {
     std::vector<TauTrack*> trks;
-    for(ElementLink< xAOD::TauTrackContainer > link : tauTrackAcc(*this) ){
+    for(ElementLink< xAOD::TauTrackContainer >& link : tauTrackAcc(*this) ){
       const TauTrack* c_trk = *link;
       xAOD::TauTrackContainer* tauTrackContainer = link.getDataNonConstPtr();
       TauTrack* trk=tauTrackContainer->at(link.index());
@@ -582,7 +582,7 @@ namespace xAOD {
   //number of tracks with a given classification
   size_t TauJet_v3::nTracksWithMask(unsigned int flags) const{
     size_t n(0);
-    for(const ElementLink< xAOD::TauTrackContainer > link : tauTrackAcc(*this) ){
+    for(const ElementLink< xAOD::TauTrackContainer >& link : tauTrackAcc(*this) ){
       const TauTrack* trk = *link;
       if(trk->flagWithMask(flags)) n++;
     }    
-- 
GitLab