diff --git a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
index 4851b857cbd7148c5da215d56edc5c113aa37a1b..d56103c9a7b3e851cd6a33a0cf7c54e85239117d 100644
--- a/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
+++ b/InnerDetector/InDetRecAlgs/TRT_TrackSegmentsFinder/src/TRT_TrackSegmentsFinder.cxx
@@ -61,49 +61,33 @@ StatusCode InDet::TRT_TrackSegmentsFinder::initialize()
 StatusCode InDet::TRT_TrackSegmentsFinder::execute(const EventContext &ctx) const
 {
   std::unique_ptr<Trk::SegmentCollection> found_segments(std::make_unique<Trk::SegmentCollection>());
-
   std::unique_ptr<InDet::ITRT_TrackSegmentsMaker::IEventData> event_data_p;
   if(!m_useCaloSeeds) {
-
     event_data_p = m_segmentsMakerTool->newEvent(ctx);
     m_segmentsMakerTool->find    (ctx, *event_data_p);
-
     // Loop through all segments and reconsrtucted segments collection preparation
     //
     Trk::Segment* segment = nullptr;
     while((segment = m_segmentsMakerTool->next(*event_data_p))) {
       found_segments->push_back(segment);
     }
-  }
-  else   {
-
+  } else   {
     Amg::Vector3D PSV(0.,0.,0.); Trk::PerigeeSurface PS(PSV);
-
     std::vector<IdentifierHash>      vTR;
-
     SG::ReadHandle calo(m_caloKey,ctx);
     if(calo.isValid()) {
-       //      CaloClusterROI_Collection::const_iterator c = m_calo->begin(), ce = m_calo->end();
-       //      for(; c!=ce; ++c) {
-
       for (const Trk::CaloClusterROI *c: *calo) {
-        if ( c->energy()/cosh(c->globalPosition().eta()) < m_ClusterEt) {
+        if ( c->energy()/std::cosh(c->globalPosition().eta()) < m_ClusterEt) {
           continue;
         }
-
-	std::vector<const InDetDD::TRT_BaseElement*> DE;
-        {
         Amg::Vector3D global_pos(c->globalPosition());
         double x = global_pos.x();
         double y = global_pos.y();
         double z = global_pos.z();
-
         std::unique_ptr<Trk::TrackParameters> par = PS.createUniqueTrackParameters(
-          0., 0., atan2(y, x), atan2(1., z / sqrt(x * x + y * y)), 0., nullptr);
-
+          0., 0., std::atan2(y, x), std::atan2(1., z / std::sqrt(x * x + y * y)), 0., nullptr);
         // Get AtlasFieldCache
         MagField::AtlasFieldCache fieldCache;
-
         SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCondObjInputKey, ctx};
         const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
         if (fieldCondObj == nullptr) {
@@ -111,30 +95,24 @@ StatusCode InDet::TRT_TrackSegmentsFinder::execute(const EventContext &ctx) cons
             return StatusCode::FAILURE;
         }
         fieldCondObj->getInitializedCache (fieldCache);
-
-	// TRT detector elements road builder
-	//
-	m_roadtool->detElementsRoad(ctx, fieldCache, *par, Trk::alongMomentum, DE);
-        }
-	if(int(DE.size()) < m_minNumberDCs) continue;
-
-	vTR.clear();
+        // TRT detector elements road builder
+        //
+        const auto & DE = m_roadtool->detElementsRoad(ctx, fieldCache, *par, Trk::alongMomentum);
+	      if(int(DE.size()) < m_minNumberDCs) continue;
+	      vTR.clear();
         vTR.reserve(DE.size());
         for (const InDetDD::TRT_BaseElement*d: DE) {
            vTR.push_back(d->identifyHash());
         }
-
-	event_data_p = m_segmentsMakerTool->newRegion(ctx, vTR);
-	m_segmentsMakerTool->find(ctx, *event_data_p);
-
-	// Loop through all segments and reconsrtucted segments collection preparation
-	//
+        event_data_p = m_segmentsMakerTool->newRegion(ctx, vTR);
+	      m_segmentsMakerTool->find(ctx, *event_data_p);
+	      // Loop through all segments and reconsrtucted segments collection preparation
         Trk::Segment* segment = nullptr;
-	while((segment = m_segmentsMakerTool->next(*event_data_p))) {
-	  found_segments->push_back(segment);
-	}
-      }
-    }else{
+	      while((segment = m_segmentsMakerTool->next(*event_data_p))) {
+	        found_segments->push_back(segment);
+	      }
+      }//end of loopover *calo
+    } else {
         ATH_MSG_WARNING("Could not find calo cluster seeds in container " << m_caloKey.key());
         return StatusCode::SUCCESS; // @TODO correct ?
     }
