diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonErrorOptimisationTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonErrorOptimisationTool.h
index 428c819440da0028e0ad9eac60637f03a24901da..e4780b929d0cc7afb63676242f5146322673d7a9 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonErrorOptimisationTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonErrorOptimisationTool.h
@@ -23,7 +23,7 @@ namespace Muon {
     static const InterfaceID& interfaceID();
 
     /** optimise errors on a track to maximize the momentum resolution  */
-    virtual Trk::Track* optimiseErrors( const Trk::Track& track ) const = 0;
+    virtual Trk::Track* optimiseErrors(Trk::Track& track ) const = 0;
 
   };
   
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonSegmentTrackBuilder.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonSegmentTrackBuilder.h
index 777bad7f6347acea9861e5433ad3dc1e2101f334..867787e4b7b59f4ce74c7ddf511f6e15230ce542 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonSegmentTrackBuilder.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces/MuonRecToolInterfaces/IMuonSegmentTrackBuilder.h
@@ -37,7 +37,7 @@ namespace Muon {
 	@param track the track
 	@return a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
     */
-    virtual Trk::Track* refit( const Trk::Track& track ) const = 0;
+    virtual Trk::Track* refit( Trk::Track& track ) const = 0;
 
     /** recalibrate hits on track, does not refit
 	@param track the track
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.cxx
index 348a843363feafbe70de8da2cc76cc4c4d0bdecb..76c9d27b78e3e961e12c25f45dfcb9d4ed732b8c 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.cxx
@@ -70,7 +70,7 @@ namespace Muon {
     return StatusCode::SUCCESS;
   }
 
-  Trk::Track* MuonErrorOptimisationTool::optimiseErrors( const Trk::Track& track ) const {
+  Trk::Track* MuonErrorOptimisationTool::optimiseErrors( Trk::Track& track ) const {
 
     if( m_refitTool.empty() ) return 0;
     const Trk::Perigee* pp = track.perigeeParameters();
@@ -154,8 +154,8 @@ namespace Muon {
         doSelection = false;
         // ugly bit of code to get the hit counts for the three tracks 
         int nhits0 = -1;
-        const Trk::TrackSummary* summary0 = track.trackSummary();
-        const Trk::MuonTrackSummary* muonSummary0 = 0;
+        Trk::TrackSummary* summary0 = track.trackSummary();
+        Trk::MuonTrackSummary* muonSummary0 = 0;
         if( summary0 ){
           if( summary0->muonTrackSummary() ) {
             muonSummary0 = summary0->muonTrackSummary();
@@ -173,12 +173,12 @@ namespace Muon {
         }
 
         int nhits1 = -1;
-        const Trk::TrackSummary* summary1 = track.trackSummary();
-        const Trk::MuonTrackSummary* muonSummary1 = 0;
+        Trk::TrackSummary* summary1 = track.trackSummary();
+        Trk::MuonTrackSummary* muonSummary1 = 0;
         if( summary1 ){
           if( summary1->muonTrackSummary() ) muonSummary1 = summary1->muonTrackSummary();
           else{
-            Trk::TrackSummary* tmpSum = const_cast<Trk::TrackSummary*>(summary1);
+            Trk::TrackSummary* tmpSum = summary1;
             if( tmpSum ) m_trackSummaryTool->addDetailedTrackSummary(track,*tmpSum);
             if( tmpSum->muonTrackSummary() ) muonSummary1 = tmpSum->muonTrackSummary();
           }
@@ -191,12 +191,12 @@ namespace Muon {
         }
 
         int nhits2 = -1;
-        const Trk::TrackSummary* summary2 = track.trackSummary();
-        const Trk::MuonTrackSummary* muonSummary2 = 0;
+        Trk::TrackSummary* summary2 = track.trackSummary();
+        Trk::MuonTrackSummary* muonSummary2 = 0;
         if( summary2 ){
           if( summary2->muonTrackSummary() ) muonSummary2 = summary2->muonTrackSummary();
           else{
-            Trk::TrackSummary* tmpSum = const_cast<Trk::TrackSummary*>(summary2);
+            Trk::TrackSummary* tmpSum = summary2;
             if( tmpSum ) m_trackSummaryTool->addDetailedTrackSummary(track,*tmpSum);
             if( tmpSum->muonTrackSummary() ) muonSummary2 = tmpSum->muonTrackSummary();
           }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.h b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.h
index e49f1dd5cdd19ff4d1394a7ad4dff62512fa5112..134a2aa1956ba8e4da298eb285bf56f00b01c145 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonErrorOptimisationTool.h
@@ -25,11 +25,11 @@ namespace Muon {
     /** Destructor: */
     virtual ~MuonErrorOptimisationTool() = default; 
 
-    virtual StatusCode  initialize();
-    virtual StatusCode  finalize();
+    virtual StatusCode  initialize() override;
+    virtual StatusCode  finalize() override;
 
     /** optimise the error strategy used for the track */
-    Trk::Track* optimiseErrors( const Trk::Track& track ) const;
+    virtual Trk::Track* optimiseErrors( Trk::Track& track ) const override;
 
   protected:
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx
index 5d885fecb63506fdf5f978eed9547c77af1d1c52..cf21aacec5ce9643cbb3ef1e910ab44e1857af61 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx
@@ -72,7 +72,7 @@ namespace Muon {
     return StatusCode::SUCCESS;
   }
 
-  Trk::Track* MooTrackBuilder::refit( const Trk::Track& track ) const {
+  Trk::Track* MooTrackBuilder::refit(Trk::Track& track ) const {
 
     // use slFitter for straight line fit, or toroid off, otherwise use normal Fitter
       
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.h b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.h
index fe5165bd708add71215d1a6528e02656ef22b69f..e8510f4add421b49ad24987d2d90f93750b7aa03 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.h
@@ -94,10 +94,10 @@ namespace Muon {
     ~MooTrackBuilder() = default;
 
     /** @brief initialize method, method taken from bass-class AlgTool */
-    StatusCode initialize();
+    virtual StatusCode initialize() override;
 
     /** @brief finialize method, method taken from bass-class AlgTool */
-    StatusCode finalize();
+    virtual StatusCode finalize() override;
 
     /** @brief access to tool interface */
     static const InterfaceID& interfaceID() { return IID_MooTrackBuilder; }
@@ -106,7 +106,7 @@ namespace Muon {
         @param track the track
         @return a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
     */
-    Trk::Track* refit( const Trk::Track& track ) const;
+    virtual Trk::Track* refit( Trk::Track& track ) const override;
 
     /** @brief combine two MCTBCandidateEntries
         @param firstEntry  the first entry
@@ -132,8 +132,8 @@ namespace Muon {
         @param externalPhiHits if provided, the external phi hits will be used instead of the phi hits on the segment
         @return a pointer to the combined segment, will return zero if combination failed. Ownership passed to user.
     */
-    MuonSegment* combineToSegment( const MuonSegment& seg1, const MuonSegment& seg2,
-                                   const PrepVec* patternPhiHits = 0 ) const;
+    virtual MuonSegment* combineToSegment( const MuonSegment& seg1, const MuonSegment& seg2,
+                                   const PrepVec* patternPhiHits = 0 ) const override;
 
     /** @brief combine two segments to a track
         @param seg1 the first segment
@@ -141,8 +141,8 @@ namespace Muon {
         @param externalPhiHits if provided, the external phi hits will be used instead of the phi hits on the segment
         @return a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
     */
-    Trk::Track* combine( const MuonSegment& seg1, const MuonSegment& seg2,
-                         const PrepVec* patternPhiHits = 0 ) const;
+    virtual Trk::Track* combine( const MuonSegment& seg1, const MuonSegment& seg2,
+                         const PrepVec* patternPhiHits = 0 ) const override;
 
     /** @brief combine a track with a segment
         @param track a track
@@ -150,8 +150,8 @@ namespace Muon {
         @param externalPhiHits if provided, the external phi hits will be used instead of the phi hits on the segment
         @return a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
     */
-    Trk::Track* combine( const Trk::Track& track, const MuonSegment& seg,
-                         const PrepVec* patternPhiHits = 0 ) const;
+    virtual Trk::Track* combine( const Trk::Track& track, const MuonSegment& seg,
+                         const PrepVec* patternPhiHits = 0 ) const override;
 
     /** @brief find tracks by redoing the segment finding in the chamber of the segment
         @param track a reference to a Track
@@ -180,7 +180,7 @@ namespace Muon {
     std::vector<Trk::Track*>* combineWithSegmentFinding( const MuPatTrack& candidate,
                                                          const Trk::TrackParameters& pars,
                                                          const std::set<Identifier>& chIds,
-                                                         const PrepVec* patternPhiHits = 0 ) const;
+                                                         const PrepVec* patternPhiHits = 0 ) const; 
 
     /** @brief find tracks by redoing the segment finding in the chamber of the segment
         @param track a reference to a Track
@@ -199,7 +199,7 @@ namespace Muon {
         @param pos a reference to a GlobalPosition
         @return a pointer to TrackParameters, the ownership of the parameters is passed to the client calling the tool.
      */
-    Trk::TrackParameters* findClosestParameters( const Trk::Track& track, const Amg::Vector3D& pos ) const;
+    virtual Trk::TrackParameters* findClosestParameters( const Trk::Track& track, const Amg::Vector3D& pos ) const override;
 
 
     /** @brief find closest TrackParameters to the surface. The distance is calculated along the track
@@ -207,7 +207,7 @@ namespace Muon {
         @param pos a reference to a Surface
         @return a pointer to TrackParameters, the ownership of the parameters is passed to the client calling the tool.
      */
-    Trk::TrackParameters* getClosestParameters( const Trk::Track& track, const Trk::Surface& surf ) const;
+    virtual Trk::TrackParameters* getClosestParameters( const Trk::Track& track, const Trk::Surface& surf ) const override;
 
     /** @brief find closest TrackParameters to the surface. The distance is calculated along the track
         @param track a reference to a MuPatCandidateBase
@@ -218,7 +218,7 @@ namespace Muon {
 
 
     /** recalibrate hits on track */
-    Trk::Track* recalibrateHitsOnTrack( const Trk::Track& track, bool doMdts, bool doCompetingClusters  ) const;
+    virtual Trk::Track* recalibrateHitsOnTrack( const Trk::Track& track, bool doMdts, bool doCompetingClusters  ) const override;
 
     /** split given track if it crosses the calorimeter volume, code assumes that the track was already extrapolated to the
         muon entry record using the MuonTrackExtrapolationTool. It uses the double perigee to spot the tracks to be split.
@@ -238,13 +238,13 @@ namespace Muon {
                 The ownership of the tracks is passed to the client calling the tool.
 
     */
-    std::vector<MuPatTrack*>* find( MuPatCandidateBase& candidate, const std::vector<MuPatSegment*>& segments ) const;
+    virtual std::vector<MuPatTrack*>* find( MuPatCandidateBase& candidate, const std::vector<MuPatSegment*>& segments ) const override;
 
     /** @brief interface for tools which refine the hit content of a given track
         @param track input track
         @return new refined track. Pointer could be zero, ownership passed to caller
     */
-    MuPatTrack* refine( MuPatTrack& track ) const;
+    virtual MuPatTrack* refine( MuPatTrack& track ) const override;
 
   private: