From e107f9ca6b7e5ed48170f16aced206a8f9cfb24d Mon Sep 17 00:00:00 2001
From: Susumu Oda <susumu.oda@cern.ch>
Date: Sun, 17 Feb 2019 20:24:37 +0000
Subject: [PATCH] Remove const_cast in CompetingPixel/SCT_ClustersOnTrackTool

---
 .../CompetingPixelClustersOnTrackTool.h            |  6 +++---
 .../CompetingSCT_ClustersOnTrackTool.h             |  6 +++---
 .../CompetingTRT_DriftCirclesOnTrackTool.h         |  6 +++---
 .../ICompetingPixelClustersOnTrackCreator.h        |  6 +++---
 .../ICompetingSCT_ClustersOnTrackCreator.h         |  6 +++---
 .../ICompetingTRT_DriftCirclesOnTrackCreator.h     |  4 ++--
 .../src/CompetingPixelClustersOnTrackTool.cxx      | 14 +++++++-------
 .../src/CompetingSCT_ClustersOnTrackTool.cxx       | 14 +++++++-------
 .../src/CompetingTRT_DriftCirclesOnTrackTool.cxx   |  4 ++--
 .../src/MuonCompetingClustersOnTrackCreator.h      |  4 ++--
 .../src/TriggerChamberClusterOnTrackCreator.h      |  4 ++--
 .../IMuonCompetingClustersOnTrackCreator.h         |  2 +-
 .../src/DeterministicAnnealingFilter.cxx           | 14 ++++++++++----
 .../src/KalmanPiecewiseAnnealingFilter.cxx         |  7 +++++--
 .../CompetingRIOsOnTrackTool.h                     |  6 +++---
 .../ICompetingRIOsOnTrackTool.h                    |  2 +-
 .../src/CompetingRIOsOnTrackTool.cxx               |  6 +++---
 .../TrkToolInterfaces/ICompetingRIOsOnTrackTool.h  |  8 ++++----
 18 files changed, 64 insertions(+), 55 deletions(-)

diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingPixelClustersOnTrackTool.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingPixelClustersOnTrackTool.h
index 88475aa2de5..6f7e6fe1cec 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingPixelClustersOnTrackTool.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingPixelClustersOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -103,7 +103,7 @@ public:
             be needed when the predicted TrackParameters have changed rapidly) */
     virtual void updateCompetingROT(
         //const InDet::CompetingPixelClustersOnTrack&,
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -117,7 +117,7 @@ public:
                                      = Trk::TrackState::unidentified) const;
 
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const;
 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingSCT_ClustersOnTrackTool.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingSCT_ClustersOnTrackTool.h
index 8586c71010a..627fe4aa2a9 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingSCT_ClustersOnTrackTool.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingSCT_ClustersOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -107,7 +107,7 @@ public:
             be needed when the predicted TrackParameters have changed rapidly) */
     virtual void updateCompetingROT(
         //const InDet::CompetingSCT_ClustersOnTrack&,
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -120,7 +120,7 @@ public:
                                      const Trk::TrackState::MeasurementType
                                      = Trk::TrackState::unidentified) const;
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const;
 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingTRT_DriftCirclesOnTrackTool.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingTRT_DriftCirclesOnTrackTool.h
index 6399e59e514..c424cd21dcf 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingTRT_DriftCirclesOnTrackTool.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/CompetingTRT_DriftCirclesOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -114,7 +114,7 @@ public:
             be needed when the predicted TrackParameters have changed rapidly) */
     virtual void updateCompetingROT(
         //const InDet::CompetingTRT_DriftCirclesOnTrack&,
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -135,7 +135,7 @@ public:
                                      = Trk::TrackState::unidentified) const;
 
 //     virtual StatusCode updateCompetingROT(
-//         const Trk::CompetingRIOsOnTrack&,
+//         Trk::CompetingRIOsOnTrack&,
 //         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
 //     ) const;
 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingPixelClustersOnTrackCreator.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingPixelClustersOnTrackCreator.h
index 24145905571..05a801af2c0 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingPixelClustersOnTrackCreator.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingPixelClustersOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -72,7 +72,7 @@ public:
         -  Trk::CompetingRIOsOnTrack is used because of interface reasons
         (common interface Trk::ICompetingRIOsOnTrackTool)*/
     virtual void updateCompetingROT(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -82,7 +82,7 @@ public:
     and effective measurements of a Trk::CompetingRIOsOnTrack using
     a given set of assignment probabilities */
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const = 0;
 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingSCT_ClustersOnTrackCreator.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingSCT_ClustersOnTrackCreator.h
index 69375710798..ebb258d7be3 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingSCT_ClustersOnTrackCreator.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingSCT_ClustersOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -73,7 +73,7 @@ public:
         (common interface Trk::ICompetingRIOsOnTrackTool)*/
     virtual void updateCompetingROT(
         //const InDet::CompetingSCT_ClustersOnTrack&,
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -83,7 +83,7 @@ public:
     and effective measurements of a Trk::CompetingRIOsOnTrack using
     a given set of assignment probabilities */
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const = 0;
 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingTRT_DriftCirclesOnTrackCreator.h b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingTRT_DriftCirclesOnTrackCreator.h
index 6e9fc65a9f5..2b05d7df72c 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingTRT_DriftCirclesOnTrackCreator.h
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/InDetCompetingRIOsOnTrackTool/ICompetingTRT_DriftCirclesOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -71,7 +71,7 @@ public:
         (common interface Trk::ICompetingRIOsOnTrackTool)*/
     virtual void updateCompetingROT(
         //const InDet::CompetingTRT_DriftCirclesOnTrack&,
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingPixelClustersOnTrackTool.cxx b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingPixelClustersOnTrackTool.cxx
index 18b6eef8191..8e8da7b4e95 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingPixelClustersOnTrackTool.cxx
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingPixelClustersOnTrackTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -271,7 +271,7 @@ const InDet::CompetingPixelClustersOnTrack* InDet::CompetingPixelClustersOnTrack
 ///////////////////////////////////////////////////////////////////
 void InDet::CompetingPixelClustersOnTrackTool::updateCompetingROT(
     //const InDet::CompetingPixelClustersOnTrack& compROT,
-    const Trk::CompetingRIOsOnTrack& baseCompROT,
+    Trk::CompetingRIOsOnTrack& baseCompROT,
     const Trk::TrackParameters& trkPar,
     const Trk::IWeightCalculator::AnnealingFactor beta
     //const bool recreateROTs=false
@@ -282,7 +282,7 @@ void InDet::CompetingPixelClustersOnTrackTool::updateCompetingROT(
     ATH_MSG_DEBUG("********* in updateCompetingROT() **********");
 
     // cast baseCompROT to CompPixelClusterOnTrack:
-    const InDet::CompetingPixelClustersOnTrack* compROT = dynamic_cast< const InDet::CompetingPixelClustersOnTrack* >(&baseCompROT);
+    InDet::CompetingPixelClustersOnTrack* compROT = dynamic_cast< InDet::CompetingPixelClustersOnTrack* >(&baseCompROT);
     if (!compROT) {
         ATH_MSG_ERROR("Given CompetingRIOsOnTrack is not a CompetingPixelClustersOnTrack!");
         ATH_MSG_ERROR("Update of assignment probabilities aborted!!!");
@@ -393,7 +393,7 @@ void InDet::CompetingPixelClustersOnTrackTool::updateCompetingROT(
     // delete global position (will be recreated by the competingROT itself)
     delete compROT->m_globalPosition;
     compROT->m_globalPosition = 0; // very important, otherwise segfault...
-    const_cast<InDet::CompetingPixelClustersOnTrack*>(compROT)->setLocalParametersAndErrorMatrix();
+    compROT->setLocalParametersAndErrorMatrix();
     if (msgLvl(MSG::DEBUG)) testCompetingROT(*compROT);
 }
 
@@ -508,10 +508,10 @@ void InDet::CompetingPixelClustersOnTrackTool::testCompetingROT(const InDet::Com
 }
 
 StatusCode InDet::CompetingPixelClustersOnTrackTool::updateCompetingROTprobs( 
-        const Trk::CompetingRIOsOnTrack& baseCompROT, 
+        Trk::CompetingRIOsOnTrack& baseCompROT, 
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >& assignmentProbs 
     ) const { 
-    const InDet::CompetingPixelClustersOnTrack* compROT = dynamic_cast< const InDet::CompetingPixelClustersOnTrack* >(&baseCompROT); 
+    InDet::CompetingPixelClustersOnTrack* compROT = dynamic_cast< InDet::CompetingPixelClustersOnTrack* >(&baseCompROT); 
     if (!compROT) { 
         ATH_MSG_ERROR("Given CompetingRIOsOnTrack is not a CompetingPixelClustersOnTrack!"); 
         ATH_MSG_ERROR("Update of assignment probabilities aborted!!!"); 
@@ -546,7 +546,7 @@ StatusCode InDet::CompetingPixelClustersOnTrackTool::updateCompetingROTprobs(
     delete compROT->m_globalPosition; 
     compROT->m_globalPosition = 0; // very important, otherwise segfault... 
     // recalc localParameters 
-    const_cast<InDet::CompetingPixelClustersOnTrack*>(compROT)->setLocalParametersAndErrorMatrix();
+    compROT->setLocalParametersAndErrorMatrix();
 
     if (msgLvl(MSG::DEBUG)) testCompetingROT(*compROT); 
     return StatusCode::SUCCESS; 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingSCT_ClustersOnTrackTool.cxx b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingSCT_ClustersOnTrackTool.cxx
index 82425800a90..4c03a8418bc 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingSCT_ClustersOnTrackTool.cxx
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingSCT_ClustersOnTrackTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -268,7 +268,7 @@ const InDet::CompetingSCT_ClustersOnTrack* InDet::CompetingSCT_ClustersOnTrackTo
 ///////////////////////////////////////////////////////////////////
 void InDet::CompetingSCT_ClustersOnTrackTool::updateCompetingROT(
     //const InDet::CompetingSCT_ClustersOnTrack& compROT,
-    const Trk::CompetingRIOsOnTrack& baseCompROT,
+    Trk::CompetingRIOsOnTrack& baseCompROT,
     const Trk::TrackParameters& trkPar,
     const Trk::IWeightCalculator::AnnealingFactor beta
     //const bool recreateROTs=false
@@ -279,7 +279,7 @@ void InDet::CompetingSCT_ClustersOnTrackTool::updateCompetingROT(
     ATH_MSG_DEBUG("********* in updateCompetingROT() **********");
 
     // cast baseCompROT to CompSCT_ClusterOnTrack:
-    const InDet::CompetingSCT_ClustersOnTrack* compROT = dynamic_cast< const InDet::CompetingSCT_ClustersOnTrack* >(&baseCompROT);
+    InDet::CompetingSCT_ClustersOnTrack* compROT = dynamic_cast< InDet::CompetingSCT_ClustersOnTrack* >(&baseCompROT);
     if (!compROT) {
         ATH_MSG_WARNING("Given CompetingRIOsOnTrack is not a CompetingSCT_ClustersOnTrack!");
         ATH_MSG_WARNING("Update of assignment probabilities aborted!!!");
@@ -389,7 +389,7 @@ void InDet::CompetingSCT_ClustersOnTrackTool::updateCompetingROT(
     delete compROT->m_globalPosition;
     compROT->m_globalPosition = 0; // very important, otherwise segfault...
     // delete localParameters
-    const_cast< InDet::CompetingSCT_ClustersOnTrack* >(compROT)->setLocalParametersAndErrorMatrix();
+    compROT->setLocalParametersAndErrorMatrix();
     if (msgLvl(MSG::VERBOSE)) testCompetingROT(*compROT);
 }
 
@@ -504,10 +504,10 @@ void InDet::CompetingSCT_ClustersOnTrackTool::testCompetingROT(const InDet::Comp
 }
 
 StatusCode InDet::CompetingSCT_ClustersOnTrackTool::updateCompetingROTprobs( 
-        const Trk::CompetingRIOsOnTrack& baseCompROT, 
+        Trk::CompetingRIOsOnTrack& baseCompROT, 
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >& assignmentProbs 
     ) const { 
-    const InDet::CompetingSCT_ClustersOnTrack* compROT = dynamic_cast< const InDet::CompetingSCT_ClustersOnTrack* >(&baseCompROT); 
+    InDet::CompetingSCT_ClustersOnTrack* compROT = dynamic_cast< InDet::CompetingSCT_ClustersOnTrack* >(&baseCompROT); 
     if (!compROT) { 
         ATH_MSG_ERROR("Given CompetingRIOsOnTrack is not a CompetingPixelClustersOnTrack!"); 
         ATH_MSG_ERROR("Update of assignment probabilities aborted!!!"); 
@@ -542,7 +542,7 @@ StatusCode InDet::CompetingSCT_ClustersOnTrackTool::updateCompetingROTprobs(
     delete compROT->m_globalPosition; 
     compROT->m_globalPosition = 0; // very important, otherwise segfault... 
     // recalc localParameters 
-    const_cast< InDet::CompetingSCT_ClustersOnTrack* >(compROT)->setLocalParametersAndErrorMatrix();
+    compROT->setLocalParametersAndErrorMatrix();
     if (msgLvl(MSG::DEBUG)) testCompetingROT(*compROT); 
     return StatusCode::SUCCESS; 
 } 
diff --git a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingTRT_DriftCirclesOnTrackTool.cxx b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingTRT_DriftCirclesOnTrackTool.cxx
index 4397e43baf4..98a6875369b 100755
--- a/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingTRT_DriftCirclesOnTrackTool.cxx
+++ b/InnerDetector/InDetRecTools/InDetCompetingRIOsOnTrackTool/src/CompetingTRT_DriftCirclesOnTrackTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -462,7 +462,7 @@ const InDet::CompetingTRT_DriftCirclesOnTrack* InDet::CompetingTRT_DriftCirclesO
 ///////////////////////////////////////////////////////////////////
 void InDet::CompetingTRT_DriftCirclesOnTrackTool::updateCompetingROT(
     //const InDet::CompetingTRT_DriftCirclesOnTrack& compROT,
-    const Trk::CompetingRIOsOnTrack& baseCompROT,
+    Trk::CompetingRIOsOnTrack& baseCompROT,
     const Trk::TrackParameters& trkPar,
     const Trk::IWeightCalculator::AnnealingFactor beta
     //const bool recreateROTs=false
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/MuonCompetingClustersOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/MuonCompetingClustersOnTrackCreator.h
index 863461ac176..7e1f06253f3 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/MuonCompetingClustersOnTrackCreator.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/MuonCompetingClustersOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -69,7 +69,7 @@ namespace Muon {
     /** method for the update of the assignment 
 	probabilities and effective measurements
         of an Muon::CompetingMuonClustersOnTrack using a new track prediction. Not implemented for now!! */
-    void updateCompetingROT( const Trk::CompetingRIOsOnTrack&,
+    void updateCompetingROT( Trk::CompetingRIOsOnTrack&,
 			     const Trk::TrackParameters&,
 			     const Trk::IWeightCalculator::AnnealingFactor ) const
     {
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/TriggerChamberClusterOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/TriggerChamberClusterOnTrackCreator.h
index aa291359831..7dc870ab277 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/TriggerChamberClusterOnTrackCreator.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MuonCompetingClustersOnTrackCreator/src/TriggerChamberClusterOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 /////////////////////////////////////////////////////////////////////
@@ -68,7 +68,7 @@ public:
     /** method for the update of the assignment 
 	probabilities and effective measurements
 	of an Muon::CompetingMuonClustersOnTrack using a new track prediction. Not implemented for now!! */
-    void updateCompetingROT( const Trk::CompetingRIOsOnTrack&,
+    void updateCompetingROT( Trk::CompetingRIOsOnTrack&,
 			     const Trk::TrackParameters&,
 			     const Trk::IWeightCalculator::AnnealingFactor ) const
 	{
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h
index c488463fe4f..fcc2b19a520 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUON_IMUONCOMPETINGCLUSTERSONTRACKCREATOR_H
diff --git a/Tracking/TrkFitter/TrkDeterministicAnnealingFilter/src/DeterministicAnnealingFilter.cxx b/Tracking/TrkFitter/TrkDeterministicAnnealingFilter/src/DeterministicAnnealingFilter.cxx
index e4d6ba23c0a..ce0a15b2aa5 100755
--- a/Tracking/TrkFitter/TrkDeterministicAnnealingFilter/src/DeterministicAnnealingFilter.cxx
+++ b/Tracking/TrkFitter/TrkDeterministicAnnealingFilter/src/DeterministicAnnealingFilter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 //////////////////////////////////////////////////////////////////
@@ -790,7 +790,10 @@ Trk::Track* Trk::DeterministicAnnealingFilter::doDAFfitWithKalman(
                             continue; // next ProtoTrackStateOnSurface
                         }
                         //if (m_debuglevel) ATH_MSG_VERBOSE( "current MeasurementBase is a CompetingRIOsOnTrack: set annealing factor" );
-                        m_compROTcreator->updateCompetingROT(*compROT, *smoothedTrkPar, m_option_annealingScheme[annealingIteration]);
+                        CompetingRIOsOnTrack* newCompROT = compROT->clone();
+                        m_compROTcreator->updateCompetingROT(*newCompROT, *smoothedTrkPar, m_option_annealingScheme[annealingIteration]);
+                        it->replaceMeasurement(newCompROT);
+                        compROT = newCompROT;
                     } else {
                         // set annealing factor in CompetingRIOsOnTrack which
                         // are marked as outliers (the Kalman forward Fitter marks
@@ -837,9 +840,12 @@ Trk::Track* Trk::DeterministicAnnealingFilter::doDAFfitWithKalman(
                             if (!extrapolatedTrkPar) {
                                 ATH_MSG_WARNING( "Extrapolation to outlier surface did not succeed: Assignment probabilities of outlier cannot be updated" );
                             } else {
-                                m_compROTcreator->updateCompetingROT(*compROT, *extrapolatedTrkPar, m_option_annealingScheme[annealingIteration]);
+                                CompetingRIOsOnTrack* newCompROT = compROT->clone();
+                                m_compROTcreator->updateCompetingROT(*newCompROT, *extrapolatedTrkPar, m_option_annealingScheme[annealingIteration]);
                                 delete extrapolatedTrkPar;
                                 extrapolatedTrkPar = 0;
+                                it->replaceMeasurement(newCompROT);
+                                compROT = newCompROT;
                             }
                         }
                     }// end if outlier
@@ -1146,7 +1152,7 @@ void Trk::DeterministicAnnealingFilter::addToTrajectory(const MeasurementBase* m
     if (compROT) {
         ATH_MSG_VERBOSE( "current MeasurementBase is a CompetingRIOsOnTrack: clone and set annealing factor" );
         // TODO: decide about setting of annealingFactor, if no track parameters are given: extraploate?
-        const CompetingRIOsOnTrack* newCompROT = compROT->clone();
+        CompetingRIOsOnTrack* newCompROT = compROT->clone();
         if (trkPar) {
             // set annealing factor in CompetingRIOsOnTrack
             m_compROTcreator->updateCompetingROT(*newCompROT, *trkPar, m_option_annealingScheme[0]);
diff --git a/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanPiecewiseAnnealingFilter.cxx b/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanPiecewiseAnnealingFilter.cxx
index 8870d353bec..36e30511327 100644
--- a/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanPiecewiseAnnealingFilter.cxx
+++ b/Tracking/TrkFitter/TrkKalmanFitter/src/KalmanPiecewiseAnnealingFilter.cxx
@@ -616,8 +616,11 @@ Trk::KalmanPiecewiseAnnealingFilter::filterTrajectoryPiece
       const Trk::CompetingRIOsOnTrack* compROT = 
 	dynamic_cast<const Trk::CompetingRIOsOnTrack*>(it->measurement());
       if (compROT && it->smoothedTrackParameters() && !it->isOutlier()) {
-	const Trk::TrackParameters* annealingPars = it->smoothedTrackParameters();
-	m_compRotTool->updateCompetingROT(*compROT, *annealingPars, beta);
+        const Trk::TrackParameters* annealingPars = it->smoothedTrackParameters();
+        Trk::CompetingRIOsOnTrack* newCompROT = compROT->clone();
+        m_compRotTool->updateCompetingROT(*newCompROT, *annealingPars, beta);
+        it->replaceMeasurement(newCompROT);
+        compROT = newCompROT;
       }
     }
 
diff --git a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/CompetingRIOsOnTrackTool.h b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/CompetingRIOsOnTrackTool.h
index d603ebe3c27..8e8595be2df 100755
--- a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/CompetingRIOsOnTrackTool.h
+++ b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/CompetingRIOsOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -76,7 +76,7 @@ public:
         - the new effective measurements are calculated afterwards (this cannot be done by the
             Trk::IWeightCalculator, because it has no detector specific knowledge)   */
     virtual void updateCompetingROT(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
         //                const bool recreateROTs=false
@@ -86,7 +86,7 @@ public:
     and effective measurements of a Trk::CompetingRIOsOnTrack using
     a given set of assignment probabilities */
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const;
     
diff --git a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/ICompetingRIOsOnTrackTool.h b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/ICompetingRIOsOnTrackTool.h
index 63274abed87..4f36f32f310 100755
--- a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/ICompetingRIOsOnTrackTool.h
+++ b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/TrkCompetingRIOsOnTrackTool/ICompetingRIOsOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 /* forward-declaration, remove ASAP */
diff --git a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/src/CompetingRIOsOnTrackTool.cxx b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/src/CompetingRIOsOnTrackTool.cxx
index 545f3572748..142b7f1f55a 100755
--- a/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/src/CompetingRIOsOnTrackTool.cxx
+++ b/Tracking/TrkTools/TrkCompetingRIOsOnTrackTool/src/CompetingRIOsOnTrackTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -163,7 +163,7 @@ const Trk::CompetingRIOsOnTrack* Trk::CompetingRIOsOnTrackTool::createCompetingR
 // Trk::CompetingRIOsOnTrack update
 ///////////////////////////////////////////////////////////////////
 void Trk::CompetingRIOsOnTrackTool::updateCompetingROT(
-    const Trk::CompetingRIOsOnTrack& compROT,
+    Trk::CompetingRIOsOnTrack& compROT,
     const Trk::TrackParameters& trkPar,
     const Trk::IWeightCalculator::AnnealingFactor beta
     //const bool recreateROTs=false
@@ -199,7 +199,7 @@ void Trk::CompetingRIOsOnTrackTool::updateCompetingROT(
 }
 
 StatusCode Trk::CompetingRIOsOnTrackTool::updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack& compROT,
+        Trk::CompetingRIOsOnTrack& compROT,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >& assignmentProbs
     ) const {
     // identify by first ROT of the competing ROTs
diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ICompetingRIOsOnTrackTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ICompetingRIOsOnTrackTool.h
index c799389f816..44697a8b71b 100755
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ICompetingRIOsOnTrackTool.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ICompetingRIOsOnTrackTool.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -66,7 +66,7 @@ public:
         and effective measurements of a Trk::CompetingRIOsOnTrack using a new track
         prediction. */
     virtual void updateCompetingROT(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const Trk::TrackParameters&,
         const Trk::IWeightCalculator::AnnealingFactor
     ) const = 0;
@@ -75,7 +75,7 @@ public:
         and effective measurements of a Trk::CompetingRIOsOnTrack using
         a given set of assignment probabilities */
     virtual StatusCode updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const;
 
@@ -98,7 +98,7 @@ public:
 } // end of namespace Trk
 
 inline StatusCode Trk::ICompetingRIOsOnTrackTool::updateCompetingROTprobs(
-        const Trk::CompetingRIOsOnTrack&,
+        Trk::CompetingRIOsOnTrack&,
         const std::vector< Trk::CompetingRIOsOnTrack::AssignmentProb >&
     ) const {
     std::cout << "CONFIGURATION WARNING: dummy version of CompetingRIOsOnTrack update called." << std::endl;
-- 
GitLab