diff --git a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ITRT_DetElementsRoadMaker.h b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ITRT_DetElementsRoadMaker.h
index df3c74e18ff8e564ed141565f9d52591176daa98..ea2cb1db6b9fccc62ac9912921c7b0acd9e6d9d4 100755
--- a/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ITRT_DetElementsRoadMaker.h
+++ b/InnerDetector/InDetRecTools/InDetRecToolInterfaces/InDetRecToolInterfaces/ITRT_DetElementsRoadMaker.h
@@ -58,17 +58,10 @@ namespace InDet {
       // Main methods for road builder
       ///////////////////////////////////////////////////////////////////
 
-      virtual void detElementsRoad
-	(const EventContext& ctx,
+      virtual std::vector<const InDetDD::TRT_BaseElement*> 
+      detElementsRoad(const EventContext& ctx,
          MagField::AtlasFieldCache& fieldCache,
-         const Trk::TrackParameters&,Trk::PropDirection,
-	 std::vector<const InDetDD::TRT_BaseElement*>&) const = 0;
-
-      virtual void detElementsRoad
-	(const EventContext& ctx,
-         MagField::AtlasFieldCache& fieldCache,
-         const Trk::TrackParameters&,Trk::PropDirection,
-	 std::vector<std::pair<const InDetDD::TRT_BaseElement*,const Trk::TrackParameters*> >&) const =0;
+         const Trk::TrackParameters&,Trk::PropDirection) const = 0;
 
       ///////////////////////////////////////////////////////////////////
       // Print internal tool parameters and status
diff --git a/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadMaker_xk.h b/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadMaker_xk.h
index 6febd736fd52a9c4392b17ff6ca81bca78cd35ba..b1e6044e1ea1ab71ff7f6953afaf799e324fbf71 100755
--- a/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadMaker_xk.h
+++ b/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadTool_xk/TRT_DetElementsRoadMaker_xk.h
@@ -87,17 +87,11 @@ namespace InDet {
       // Main methods for road builder
       ///////////////////////////////////////////////////////////////////
 
-      virtual void detElementsRoad
-	(const EventContext& ctx,
+       
+     virtual std::vector<const InDetDD::TRT_BaseElement*> 
+     detElementsRoad(const EventContext& ctx,
          MagField::AtlasFieldCache& fieldCache,
-         const Trk::TrackParameters&,Trk::PropDirection,
-	 std::vector<const InDetDD::TRT_BaseElement*>&) const;
-
-      virtual void detElementsRoad
-	(const EventContext& ctx,
-         MagField::AtlasFieldCache& fieldCache,
-         const Trk::TrackParameters&,Trk::PropDirection,
-	 std::vector<std::pair<const InDetDD::TRT_BaseElement*,const Trk::TrackParameters*> >&) const;
+         const Trk::TrackParameters&,Trk::PropDirection) const;
 
       ///////////////////////////////////////////////////////////////////
       // Print internal tool parameters and status
diff --git a/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/src/TRT_DetElementsRoadMaker_xk.cxx b/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/src/TRT_DetElementsRoadMaker_xk.cxx
index ca71f7adf9edd780b91eae4e5b267d2e3a3531ce..75384af860e0f57a99f802b2f43a0881d62f4ebd 100755
--- a/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/src/TRT_DetElementsRoadMaker_xk.cxx
+++ b/InnerDetector/InDetRecTools/TRT_DetElementsRoadTool_xk/src/TRT_DetElementsRoadMaker_xk.cxx
@@ -276,72 +276,33 @@ std::ostream& InDet::TRT_DetElementsRoadMaker_xk::dump( std::ostream& out ) cons
 // Main methods for road builder
 ///////////////////////////////////////////////////////////////////
 
-void InDet::TRT_DetElementsRoadMaker_xk::detElementsRoad
+std::vector<const InDetDD::TRT_BaseElement*>
+InDet::TRT_DetElementsRoadMaker_xk::detElementsRoad
 (const EventContext& ctx,
  MagField::AtlasFieldCache& fieldCache,
- const Trk::TrackParameters& Tp,Trk::PropDirection D,
- std::vector<const InDetDD::TRT_BaseElement*>& R) const
+ const Trk::TrackParameters& Tp,Trk::PropDirection D) const
 {
-
   double qp   = std::abs(500.*Tp.parameters()[4]) ; 
   if( qp < 1.e-10  ) qp = 1.e-10;
   double S    = m_step/qp                     ; 
   if( S  > 200.    ) S  = 200.  ; 
   if(D<0) S=-S;
-
   Trk::CylinderBounds CB = getBound(fieldCache, Tp);
-
   double rminTRT = getTRTMinR();
-
+  std::vector<const InDetDD::TRT_BaseElement*> result;
   if( CB.r() > rminTRT) {
     Trk::MagneticFieldMode fieldModeEnum(m_fieldModeEnum);
     if(!fieldCache.solenoidOn()) fieldModeEnum = Trk::NoField;
     Trk::MagneticFieldProperties fieldprop(fieldModeEnum);
-
     std::list<Amg::Vector3D> G;
     m_proptool->globalPositions(ctx, G,Tp,fieldprop,CB,S,Trk::pion);
-
     if(G.size() > 1 ) {
-      detElementsRoadATL(G,R);
+      detElementsRoadATL(G,result);
     }
   }
-
-  if (msgLvl(MSG::VERBOSE)) {
-    dumpEvent(msg(MSG::VERBOSE),R.size());
-    dumpConditions(msg(MSG::VERBOSE));
-    msg(MSG::VERBOSE) << endmsg;
-  }
+  return result;
 }
 
-///////////////////////////////////////////////////////////////////
-// Main methods for road builder
-///////////////////////////////////////////////////////////////////
-
-void 
-InDet::TRT_DetElementsRoadMaker_xk::detElementsRoad
-(const EventContext& ctx,
- MagField::AtlasFieldCache& fieldCache,
- const Trk::TrackParameters& trackParams,
- Trk::PropDirection direction, std::vector<std::pair<const InDetDD::TRT_BaseElement*,const Trk::TrackParameters*> > & result) const
-{
- std::vector<const InDetDD::TRT_BaseElement*> baseElementPointers;
- detElementsRoad(ctx, fieldCache, trackParams,direction,baseElementPointers);
- if (baseElementPointers.empty()) return;
- //
- Trk::MagneticFieldMode fieldModeEnum(m_fieldModeEnum);
- if(!fieldCache.solenoidOn()) fieldModeEnum = Trk::NoField;
- Trk::MagneticFieldProperties fieldprop(fieldModeEnum);
- //
- const Trk::TrackParameters* tp0 = &trackParams;
- for(const auto pThisElement : baseElementPointers) {
-   const auto & thisSurface = pThisElement->surface();
-   auto tp = m_proptool->propagate(ctx, (*tp0),thisSurface,direction,false,fieldprop,Trk::pion);
-   if(!tp) return;
-   tp0=tp.get();
-   //ownership of tp given to the vector
-   result.emplace_back(pThisElement, tp.release());
- }
-}
 
 ///////////////////////////////////////////////////////////////////
 // Main methods for road builder using input list global positions
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_DAF/src/TRT_TrackExtensionTool_DAF.cxx b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_DAF/src/TRT_TrackExtensionTool_DAF.cxx
index 3b14950f1248cb615f5c355f5895ff869f4f8929..e33b0482070daed2cf2dc51f8bffe898af4cfc3d 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_DAF/src/TRT_TrackExtensionTool_DAF.cxx
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_DAF/src/TRT_TrackExtensionTool_DAF.cxx
@@ -225,8 +225,7 @@ InDet::TRT_TrackExtensionTool_DAF::extendTrack(const EventContext& ctx,
     fieldCondObj->getInitializedCache (fieldCache);
     // ----------------------------------
     // start the TRT detector elements road maker to get a list of possibly interesting detector elements
-    std::vector<const InDetDD::TRT_BaseElement*> detElements;
-    m_roadtool->detElementsRoad(ctx, fieldCache, *event_data.m_siliconTrkParams, Trk::alongMomentum, detElements);
+    const std::vector<const InDetDD::TRT_BaseElement*> detElements = m_roadtool->detElementsRoad(ctx, fieldCache, *event_data.m_siliconTrkParams, Trk::alongMomentum);
     ATH_MSG_DEBUG("TRT detector elements road maker found "<< detElements.size()<< " detElements" );
     if(detElements.empty()) {
         ATH_MSG_DEBUG("TRT_DetElementsRoadMaker found no road, stop!");
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_TrajectoryElement_xk.h b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_TrajectoryElement_xk.h
index 277f9e6be1d547d81410719df74b7d59bff9e0fb..13149cf4d1837ca8c1df20296ddf3320709743b4 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_TrajectoryElement_xk.h
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_TrajectoryElement_xk.h
@@ -72,12 +72,12 @@ namespace InDet{
       void set
       (const Trk::MagneticFieldProperties&, const AtlasFieldCacheCondObj* );
 
-      bool initiateForPrecisionSeed     (bool,const InDetDD::TRT_BaseElement*&,
+      bool initiateForPrecisionSeed     (bool,const InDetDD::TRT_BaseElement*,
 					 InDet::TRT_DriftCircleCollection::const_iterator&,
 					 InDet::TRT_DriftCircleCollection::const_iterator&,
 					 std::pair<Amg::Vector3D,double>&, const double*,double);
 
-      bool initiateForTRTSeed           (bool,const InDetDD::TRT_BaseElement*&,
+      bool initiateForTRTSeed           (bool,const InDetDD::TRT_BaseElement*,
 					 InDet::TRT_DriftCircleCollection::const_iterator&,
 					 InDet::TRT_DriftCircleCollection::const_iterator&,
 					 std::pair<Amg::Vector3D,double>&, const double*,double);
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_Trajectory_xk.h b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_Trajectory_xk.h
index de198d294df5c2642112f1f6884b3b2d18edc2b9..92928bf80c1c7d89feb9b543146c8e57cbc40d96 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_Trajectory_xk.h
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/TRT_TrackExtensionTool_xk/TRT_Trajectory_xk.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
 */
 
 /////////////////////////////////////////////////////////////////////////////////
@@ -77,13 +77,13 @@ namespace InDet{
 
       void initiateForPrecisionSeed
 	(std::list< std::pair<Amg::Vector3D,double> >&,
-	 std::vector<const InDetDD::TRT_BaseElement*>&,
+	 const std::vector<const InDetDD::TRT_BaseElement*>&,
 	 const TRT_DriftCircleContainer*&,
 	 const Trk::PatternTrackParameters&);
 
       void initiateForTRTSeed
 	(std::list< std::pair<Amg::Vector3D,double> >&,
-	 std::vector<const InDetDD::TRT_BaseElement*>&,
+	 const std::vector<const InDetDD::TRT_BaseElement*>&,
 	 const TRT_DriftCircleContainer*&,
 	 const Trk::PatternTrackParameters&);
 
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrackExtensionTool_xk.cxx b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrackExtensionTool_xk.cxx
index 67f5de99ba8f0820b574c57c8ee0efb88d31dd52..f226806fd18b16afd2a42319751d331397feb879 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrackExtensionTool_xk.cxx
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrackExtensionTool_xk.cxx
@@ -28,7 +28,7 @@ namespace{
   constexpr size_t MAX_ROAD_SIZE(399);
 
   std::list<const Trk::Surface*> 
-  listOfSurfacesFromVectorOfElements(std::vector<const InDetDD::TRT_BaseElement*> & v){
+  listOfSurfacesFromVectorOfElements(const std::vector<const InDetDD::TRT_BaseElement*> & v){
     size_t roadsize{0};
     std::list<const Trk::Surface*> surfaces;
     for(const auto &pThisElement: v) {
@@ -385,8 +385,7 @@ InDet::TRT_TrackExtensionTool_xk::findSegment(const EventContext& ctx,
 
   // TRT detector elements road builder
   //
-  std::vector<const InDetDD::TRT_BaseElement*> detectorElements;
-  m_roadtool->detElementsRoad(ctx, fieldCache, *par, Trk::alongMomentum,detectorElements);
+  const std::vector<const InDetDD::TRT_BaseElement*> & detectorElements = m_roadtool->detElementsRoad(ctx, fieldCache, *par, Trk::alongMomentum);
 
   if(int(detectorElements.size())< nCut) return nullptr;
 
@@ -475,8 +474,7 @@ InDet::TRT_TrackExtensionTool_xk::isGoodExtension(const EventContext& ctx,
   fieldCondObj->getInitializedCache (fieldCache);
   // TRT detector elements road builder
   //
-  std::vector<const InDetDD::TRT_BaseElement*> detectorElements;
-  m_roadtool->detElementsRoad(ctx, fieldCache, *par,Trk::alongMomentum,detectorElements);
+  const std::vector<const InDetDD::TRT_BaseElement*> & detectorElements = m_roadtool->detElementsRoad(ctx, fieldCache, *par,Trk::alongMomentum);
   if(int(detectorElements.size()) < m_minNumberDCs) return false;
   // Array pointers to surface preparation
   //
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrajectoryElement_xk.cxx b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrajectoryElement_xk.cxx
index 67815fcfc2b2a085d7c2ebe1711a25ed44a4bc14..dac5a1cb34b31a71968779db187d181cff91bc7b 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrajectoryElement_xk.cxx
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_TrajectoryElement_xk.cxx
@@ -39,7 +39,7 @@ void InDet::TRT_TrajectoryElement_xk::set
 ///////////////////////////////////////////////////////////////////
 
 bool InDet::TRT_TrajectoryElement_xk::initiateForPrecisionSeed
-(bool st,const InDetDD::TRT_BaseElement*&          de,
+(bool st,const InDetDD::TRT_BaseElement*           de,
  InDet::TRT_DriftCircleCollection::const_iterator& sb,
  InDet::TRT_DriftCircleCollection::const_iterator& se,
  std::pair<Amg::Vector3D,double>&                  gp,
@@ -63,7 +63,7 @@ bool InDet::TRT_TrajectoryElement_xk::initiateForPrecisionSeed
 ///////////////////////////////////////////////////////////////////
 
 bool InDet::TRT_TrajectoryElement_xk::initiateForTRTSeed
-(bool st,const InDetDD::TRT_BaseElement*&          de,
+(bool st,const InDetDD::TRT_BaseElement*          de,
  InDet::TRT_DriftCircleCollection::const_iterator& sb,
  InDet::TRT_DriftCircleCollection::const_iterator& se,
  std::pair<Amg::Vector3D,double>&            gp,
diff --git a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_Trajectory_xk.cxx b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_Trajectory_xk.cxx
index a389a327ded1076cbcd9fb0ad8afc2866ba292f1..cea07716723ebdbea1fc7502a040d571d97bd45a 100755
--- a/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_Trajectory_xk.cxx
+++ b/InnerDetector/InDetRecTools/TRT_TrackExtensionTool_xk/src/TRT_Trajectory_xk.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <iostream>
@@ -30,9 +30,9 @@ void  InDet::TRT_Trajectory_xk::set
   m_proptool     = pr                 ;
   m_updatortool  = up                 ;
   m_roadwidth2   = roadwidth*roadwidth;
-  m_zVertexWidth = fabs(zvertexwidth) ;
-  m_impact       = fabs(impact      ) ;
-  m_scale_error  = fabs(scale       ) ;
+  m_zVertexWidth = std::abs(zvertexwidth) ;
+  m_impact       = std::abs(impact      ) ;
+  m_scale_error  = std::abs(scale       ) ;
   for(int i=0; i!=400; ++i) m_elements[i].set(m,pr,up,riod,rion,m_scale_error);
   m_minTRTSegmentpT = minTRTSegmentpT ;
 }
@@ -51,7 +51,7 @@ void  InDet::TRT_Trajectory_xk::set
 
 void InDet::TRT_Trajectory_xk::initiateForPrecisionSeed
 (std::list< std::pair<Amg::Vector3D,double> >      & Gp  ,
- std::vector<const InDetDD::TRT_BaseElement*>        & De  ,
+ const std::vector<const InDetDD::TRT_BaseElement*>        & De  ,
  const TRT_DriftCircleContainer*                   & TRTc,
  const Trk::PatternTrackParameters                 & Tp   )
 {
@@ -69,39 +69,35 @@ void InDet::TRT_Trajectory_xk::initiateForPrecisionSeed
 
   InDet::TRT_DriftCircleCollection::const_iterator ti,te;
 
-  std::vector<const InDetDD::TRT_BaseElement*>::iterator d=De.begin(),de=De.end();
+  std::vector<const InDetDD::TRT_BaseElement*>::const_iterator d=De.begin(),de=De.end();
 
   std::list< std::pair<Amg::Vector3D,double> >::iterator i=Gp.begin(),i0=Gp.begin(),ie=Gp.end();
   if(i0==ie) return;
 
   // Primary trajectory direction calculation
-  //
-  double A[4]; A[3]=Tp.parameters()[4];
-
+  // Tp.parameters()[4] is the (signed) q/p
+  double A[4]={0., 0., 0., Tp.parameters()[4]};
   for(++i; i!=ie; ++i) {
-    if( (*i).second-(*i0).second > 1.) {
-
+    if((*i).second-(*i0).second > 1.) {
       A[0] = (*i).first.x()-(*i0).first.x();
       A[1] = (*i).first.y()-(*i0).first.y();
       A[2] = (*i).first.z()-(*i0).first.z();
-      double As = 1./sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
-      A[0]*=As; A[1]*=As; A[2]*=As; i0=i; break;
+      double As = 1./std::sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
+      A[0]*=As; A[1]*=As; A[2]*=As; 
+      i0=i; 
+      break;
     }
   }
 
   for(i=Gp.begin(); i!=ie; ++i) {
-
-    IdentifierHash id = (*d)->identifyHash(); auto w=(*TRTc).indexFindPtr(id);
+    IdentifierHash id = (*d)->identifyHash(); 
+    auto w=(*TRTc).indexFindPtr(id);
     bool q;
     if(w!=nullptr && w->begin()!=w->end()) {
       ti = w->begin(); te = w->end  ();
-
       q = m_elements[m_nElements].initiateForPrecisionSeed(true,(*d),ti,te,(*i),A,m_roadwidth2);
       if(q && m_elements[m_nElements].isCluster()) ++m_naElements;
-
-    }
-    else                                               {
-
+    } else {
       q = m_elements[m_nElements].initiateForPrecisionSeed(false,(*d),ti,te,(*i),A,m_roadwidth2);
     }
     if(q && m_elements[m_nElements].nlinks()) ++m_nElements;
@@ -110,11 +106,10 @@ void InDet::TRT_Trajectory_xk::initiateForPrecisionSeed
     // New trajectory direction calculation
     //
     if( (*i).second-(*i0).second > 50.) {
-
       A[0] = (*i).first.x()-(*i0).first.x();
       A[1] = (*i).first.y()-(*i0).first.y();
       A[2] = (*i).first.z()-(*i0).first.z();
-      double As = 1./sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
+      double As = 1./std::sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
       A[0]*=As; A[1]*=As; A[2]*=As; i0=i;
     }
   }
@@ -130,7 +125,7 @@ void InDet::TRT_Trajectory_xk::initiateForPrecisionSeed
 
 void InDet::TRT_Trajectory_xk::initiateForTRTSeed
 (std::list< std::pair<Amg::Vector3D,double> >      & Gp  ,
- std::vector<const InDetDD::TRT_BaseElement*>        & De  ,
+ const std::vector<const InDetDD::TRT_BaseElement*>        & De  ,
  const TRT_DriftCircleContainer*                   & TRTc,
  const Trk::PatternTrackParameters                 & Tp   )
 {
@@ -151,22 +146,20 @@ void InDet::TRT_Trajectory_xk::initiateForTRTSeed
 
   InDet::TRT_DriftCircleCollection::const_iterator ti,te;
 
-  std::vector<const InDetDD::TRT_BaseElement*>::iterator d=De.begin(),de=De.end();
+  std::vector<const InDetDD::TRT_BaseElement*>::const_iterator d=De.begin(),de=De.end();
 
   std::list< std::pair<Amg::Vector3D,double> >::iterator i=Gp.begin(),i0=Gp.begin(),ie=Gp.end();
   if(i0==ie) return;
 
   // Primary trajectory direction calculation
   //
-  double A[4]; A[3]=Tp.parameters()[4];
-
+  double A[4]={0.,0.,0.,Tp.parameters()[4]}; 
   for(++i; i!=ie; ++i) {
     if( (*i).second-(*i0).second > 1.) {
-
       A[0] = (*i).first.x()-(*i0).first.x();
       A[1] = (*i).first.y()-(*i0).first.y();
       A[2] = (*i).first.z()-(*i0).first.z();
-      double As = 1./sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
+      double As = 1./std::sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
       A[0]*=As; A[1]*=As; A[2]*=As; i0=i; break;
     }
   }
@@ -203,7 +196,7 @@ void InDet::TRT_Trajectory_xk::initiateForTRTSeed
       A[0] = (*i).first.x()-(*i0).first.x();
       A[1] = (*i).first.y()-(*i0).first.y();
       A[2] = (*i).first.z()-(*i0).first.z();
-      double As = 1./sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
+      double As = 1./std::sqrt(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]);
       A[0]*=As; A[1]*=As; A[2]*=As; i0=i;
     }
   }
@@ -228,7 +221,7 @@ void InDet::TRT_Trajectory_xk::trackFindingWithDriftTime(double DA)
 
     double dmin = m_elements[i].dnegative()-.01;
     double dmax = m_elements[i].dpositive()+.01;
-    if(fabs(dmin) < rcut || fabs(dmax) < rcut) {dmin = -rcut; dmax = rcut;}
+    if(std::abs(dmin) < rcut || std::abs(dmax) < rcut) {dmin = -rcut; dmax = rcut;}
 
     for(int j=0; j!=nl; ++j) {
 
@@ -281,7 +274,7 @@ void InDet::TRT_Trajectory_xk::trackFindingWithoutDriftTime(double DA)
 
     double dmin = m_elements[i].dnegative()-.01;
     double dmax = m_elements[i].dpositive()+.01;
-    if(fabs(dmin) < rcut || fabs(dmax) < rcut) {dmin = -rcut; dmax = rcut;}
+    if(std::abs(dmin) < rcut || std::abs(dmax) < rcut) {dmin = -rcut; dmax = rcut;}
 
     for(int j=0; j!=nl; ++j) {
 
@@ -291,7 +284,7 @@ void InDet::TRT_Trajectory_xk::trackFindingWithoutDriftTime(double DA)
 
       double di= m_elements[i].link(j).distance(); if(di < dmin || di > dmax) continue;
 
-      double d = rs+fabs(m_elements[i].link(j).sdistance()*sr);
+      double d = rs+std::abs(m_elements[i].link(j).sdistance()*sr);
       double s = d *ui;
       double v = di*ui;
       m_U[n] = u; m_V[n++] = v-s; m_U[n] = u; m_V[n++] = v+s;
@@ -358,7 +351,7 @@ void InDet::TRT_Trajectory_xk::trackFindingWithoutDriftTimeBL(double DA)
     if( l<0 || !m_elements[i].link(l).cluster()) continue;
 
     double u = m_elements[i].link(l).way(); if(u==0.) continue; double ui = 1./u;
-    double d = rs+fabs(m_elements[i].link(l).sdistance()*sr);
+    double d = rs+std::abs(m_elements[i].link(l).sdistance()*sr);
     double s = d*ui;
     double v = m_elements[i].link(l).distance()*ui;
     m_U[n] = u; m_V[n++] = v-s; m_U[n] = u; m_V[n++] = v+s;
@@ -382,7 +375,7 @@ bool InDet::TRT_Trajectory_xk::searchStartStop()
     double D = m_elements[e].findCloseLink(m_A,m_B);
     int    b = m_elements[e].bestlink();
     w[e]     = 0;
-    if( D < rs+fabs(m_elements[e].link(b).sdistance()*sr)) {
+    if( D < rs+std::abs(m_elements[e].link(b).sdistance()*sr)) {
 
       if     (m_elements[e].link(b).cluster())  w[e] = 1;
       else if(       D      <      rse       )  w[e] =-1;
@@ -484,7 +477,7 @@ void  InDet::TRT_Trajectory_xk::radiusCorrection()
   double z0 = m_elements[e ].z        ();
   double r1 = m_elements[el].radiusMax();
   double z1 = m_elements[el].z        ();
-  double dz = z1-z0;  if(fabs(dz) < 1.) return;
+  double dz = z1-z0;  if(std::abs(dz) < 1.) return;
   double rz = (r1-r0)/dz;
   double zv = z0 - r0/rz;
 
@@ -520,7 +513,7 @@ Trk::TrackSegment* InDet::TRT_Trajectory_xk::convert()
 {
 
   // Test quality of propagation to perigee
-  if(fabs(m_parameters.pT()) < m_minTRTSegmentpT) return 0;
+  if(std::abs(m_parameters.pT()) < m_minTRTSegmentpT) return 0;
 
   const Trk::Surface* sur = &m_parameters.associatedSurface();
 
@@ -540,7 +533,7 @@ Trk::TrackSegment* InDet::TRT_Trajectory_xk::convert()
 
     const Trk::MeasurementBase* r = m_elements[e].rioOnTrack();
     if(r) {
-      if (fabs(r->associatedSurface().transform()(2,2)) <.5) nendcap++;
+      if (std::abs(r->associatedSurface().transform()(2,2)) <.5) nendcap++;
       else {
         nbarrel++;
         //lastbarrelsurf=&r->associatedSurface();
@@ -556,7 +549,7 @@ Trk::TrackSegment* InDet::TRT_Trajectory_xk::convert()
   pms=pseudoMeasurements(&(**rio->begin()).associatedSurface(),&(**rio->rbegin()).associatedSurface(),bec);
   if(pms.first) rio->insert(rio->begin(),pms.first);
   if(pms.second) {
-    if (fabs((**rio->rbegin()).associatedSurface().center().z())<2650.) rio->push_back(pms.second);
+    if (std::abs((**rio->rbegin()).associatedSurface().center().z())<2650.) rio->push_back(pms.second);
     else rio->insert(rio->begin()+1,pms.second);
   }
   // Track segment production
@@ -608,7 +601,7 @@ InDet::TRT_Trajectory_xk::pseudoMeasurements(const Trk::Surface *firstsurf, cons
     pseudopoint = Amg::Vector3D(lastsurf->center().x(),lastsurf->center().y(),tempz);
     pseudorot   = lastsurf->transform().rotation();
   }
-  else if (fabs(lastsurf->center().z())<2650.) {
+  else if (std::abs(lastsurf->center().z())<2650.) {
     //std::cout << "sur center: " << sur->center() << " halfz: " << halfz << " firstsur center: " << firstsur->center() << " halfzfirst: " << halfzfirst << std::endl;
     tempr= lastsurf->center().perp()+halfz;
     tempz=lastsurf->center().z();
@@ -623,7 +616,7 @@ InDet::TRT_Trajectory_xk::pseudoMeasurements(const Trk::Surface *firstsurf, cons
     pseudorot = firstsurf->transform().rotation();
 
   }
-  pseudotheta=atan2(tempr,fabs(tempz));
+  pseudotheta=atan2(tempr,std::abs(tempz));
   //std::cout << "bec: " << bec << " pseudotheta: " << pseudotheta << std::endl;
   if (lastsurf->center().z()<0) pseudotheta=M_PI-pseudotheta;
 
@@ -773,7 +766,7 @@ bool InDet::TRT_Trajectory_xk::fitter()
 void InDet::TRT_Trajectory_xk::stabline(int Np,double DA) {
 
   m_A=m_B=0; if(Np<2) return;
-  double Amax =fabs(DA);
+  double Amax =std::abs(DA);
 
   int    i=0;
 
@@ -802,26 +795,26 @@ void InDet::TRT_Trajectory_xk::stabline(int Np,double DA) {
     double U1=-1000., d=0.; int m=0;
     while(i<Np-1) {
       if (m_U[i]==U1) {
-	if(fabs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
-        if(fabs(m_SS[m].m_F=(m_V[i+1]-v0)*d)<Amax) m_SS[m++].m_NA=i+1;
+	if(std::abs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
+        if(std::abs(m_SS[m].m_F=(m_V[i+1]-v0)*d)<Amax) m_SS[m++].m_NA=i+1;
       }
       else          {
 	d=1./((U1=m_U[i])-u0);
-	if(fabs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
-        if(fabs(m_SS[m].m_F=(m_V[i+1]-v0)*d)<Amax) m_SS[m++].m_NA=i+1;
+	if(std::abs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
+        if(std::abs(m_SS[m].m_F=(m_V[i+1]-v0)*d)<Amax) m_SS[m++].m_NA=i+1;
       }
       i+=2;
     }
     (i=l);  while(--i>0)  {if(m_U[i]!=u0) {break;}} U1=-1000.;
     while(i>0) {
       if (m_U[i]==U1) {
-	if(fabs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
-        if(fabs(m_SS[m].m_F=(m_V[i-1]-v0)*d)<Amax) m_SS[m++].m_NA=i-1;
+	if(std::abs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
+        if(std::abs(m_SS[m].m_F=(m_V[i-1]-v0)*d)<Amax) m_SS[m++].m_NA=i-1;
       }
       else          {
 	d=1./((U1=m_U[i])-u0);
-	if(fabs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
-        if(fabs(m_SS[m].m_F=(m_V[i-1]-v0)*d)<Amax) m_SS[m++].m_NA=i-1;
+	if(std::abs(m_SS[m].m_F=(m_V[i  ]-v0)*d)<Amax) m_SS[m++].m_NA=i;
+        if(std::abs(m_SS[m].m_F=(m_V[i-1]-v0)*d)<Amax) m_SS[m++].m_NA=i-1;
       }
       i-=2;
     }