From 5b9899da492a6c0dcd5309b32bca4c99be4f8b33 Mon Sep 17 00:00:00 2001
From: christos <christos@cern.ch>
Date: Tue, 16 Feb 2021 14:15:12 +0100
Subject: [PATCH] Migrate clients to IUpdator, returning unique_ptr

---
 .../TRT_CalibAlgs/src/TRT_StrawStatus.cxx     | 162 +++---
 .../TRT_CalibTools/src/FillAlignTRTHits.cxx   |   2 +-
 .../src/InDetGlobalTrackMonTool.cxx           | 324 ++++++------
 .../src/TRT_SeededTrackFinder_ATL.cxx         |  26 +-
 .../src/AlignResidualCalculator.cxx           |  94 ++--
 .../KalmanUpdator_xk.h                        | 120 ++---
 .../src/KalmanUpdator_xk.cxx                  | 494 +++++++++---------
 7 files changed, 613 insertions(+), 609 deletions(-)

diff --git a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/src/TRT_StrawStatus.cxx b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/src/TRT_StrawStatus.cxx
index cf21c217211f..e517001ec5b8 100644
--- a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/src/TRT_StrawStatus.cxx
+++ b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/src/TRT_StrawStatus.cxx
@@ -50,16 +50,16 @@ m_accumulateHits(0),
 m_TRTHelper(0),
 m_mapSvc("TRT_HWMappingSvc",name),
 m_DCSSvc("TRT_DCS_ConditionsSvc",name),
-m_TRTStrawNeighbourSvc("TRT_StrawNeighbourSvc", name), // use this service to retrieve barrel and end-cap straw number later on, as well as DTMROC,.. 
+m_TRTStrawNeighbourSvc("TRT_StrawNeighbourSvc", name), // use this service to retrieve barrel and end-cap straw number later on, as well as DTMROC,..
 m_TRTStrawStatusSummaryTool("TRT_StrawStatusSummaryTool", this),
 m_trt_hole_finder("TRTTrackHoleSearchTool"),
 m_locR_cut(1.4),
 m_fileName("TRT_StrawStatusOutput"),
 m_skipBusyEvents(0), // for cosmics - reject events that are either showers or noise bursts
-m_printDetailedInformation(0) // print the information on mapping as well as which straws are declared dead etc. 
+m_printDetailedInformation(0) // print the information on mapping as well as which straws are declared dead etc.
 {
     declareProperty("outputFileName", m_fileName);
-    declareProperty("skipBusyEvents", m_skipBusyEvents);        
+    declareProperty("skipBusyEvents", m_skipBusyEvents);
     declareProperty("trt_hole_finder",          m_trt_hole_finder);
     declareProperty("HWMapSvc", m_mapSvc);
     declareProperty("InDetTRT_DCS_ConditionsSvc",m_DCSSvc);
@@ -82,7 +82,7 @@ StatusCode InDet::TRT_StrawStatus::initialize()
   m_accumulateHits = new ACCHITS_t;
   assert( (*m_accumulateHits)[0][0].size() == nAllStraws );
   clear();
-  
+
   // Code entered here will be executed once at program start.
   // Initialize ReadHandleKey
   ATH_CHECK(m_eventInfoKey.initialize());
@@ -112,21 +112,21 @@ StatusCode InDet::TRT_StrawStatus::finalize(){
 //================ Execution ====================================================
 
 StatusCode InDet::TRT_StrawStatus::execute(){
-  
+
     SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey);
     StatusCode sc = StatusCode::SUCCESS;
     if (not eventInfo.isValid()) {
       ATH_MSG_ERROR( "Unable to retrieve Event Info " );
       return StatusCode::FAILURE;
-    } 
-    int runNumber = (int) eventInfo->runNumber();  
+    }
+    int runNumber = (int) eventInfo->runNumber();
     if (runNumber != m_runNumber) {
       if (m_nEvents) { reportResults(); clear(); }
       m_runNumber = runNumber;
-    } 
+    }
     int lumiBlock0 =eventInfo->lumiBlock();
     SG::ReadHandle<TRT_RDO_Container> rdoContainer(m_rdoContainerKey);
-  
+
     if (not rdoContainer.isValid()) {
       ATH_MSG_ERROR( "no TRT_RDO container available " );
       return StatusCode::FAILURE;
@@ -135,12 +135,12 @@ StatusCode InDet::TRT_StrawStatus::execute(){
     if (not trkCollection.isValid()) {
       ATH_MSG_ERROR( "Could not find Tracks Collection: " << m_tracksName );
       return StatusCode::FAILURE;
-    }   
-    
-    //================ Event selection  
-    
+    }
+
+    //================ Event selection
+
     SG::ReadHandle<VxContainer> vxContainer(m_vxContainerKey);
-    if (not vxContainer.isValid()) { 
+    if (not vxContainer.isValid()) {
       ATH_MSG_ERROR( "vertex container missing!" );
       sc = StatusCode::FAILURE;
     } else {
@@ -148,9 +148,9 @@ StatusCode InDet::TRT_StrawStatus::execute(){
         for (VxContainer::const_iterator it = vxContainer->begin() ; it != vxContainer->end() ; ++it ) {
             if ( (*it)->vxTrackAtVertex()->size() >= 3 ) countVertices++;
         }
-        if (countVertices < 1)  return StatusCode::FAILURE; 
+        if (countVertices < 1)  return StatusCode::FAILURE;
     }
-    
+
     if (m_skipBusyEvents) { // cosmic running
         int countRDOhitsInEvent(0);
         for (TRT_RDO_Container::const_iterator rdoIt = rdoContainer->begin(); rdoIt != rdoContainer->end(); ++rdoIt) {
@@ -164,17 +164,17 @@ StatusCode InDet::TRT_StrawStatus::execute(){
             ATH_MSG_INFO( "N RDO hits in event greater than 100000: " << countRDOhitsInEvent << ", exiting" );
             return sc;
         }
-        
+
         if (trkCollection->size() > 10) {
             ATH_MSG_INFO( "N tracks greater than 10: " << trkCollection->size() << ", exiting" );
             return sc;
         }
     }
-    
-    //================ End event selection         
-    
+
+    //================ End event selection
+
     //================ Loop over all tracks, accumulate hits on track, also find holes on track
-    
+
     std::vector<Identifier> holeIdentifiers;
     std::vector<Identifier> holeIdentifiersWithHits; // holes on straws that have hits, it is just that the hit was not associalted to a track
     for ( DataVector<Trk::Track>::const_iterator trackIt = trkCollection->begin(); trackIt != trkCollection->end(); trackIt++ ) {
@@ -183,120 +183,122 @@ StatusCode InDet::TRT_StrawStatus::execute(){
         const Trk::Perigee* perigee = (*trackIt)->perigeeParameters();
         if ( not perigee  ) { ATH_MSG_ERROR( "Trk::Perigee missing" ); continue; }
         if ( std::fabs(perigee->pT())/CLHEP::GeV < 1. ) continue; // 1 GeV pT cut
-        
+
         const DataVector<const Trk::TrackStateOnSurface>* trackStates = (**trackIt).trackStateOnSurfaces();
         if ( not trackStates  ) { ATH_MSG_ERROR( "Trk::TrackStateOnSurface empty" ); continue; }
-        
-        int n_pixel_hits(0), n_sct_hits(0), n_trt_hits(0);  // count hits, require minimal number of all hits 
+
+        int n_pixel_hits(0), n_sct_hits(0), n_trt_hits(0);  // count hits, require minimal number of all hits
         for ( DataVector<const Trk::TrackStateOnSurface>::const_iterator trackStatesIt = trackStates->begin(); trackStatesIt != trackStates->end(); trackStatesIt++ ) {
             if ( *trackStatesIt == 0 ) { ATH_MSG_ERROR( "*trackStatesIt == 0" ); continue; }
 
             if ( !((*trackStatesIt)->type(Trk::TrackStateOnSurface::Measurement)) ) continue; // this skips outliers
-            
+
             if ( dynamic_cast<const InDet::TRT_DriftCircleOnTrack*> ( (*trackStatesIt)->measurementOnTrack() )  ) n_trt_hits++;
             else if ( dynamic_cast<const InDet::SCT_ClusterOnTrack*>     ( (*trackStatesIt)->measurementOnTrack() )  ) n_sct_hits++;
             else if( dynamic_cast<const InDet::PixelClusterOnTrack*>    ( (*trackStatesIt)->measurementOnTrack() )  ) n_pixel_hits++;
-        }           
-        if (n_pixel_hits<2 || n_sct_hits < 6 || n_trt_hits<15) continue; // end count hits      
-        
+        }
+        if (n_pixel_hits<2 || n_sct_hits < 6 || n_trt_hits<15) continue; // end count hits
+
         //=== end select track
-        
+
         //=== loop over all hits on track, accumulate them
-        
+
         for ( DataVector<const Trk::TrackStateOnSurface>::const_iterator trackStatesIt = trackStates->begin(); trackStatesIt != trackStates->end(); trackStatesIt++ ) {
-            
+
             if ( *trackStatesIt == 0 ) { ATH_MSG_ERROR( "*trackStatesIt == 0" ); continue; }
 
             if ( !((*trackStatesIt)->type(Trk::TrackStateOnSurface::Measurement)) ) continue; // this skips outliers
 
             const InDet::TRT_DriftCircleOnTrack *driftCircleOnTrack = dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>( (*trackStatesIt)->measurementOnTrack() );
             if ( not driftCircleOnTrack ) continue; // not TRT measurement - this way, keep both hits and outliers
-            
+
 			const Trk::TrackStateOnSurface& hit = **trackStatesIt;
-			
-			const Trk::TrackParameters* unbiased_track_parameters = m_updator->removeFromState( *(hit.trackParameters()), hit.measurementOnTrack()->localParameters(), hit.measurementOnTrack()->localCovariance());
-			
+
+			const Trk::TrackParameters* unbiased_track_parameters = m_updator->removeFromState( *(hit.trackParameters()),
+                                                                                          hit.measurementOnTrack()->localParameters(),
+                                                                                          hit.measurementOnTrack()->localCovariance()).release();
+
 			double unbiased_locR = unbiased_track_parameters->parameters()[Trk::locR];
 			if ( fabs(unbiased_locR) > m_locR_cut ) continue; // same cut as the default hole search cut
-    
+
             const InDet::TRT_DriftCircle *driftCircle = driftCircleOnTrack->prepRawData();
             if ( driftCircle == 0 ) { ATH_MSG_ERROR( "driftCircle == 0" ); continue; }
-            
+
             Identifier id = driftCircle->identify();
             int index[6]; myStrawIndex(id, index); // side, layer, phi, straw_layer, straw_within_layer, straw_index
             (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][1]++; // accumulate hits on track
             if (driftCircle->highLevel()) (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][3]++; // accumulate hits on track
-            
+
         } // end trackStatesIt loop
-        
+
         // add holeIdentifiers - fill vector
-        
+
         const DataVector<const Trk::TrackStateOnSurface>* holes = m_trt_hole_finder->getHolesOnTrack( *track );
         if ( holes==0 ) continue; // no holes found
         for ( DataVector<const Trk::TrackStateOnSurface>::const_iterator trackStatesIt = holes->begin(); trackStatesIt != holes->end(); trackStatesIt++ ) {
-            
+
             if ( !(*trackStatesIt)->type(   Trk::TrackStateOnSurface::Hole  )  ) { ATH_MSG_ERROR( "m_trt_hole_finder returned something that is not a hole" ); continue; }
-            
+
             const Trk::TrackParameters* track_parameters = (*trackStatesIt)->trackParameters();
             if (!track_parameters) { ATH_MSG_WARNING( "m_trt_hole_finder track_parameters missing" ); continue; }
-            
+
             Identifier id = track_parameters->associatedSurface().associatedDetectorElementIdentifier();
             if ( !(m_TRTHelper->is_trt(id)) ) { ATH_MSG_ERROR( "m_trt_hole_finder returned something that is not a TRT hole" ); continue; }
 
-            // add se same 1.4 mm locR selection, in case it is not on by default 
+            // add se same 1.4 mm locR selection, in case it is not on by default
             if ( std::fabs( track_parameters->parameters()[Trk::locR] ) > m_locR_cut ) continue;
-    
+
             holeIdentifiers.push_back( id );
         } // end add holeIdentifiers
-        
-    } // end trackIt loop   
-    
+
+    } // end trackIt loop
+
     //================ End loop over all tracks
-    
+
     //================ Loop over all hits - it includes hits from dead straws that are masked off in drift circle creation
-    
+
     for (TRT_RDO_Container::const_iterator rdoIt = rdoContainer->begin(); rdoIt != rdoContainer->end(); ++rdoIt) {
         const InDetRawDataCollection<TRT_RDORawData>* TRTCollection(*rdoIt);
         if (TRTCollection==0) continue;
         for (DataVector<TRT_RDORawData>::const_iterator trtIt = TRTCollection->begin(); trtIt != TRTCollection->end(); trtIt++) {
             Identifier id = (*trtIt)->identify();
             int index[6]; myStrawIndex(id, index); // side, layer, phi, straw_layer, straw_within_layer, straw_index
-            (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][0]++; // accumulate all hits 
+            (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][0]++; // accumulate all hits
             if ((*trtIt)->highLevel()) (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][2]++; // accumulate TR hits
-            
+
             if (std::find(holeIdentifiers.begin(), holeIdentifiers.end(), id) != holeIdentifiers.end())  // a hole was found on the same straw, but hits is there
-                holeIdentifiersWithHits.push_back( id );            
-        }  
+                holeIdentifiersWithHits.push_back( id );
+        }
     }
-    
-    //================ End loop over all hits 
+
+    //================ End loop over all hits
 
     //================ End loop over all holes, each time also save whether the straw with a hole had a hit
-    
+
     for (unsigned int i=0; i<holeIdentifiers.size(); i++) {
-        
+
         Identifier id = holeIdentifiers[i];
 
         int index[6]; myStrawIndex(id, index); // side, layer, phi, straw_layer, straw_within_layer, straw_index
-        
+
         (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][4]++;
-        
+
         if (std::find(holeIdentifiersWithHits.begin(), holeIdentifiersWithHits.end(), id) != holeIdentifiersWithHits.end())
           (*m_accumulateHits)[(index[0]>0)?0:1][index[2]][index[5]][5]++;
     }
-    
-    //================ End loop over all hits 
+
+    //================ End loop over all hits
 
     //===== searching for HV lines with voltage < 1490 V
     if (lumiBlock0 != last_lumiBlock0){
         float theValue;
         int chanNum;
-        char fileName_mapping[300]; 
+        char fileName_mapping[300];
         snprintf(fileName_mapping, 299,"%s.%07d_Voltage_trips.txt", m_fileName.c_str(), m_runNumber);
         FILE *fmapping = fopen(fileName_mapping, "a");
-        //StatusCode 
+        //StatusCode
         sc = StatusCode::SUCCESS;//for compatibility with Rel 17
-        
+
         //===== Loop over all HV lines
         for (chanNum=1;chanNum<1281;chanNum++){
             theValue = 9999.;
@@ -329,7 +331,7 @@ void InDet::TRT_StrawStatus::clear() {
 
 void InDet::TRT_StrawStatus::reportResults() {
     ATH_MSG_INFO( "InDet::TRT_StrawStatus::reportResults() for " << m_nEvents << " events." );
-    char fileName[300]; 
+    char fileName[300];
     snprintf(fileName, 299,"%s.%07d_newFormat.txt", m_fileName.c_str(), m_runNumber);
     FILE *f = fopen(fileName, "w");
     fprintf(f, "%d %d %d %d %d %d %d %d %d \n", 0, 0, 0, 0, 0, 0, 0, 0, m_nEvents);
@@ -338,15 +340,15 @@ void InDet::TRT_StrawStatus::reportResults() {
         if (k>=1642) side *= 2;
         fprintf(f, "%d %zu %zu", side, j, k);
         for (int m=0; m<6; m++) fprintf(f, " %d", (*m_accumulateHits)[i][j][k][m]);
-        fprintf(f, "\n");   
+        fprintf(f, "\n");
     }
     fclose(f);
     return;
-}  
+}
 
 void InDet::TRT_StrawStatus::printDetailedInformation() {
     ATH_MSG_INFO( "InDet::TRT_StrawStatus::printDetailedInformation() " );
-    char fileName[300]; 
+    char fileName[300];
     snprintf(fileName, 299,"%s.%07d_printDetailedInformation.txt", m_fileName.c_str(), m_runNumber);
     FILE *f = fopen(fileName, "w");
     for (std::vector<Identifier>::const_iterator it = m_TRTHelper->straw_layer_begin(); it != m_TRTHelper->straw_layer_end(); it++  ) {
@@ -354,37 +356,37 @@ void InDet::TRT_StrawStatus::printDetailedInformation() {
             Identifier id = m_TRTHelper->straw_id( *it, i);
             int index[6];
             myStrawIndex(id, index);
-            int chip, HVpad;    
+            int chip, HVpad;
             m_TRTStrawNeighbourSvc->getChip(id, chip);
             m_TRTStrawNeighbourSvc->getPad(id, HVpad);
             if (!m_printStatusCount) {
                 ATH_MSG_INFO( "if the code crashes on the next line, there is a problem with m_TRTStrawStatusSummarySvc not being loaded " );
                 ATH_MSG_INFO( "in that case, running with reco turned on normally solves the problem, know of no better solution at the moment" );
-                ATH_MSG_INFO( "if you do not need the detailed print information, you can also just set printDetailedInformation to 0 to avoid this crash" ); 
+                ATH_MSG_INFO( "if you do not need the detailed print information, you can also just set printDetailedInformation to 0 to avoid this crash" );
                 m_printStatusCount++;
             }
-            int status = m_TRTStrawStatusSummaryTool->get_status( id );  
+            int status = m_TRTStrawStatusSummaryTool->get_status( id );
             int statusTemporary = m_TRTStrawStatusSummaryTool->getStatus( id );
-            int statusPermanent = m_TRTStrawStatusSummaryTool->getStatusPermanent( id ); 
+            int statusPermanent = m_TRTStrawStatusSummaryTool->getStatusPermanent( id );
             for (int j=0; j<6; j++) fprintf(f, "%d ", index[j]);
             fprintf(f, "%d %d %d %d %d\n", chip, HVpad, status, statusTemporary, statusPermanent);
         }
-    }           
+    }
     fclose(f);
-    return; 
+    return;
 }
 
 void InDet::TRT_StrawStatus::myStrawIndex(Identifier id, int *index) {
     int side = m_TRTHelper->barrel_ec(id);
     int layerNumber = m_TRTHelper->layer_or_wheel(id);
     int strawLayerNumber = m_TRTHelper->straw_layer(id);
-    int strawNumber = m_TRTHelper->straw(id);        
+    int strawNumber = m_TRTHelper->straw(id);
     int straw(0);
-    
+
     const int numberOfStraws[74] = { 0, 15, 31, 47, 63, 79, 96, 113, 130, 147, 164, 182, 200, 218, 236, 254, 273, 292, 311, 329, // layer 0, 329 straws, strawlayers 0-18
         348, 368, 388, 408, 428, 448, 469, 490, 511, 532, 553, 575, 597, 619, 641, 663, 686, 709, 732, 755, 778, 802, 826, 849, // layer 1, 520 straws, strawLayers 0-23
         872, 896, 920, 944, 968, 993, 1018, 1043, 1068, 1093, 1119, 1145, 1171, 1197, 1223, 1250, 1277, 1304, 1331, 1358, 1386, 1414, 1442, 1470, 1498, 1527, 1556, 1585, 1614, 1642 }; // layer 2
-    
+
     if (abs(side)==1) { // barrel unique straw number
         if (layerNumber==1) strawLayerNumber+= 19;
         else if (layerNumber==2) strawLayerNumber+= 43;
@@ -394,13 +396,13 @@ void InDet::TRT_StrawStatus::myStrawIndex(Identifier id, int *index) {
         if (board<6) { board *= 2; if (strawLayerNumber>7) board++; }
         else { board += 6; }
         straw = board * 192 + strawNumber * 8 + strawLayerNumber % 8 ;
-        straw += 1642;          
+        straw += 1642;
     }
     index[0] = side;
     index[1] = layerNumber;
     index[2] = m_TRTHelper->phi_module(id);
     index[3] = strawLayerNumber;
     index[4] = strawNumber;
-    index[5] = straw;       
+    index[5] = straw;
     return;
 }
diff --git a/InnerDetector/InDetCalibTools/TRT_CalibTools/src/FillAlignTRTHits.cxx b/InnerDetector/InDetCalibTools/TRT_CalibTools/src/FillAlignTRTHits.cxx
index ebb9ea397e5a..1393b373b7f4 100755
--- a/InnerDetector/InDetCalibTools/TRT_CalibTools/src/FillAlignTRTHits.cxx
+++ b/InnerDetector/InDetCalibTools/TRT_CalibTools/src/FillAlignTRTHits.cxx
@@ -352,7 +352,7 @@ bool FillAlignTRTHits::fill(const Trk::Track* aTrack, TRT::TrackInfo* output,
 							if(HitOnTrackToRemove){
 								unbiasedTrkParameters = m_updator->removeFromState(*(HitOnTrackToRemove->trackParameters()),
 								                                                   HitOnTrackToRemove->measurementOnTrack()->localParameters(),
-								                                                   HitOnTrackToRemove->measurementOnTrack()->localCovariance());
+								                                                   HitOnTrackToRemove->measurementOnTrack()->localCovariance()).release();
 								ATH_MSG_DEBUG ("TrackParameters 1: " << *(HitOnTrackToRemove->trackParameters()));
 							}
 							else if (msgLvl(MSG::DEBUG)) {
diff --git a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
index d8efadd514c5..2ebd56902ae9 100644
--- a/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
+++ b/InnerDetector/InDetMonitoring/InDetGlobalMonitoring/src/InDetGlobalTrackMonTool.cxx
@@ -10,8 +10,8 @@
  * Heidi Sandaker <Heidi.Sandaker@cern.ch> @n
  * Arshak Tonoyan <Arshak.Tonyoan@cern.ch> @n
  * Thomas Burgess <Thomas.Burgess@cern.ch> @n
- * Alex Kastanas <Alex.Kastanas@cern.ch>   @n 
- * Gaetano Barone <Gaetano.Barone@cern.ch> @n 
+ * Alex Kastanas <Alex.Kastanas@cern.ch>   @n
+ * Gaetano Barone <Gaetano.Barone@cern.ch> @n
  *
  * $Id: InDetGlobalTrackMonTool.cxx,v 1.33 2009-05-14 22:44:19 kastanas Exp $
  *
@@ -109,7 +109,7 @@ InDetGlobalTrackMonTool::InDetGlobalTrackMonTool( const std::string & type,
       m_pixelID(nullptr),
       m_holes_eta_phi(nullptr),
       m_holes_eta_pt(nullptr),
-      m_holes_phi_pt(nullptr), 
+      m_holes_phi_pt(nullptr),
       m_holes_eta_phi_n(nullptr),
       m_holes_hits(nullptr),
       m_holesvshits(nullptr),
@@ -140,11 +140,11 @@ InDetGlobalTrackMonTool::InDetGlobalTrackMonTool( const std::string & type,
     declareProperty("DoHoleSearch",m_DoHoles_Search,"Write hole data?");
     declareProperty("DoTide",m_doTide,"Make TIDE plots?");
     declareProperty("DoTideResiduals",m_doTideResiduals,"Make TIDE residual plots?");
-    declareProperty("HoleSearchTool", m_holes_search_tool,"Tool to search for holes on track");	
+    declareProperty("HoleSearchTool", m_holes_search_tool,"Tool to search for holes on track");
     declareProperty("UpdatorTool"                  , m_iUpdator);
-    declareProperty("DoHitMaps", m_doHitMaps,"Produce hit maps?");	
-    declareProperty("DoForwardTracks", m_doForwardTracks,"Run over forward tracks?");	
-    declareProperty("DoIBL", m_doIBL,"IBL present?");	
+    declareProperty("DoHitMaps", m_doHitMaps,"Produce hit maps?");
+    declareProperty("DoForwardTracks", m_doForwardTracks,"Run over forward tracks?");
+    declareProperty("DoIBL", m_doIBL,"IBL present?");
     declareProperty("trackMax",m_trackMax,"Maximum number of tracks in track histograms");
     declareProperty("trackBin",m_trackBin,"Number of bins for the track histograms");
     declareProperty("ResidualPullCalculatorTool", m_residualPullCalculator);
@@ -155,20 +155,20 @@ InDetGlobalTrackMonTool::InDetGlobalTrackMonTool( const std::string & type,
 
 StatusCode InDetGlobalTrackMonTool::initialize() {
   StatusCode sc;
-  
+
   // If any of the ID helpers are not found then we don't make the hit maps
   m_trtID = 0;
   if (detStore()->retrieve(m_trtID, "TRT_ID").isFailure()) {
       ATH_MSG_DEBUG("Could not get TRT ID helper");
       m_doHitMaps = false;
   }
- 
+
   m_sctID = 0;
   if (detStore()->retrieve(m_sctID, "SCT_ID").isFailure()) {
       ATH_MSG_DEBUG("Could not get SCT ID helper");
       m_doHitMaps = false;
   }
-  
+
   m_pixelID = 0;
   if (detStore()->retrieve(m_pixelID, "PixelID").isFailure()) {
       ATH_MSG_DEBUG("Could not get Pixel ID helper");
@@ -189,15 +189,15 @@ StatusCode InDetGlobalTrackMonTool::initialize() {
   } else {
       if(msgLvl(MSG::INFO)) msg(MSG::INFO)  << "Retrieved tool " << m_residualPullCalculator << endmsg;
   }
-  
+
   ATH_CHECK( m_iUpdator.retrieve() );
 
-  
+
   ATH_CHECK ( m_trackToVertexIPEstimator.retrieve());
 
-  
+
   m_doIBL = m_IBLParameterSvc->containsIBL();
-  
+
   ATH_CHECK( m_baseline_selTool.retrieve() );
   ATH_CHECK( m_tight_selTool.retrieve() );
   if (m_holes_search_tool.empty() && m_DoHoles_Search) {
@@ -219,7 +219,7 @@ StatusCode InDetGlobalTrackMonTool::initialize() {
 StatusCode InDetGlobalTrackMonTool::bookHistograms()
 {
     Interval_t detailsInterval = ( AthenaMonManager::environment() != AthenaMonManager::online ) ? lowStat : run;
-    
+
     registerManHist( m_Trk_Base, "InDetGlobal/Track", detailsInterval,
 		     "nCOMBtrks", "Track multiplicity (baseline tracks)",
 		     m_trackBin, 0.5, m_trackMax+0.5,
@@ -243,24 +243,24 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
                      m_nBinsEta, -m_c_etaRange, m_c_etaRange,
                      m_nBinsPhi, -M_PI, M_PI,
                      "eta", "#phi_{0}" ).ignore();
-    
+
     registerManHist( m_Trk_eta_phi_noTRText_ratio, "InDetGlobal/Track", detailsInterval,
 		     "Trk_noTRText_eta_phi_ratio","Distribution of eta vs phi for combined tracks with no TRT extension",
-		     20, -m_c_etaRangeTRT, m_c_etaRangeTRT, 
+		     20, -m_c_etaRangeTRT, m_c_etaRangeTRT,
 		     m_nBinsPhi, -M_PI, M_PI,
 		     "eta", "#phi_{0}" ).ignore();
-    
+
     registerManHist( m_Trk_eta_phi_noBLhit_ratio, "InDetGlobal/Track", detailsInterval,
 		     "Trk_noBLhit_eta_phi_ratio","Eta-phi of tracks with no b-layer hit but a hit is expected, ratio to total tracks",
-		     m_nBinsEta, -m_c_etaRange, m_c_etaRange, 
+		     m_nBinsEta, -m_c_etaRange, m_c_etaRange,
 		     m_nBinsPhi, -M_PI, M_PI,
 		     "#eta", "#phi_{0}").ignore();
-    
+
     if ( m_doIBL )
     {
 	registerManHist( m_Trk_eta_phi_noIBLhit_ratio, "InDetGlobal/Track", detailsInterval,
 			 "Trk_noIBLhit_eta_phi_ratio","Eta-phi of tracks with no IBL hit but a hit is expected, ratio to total tracks",
-			 m_nBinsEta, -m_c_etaRange, m_c_etaRange, 
+			 m_nBinsEta, -m_c_etaRange, m_c_etaRange,
 			 m_nBinsPhi, -M_PI, M_PI,
 			 "#eta", "#phi_{0}").ignore();
     }
@@ -273,20 +273,20 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 			 400,-1100,1100,
 			 400,-1100,1100,
 			 "x [mm]", "y [mm]" ).ignore();
-	
+
 	registerManHist( m_ID_hitmap_x_y_eca, "InDetGlobal/Hits", run,
 			 "ID_hitmap_x_y_eca","Map of ID hits (ECA) in x vs y (mm)",
 			 400,-1100,1100,
 			 400,-1100,1100,
 			 "x [mm]", "y [mm]" ).ignore();
-	
+
 	registerManHist( m_ID_hitmap_x_y_ecc, "InDetGlobal/Hits", run,
 			 "ID_hitmap_x_y_ecc","Map of ID hits (ECC) in x vs y (mm)",
 			 400,-1100,1100,
 			 400,-1100,1100,
 			 "x [mm]", "y [mm]" ).ignore();
     }
-    
+
     for (unsigned int i = ( (m_doIBL) ? 0 : 1) ; i < m_trk_hits_eta_phi.size(); i++ )
     {
 	registerManHist( m_trk_hits_eta_phi[i],  "InDetGlobal/Hits", detailsInterval,
@@ -294,13 +294,13 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 			 m_nBinsEta, -m_c_etaRange, m_c_etaRange,
 			 m_nBinsPhi,-M_PI,M_PI,
 			 "#eta", "#phi" ).ignore();
-    
+
 	registerManHist( m_trk_hits_LB[i], "InDetGlobal/Track", detailsInterval,
 			 "trk_n"+m_c_detector_labels[i]+"hits_LB","Average number of " + m_c_detector_labels[i] + " hits by LB",
 			 m_c_range_LB,0,m_c_range_LB,
 			 "LB #", "Average number of hits in LB").ignore();
     }
-    
+
     for (unsigned int i = 1; i < m_trk_disabled_eta_phi.size(); i++ )
     {
 	registerManHist( m_trk_disabled_eta_phi[i],  "InDetGlobal/Hits", detailsInterval,
@@ -309,7 +309,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 			 m_nBinsPhi,-M_PI,M_PI,
 			 "#eta", "#phi" ).ignore();
     }
-    
+
     registerManHist( m_trk_shared_pix_eta_phi,  "InDetGlobal/Hits", detailsInterval,
 		     "Trk_nPixShared_eta_phi","Number of Pixel shared hits per track, eta-phi profile",
 		     m_nBinsEta, -m_c_etaRange, m_c_etaRange,
@@ -321,7 +321,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 		     m_nBinsEta, -m_c_etaRange, m_c_etaRange,
 		     m_nBinsPhi,-M_PI,M_PI,
 		     "#eta", "#phi" ).ignore();
-    
+
     registerManHist( m_trk_jetassoc_d0_reso_dr, "InDetGlobal/Hits", detailsInterval,
 		     "Trk_jetassoc_d0_dr", "IP resolution  per ghost associated track vs #DeltaR of track and jet",
 		     20, 0, 0.4, "#Delta R", "Fraction" ).ignore();
@@ -410,26 +410,26 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 
     // Forward Pixel tracks
     if ( m_doForwardTracks )
-    {	
+    {
 	registerManHist( m_Trk_FORW_FA_eta_phi, "InDetGlobal/Track", detailsInterval,
 			 "Trk_FORW_FA_eta_phi", "Eta-phi for pixel tracklets in the forward region (positive eta)",
-			 5, m_c_etaTrackletsMin, m_c_etaTrackletsMax, 
-			 m_nBinsPhi, -M_PI, M_PI, 
+			 5, m_c_etaTrackletsMin, m_c_etaTrackletsMax,
+			 m_nBinsPhi, -M_PI, M_PI,
 			 "#eta", "#phi_{0}" ).ignore();
-	
+
 	registerManHist( m_Trk_FORW_FC_eta_phi, "InDetGlobal/Track", detailsInterval,
 			 "Trk_FORW_FC_eta_phi", "Eta-phi for pixel tracklets in the forward region (negative eta)",
-			 5, -m_c_etaTrackletsMax, -m_c_etaTrackletsMin, 
-			 m_nBinsPhi, -M_PI, M_PI, 
+			 5, -m_c_etaTrackletsMax, -m_c_etaTrackletsMin,
+			 m_nBinsPhi, -M_PI, M_PI,
 			 "#eta", "#phi_{0}" ).ignore();
-	
+
 	registerManHist( m_Trk_FORW_chi2, "InDetGlobal/Track", detailsInterval,
 			 "Trk_FORW_chi2", "#chi^{2}/DoF of reconstructed forward tracklets",
 			 80, -0., 20.,
 			 "#chi^{2}/DoF").ignore();
-	
+
 	registerManHist( m_Trk_FORW_qoverp, "InDetGlobal/Track", detailsInterval,
-			 "Trk_FORW_qoverp", "Distribution of qoverp (forward Pixel tracklets)", 
+			 "Trk_FORW_qoverp", "Distribution of qoverp (forward Pixel tracklets)",
 			 400, -2.5, 2.5,
 			 "Inverse momentum [GeV^{-1}]" ).ignore();
 
@@ -437,7 +437,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 			 "Trk_FORW_nPIXhits_FA","Number of Pixel hits per track (Forward tracks FA)",
 			 5, 0.5, 5.5,
 			 "# of hits per track" ).ignore();
-	
+
 	registerManHist( m_Trk_FORW_FC_nPIXhits, "InDetGlobal/Hits", detailsInterval,
 			 "Trk_FORW_nPIXhits_FC","Number of Pixel hits per track (Forward tracks FC)",
 			 5, 0.5, 5.5,
@@ -454,7 +454,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 		     "Trk_nTight_LB","Average number of tight tracks per event in LB",
 		     m_c_range_LB,0,m_c_range_LB,
 		     "LB #", "Average number of tight tracks per event in LB").ignore();
-    
+
     if ( m_doIBL )
     {
 	registerManHist( m_Trk_noIBLhits_LB, "InDetGlobal/Track", detailsInterval,
@@ -466,7 +466,7 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 			 m_c_range_LB,0,m_c_range_LB,
 			 "LB #", "Fraction of tracks with missing IBL hit per event in LB").ignore();
     }
-    
+
     registerManHist( m_Trk_noBLhits_LB, "InDetGlobal/Track", detailsInterval,
 		     "Trk_noBLhits_LB","Average number of tracks with missing b-layer hit per event in LB",
 		     m_c_range_LB,0,m_c_range_LB,
@@ -492,66 +492,66 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 	registerManHist( m_sct_holes, "InDetGlobal/Hits", detailsInterval,
 			 "sct_holes", "Distribution of SCT Holes ",
 			 104,-3.5,100.5,
-			 "Number of SCT holes").ignore();	
-	
+			 "Number of SCT holes").ignore();
+
 	registerManHist( m_trt_holes, "InDetGlobal/Hits", detailsInterval,
 			 "trt_holes", "Distribution of TRT Holes ",
 			 104,-3.5,100.5,
 			 "Number of TRT holes").ignore();
-	
+
 	registerManHist( m_pixel_holes, "InDetGlobal/Hits", detailsInterval,
 			 "pixel_holes", "Distribution of Pixel Holes ",
 			 104,-3.5,100.5,
 			 "Number of Pixel holes").ignore();
-	
+
 	registerManHist( m_comb_holes, "InDetGlobal/Hits", detailsInterval,
 			 "comb_holes", "Distribution of Combined Holes ",
 			 104,-3.5,100.5,
 			 "Total number of holes").ignore();
-	
+
 	registerManHist( m_silicon_vs_trt, "InDetGlobal/Hits", detailsInterval,
 			 "silicon_vs_trt", "Silicon vs TRT holes ",
 			 104,-3.5,100.5,
 			 104,-3.5,100.5,
 			 "Silicon Combined holes", "TRT holes").ignore();
-	
+
 	registerManHist( m_sct_vs_pixels, "InDetGlobal/Hits", detailsInterval,
 			 "sct_vs_pixels", "SCT vs Pixels holes ",
 			 104,-3.5,100.5,
 			 104,-3.5,100.5,
 			 "SCT", "Pixels").ignore();
-	
+
 	registerManHist( m_holes_quality, "InDetGlobal/Hits", detailsInterval,
 			 "holes_quality", "Number of holes/track vs #chi^{2}/ndf",
 			 160,-0.5,15.5,
 			 104,-3.5,100.5,
-			 "#chi^{2}/ndf", "Combined Holes").ignore();	
-	
+			 "#chi^{2}/ndf", "Combined Holes").ignore();
+
 	registerManHist( m_holes_eta_phi, "InDetGlobal/Hits", detailsInterval,
 			 "holes_eta_phi", "Holes Map #eta #phi",
 			 m_nBinsEta,-m_c_etaRange,m_c_etaRange,
 			 m_nBinsPhi,-M_PI,M_PI,
 			 "#eta", "#phi").ignore();
-	
-	
+
+
 	registerManHist( m_holes_eta_pt,  "InDetGlobal/Hits", detailsInterval,
 			 "holes_eta_pt", "Holes #eta vs p_{t}",
 			 m_nBinsEta,-m_c_etaRange,m_c_etaRange,
 			 30,-0.,30.,
 			 "#eta", "#p_{t}").ignore();
-	
+
 	registerManHist( m_holes_phi_pt,  "InDetGlobal/Hits", detailsInterval,
 			 "holes_phi_pt", "Holes #phi vs p_{t}",
 			 m_nBinsPhi,-M_PI,M_PI,
 			 30,-0.,30.,
 			 "#phi", "#p_{t}").ignore();
-	
+
 	registerManHist( m_holes_eta_phi_n,  "InDetGlobal/Hits", detailsInterval,
 			 "holes_eta_phi_n", "Holes Map (Norm) #eta #phi",
 			 m_nBinsEta,-m_c_etaRange,m_c_etaRange,
 			 m_nBinsPhi,-M_PI,M_PI,
 			 "#eta", "#phi").ignore();
-	
+
 	registerManHist( m_holes_quality_profile,  "InDetGlobal/Hits", detailsInterval,
 			 "holes_quality_profile", "#chi^{2}/ndf vs Number of holes/track profile",
 			 104,-3.5,100.5,
@@ -559,8 +559,8 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 	m_holes_quality_profile->SetErrorOption("S");
 	m_holes_quality_profile->SetMaximum( 1000 );
 	m_holes_quality_profile->SetMinimum( 0 );
-    
-	
+
+
 	registerManHist( m_holes_hits,  "InDetGlobal/Hits", detailsInterval,
 			 "holes_hits", "Number of holes vs number of hits per track Combined",
 			 101,-0.5,100.5,
@@ -568,43 +568,43 @@ StatusCode InDetGlobalTrackMonTool::bookHistograms()
 	m_holes_hits->SetErrorOption("S");
 	m_holes_hits->SetMaximum( 1000 );
 	m_holes_hits->SetMinimum( -10 );
-	
+
 	registerManHist( m_holesvshits,  "InDetGlobal/Hits", detailsInterval,
 			 "holesvshits","Number of Holes/track vs Number of Hits/track if holes >0 ",
 			 101,-0.5,100.5,
 			 101,-0.5,100.5,
 			 "nb. of hits/track", "nb holes/track").ignore();
-	
+
 	registerManHist( m_holesvshits_ECA,  "InDetGlobal/Hits", detailsInterval,
 			 "holesvshits_ECA", "Number of Holes/track vs Number of Hits/track if holes >0 EndCap A",
 			 101,-0.5,100.5,
-			 101,-0.5,100.5, 
-			 "nb. of hits/track", "nb holes/track").ignore();	
-	
+			 101,-0.5,100.5,
+			 "nb. of hits/track", "nb holes/track").ignore();
+
 	registerManHist( m_holesvshits_ECC,  "InDetGlobal/Hits", detailsInterval,
 			 "holesvshits_ECC", "Number of Holes/track vs Number of Hits/track if holes >0 EndCap C",
 			 101,-0.5,100.5,
 			 101,-0.5,100.5,
 			 "nb. of hits/track", "nb holes/track").ignore();
-	
+
 	registerManHist( m_holesvshits_BA,  "InDetGlobal/Hits", detailsInterval,
 			 "holesvshits_BA", "Number of Holes/track vs Number of Hits/track if holes >0 BARREL",
 			 101,-0.5,100.5,
 			 101,-0.5,100.5,
 			 "nb. of hits/track", "nb holes/track").ignore();
-	
+
 	registerManHist( m_HolesMAP_XY,  "InDetGlobal/Hits", detailsInterval,
 			 "HolesMAP_XY", "Map of ID holes x vs y (mm)",
 			 400,-1100,1100,
 			 400,-1100,1100,
 			 "X [mm]", "Y [mm]").ignore();
-	
+
 	registerManHist( m_HolesMAP_ZR,  "InDetGlobal/Hits", detailsInterval,
 			 "HolesMAP_ZR", "Map of ID holes  z vs r (mm)",
 			 3000,-3100,3100,
 			 1100,0,1100,
-			 "Z [mm]", "R [mm]").ignore(); 
-	
+			 "Z [mm]", "R [mm]").ignore();
+
 	registerManHist( m_HolesMAP_ZX,  "InDetGlobal/Hits", detailsInterval,
 			 "HolesMAP_ZX", "Map of ID holes  z vs x (mm)",
 			 1000,-3100,3100,
@@ -622,8 +622,8 @@ StatusCode InDetGlobalTrackMonTool::bookHistogramsRecurrent()
 }
 
 /*---------------------------------------------------------*/
-StatusCode InDetGlobalTrackMonTool::fillHistograms() 
-{   
+StatusCode InDetGlobalTrackMonTool::fillHistograms()
+{
     SG::ReadHandle<TrackCollection> combined_tracks(m_CombinedTracksName);
     if ( !combined_tracks.isValid() )
     {
@@ -636,7 +636,7 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
     int nNoIBL = 0;
     int nNoBL = 0;
     int nNoTRText = 0;
-    
+
     TrackCollection::const_iterator itrack = combined_tracks->begin();
     TrackCollection::const_iterator itrack_end = combined_tracks->end();
     for ( ; itrack!= itrack_end; ++itrack)
@@ -647,30 +647,30 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
 	    ATH_MSG_DEBUG( "NULL track pointer in collection" );
 	    continue;
 	}
-	
+
 	// Skip tracks that are not inside out
         if ( ( m_dataType == AthenaMonManager::collisions || m_dataType == AthenaMonManager::userDefined )
-             && ! ( track->info().patternRecoInfo( Trk::TrackInfo::SiSPSeededFinder ) ||  
+             && ! ( track->info().patternRecoInfo( Trk::TrackInfo::SiSPSeededFinder ) ||
 		    track->info().patternRecoInfo( Trk::TrackInfo::SiSpacePointsSeedMaker_HeavyIon ) ) )
 	    continue;
-	
+
 	if ( ! m_baseline_selTool->accept(*track) )
 	    continue;
-	
+
 	// Create a new summary or get copy of the cached one
 	std::unique_ptr<const Trk::TrackSummary> summary(m_trkSummaryTool->summary( * track ) );
-	
+
 	if ( !summary )
 	{
 	    ATH_MSG_DEBUG( "NULL pointer to track summary" );
 	    continue;
 	}
-	
+
 	nBase++;
-	
+
 	FillHits( track, summary );
 	FillEtaPhi( track , summary );
-	
+
 	if ( m_doIBL )
 	{
 	    if ( summary->get( Trk::expectInnermostPixelLayerHit ) && !summary->get( Trk::numberOfInnermostPixelLayerHits ) )
@@ -683,7 +683,7 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
 		m_Trk_noIBLhits_frac_LB->Fill( m_manager->lumiBlockNumber(), 0 );
 	    }
 	}
-	
+
 	if ( summary->get( ( m_doIBL ) ? Trk::expectNextToInnermostPixelLayerHit : Trk::expectInnermostPixelLayerHit ) && !summary->get( ( m_doIBL ) ? Trk::numberOfNextToInnermostPixelLayerHits : Trk::numberOfInnermostPixelLayerHits ) )
 	{
 	    nNoBL++;
@@ -702,36 +702,36 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
 	{
 	    m_Trk_noTRText_frac_LB->Fill(m_manager->lumiBlockNumber(), 0);
 	}
-	
+
 	if ( m_tight_selTool->accept(*track) )
 	{
 	    nTight++;
-	} 
-	
-	if ( m_doHitMaps ) 
+	}
+
+	if ( m_doHitMaps )
 	{
 	    FillHitMaps( track );
 	}
-	
-	if ( m_doHolePlots )  
+
+	if ( m_doHolePlots )
 	{
 		FillHoles( track, summary );
 	}
-	
+
 	m_Trk_Base->Fill( nBase );
 
 	m_Trk_nBase_LB->Fill( m_manager->lumiBlockNumber(), nBase );
 	m_Trk_nTight_LB->Fill( m_manager->lumiBlockNumber(), nTight );
 	if ( m_doIBL )
 	    m_Trk_noIBLhits_LB->Fill( m_manager->lumiBlockNumber(), nNoIBL );
-	    
+
 	m_Trk_noBLhits_LB->Fill( m_manager->lumiBlockNumber(), nNoBL );
 	m_Trk_noTRText_LB->Fill( m_manager->lumiBlockNumber(), nNoTRText );
     }
-    
+
     if ( m_doTide )
 	FillTIDE();
-	
+
     if ( m_doForwardTracks )
     {
 	SG::ReadHandle<TrackCollection> forward_tracks(m_ForwardTracksName);
@@ -742,7 +742,7 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
 		ATH_MSG_DEBUG( "No combined tracks in StoreGate " + m_ForwardTracksName.key() );
 		return StatusCode::SUCCESS;
 	    }
-	    
+
 	    TrackCollection::const_iterator iftrack = forward_tracks->begin();
 	    TrackCollection::const_iterator iftrack_end = forward_tracks->end();
 	    for ( ; iftrack!= iftrack_end; ++iftrack)
@@ -753,20 +753,20 @@ StatusCode InDetGlobalTrackMonTool::fillHistograms()
 		    ATH_MSG_DEBUG( "NULL track pointer in collection" );
 		    continue;
 		}
-		
+
 		// Create a new summary or get copy of the cached one
 		std::unique_ptr<const Trk::TrackSummary> summary( m_trkSummaryTool->summary( * track ) );
-		
+
 		if ( !summary )
 		{
 		    ATH_MSG_DEBUG( "NULL pointer to track summary" );
 		    continue;
 		}
-		
+
 		FillForwardTracks( track , summary );
 	    }
 	}
-    }	
+    }
 
     return StatusCode::SUCCESS;
 }
@@ -784,7 +784,7 @@ void InDetGlobalTrackMonTool::FillHits( const Trk::Track *track, const std::uniq
   int sctHits = (summary->get(Trk::numberOfSCTHits) >= 0 ? summary->get(Trk::numberOfSCTHits) : 0)
     + (summary->get(Trk::numberOfSCTDeadSensors) >= 0 ? summary->get(Trk::numberOfSCTDeadSensors) : 0 );
     int trtHits = summary->get(Trk::numberOfTRTHits) + summary->get(Trk::numberOfTRTDeadStraws);
-    
+
     const Trk::Perigee *perigee = track->perigeeParameters();
     if ( !perigee )
 	return;
@@ -794,9 +794,9 @@ void InDetGlobalTrackMonTool::FillHits( const Trk::Track *track, const std::uniq
 	m_trk_hits_eta_phi[0]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], summary->get( Trk::numberOfInnermostPixelLayerHits ) );
 	m_trk_hits_LB[0]->Fill( m_manager->lumiBlockNumber(), summary->get( Trk::numberOfInnermostPixelLayerHits ) );
     }
-    
+
     m_trk_hits_eta_phi[1]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], pixHits );
-    m_trk_disabled_eta_phi[1]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], 
+    m_trk_disabled_eta_phi[1]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				     ( summary->get(Trk::numberOfPixelDeadSensors) >= 0 ) ? summary->get(Trk::numberOfPixelDeadSensors) : 0 );
     m_trk_hits_LB[1]->Fill( m_manager->lumiBlockNumber(), pixHits );
     m_trk_shared_pix_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
@@ -805,28 +805,28 @@ void InDetGlobalTrackMonTool::FillHits( const Trk::Track *track, const std::uniq
 				   ( summary->get(Trk::numberOfPixelHoles) >= 0 ) ? summary->get(Trk::numberOfPixelHoles) : 0 );
     m_trk_split_pix_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				   ( summary->get(Trk::numberOfPixelSplitHits) >= 0 ) ? summary->get(Trk::numberOfPixelSplitHits) : 0 );
-    
+
     m_trk_hits_eta_phi[2]->Fill(  perigee->eta(), perigee->parameters()[Trk::phi0],sctHits );
-    m_trk_disabled_eta_phi[2]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], 
+    m_trk_disabled_eta_phi[2]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				     ( summary->get(Trk::numberOfSCTDeadSensors) >= 0 ) ? summary->get(Trk::numberOfSCTDeadSensors) : 0 ) ;
     m_trk_hits_LB[2]->Fill( m_manager->lumiBlockNumber(), sctHits );
     m_trk_shared_sct_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				    ( summary->get(Trk::numberOfSCTSharedHits) >= 0 ) ? summary->get(Trk::numberOfSCTSharedHits) : 0 );
-    
+
     m_trk_holes_sct_eta_phi->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				   ( summary->get(Trk::numberOfSCTHoles) >= 0 ) ? summary->get(Trk::numberOfSCTHoles) : 0 );
-    
+
     m_trk_hits_eta_phi[3]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],trtHits );
-    m_trk_disabled_eta_phi[3]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0], 
+    m_trk_disabled_eta_phi[3]->Fill( perigee->eta(), perigee->parameters()[Trk::phi0],
 				     ( summary->get(Trk::numberOfTRTDeadStraws) >= 0 ) ? summary->get(Trk::numberOfTRTDeadStraws) : 0 );
     m_trk_hits_LB[3]->Fill( m_manager->lumiBlockNumber(), trtHits );
-} 
+}
 
 
 void InDetGlobalTrackMonTool::FillEtaPhi( const Trk::Track *track, const std::unique_ptr<const Trk::TrackSummary> & summary )
 {
     if ( ! track || ! summary ) return;
-	
+
     const Trk::Perigee *perigee = track->perigeeParameters();
     float eta = perigee->eta();
     float phi = perigee->parameters()[Trk::phi0];
@@ -845,7 +845,7 @@ void InDetGlobalTrackMonTool::FillEtaPhi( const Trk::Track *track, const std::un
 	    {
 		m_Trk_eta_phi_noIBLhit_ratio->Fill( eta, phi, 0 );
 	    }
-	    
+
 	    /// Next-to-innermost
 	    if ( summary->get( Trk::expectNextToInnermostPixelLayerHit ) && !summary->get( Trk::numberOfNextToInnermostPixelLayerHits ) )
 	    {
@@ -867,14 +867,14 @@ void InDetGlobalTrackMonTool::FillEtaPhi( const Trk::Track *track, const std::un
 		m_Trk_eta_phi_noBLhit_ratio->Fill( eta, phi, 0 );
 	    }
 	}
-	
+
 	// No TRT extension
 	if ( summary->get(Trk::numberOfTRTHits) == 0 )
 	    m_Trk_eta_phi_noTRText_ratio->Fill( eta, phi, 1 );
 	else
 	    m_Trk_eta_phi_noTRText_ratio->Fill( eta, phi, 0 );
     }
- 
+
     m_Trk_eta_phi_Tight->Fill( eta, phi);
 
     /// TRACKSEL: Tight
@@ -897,12 +897,12 @@ void InDetGlobalTrackMonTool::FillForwardTracks( const Trk::Track *track, const
     {
 	float eta = perigee->eta();
 	float phi = perigee->parameters()[Trk::phi0];
-	
+
 	if ( eta > 0. )
 	{
 	    m_Trk_FORW_FA_eta_phi->Fill( eta, phi );
 	    m_Trk_FORW_FA_nPIXhits->Fill ( summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors) );
-	}    
+	}
 	else
 	{
 	    m_Trk_FORW_FC_eta_phi->Fill( eta, phi );
@@ -911,11 +911,11 @@ void InDetGlobalTrackMonTool::FillForwardTracks( const Trk::Track *track, const
 
 	m_Trk_FORW_qoverp->Fill( perigee->parameters()[Trk::qOverP] *1000.0 );
     }
-    
+
     if ( track->fitQuality() && track->fitQuality()->numberDoF() > 0 )
 	m_Trk_FORW_chi2->Fill(track->fitQuality()->chiSquared()/track->fitQuality()->numberDoF());
-    
-    return;    
+
+    return;
 }
 
 void InDetGlobalTrackMonTool::FillTIDE()
@@ -927,18 +927,18 @@ void InDetGlobalTrackMonTool::FillTIDE()
 	{
 	    if ( (*jetItr)->pt() < 20000. )
 		continue;
-	    
+
 	    std::vector<const xAOD::IParticle*> trackVector;
 	    if ( !(*jetItr)->getAssociatedObjects<xAOD::IParticle>(xAOD::JetAttribute::GhostTrack, trackVector) )
 		continue;
-	    
+
 	    for ( std::vector<const xAOD::IParticle*>::const_iterator trkItr = trackVector.begin(); trkItr != trackVector.end() ; trkItr++ )
 	    {
 		const xAOD::TrackParticle* trackPart = dynamic_cast<const xAOD::TrackParticle*>(*trkItr);
 
 		if ( !trackPart )
 		    continue;
-		
+
 		uint8_t split;
 		uint8_t shared;
 		uint8_t pix;
@@ -964,8 +964,8 @@ void InDetGlobalTrackMonTool::FillTIDE()
 		    }
 		    if ( foundVertex )
 		    {
-			std::unique_ptr<const Trk::ImpactParametersAndSigma>myIPandSigma( 
-						   m_trackToVertexIPEstimator->estimate(trackPart, 
+			std::unique_ptr<const Trk::ImpactParametersAndSigma>myIPandSigma(
+						   m_trackToVertexIPEstimator->estimate(trackPart,
 											foundVertex ));
 			if ( myIPandSigma )
 			{
@@ -980,47 +980,49 @@ void InDetGlobalTrackMonTool::FillTIDE()
 			m_trk_jetassoc_split_pix_dr->Fill( trackPart->p4().DeltaR( (*jetItr)->p4() ), frac );
 			m_trk_jetassoc_split_pix_lb->Fill( m_manager->lumiBlockNumber(), frac );
 		    }
-		    
+
 		    if ( trackPart->summaryValue( shared, xAOD::numberOfPixelSharedHits) )
 		    {
 			float frac = (float)shared / pix;
 			m_trk_jetassoc_shared_pix_dr->Fill( trackPart->p4().DeltaR( (*jetItr)->p4() ), frac );
 			m_trk_jetassoc_shared_pix_lb->Fill( m_manager->lumiBlockNumber(), frac );
 		    }
-		    
+
 		    if ( m_doTideResiduals )
 		    {
 			auto track = trackPart->track();
 			if ( ! track )
 			    continue;
-			
+
 			const DataVector<const Trk::TrackStateOnSurface>* trackStates = track->trackStateOnSurfaces();
 			if ( trackStates == 0 ) return;
-			
+
 			DataVector<const Trk::TrackStateOnSurface>::const_iterator it = trackStates->begin();
 			DataVector<const Trk::TrackStateOnSurface>::const_iterator it_end = trackStates->end();
 			for (;it!=it_end; ++it) {
 			    const Trk::TrackStateOnSurface* tsos=(*it);
-			    
+
 			    if (tsos == 0) continue;
-			    
+
 			    //SILICON (SCT + Pixel)
 			    const InDet::SiClusterOnTrack *clus = dynamic_cast<const InDet::SiClusterOnTrack*>( tsos->measurementOnTrack() );
 			    if ( !clus ) continue;
-			    
+
 			    const InDet::SiCluster *RawDataClus = dynamic_cast<const InDet::SiCluster*>(clus->prepRawData());
 			    if (!RawDataClus) continue;
-			    
+
 			    if ( RawDataClus->detectorElement()->isPixel() ) {
 				const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>( tsos->measurementOnTrack() );
-				
+
 				if (hit && tsos->trackParameters()) {
 				    const Trk::TrackParameters* PropagatedTrackParams = tsos->trackParameters()->clone();
-				    const Trk::TrackParameters* UnbiasedTrackParams = m_iUpdator->removeFromState(*PropagatedTrackParams, tsos->measurementOnTrack()->localParameters(), tsos->measurementOnTrack()->localCovariance());
+				    const Trk::TrackParameters* UnbiasedTrackParams = m_iUpdator->removeFromState(*PropagatedTrackParams,
+                                                                                          tsos->measurementOnTrack()->localParameters(),
+                                                                                          tsos->measurementOnTrack()->localCovariance()).release();
 				    delete PropagatedTrackParams;
 				    if ( !UnbiasedTrackParams )
 					if(msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "RemoveFromState did not work, using original TrackParameters" << endmsg;
-				    
+
 				    const Trk::ResidualPull * residualPull = m_residualPullCalculator->residualPull(tsos->measurementOnTrack(), ( UnbiasedTrackParams ) ? UnbiasedTrackParams:tsos->trackParameters(), Trk::ResidualPull::Unbiased);
 				    if (residualPull) {
 					{
@@ -1071,7 +1073,7 @@ void InDetGlobalTrackMonTool::FillTIDE()
 	ATH_MSG_WARNING( "Unable to get jets, turning TIDE plots off!" );
 	m_doTide = false;
     }
-    
+
     return;
 }
 
@@ -1079,14 +1081,14 @@ void InDetGlobalTrackMonTool::FillHitMaps( const Trk::Track *track )
 {
     const DataVector<const Trk::TrackStateOnSurface>* trackStates = track->trackStateOnSurfaces();
     if ( trackStates == 0 ) return;
-    
+
     DataVector<const Trk::TrackStateOnSurface>::const_iterator it = trackStates->begin();
     DataVector<const Trk::TrackStateOnSurface>::const_iterator it_end = trackStates->end();
     for (;it!=it_end; ++it) {
 	const Trk::TrackStateOnSurface* trackState=(*it);
-	
+
 	if (trackState == 0) continue;
-	
+
 	//TRT
 	const InDet::TRT_DriftCircleOnTrack *trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(trackState->measurementOnTrack());
 	if ( trtcircle )
@@ -1106,11 +1108,11 @@ void InDetGlobalTrackMonTool::FillHitMaps( const Trk::Track *track )
 		break;
 	    }
 	}
-	
+
 	//SILICON (SCT + Pixel)
 	const InDet::SiClusterOnTrack *clus = dynamic_cast<const InDet::SiClusterOnTrack*>( trackState->measurementOnTrack() );
 	if ( !clus ) continue;
-	
+
 	const InDet::SiCluster *RawDataClus = dynamic_cast<const InDet::SiCluster*>(clus->prepRawData());
 	if (!RawDataClus) continue;
 
@@ -1126,7 +1128,7 @@ void InDetGlobalTrackMonTool::FillHitMaps( const Trk::Track *track )
 		m_ID_hitmap_x_y_eca->Fill( clus->globalPosition()[0], clus->globalPosition()[1] );
 		break;
 	    }
-	    
+
 	}else{
 	    switch ( m_pixelID->barrel_ec( RawDataClus->identify() ) ) {
 	    case -2:
@@ -1150,13 +1152,13 @@ void InDetGlobalTrackMonTool::FillHoles( const Trk::Track * track, const std::un
     int pixelh = summary->get(Trk::numberOfPixelHoles) >= 0 ? summary->get(Trk::numberOfPixelHoles) : 0;
     int scth   = summary->get(Trk::numberOfSCTHoles) >= 0 ? summary->get(Trk::numberOfSCTHoles) : 0;
     int trth   = summary->get(Trk::numberOfTRTHoles) >= 0 ? summary->get(Trk::numberOfTRTHoles) : 0;
-    
-    // Gaetano Added : 
+
+    // Gaetano Added :
     m_pixel_holes->Fill(summary->get(Trk::numberOfPixelHoles));
     m_sct_holes->Fill(summary->get(Trk::numberOfSCTHoles));
     m_trt_holes->Fill(summary->get(Trk::numberOfTRTHoles));
-    
-    // Filling Combined Holes and Excluding # holes = -1 case Tracks on surface does not exist		
+
+    // Filling Combined Holes and Excluding # holes = -1 case Tracks on surface does not exist
     if (summary->get(Trk::numberOfPixelHoles)>=0)
 	m_comb_holes->Fill(pixelh);
 
@@ -1167,58 +1169,58 @@ void InDetGlobalTrackMonTool::FillHoles( const Trk::Track * track, const std::un
 	m_comb_holes->Fill(trth);
 
     m_silicon_vs_trt->Fill(pixelh+scth,trth);
-    m_sct_vs_pixels->Fill(scth,pixelh);	
-	    
+    m_sct_vs_pixels->Fill(scth,pixelh);
+
     if ( track->fitQuality() && track->fitQuality()->numberDoF() > 0 ){
 	m_holes_quality->Fill(track->fitQuality()->chiSquared()/track->fitQuality()->numberDoF(),pixelh+scth+trth);
 	m_holes_quality_profile->Fill(scth+trth+pixelh,track->fitQuality()->chiSquared()/track->fitQuality()->numberDoF());
     }
-    
-    // Filling Number of holes vs number of hits for tracks with at least a hole. 			
+
+    // Filling Number of holes vs number of hits for tracks with at least a hole.
     if (scth >0 || trth >0 || pixelh >0) {
 	m_holes_hits->Fill(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors),scth+trth+pixelh);
 	m_holesvshits->Fill(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors),scth+trth+pixelh);
     }
     // Here The Perigee Parameters of Holes
-    const Trk::Perigee *perigee = dynamic_cast<const Trk::Perigee *>(track->perigeeParameters());	
-    
+    const Trk::Perigee *perigee = dynamic_cast<const Trk::Perigee *>(track->perigeeParameters());
+
     m_holes_eta_phi_n->Fill( perigee->eta(),perigee->parameters()[Trk::phi],scth+pixelh/(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors)));
-    
+
     m_holes_eta_phi->Fill( perigee->eta(),perigee->parameters()[Trk::phi]);
     m_holes_eta_pt->Fill(perigee->eta(),perigee->pT()/1000.0,scth+pixelh);
     m_holes_phi_pt->Fill(perigee->parameters()[Trk::phi],perigee->pT()/1000.0,scth+pixelh);
-    
-    // Filling holes vs hits in eta bins	
+
+    // Filling holes vs hits in eta bins
     if (scth >0 || trth >0 || pixelh >0){
 	// Filling ECA
 	if  (perigee->eta()>=-2.5 && perigee->eta()<=-1.5) {
 	    m_holesvshits_ECA->Fill(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors),scth+pixelh+trth);
 	}
-	
+
 	if  (perigee->eta()>=-1.5 && perigee->eta()<=1.5) {
 	    m_holesvshits_BA->Fill(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors),scth+pixelh+trth);
 	}
-	
-	
+
+
 	if  (perigee->eta()>=1.5 && perigee->eta()<=2.5) {
 	    m_holesvshits_ECC->Fill(summary->get(Trk::numberOfTRTHits)+summary->get(Trk::numberOfSCTHits) + summary->get(Trk::numberOfSCTDeadSensors)+summary->get(Trk::numberOfPixelHits) + summary->get(Trk::numberOfPixelDeadSensors),scth+pixelh+trth);
 	}
     }
-    
+
     if (m_DoHoles_Search)
 	FillHoleMaps(track);
-    
+
     return;
 }
 
 void InDetGlobalTrackMonTool::FillHoleMaps( const Trk::Track *track )
 {
     std::unique_ptr<const DataVector<const Trk::TrackStateOnSurface> > holesOnTrack( m_holes_search_tool->getHolesOnTrack(*track,track->info().particleHypothesis()) );
-    
+
     // loop over holes
     if (!holesOnTrack) {
 	msg(MSG::WARNING) << "Got no holes on track" << endmsg;
-    } else {	
+    } else {
 	for (DataVector<const Trk::TrackStateOnSurface>::const_iterator it=holesOnTrack->begin();
 	     it!=holesOnTrack->end();
 	     it++) {
@@ -1226,16 +1228,16 @@ void InDetGlobalTrackMonTool::FillHoleMaps( const Trk::Track *track )
 		msg(MSG::WARNING) << "TrackStateOnSurface from hole search tool == Null" << endmsg;
 		continue;
 	    }
-	    // Here The X Y Z of Holes	
+	    // Here The X Y Z of Holes
 	    const Trk::TrackParameters *clus =(*it)->trackParameters() ;
-	    if (clus){						
+	    if (clus){
 		m_HolesMAP_XY->Fill(clus->position()[0],clus->position()[1]);
 		m_HolesMAP_ZX->Fill( clus->position()[2], clus->position()[0]);
-		m_HolesMAP_ZR->Fill(clus->position()[2], sqrt( pow( clus->position()[0], 2) + pow( clus->position()[1], 2) ));	
-		
-	    }	
-	}	
+		m_HolesMAP_ZR->Fill(clus->position()[2], sqrt( pow( clus->position()[0], 2) + pow( clus->position()[1], 2) ));
+
+	    }
+	}
     }
-    
+
     return;
 }
diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
index f43903d7d75f..254d93b6be76 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
@@ -654,8 +654,8 @@ std::list<Trk::Track*> InDet::TRT_SeededTrackFinder_ATL::findTrack
     auto per   = m_proptool->propagate(*upTP,persurf,Trk::oppositeMomentum,false,m_fieldprop,Trk::nonInteracting); //Propagate
     if(!per){
       if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<<"No extrapolated track parameters!"<<endmsg;
-      delete niTP; 
-      delete upTP; 
+      delete niTP;
+      delete upTP;
       continue;
     }
 
@@ -670,8 +670,8 @@ std::list<Trk::Track*> InDet::TRT_SeededTrackFinder_ATL::findTrack
     //delete per;
     if( int(DE.size()) < m_nclusmin){ //Not enough detector elements to satisfy the minimum number of clusters requirement. Stop
       if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Too few detector elements, not expected" << endmsg;
-      delete niTP; 
-      delete upTP; 
+      delete niTP;
+      delete upTP;
       continue;
     }
 
@@ -701,13 +701,13 @@ std::list<Trk::Track*> InDet::TRT_SeededTrackFinder_ATL::findTrack
 	if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Initial Track Parameters at 1st SP created and scaled from TRT segment, " << endmsg;
 	if(msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << (*mesTP) << endmsg;
       }else{
-        delete niTP; 
-        delete upTP; 
+        delete niTP;
+        delete upTP;
         continue;
       }
     }else{
-      delete niTP; 
-      delete upTP; 
+      delete niTP;
+      delete upTP;
       continue;
     }
 
@@ -772,10 +772,10 @@ InDet::TRT_SeededTrackFinder_ATL::getTP(MagField::AtlasFieldCache& fieldCache, c
   }else{
 
     //Based on the hit information update the track parameters and the error matrix
-    const Trk::TrackParameters* uTP         = 0;
-    Trk::FitQualityOnSurface*   sct_fitChi2 = 0;
+    const Trk::TrackParameters* uTP         = nullptr;
+    Trk::FitQualityOnSurface*   sct_fitChi2 = nullptr;
 
-    uTP = m_updatorTool->addToState(*eTP,SP->localParameters(),SP->localCovariance(),sct_fitChi2);
+    uTP = m_updatorTool->addToState(*eTP,SP->localParameters(),SP->localCovariance(),sct_fitChi2).release();
 
     if(!uTP) { //The updator failed
       if (sct_fitChi2) {
@@ -817,8 +817,8 @@ InDet::TRT_SeededTrackFinder_ATL::getTP(MagField::AtlasFieldCache& fieldCache, c
       }
 
       // Clean up
-      //delete eTP; 
-      delete uTP; 
+      //delete eTP;
+      delete uTP;
       delete sct_fitChi2;
     }
   }
diff --git a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx
index 958806144fd4..d9f86fbdc5d8 100644
--- a/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx
+++ b/Tracking/TrkAlignment/TrkAlignGenTools/src/AlignResidualCalculator.cxx
@@ -25,8 +25,8 @@ namespace Trk {
   //______________________________________________________________
   AlignResidualCalculator::AlignResidualCalculator(const std::string& type, const std::string& name,
            const IInterface* parent)
-    
-    : AthAlgTool(type,name,parent)    
+
+    : AthAlgTool(type,name,parent)
     , m_pullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator")
     , m_updator("Trk::KalmanUpdator/TrkKalmanUpdator")
     , m_qOverP{}
@@ -35,7 +35,7 @@ namespace Trk {
     , m_chi2ForMeasType(0)
   {
     declareInterface<IAlignResidualCalculator>(this);
-    
+
     declareProperty("ResidualPullCalculator",   m_pullCalculator);
     declareProperty("ResidualType",             m_resType = HitOnly);
     declareProperty("IncludeScatterers",        m_includeScatterers = false );
@@ -51,10 +51,10 @@ namespace Trk {
 
   //________________________________________________________________________
   StatusCode AlignResidualCalculator::initialize()
-  {  
+  {
     // get residual pull calculator
     if (m_pullCalculator.retrieve().isFailure()) {
-      msg(MSG::FATAL) << "Could not get " << m_pullCalculator << endmsg; 
+      msg(MSG::FATAL) << "Could not get " << m_pullCalculator << endmsg;
       return StatusCode::FAILURE;
     }
     ATH_MSG_INFO("Retrieved " << m_pullCalculator);
@@ -62,7 +62,7 @@ namespace Trk {
     // get updator
     if(m_resType==Unbiased) {
       if (m_updator.retrieve().isFailure()) {
-        msg(MSG::FATAL) << "Could not get " << m_updator << endmsg; 
+        msg(MSG::FATAL) << "Could not get " << m_updator << endmsg;
         return StatusCode::FAILURE;
       }
       ATH_MSG_INFO("Retrieved " << m_pullCalculator);
@@ -78,14 +78,14 @@ namespace Trk {
   {
     return StatusCode::SUCCESS;
   }
-  
+
   //________________________________________________________________________
   double AlignResidualCalculator::setResiduals(AlignTSOSCollection* atsosColl,const Track* track)
   {
     bool useNewTrack = (track!=0);
     return setResiduals(atsosColl->begin(), atsosColl->end(), track, useNewTrack);
   }
-  
+
   //________________________________________________________________________
   double AlignResidualCalculator::setResiduals(AlignTrack* alignTrack,const Track* track)
   {
@@ -93,11 +93,11 @@ namespace Trk {
     const Track* newTrack = (useNewTrack) ? track : alignTrack;
     return setResiduals(alignTrack->firstAtsos(), alignTrack->lastAtsos(), newTrack, useNewTrack);
   }
-  
+
   //________________________________________________________________________
   double AlignResidualCalculator::setResiduals(AlignTSOSCollection::iterator firstAtsos,
                                                AlignTSOSCollection::iterator lastAtsos,
-                                               const Track* track, bool newTrack) 
+                                               const Track* track, bool newTrack)
   {
     m_nDoF=0;
     m_matchedTSOS.clear();
@@ -108,7 +108,7 @@ namespace Trk {
       m_chi2ForMeasType[i]=0.;
 
     //ATH_MSG_DEBUG("in setResiduals with newTrack="<<newTrack);
-    
+
     if (!track&&newTrack) { ATH_MSG_ERROR("no track!"); return 0.; }
 
     int    ntsos(0);
@@ -125,11 +125,11 @@ namespace Trk {
       const MaterialEffectsBase*         meb        = tsos->materialEffectsOnTrack();
       const Trk::MaterialEffectsOnTrack* meot       = dynamic_cast<const MaterialEffectsOnTrack*>(meb);
       //const ScatteringAngles*            scatterer = (meot) ? meot->scatteringAngles() : 0;
-      
+
       // if scatterer, add scattering parameters
       //int nScattererDim=0;
-      if (m_includeScatterers && meb && meot) { 
-        //nScattererDim = (scatterer) ? 2 : 1;      
+      if (m_includeScatterers && meb && meot) {
+        //nScattererDim = (scatterer) ? 2 : 1;
         accumulateScattering(tsos);
       }
       //ATH_MSG_DEBUG("scattererDim="<<nScattererDim);
@@ -142,23 +142,23 @@ namespace Trk {
       m_chi2ForMeasType[imeasType] += dchi2;
       ATH_MSG_DEBUG("adding "<<dchi2<<", m_chi2ForMeasType["<<imeasType<<"]="<<m_chi2ForMeasType[imeasType]);
     }
-    
-    return chi2;///(double)m_nDoF;  
+
+    return chi2;///(double)m_nDoF;
   }
-  
+
   //_______________________________________________________________________
   double
   AlignResidualCalculator::setResidualsOnATSOS(AlignTSOS * atsos, const TrackStateOnSurface * tsos)
   {
     // this method does the following:
-    // 1. gets residuals (measurement and scattering dimensions), 
-    // 2. adds to AlignTSOS, and 
-    // 3. returns contribution to chi2 from this ATSOS 
- 
+    // 1. gets residuals (measurement and scattering dimensions),
+    // 2. adds to AlignTSOS, and
+    // 3. returns contribution to chi2 from this ATSOS
+
     ATH_MSG_DEBUG("in setResidualsOnATSOS");
 
     atsos->clearResiduals();
- 
+
     double dchi2(0.);
 
     // scattering residual(s) and/or energy loss first
@@ -168,13 +168,13 @@ namespace Trk {
       // when using unbiased residuals including scatterers doesn't make sense
       if(m_resType == Unbiased)
         ATH_MSG_WARNING("When using unbiased residuals including scatterers doesn't make sense!");
-      
+
       const MaterialEffectsBase*         meb        = tsos->materialEffectsOnTrack();
       const Trk::MaterialEffectsOnTrack* meot       = dynamic_cast<const MaterialEffectsOnTrack*>(meb);
       const ScatteringAngles*            scatterer  = (meot) ? meot->scatteringAngles() : 0;
-      
+
       int nscatparam=0;
-      if (meb && meot) 
+      if (meb && meot)
         nscatparam = (scatterer) ? 2 : 1;
 
       for (int iparam=0;iparam<nscatparam;iparam++) {
@@ -200,13 +200,13 @@ namespace Trk {
               errSq  *= errSq;
             }
           }
-          else{ 
-            ATH_MSG_WARNING("scatterer has no TrackParameters!"); 
+          else{
+            ATH_MSG_WARNING("scatterer has no TrackParameters!");
           }
 
           Residual res(HitOnly,Scatterer,ParamDefs(iparam),residual,errSq);
-          atsos->addResidual(res); 
-    
+          atsos->addResidual(res);
+
           dchi2 += res.residualNorm()*res.residualNorm();
           m_nDoF++;
         }
@@ -227,7 +227,7 @@ namespace Trk {
           errSq*=errSq;
 
           Residual res(HitOnly,EnergyDeposit,ParamDefs(0),residual,errSq);
-          atsos->addResidual(res);  
+          atsos->addResidual(res);
           dchi2 += res.residualNorm()*res.residualNorm();
           m_nDoF++;
         }
@@ -236,7 +236,7 @@ namespace Trk {
 
     // residuals from measurement
     if (atsos->rio() || atsos->crio()) {
-      
+
       int nparams = (atsos->measType()==TrackState::Pixel) ? 2 : 1;
       for (int iparam=0;iparam<nparams;iparam++) {
 
@@ -255,10 +255,10 @@ namespace Trk {
 
             if (m_resType == Unbiased) {
               // Get unbiased state
-              const Trk::TrackParameters * unbiasedTrackPars = 
+              const Trk::TrackParameters * unbiasedTrackPars =
                   m_updator->removeFromState(*trackPars,
                                              mesb->localParameters(),
-                                             mesb->localCovariance());
+                                             mesb->localCovariance()).release();
               if (unbiasedTrackPars) {
                 trackPars = unbiasedTrackPars;
                 // AlignTSOS desctructor takes care of deleting unbiasedTrackPars
@@ -303,11 +303,11 @@ namespace Trk {
         m_nDoF++;
       }
     }
-    return dchi2; 
+    return dchi2;
   }
 
   //________________________________________________________________________
-  void AlignResidualCalculator::accumulateScattering(const TrackStateOnSurface* tsos) 
+  void AlignResidualCalculator::accumulateScattering(const TrackStateOnSurface* tsos)
   {
 
     const MaterialEffectsOnTrack* meot       = dynamic_cast<const MaterialEffectsOnTrack*>(tsos->materialEffectsOnTrack());
@@ -322,12 +322,12 @@ namespace Trk {
     if (!dynamic_cast<const CaloEnergy*>(energyLoss)) {
       m_previousQOverP     = m_qOverP;
     }
-    
+
     return;
   }
-  
+
   //________________________________________________________________________
-  const TrackStateOnSurface* 
+  const TrackStateOnSurface*
   AlignResidualCalculator::getMatchingTSOS(const AlignTSOS* atsos, const Track* track) const
   {
     const TrackStateOnSurface* tsos(0);
@@ -341,7 +341,7 @@ namespace Trk {
         const MeasurementBase* mesb = itTsos->measurementOnTrack();
         const RIO_OnTrack* rio = dynamic_cast<const RIO_OnTrack*>(mesb);
         const CompetingRIOsOnTrack* crio = dynamic_cast<const CompetingRIOsOnTrack*>(mesb);
-        
+
         if (!rio && crio) {
           rio = &(crio->rioOnTrack(0));
         }
@@ -350,7 +350,7 @@ namespace Trk {
           ATH_MSG_DEBUG("matched TSOS with identifier: "<<rio->identify());
           tsos=itTsos;
           break;
-        } 
+        }
       }
       ATH_MSG_DEBUG("done with measurement");
     }
@@ -358,7 +358,7 @@ namespace Trk {
 
       const Amg::Vector3D origPosition=atsos->trackParameters()->position();
       double distance2(1.e27);
-      
+
       // loop over track and get closest TSOS
       for (const TrackStateOnSurface* itTsos : *track->trackStateOnSurfaces()) {
         if (itTsos->type(TrackStateOnSurface::Outlier))
@@ -372,13 +372,13 @@ namespace Trk {
           distance2=newdist2;
           tsos=itTsos;
         }
-      }      
+      }
       ATH_MSG_DEBUG("done with scatterer");
-    } 
-    if (!tsos) return 0;   
-    const Amg::Vector3D addPosition=tsos->trackParameters()->position();    
+    }
+    if (!tsos) return 0;
+    const Amg::Vector3D addPosition=tsos->trackParameters()->position();
     if (std::find(m_matchedTSOS.begin(),m_matchedTSOS.end(),tsos)==m_matchedTSOS.end()) {
-      m_matchedTSOS.push_back(tsos);       
+      m_matchedTSOS.push_back(tsos);
       ATH_MSG_DEBUG("added tsos with pos: "<<addPosition);
     }
     else {
@@ -387,5 +387,5 @@ namespace Trk {
     }
     return tsos;
   }
-    
+
 } // end namespace
diff --git a/Tracking/TrkTools/TrkMeasurementUpdator_xk/TrkMeasurementUpdator_xk/KalmanUpdator_xk.h b/Tracking/TrkTools/TrkMeasurementUpdator_xk/TrkMeasurementUpdator_xk/KalmanUpdator_xk.h
index d6e5427c6439..44ac2b8bc40e 100755
--- a/Tracking/TrkTools/TrkMeasurementUpdator_xk/TrkMeasurementUpdator_xk/KalmanUpdator_xk.h
+++ b/Tracking/TrkTools/TrkMeasurementUpdator_xk/TrkMeasurementUpdator_xk/KalmanUpdator_xk.h
@@ -21,11 +21,11 @@
 namespace Trk {
 
   /**
-     @class KalmanUpdator_xk 
-  
+     @class KalmanUpdator_xk
+
      Trk::KalmanUpdator_xk is a set of tools for adding and removing
      measurements to/from the state vector using xKalman algorithms
-     @author Igor.Gavrilenko@cern.ch     
+     @author Igor.Gavrilenko@cern.ch
   */
 
   class LocalParameters       ;
@@ -34,13 +34,13 @@ namespace Trk {
   class KalmanUpdator_xk : virtual public IUpdator,
     virtual public IPatternParametersUpdator,
     public AthAlgTool
-    { 
+    {
       ///////////////////////////////////////////////////////////////////
       // Public methods:
       ///////////////////////////////////////////////////////////////////
- 
-    public:	
-      
+
+    public:
+
       ///////////////////////////////////////////////////////////////////
       // Standard Athena tool methods
       ///////////////////////////////////////////////////////////////////
@@ -54,28 +54,28 @@ namespace Trk {
       // /////////////////////////////////////////////////////////////////
       // Main public methods for kalman filter updator tool
       // /////////////////////////////////////////////////////////////////
- 
+
       // /////////////////////////////////////////////////////////////////
       // Add and remove without Xi2 calculation
       // /////////////////////////////////////////////////////////////////
-    
+
       //! add without chi2 calculation, PRD-level, EDM track parameters
-      virtual TrackParameters* addToState 
+      virtual std::unique_ptr<TrackParameters> addToState
         (const TrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&) const override final;
       //! add without chi2 calculation, ROT-level, EDM track parameters
-      virtual TrackParameters* addToState 
+      virtual std::unique_ptr<TrackParameters> addToState
         (const TrackParameters&,const LocalParameters&,const Amg::MatrixX&) const override final;
 
       //! add without chi2 calculation, PRD-level, pattern track parameters
-      virtual bool                   addToState 
+      virtual bool                   addToState
         (PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
          PatternTrackParameters&) const override final;
       //! add without chi2 calculation, ROT-level, pattern track parameters
-      virtual bool                   addToState 
+      virtual bool                   addToState
         (PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,
          PatternTrackParameters&) const override final;
       //! add without chi2 calculation, PRD-level, pattern track parameters, specifically 1D
-      virtual bool                   addToStateOneDimension 
+      virtual bool                   addToStateOneDimension
         (PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
          PatternTrackParameters&) const override final;
 
@@ -83,15 +83,15 @@ namespace Trk {
       // Remove without Xi2 calculation
       ///////////////////////////////////////////////////////////////////
 
-      virtual TrackParameters* removeFromState 
+      virtual std::unique_ptr<TrackParameters> removeFromState
 	(const TrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&) const override final;
-      virtual TrackParameters* removeFromState 
+      virtual std::unique_ptr<TrackParameters> removeFromState
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&) const override final;
 
-      virtual bool removeFromState 
+      virtual bool removeFromState
 	(PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 PatternTrackParameters&) const override final;
-      virtual bool removeFromState 
+      virtual bool removeFromState
 	(PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 PatternTrackParameters&) const override final;
 
@@ -99,23 +99,23 @@ namespace Trk {
       // Add  with Xi2 calculation
       ///////////////////////////////////////////////////////////////////
 
-      virtual TrackParameters* addToState 
+      virtual std::unique_ptr<TrackParameters> addToState
 	(const TrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 FitQualityOnSurface*&) const override final;
-      virtual TrackParameters* addToState 
+      virtual std::unique_ptr<TrackParameters> addToState
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 FitQualityOnSurface*&) const override final;
-      virtual std::pair<AmgVector(5),AmgSymMatrix(5)>* updateParameterDifference 
-	(const AmgVector(5)&,const AmgSymMatrix(5)&, const Amg::VectorX&, const Amg::MatrixX&, 
-	 const int&,Trk::FitQualityOnSurface*&,bool) const override final; 
-  
-      virtual bool addToState 
+      virtual std::pair<AmgVector(5),AmgSymMatrix(5)>* updateParameterDifference
+	(const AmgVector(5)&,const AmgSymMatrix(5)&, const Amg::VectorX&, const Amg::MatrixX&,
+	 const int&,Trk::FitQualityOnSurface*&,bool) const override final;
+
+      virtual bool addToState
 	(PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 PatternTrackParameters&,double&,int&) const override final;
-      virtual bool addToState 
+      virtual bool addToState
 	(PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 PatternTrackParameters&,double&,int&) const override final;
-      virtual bool                   addToStateOneDimension 
+      virtual bool                   addToStateOneDimension
 	(PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 PatternTrackParameters&,double&,int&) const override final;
 
@@ -123,17 +123,17 @@ namespace Trk {
       // Remove with Xi2 calculation
       ///////////////////////////////////////////////////////////////////
 
-      virtual TrackParameters* removeFromState 
+      virtual std::unique_ptr<TrackParameters> removeFromState
 	(const TrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 FitQualityOnSurface*&) const override final;
-      virtual TrackParameters* removeFromState 
+      virtual std::unique_ptr<TrackParameters> removeFromState
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 FitQualityOnSurface*&) const override final;
 
-      virtual bool removeFromState 
+      virtual bool removeFromState
 	(PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,
 	 PatternTrackParameters&,double&,int&) const override final;
-      virtual bool removeFromState 
+      virtual bool removeFromState
 	(PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 PatternTrackParameters&,double&,int&) const override;
 
@@ -141,43 +141,43 @@ namespace Trk {
       // Combine two state with or without Xi2 calculation
       ///////////////////////////////////////////////////////////////////
 
-      virtual TrackParameters* combineStates   
+      virtual std::unique_ptr<TrackParameters> combineStates
 	(const TrackParameters&, const TrackParameters&) const override final;
-      virtual TrackParameters* combineStates   
-	(const TrackParameters&, const TrackParameters&, 
+      virtual std::unique_ptr<TrackParameters> combineStates
+	(const TrackParameters&, const TrackParameters&,
 	 FitQualityOnSurface*&) const override final;
 
-      virtual bool combineStates   
+      virtual bool combineStates
 	(PatternTrackParameters&,PatternTrackParameters&,PatternTrackParameters&) const override final;
-      virtual bool combineStates   
+      virtual bool combineStates
 	(PatternTrackParameters&,PatternTrackParameters&,PatternTrackParameters&,
 	 double&) const override final;
 
       ///////////////////////////////////////////////////////////////////
       // Xi2 calculation
       ///////////////////////////////////////////////////////////////////
-      
-      virtual const FitQualityOnSurface* predictedStateFitQuality  
+
+      virtual const FitQualityOnSurface* predictedStateFitQuality
 	(const TrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&) const override final;
-      virtual const FitQualityOnSurface* predictedStateFitQuality  
+      virtual const FitQualityOnSurface* predictedStateFitQuality
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&) const override final;
-      virtual const FitQualityOnSurface* fullStateFitQuality 
+      virtual const FitQualityOnSurface* fullStateFitQuality
 	(const TrackParameters&,const Amg::Vector2D&,  const Amg::MatrixX&) const override final;
-      virtual const FitQualityOnSurface* fullStateFitQuality 
+      virtual const FitQualityOnSurface* fullStateFitQuality
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&) const override final;
       virtual const FitQualityOnSurface*  predictedStateFitQuality
 	(const TrackParameters&,const TrackParameters&) const override final;
 
-      virtual bool predictedStateFitQuality  
-	(const PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,int&,double&) 
+      virtual bool predictedStateFitQuality
+	(const PatternTrackParameters&,const Amg::Vector2D&  ,const Amg::MatrixX&,int&,double&)
 	const override final;
-      virtual bool predictedStateFitQuality  
-	(const PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,int&,double&) 
+      virtual bool predictedStateFitQuality
+	(const PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,int&,double&)
 	const override final;
-      virtual bool fullStateFitQuality 
+      virtual bool fullStateFitQuality
 	(const PatternTrackParameters&,const Amg::Vector2D&,  const Amg::MatrixX&,int&,double&)
 	const override final;
-      virtual bool fullStateFitQuality 
+      virtual bool fullStateFitQuality
 	(const PatternTrackParameters&,const LocalParameters&,const Amg::MatrixX&,int&,double&)
 	const override final;
       virtual bool  predictedStateFitQuality
@@ -185,13 +185,13 @@ namespace Trk {
 
       ///////////////////////////////////////////////////////////////////
       // let the client tools know how the assumptions on the initial
-      // precision for non-measured track parameters are configured 
+      // precision for non-measured track parameters are configured
       ///////////////////////////////////////////////////////////////////
-      
+
       virtual std::vector<double> initialErrors() const override final;
 
     protected:
- 
+
       ///////////////////////////////////////////////////////////////////
       // Protected methods
       ///////////////////////////////////////////////////////////////////
@@ -199,12 +199,12 @@ namespace Trk {
       ///////////////////////////////////////////////////////////////////
       // Updators
       ///////////////////////////////////////////////////////////////////
-      
-      TrackParameters* update 
+
+      std::unique_ptr<TrackParameters> update
 	(const TrackParameters&,const Amg::Vector2D&,const Amg::MatrixX&,
 	 FitQualityOnSurface*&,int,bool) const;
 
-      TrackParameters* update 
+      std::unique_ptr<TrackParameters> update
 	(const TrackParameters&,const LocalParameters&,const Amg::MatrixX&,
 	 FitQualityOnSurface*&,int,bool) const;
 
@@ -223,8 +223,8 @@ namespace Trk {
       ///////////////////////////////////////////////////////////////////
       // Xi2 calculation
       ///////////////////////////////////////////////////////////////////
-      
-      bool predictedStateFitQuality  
+
+      bool predictedStateFitQuality
 	(const double*,const Amg::Vector2D&,const Amg::MatrixX&,int&,double&) const;
 
       bool fullStateFitQuality
@@ -233,7 +233,7 @@ namespace Trk {
       ///////////////////////////////////////////////////////////////////
       // Converters
       ///////////////////////////////////////////////////////////////////
- 
+
       bool trackParametersToUpdator
 	(const        TrackParameters&,double*,double*) const;
 
@@ -242,14 +242,14 @@ namespace Trk {
 
       bool localParametersToUpdator
 	(const LocalParameters&,const Amg::MatrixX&,int&,int&,double*,double*) const;
-      
-     TrackParameters* updatorToTrackParameters
-	(const TrackParameters&,double*,double*) const; 
+
+    std::unique_ptr<TrackParameters> updatorToTrackParameters
+	(const TrackParameters&,double*,double*) const;
 
       ///////////////////////////////////////////////////////////////////
       // Update no measured track parameters
       ///////////////////////////////////////////////////////////////////
-      
+
       bool updateNoMeasuredWithOneDim
 	(double*,double*,double*,double*) const;
 
diff --git a/Tracking/TrkTools/TrkMeasurementUpdator_xk/src/KalmanUpdator_xk.cxx b/Tracking/TrkTools/TrkMeasurementUpdator_xk/src/KalmanUpdator_xk.cxx
index abbb52f25c02..a66c49a9d559 100755
--- a/Tracking/TrkTools/TrkMeasurementUpdator_xk/src/KalmanUpdator_xk.cxx
+++ b/Tracking/TrkTools/TrkMeasurementUpdator_xk/src/KalmanUpdator_xk.cxx
@@ -40,7 +40,7 @@ Trk::KalmanUpdator_xk::KalmanUpdator_xk
 }
 
 ///////////////////////////////////////////////////////////////////
-// Destructor  
+// Destructor
 ///////////////////////////////////////////////////////////////////
 
 Trk::KalmanUpdator_xk::~KalmanUpdator_xk()
@@ -58,7 +58,7 @@ StatusCode Trk::KalmanUpdator_xk::initialize()
   msg(MSG::INFO) << "initialize() successful in " << name() << endmsg;
 
   if( m_cov0.size()!=5) {
-    
+
       m_cov0.erase(m_cov0.begin(),m_cov0.end());
       m_cov0.push_back(  10.);
       m_cov0.push_back(  10.);
@@ -81,32 +81,32 @@ StatusCode Trk::KalmanUpdator_xk::finalize()
 ///////////////////////////////////////////////////////////////////
 // Add local position together with erro matrix  without Xi2 calculation
 ///////////////////////////////////////////////////////////////////
-    
-Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState 
+
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::addToState
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E) const
 {
-  Trk::FitQualityOnSurface* Q=nullptr; 
+  Trk::FitQualityOnSurface* Q=nullptr;
   return update(T,P,E,Q, 1,false);
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToState 
+bool                        Trk::KalmanUpdator_xk::addToState
 (Trk::PatternTrackParameters& T,
  const Amg::Vector2D        & P,
  const Amg::MatrixX         & E,
  Trk::PatternTrackParameters& Ta) const
 {
-  int    n ; 
+  int    n ;
   double x2;
   return update(T,P,E, 1,false,Ta,x2,n);
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToStateOneDimension  
+bool                        Trk::KalmanUpdator_xk::addToStateOneDimension
 (Trk::PatternTrackParameters& T,
  const Amg::Vector2D        & P,
  const Amg::MatrixX         & E,
@@ -120,24 +120,24 @@ bool                        Trk::KalmanUpdator_xk::addToStateOneDimension
 // Remove local position together with erro matrix  without Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::removeFromState
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E) const
 {
-  Trk::FitQualityOnSurface* Q=nullptr; 
+  Trk::FitQualityOnSurface* Q=nullptr;
   return update(T,P,E,Q,-1,false);
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::removeFromState 
+bool                        Trk::KalmanUpdator_xk::removeFromState
 (Trk::PatternTrackParameters& T,
  const Amg::Vector2D        & P,
  const Amg::MatrixX         & E,
  Trk::PatternTrackParameters& Ta) const
 {
-  int    n ; 
+  int    n ;
   double x2;
   return update(T,P,E,-1,false,Ta,x2,n);
 }
@@ -146,24 +146,24 @@ bool                        Trk::KalmanUpdator_xk::removeFromState
 // Add local parameters together with error matrix  without Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::addToState
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
  const Amg::MatrixX        & E) const
 {
-  Trk::FitQualityOnSurface* Q=nullptr; 
+  Trk::FitQualityOnSurface* Q=nullptr;
   return update(T,P,E,Q, 1,false);
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToState 
+bool                        Trk::KalmanUpdator_xk::addToState
 (Trk::PatternTrackParameters& T,
  const LocalParameters      & P,
  const Amg::MatrixX         & E,
  Trk::PatternTrackParameters& Ta) const
 {
-  int    n ; 
+  int    n ;
   double x2;
   return update(T,P,E, 1,false,Ta,x2,n);
 }
@@ -172,24 +172,24 @@ bool                        Trk::KalmanUpdator_xk::addToState
 // Remove local parameters together with error matrix  without Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::removeFromState
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
  const Amg::MatrixX        & E) const
 {
-  Trk::FitQualityOnSurface* Q=nullptr; 
+  Trk::FitQualityOnSurface* Q=nullptr;
   return update(T,P,E,Q,-1,false);
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool                       Trk::KalmanUpdator_xk::removeFromState 
+bool                       Trk::KalmanUpdator_xk::removeFromState
 (Trk::PatternTrackParameters& T,
  const LocalParameters      & P,
  const Amg::MatrixX         & E,
  Trk::PatternTrackParameters& Ta) const
 {
-  int    n ; 
+  int    n ;
   double x2;
   return update(T,P,E,-1,false,Ta,x2,n);
 }
@@ -198,7 +198,7 @@ bool                       Trk::KalmanUpdator_xk::removeFromState
 // Add local position together with error matrix  with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::addToState
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E,
@@ -209,7 +209,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToState 
+bool                        Trk::KalmanUpdator_xk::addToState
 (Trk::PatternTrackParameters& T ,
  const Amg::Vector2D        & P ,
  const Amg::MatrixX         & E ,
@@ -222,7 +222,7 @@ bool                        Trk::KalmanUpdator_xk::addToState
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToStateOneDimension  
+bool                        Trk::KalmanUpdator_xk::addToStateOneDimension
 (Trk::PatternTrackParameters& T ,
  const Amg::Vector2D        & P ,
  const Amg::MatrixX         & E ,
@@ -239,7 +239,7 @@ bool                        Trk::KalmanUpdator_xk::addToStateOneDimension
 // Remove local position together with error matrix  with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::removeFromState
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E,
@@ -250,7 +250,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::removeFromState 
+bool                        Trk::KalmanUpdator_xk::removeFromState
 (Trk::PatternTrackParameters& T ,
  const Amg::Vector2D        & P ,
  const Amg::MatrixX         & E ,
@@ -265,7 +265,7 @@ bool                        Trk::KalmanUpdator_xk::removeFromState
 // Add local parameters together with error matrix  with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::addToState
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
  const Amg::MatrixX        & E,
@@ -278,11 +278,11 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::addToState
 // Add local parameters together with error matrix  with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-std::pair<AmgVector(5),AmgSymMatrix(5)>* Trk::KalmanUpdator_xk::updateParameterDifference 
+std::pair<AmgVector(5),AmgSymMatrix(5)>* Trk::KalmanUpdator_xk::updateParameterDifference
 (const AmgVector(5)       & T ,
- const AmgSymMatrix(5)    & Et, 
- const Amg::VectorX       & P , 
- const Amg::MatrixX       & Ep, 
+ const AmgSymMatrix(5)    & Et,
+ const Amg::VectorX       & P ,
+ const Amg::MatrixX       & Ep,
  const int                & K ,
  Trk::FitQualityOnSurface*& Q ,
  bool                       X) const
@@ -295,7 +295,7 @@ std::pair<AmgVector(5),AmgSymMatrix(5)>* Trk::KalmanUpdator_xk::updateParameterD
   double m[5];
   double mv[15];
 
-  m [ 0]=P (0  ); 
+  m [ 0]=P (0  );
   mv[ 0]=Ep(0,0);
 
   if(n>1) {
@@ -323,24 +323,24 @@ std::pair<AmgVector(5),AmgSymMatrix(5)>* Trk::KalmanUpdator_xk::updateParameterD
 		   Et(2,0),Et(2,1),Et(2,2),
 		   Et(3,0),Et(3,1),Et(3,2),Et(3,3),
 		   Et(4,0),Et(4,1),Et(4,2),Et(4,3),Et(4,4)};
-  
+
   bool update = false;
   double x2;
   if     (n==2 && K==3) {
     update = updateWithTwoDim(1,X,m,mv,p,pv,x2);
-    if(update && X) Q = new Trk::FitQualityOnSurface(x2,2); 
+    if(update && X) Q = new Trk::FitQualityOnSurface(x2,2);
   }
   else if(n==1 && K==1) {
     update = updateWithOneDim(1,X,m,mv,p,pv,x2);
-    if(update && X) Q = new Trk::FitQualityOnSurface(x2,1); 
+    if(update && X) Q = new Trk::FitQualityOnSurface(x2,1);
   }
   else                  {
     update = updateWithAnyDim(1,X,m,mv,p,pv,x2,n,K);
-    if(update && X) Q = new Trk::FitQualityOnSurface(x2,n); 
+    if(update && X) Q = new Trk::FitQualityOnSurface(x2,n);
   }
   if(!update) return nullptr;
 
-  testAngles(p,pv); 
+  testAngles(p,pv);
 
   AmgVector(5)    nT ; nT <<p[0],p[1],p[2],p[3],p[4];
   AmgSymMatrix(5) nEt; nEt<<
@@ -351,13 +351,13 @@ std::pair<AmgVector(5),AmgSymMatrix(5)>* Trk::KalmanUpdator_xk::updateParameterD
 			 pv[10],pv[11],pv[12],pv[13],pv[14];
 
   return new std::pair<AmgVector(5),AmgSymMatrix(5)>(std::make_pair(nT,nEt));
-} 
+}
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::addToState 
+bool                        Trk::KalmanUpdator_xk::addToState
 (Trk::PatternTrackParameters& T ,
- const Trk::LocalParameters & P , 
+ const Trk::LocalParameters & P ,
  const Amg::MatrixX         & E ,
  Trk::PatternTrackParameters& Ta,
  double                     & Q ,
@@ -370,7 +370,7 @@ bool                        Trk::KalmanUpdator_xk::addToState
 // Remove local parameters together with error matrix  with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::removeFromState
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
  const Amg::MatrixX        & E,
@@ -381,7 +381,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::removeFromState
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::removeFromState 
+bool                        Trk::KalmanUpdator_xk::removeFromState
 (Trk::PatternTrackParameters& T ,
  const Trk::LocalParameters & P ,
  const Amg::MatrixX         & E ,
@@ -396,7 +396,7 @@ bool                        Trk::KalmanUpdator_xk::removeFromState
 // Combine two state without Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::combineStates   
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::combineStates
 (const Trk::TrackParameters& T1, const Trk::TrackParameters& T2) const
 {
   double M[5];
@@ -416,7 +416,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::combineStates
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::combineStates 
+bool                        Trk::KalmanUpdator_xk::combineStates
 (Trk::PatternTrackParameters& T1,
  Trk::PatternTrackParameters& T2,
  Trk::PatternTrackParameters& T3) const
@@ -449,7 +449,7 @@ bool                        Trk::KalmanUpdator_xk::combineStates
 // Combine two state with Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::combineStates   
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::combineStates
 (const TrackParameters& T1, const TrackParameters& T2,
  FitQualityOnSurface*& Q) const
 {
@@ -471,7 +471,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::combineStates
 
 ///////////////////////////////////////////////////////////////////
 
-bool                        Trk::KalmanUpdator_xk::combineStates 
+bool                        Trk::KalmanUpdator_xk::combineStates
 (Trk::PatternTrackParameters& T1,
  Trk::PatternTrackParameters& T2,
  Trk::PatternTrackParameters& T3,
@@ -504,9 +504,9 @@ bool                        Trk::KalmanUpdator_xk::combineStates
 ///////////////////////////////////////////////////////////////////
 // Xi2 of Local position
 ///////////////////////////////////////////////////////////////////
-      
-const Trk::FitQualityOnSurface* 
-Trk::KalmanUpdator_xk::predictedStateFitQuality 
+
+const Trk::FitQualityOnSurface*
+Trk::KalmanUpdator_xk::predictedStateFitQuality
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E) const
@@ -517,14 +517,14 @@ Trk::KalmanUpdator_xk::predictedStateFitQuality
   double t[5] = {T.parameters()[0],T.parameters()[1],
 		 (*v)(0,0),(*v)(1,0),(*v)(1,1)};
 
-  int N; double x2; 
+  int N; double x2;
   if(predictedStateFitQuality(t,P,E,N,x2)) return new Trk::FitQualityOnSurface(x2,N);
   return nullptr;
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::predictedStateFitQuality 
+bool Trk::KalmanUpdator_xk::predictedStateFitQuality
 (const Trk::PatternTrackParameters& T,
  const Amg::Vector2D              & P,
  const Amg::MatrixX               & E,
@@ -539,14 +539,14 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
   double t[5] = {p[0],p[1],
 		 cov(0, 0),cov(0, 1),cov(1, 1)};
 
-  return predictedStateFitQuality(t,P,E,N,X2); 
+  return predictedStateFitQuality(t,P,E,N,X2);
 }
 
 ///////////////////////////////////////////////////////////////////
 // Xi2 of Local parameters
 ///////////////////////////////////////////////////////////////////
 
-const Trk::FitQualityOnSurface* 
+const Trk::FitQualityOnSurface*
 Trk::KalmanUpdator_xk::predictedStateFitQuality
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
@@ -620,8 +620,8 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
 ///////////////////////////////////////////////////////////////////
 // Xi2 of Local position
 ///////////////////////////////////////////////////////////////////
-      
-const Trk::FitQualityOnSurface* 
+
+const Trk::FitQualityOnSurface*
 Trk::KalmanUpdator_xk::fullStateFitQuality
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
@@ -639,7 +639,7 @@ Trk::KalmanUpdator_xk::fullStateFitQuality
 
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::fullStateFitQuality 
+bool Trk::KalmanUpdator_xk::fullStateFitQuality
 (const Trk::PatternTrackParameters& T,
  const Amg::Vector2D              & P,
  const Amg::MatrixX               & E,
@@ -654,7 +654,7 @@ bool Trk::KalmanUpdator_xk::fullStateFitQuality
   double t[5] = {p[0],p[1],
 		 cov(0, 0),cov(0, 1),cov(1, 1)};
 
-  return fullStateFitQuality(t,P,E,N,X2); 
+  return fullStateFitQuality(t,P,E,N,X2);
 }
 
 ///////////////////////////////////////////////////////////////////
@@ -676,7 +676,7 @@ const Trk::FitQualityOnSurface* Trk::KalmanUpdator_xk::fullStateFitQuality
   int k;
   double m[5];
   double mv[15]; if(!localParametersToUpdator(P,E,n,k,m,mv)) return nullptr;
-  
+
   // Xi2 calculation
   //
   double r[5];
@@ -684,7 +684,7 @@ const Trk::FitQualityOnSurface* Trk::KalmanUpdator_xk::fullStateFitQuality
   int ib = m_key[k];
   int ie=m_key[k+1];
   for(int i=ib; i!=ie; ++i) {w[i-ib] = mv[i-ib]-pv[m_map[i]];}
-  
+
   bool q=true; if(n!=1) q=invert(n,w,w); else w[0]=1./w[0];
 
   if(q) {
@@ -820,7 +820,7 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
 
 ///////////////////////////////////////////////////////////////////
 // let the client tools know how the assumptions on the initial
-// precision for non-measured track parameters are configured 
+// precision for non-measured track parameters are configured
 ///////////////////////////////////////////////////////////////////
 
 std::vector<double> Trk::KalmanUpdator_xk::initialErrors() const
@@ -840,11 +840,11 @@ std::vector<double> Trk::KalmanUpdator_xk::initialErrors() const
 ///////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove local position together with error matrix  
+// Add or remove local position together with error matrix
 // with or witout Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::update 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::update
 (const Trk::TrackParameters& T,
  const Amg::Vector2D       & P,
  const Amg::MatrixX        & E,
@@ -855,7 +855,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::update
   // Measurement information preparation
   //
   double m[2];
-  double mv[3];  
+  double mv[3];
   int  n = E.rows(); if(n<=0) return nullptr;
   m [0]  = P[0];
   mv[0]  = E(0,0);
@@ -875,38 +875,38 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::update
     double x2;
     if     (n==2) {
       update = updateWithTwoDim(O,X,m,mv,p,pv,x2);
-      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,2); 
+      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,2);
     }
     else if(n==1) {
       update = updateWithOneDim(O,X,m,mv,p,pv,x2);
-      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,1); 
+      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,1);
     }
     if(update) {
       testAngles(p,pv); return updatorToTrackParameters(T,p,pv);
-    } 
+    }
     return nullptr;
   }
 
   // For no measured track parameters
   //
   if(O<0) return nullptr;
-  
+
   if     (n==1) {
     update = updateNoMeasuredWithOneDim(m,mv,p,pv);
-    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,1); 
+    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,1);
   }
   else if(n==2) {
     update = updateNoMeasuredWithTwoDim(m,mv,p,pv);
-    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,2); 
+    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,2);
   }
- 
-  if(update) return updatorToTrackParameters(T,p,pv); 
+
+  if(update) return updatorToTrackParameters(T,p,pv);
   return nullptr;
 }
 
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::update 
+bool Trk::KalmanUpdator_xk::update
 (Trk::PatternTrackParameters& T ,
  const Amg::Vector2D        & P ,
  const Amg::MatrixX         & E ,
@@ -919,7 +919,7 @@ bool Trk::KalmanUpdator_xk::update
   // Measurement information preparation
   //
   double m[2];
-  double mv[3];  
+  double mv[3];
   N      = E.rows(); if(N<=0) return false;
   m [0]  = P[0];
   mv[0]  = E(0,0);
@@ -960,7 +960,7 @@ bool Trk::KalmanUpdator_xk::update
 
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::updateOneDimension 
+bool Trk::KalmanUpdator_xk::updateOneDimension
 (Trk::PatternTrackParameters& T ,
  const Amg::Vector2D        & P ,
  const Amg::MatrixX         & E ,
@@ -972,7 +972,7 @@ bool Trk::KalmanUpdator_xk::updateOneDimension
   // Measurement information preparation
   //
   double m[2];
-  double mv[3];  
+  double mv[3];
   int N  = E.rows(); if(N!=2 ) return false;
   m [0]  = P[0];
   m [1]  = P[1];
@@ -1012,11 +1012,11 @@ bool Trk::KalmanUpdator_xk::updateOneDimension
 
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove local parameters together with error matrix  
+// Add or remove local parameters together with error matrix
 // with or witout Xi2 calculation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::update 
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::update
 (const Trk::TrackParameters& T,
  const Trk::LocalParameters& P,
  const Amg::MatrixX        & E,
@@ -1042,15 +1042,15 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::update
     double x2;
     if     (n==2 && k==3) {
       update = updateWithTwoDim(O,X,m,mv,p,pv,x2);
-      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,2); 
+      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,2);
     }
     else if(n==1 && k==1) {
       update = updateWithOneDim(O,X,m,mv,p,pv,x2);
-      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,1); 
+      if(update && X && !Q) Q = new Trk::FitQualityOnSurface(x2,1);
     }
     else                  {
       update = updateWithAnyDim(O,X,m,mv,p,pv,x2,n,k);
-      if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(x2,n); 
+      if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(x2,n);
     }
     if(update) {testAngles(p,pv); return updatorToTrackParameters(T,p,pv);}
     return nullptr;
@@ -1061,15 +1061,15 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::update
   if(O<0) return nullptr;
   if     (n==1 && k==1) {
     update = updateNoMeasuredWithOneDim(m,mv,p,pv);
-    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,1); 
+    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,1);
   }
   else if(n==2 && k==3) {
     update = updateNoMeasuredWithTwoDim(m,mv,p,pv);
-    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,2); 
+    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,2);
   }
   else                 {
     update = updateNoMeasuredWithAnyDim(m,mv,p,pv,k);
-    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,n); 
+    if(update && X && !Q)  Q = new Trk::FitQualityOnSurface(0.,n);
   }
   if(update) return updatorToTrackParameters(T,p,pv);
   return nullptr;
@@ -1077,7 +1077,7 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::update
 
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::update 
+bool Trk::KalmanUpdator_xk::update
 (Trk::PatternTrackParameters& T ,
  const Trk::LocalParameters & P ,
  const Amg::MatrixX         & E ,
@@ -1092,7 +1092,7 @@ bool Trk::KalmanUpdator_xk::update
   int k;
   double m[5];
   double mv[15]; if(!localParametersToUpdator(P,E,N,k,m,mv)) return false;
- 
+
   // Conversion track parameters to updator presentation
   //
   double p[5];
@@ -1125,8 +1125,8 @@ bool Trk::KalmanUpdator_xk::update
 ///////////////////////////////////////////////////////////////////
 // Xi2 of Local position
 ///////////////////////////////////////////////////////////////////
-      
-bool Trk::KalmanUpdator_xk::predictedStateFitQuality 
+
+bool Trk::KalmanUpdator_xk::predictedStateFitQuality
 (const double*             T,
  const Amg::Vector2D     & P,
  const Amg::MatrixX      & E,
@@ -1136,12 +1136,12 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
   // Measurement information preparation
   //
   double m[2];
-  double mv[3]; X2 = 0.;  
+  double mv[3]; X2 = 0.;
   N      = E.rows(); if(N<=0) return false;
   m [0]  = P[0]-T[0];
-  mv[0]  = E(0,0)+T[2];  
+  mv[0]  = E(0,0)+T[2];
   if(N==1) {
-    
+
     if(mv[0]>0.) X2 = m[0]*m[0]/mv[0];
     return true;
   }
@@ -1149,7 +1149,7 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
     m [1]     = P[1]-T[1];
     mv[1]     = E(1,0)+T[3];
     mv[2]     = E(1,1)+T[4];
-    double d  = mv[0]*mv[2]-mv[1]*mv[1]; 
+    double d  = mv[0]*mv[2]-mv[1]*mv[1];
     if(d>0.) X2 = (m[0]*m[0]*mv[2]+m[1]*m[1]*mv[0]-2.*m[0]*m[1]*mv[1])/d;
     return true;
   }
@@ -1159,7 +1159,7 @@ bool Trk::KalmanUpdator_xk::predictedStateFitQuality
 ///////////////////////////////////////////////////////////////////
 // Xi2 of Local position
 ///////////////////////////////////////////////////////////////////
-      
+
 bool Trk::KalmanUpdator_xk::fullStateFitQuality
 (const double*               T,
  const Amg::Vector2D       & P,
@@ -1170,12 +1170,12 @@ bool Trk::KalmanUpdator_xk::fullStateFitQuality
   // Measurement information preparation
   //
   double m[2];
-  double mv[3]; X2 = 0.; 
+  double mv[3]; X2 = 0.;
   N      = E.rows(); if(N<=0) return false;
   m [0]  = P[0]-T[0];
-  mv[0]  = E(0,0)-T[2];  
+  mv[0]  = E(0,0)-T[2];
   if(N==1) {
-    
+
     if(mv[0]>0.) X2 = m[0]*m[0]/mv[0];
     return true;
   }
@@ -1183,7 +1183,7 @@ bool Trk::KalmanUpdator_xk::fullStateFitQuality
     m [1]     = P[1]-T[1];
     mv[1]     = E(1,0)-T[3];
     mv[2]     = E(1,1)-T[4];
-    double d  = mv[0]*mv[2]-mv[1]*mv[1]; 
+    double d  = mv[0]*mv[2]-mv[1]*mv[1];
     if(d>0.) X2 = (m[0]*m[0]*mv[2]+m[1]*m[1]*mv[0]-2.*m[0]*m[1]*mv[1])/d;
     return true;
   }
@@ -1191,7 +1191,7 @@ bool Trk::KalmanUpdator_xk::fullStateFitQuality
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add one dimension information to no measured track parameters 
+// Add one dimension information to no measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1219,7 +1219,7 @@ bool  Trk::KalmanUpdator_xk::updateNoMeasuredWithOneDim
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add two dimension information to no measured track parameters 
+// Add two dimension information to no measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1248,8 +1248,8 @@ bool Trk::KalmanUpdator_xk::updateNoMeasuredWithTwoDim
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add any dimension information (>=1 and <=5)  to no measured 
-// track parameters 
+// Add any dimension information (>=1 and <=5)  to no measured
+// track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 // K is key word
@@ -1260,7 +1260,7 @@ bool  Trk::KalmanUpdator_xk::updateNoMeasuredWithAnyDim
 {
 
   int i=0;
-  int j=0; 
+  int j=0;
   while(K) {if(K&1) P[i]=M[j++]; K>>=1; ++i;} if(i==0) return false;
 
   PV[ 0] = m_cov0[0];
@@ -1285,7 +1285,7 @@ bool  Trk::KalmanUpdator_xk::updateNoMeasuredWithAnyDim
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove one dimension information to measured track parameters 
+// Add or remove one dimension information to measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1310,7 +1310,7 @@ bool  Trk::KalmanUpdator_xk::updateWithOneDim
   double k4 = PV[10]*w0;
 
   if(O<0) {k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4;}
-  
+
   // New parameters
   //
   P[0]+=(k0*r0);
@@ -1321,28 +1321,28 @@ bool  Trk::KalmanUpdator_xk::updateWithOneDim
 
   // New covariance matrix
   //
-  if((PV[14]-= (k4*PV[10]))<=0.) return false; 
+  if((PV[14]-= (k4*PV[10]))<=0.) return false;
       PV[13]-= (k4*PV[ 6]);
       PV[12]-= (k4*PV[ 3]);
       PV[11]-= (k4*PV[ 1]);
       PV[10]-= (k4*PV[ 0]);
-  if((PV[ 9]-= (k3*PV[ 6]))<=0.) return false; 
-      PV[ 8]-= (k3*PV[ 3]); 
-      PV[ 7]-= (k3*PV[ 1]); 
-      PV[ 6]-= (k3*PV[ 0]); 
-  if((PV[ 5]-= (k2*PV[ 3]))<=0.) return false; 
+  if((PV[ 9]-= (k3*PV[ 6]))<=0.) return false;
+      PV[ 8]-= (k3*PV[ 3]);
+      PV[ 7]-= (k3*PV[ 1]);
+      PV[ 6]-= (k3*PV[ 0]);
+  if((PV[ 5]-= (k2*PV[ 3]))<=0.) return false;
       PV[ 4]-= (k2*PV[ 1]);
       PV[ 3]-= (k2*PV[ 0]);
-  if((PV[ 2]-= (k1*PV[ 1]))<=0.) return false; 
+  if((PV[ 2]-= (k1*PV[ 1]))<=0.) return false;
       PV[ 1]-= (k1*PV[ 0]);
-  if((PV[ 0]-= (k0*PV[ 0]))<=0.) return false; 
-  
+  if((PV[ 0]-= (k0*PV[ 0]))<=0.) return false;
+
   if(X) xi2 = r0*r0*w0;
   return true;
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove one dimension information to measured track parameters 
+// Add or remove one dimension information to measured track parameters
 // and check boundary for second parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
@@ -1368,13 +1368,13 @@ bool  Trk::KalmanUpdator_xk::updateWithOneDimWithBoundary
   double k4 = PV[10]*w0;
 
   if(O<0) {k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4;}
-  
+
   // Boundary check
   //
   double P1 = P[1]+k1*r0          ;
   double dP = P1-M[1]             ;
-  double W  = sqrt(MV[2])*1.732051; 
-  
+  double W  = sqrt(MV[2])*1.732051;
+
   if(fabs(dP) <= W) {
 
     P[0]+=(k0*r0);
@@ -1392,25 +1392,25 @@ bool  Trk::KalmanUpdator_xk::updateWithOneDimWithBoundary
 
   // New covariance matrix
   //
-  if((PV[14]-= (k4*PV[10]))<=0.) return false; 
+  if((PV[14]-= (k4*PV[10]))<=0.) return false;
       PV[13]-= (k4*PV[ 6]);
       PV[12]-= (k4*PV[ 3]);
       PV[11]-= (k4*PV[ 1]);
       PV[10]-= (k4*PV[ 0]);
-  if((PV[ 9]-= (k3*PV[ 6]))<=0.) return false; 
-      PV[ 8]-= (k3*PV[ 3]); 
-      PV[ 7]-= (k3*PV[ 1]); 
-      PV[ 6]-= (k3*PV[ 0]); 
-  if((PV[ 5]-= (k2*PV[ 3]))<=0.) return false; 
+  if((PV[ 9]-= (k3*PV[ 6]))<=0.) return false;
+      PV[ 8]-= (k3*PV[ 3]);
+      PV[ 7]-= (k3*PV[ 1]);
+      PV[ 6]-= (k3*PV[ 0]);
+  if((PV[ 5]-= (k2*PV[ 3]))<=0.) return false;
       PV[ 4]-= (k2*PV[ 1]);
       PV[ 3]-= (k2*PV[ 0]);
-  if((PV[ 2]-= (k1*PV[ 1]))<=0.) return false; 
+  if((PV[ 2]-= (k1*PV[ 1]))<=0.) return false;
       PV[ 1]-= (k1*PV[ 0]);
   return (PV[ 0]-= (k0*PV[ 0])) > 0.;
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove two dimension information to measured track parameters 
+// Add or remove two dimension information to measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1434,7 +1434,7 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDim
   // K matrix with (5x2) size
   //
   double k0 = PV[ 0]*w0+PV[ 1]*w1;
-  double k1 = PV[ 0]*w1+PV[ 1]*w2; 
+  double k1 = PV[ 0]*w1+PV[ 1]*w2;
   double k2 = PV[ 1]*w0+PV[ 2]*w1;
   double k3 = PV[ 1]*w1+PV[ 2]*w2;
   double k4 = PV[ 3]*w0+PV[ 4]*w1;
@@ -1445,10 +1445,10 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDim
   double k9 = PV[10]*w1+PV[11]*w2;
 
   if(O<0) {
-    k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4; 
+    k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4;
     k5=-k5; k6=-k6; k7=-k7; k8=-k8; k9=-k9;
   }
-  
+
   // New parameters
   //
   P[0]+=(k0*r0+k1*r1);
@@ -1465,9 +1465,9 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDim
       PV[11]-= (k8*PV[ 1]+k9*PV[ 2]);
       PV[10]-= (k8*PV[ 0]+k9*PV[ 1]);
   if((PV[ 9]-= (k6*PV[ 6]+k7*PV[ 7]))<=0.) return false;
-      PV[ 8]-= (k6*PV[ 3]+k7*PV[ 4]); 
-      PV[ 7]-= (k6*PV[ 1]+k7*PV[ 2]); 
-      PV[ 6]-= (k6*PV[ 0]+k7*PV[ 1]); 
+      PV[ 8]-= (k6*PV[ 3]+k7*PV[ 4]);
+      PV[ 7]-= (k6*PV[ 1]+k7*PV[ 2]);
+      PV[ 6]-= (k6*PV[ 0]+k7*PV[ 1]);
   if((PV[ 5]-= (k4*PV[ 3]+k5*PV[ 4]))<=0.) return false;
       PV[ 4]-= (k4*PV[ 1]+k5*PV[ 2]);
       PV[ 3]-= (k4*PV[ 0]+k5*PV[ 1]);
@@ -1475,13 +1475,13 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDim
   double c1 = (1.-k3)*PV[ 1]-k2*PV[ 0];
   if((PV[ 0]-= (k0*PV[ 0]+k1*PV[ 1]))<=0.) return false;
       PV[ 1] = c1;
-  
+
   if(X) xi2 = (r0*r0*w0+r1*r1*w2+2.*r0*r1*w1);
   return true;
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove two dimension information to measured track parameters 
+// Add or remove two dimension information to measured track parameters
 // without calculation new covariance matrix
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
@@ -1506,7 +1506,7 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDimParameters
   // K matrix with (5x2) size
   //
   double k0 = PV[ 0]*w0+PV[ 1]*w1;
-  double k1 = PV[ 0]*w1+PV[ 1]*w2; 
+  double k1 = PV[ 0]*w1+PV[ 1]*w2;
   double k2 = PV[ 1]*w0+PV[ 2]*w1;
   double k3 = PV[ 1]*w1+PV[ 2]*w2;
   double k4 = PV[ 3]*w0+PV[ 4]*w1;
@@ -1517,10 +1517,10 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDimParameters
   double k9 = PV[10]*w1+PV[11]*w2;
 
   if(O<0) {
-    k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4; 
+    k0=-k0; k1=-k1; k2=-k2; k3=-k3; k4=-k4;
     k5=-k5; k6=-k6; k7=-k7; k8=-k8; k9=-k9;
   }
-  
+
   // New parameters
   //
   P[0]+=(k0*r0+k1*r1);
@@ -1533,7 +1533,7 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDimParameters
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove two dimension information to measured track parameters 
+// Add or remove two dimension information to measured track parameters
 // as one dimension and check boundary for second parameter
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
@@ -1557,35 +1557,35 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDimWithBoundary
   double c   = sqrt(c2)               ;
   double s   = sc/c                   ;
 
-  // New measurement 
+  // New measurement
   //
   double M0 = c*M[0]+s*M[1];
   M [ 1]    = c*M[1]-s*M[0];
   M [ 0]    = M0           ;
   MV[ 0]    = V0           ;
   MV[ 1]    = 0.           ;
-  MV[ 2]    = V1           ; 
-  
+  MV[ 2]    = V1           ;
+
   // Rotate track parameters and covariance matrix
   //
   double P0  = P[0]                     ;
   P [ 0]     = c*P0  +s*P[1]            ;
   P [ 1]     = c*P[1]-s*P0              ;
-  double B   = 2.*sc*PV[ 1]             ;    
+  double B   = 2.*sc*PV[ 1]             ;
   double PV0 = PV[ 0]                   ;
   double PV3 = PV[ 3]                   ;
   double PV6 = PV[ 6]                   ;
   double PV10= PV[10]                   ;
   PV[ 0]     = c2*PV0+s2*PV[ 2]+B       ;
-  PV[ 1]     = sc*(PV[ 2]-PV0)+PV[ 1]*al; 
+  PV[ 1]     = sc*(PV[ 2]-PV0)+PV[ 1]*al;
   PV[ 2]     = s2*PV0+c2*PV[ 2]-B       ;
   PV[ 3]     = c*PV3   +s*PV[ 4]        ;
   PV[ 4]     = c*PV[ 4]-s*PV3           ;
   PV[ 6]     = c*PV6   +s*PV[ 7]        ;
   PV[ 7]     = c*PV[ 7]-s*PV6           ;
   PV[10]     = c*PV10  +s*PV[11]        ;
-  PV[11]     = c*PV[11]-s*PV10          ;  
-  
+  PV[11]     = c*PV[11]-s*PV10          ;
+
   if(!updateWithOneDimWithBoundary(O,X,M,MV,P,PV,xi2)) return false;
 
   // Back rotation new track parameters and covariance matrix
@@ -1595,25 +1595,25 @@ bool  Trk::KalmanUpdator_xk::updateWithTwoDimWithBoundary
   P0         = P[0]                     ;
   P [ 0]     = c*P0  +s*P[1]            ;
   P [ 1]     = c*P[1]-s*P0              ;
-  B          = 2.*sc*PV[ 1]             ;    
+  B          = 2.*sc*PV[ 1]             ;
   PV0        = PV[ 0]                   ;
   PV3        = PV[ 3]                   ;
   PV6        = PV[ 6]                   ;
   PV10       = PV[10]                   ;
   PV[ 0]     = c2*PV0+s2*PV[ 2]+B       ;
-  PV[ 1]     = sc*(PV[ 2]-PV0)+PV[ 1]*al; 
+  PV[ 1]     = sc*(PV[ 2]-PV0)+PV[ 1]*al;
   PV[ 2]     = s2*PV0+c2*PV[ 2]-B       ;
   PV[ 3]     = c*PV3   +s*PV[ 4]        ;
   PV[ 4]     = c*PV[ 4]-s*PV3           ;
   PV[ 6]     = c*PV6   +s*PV[ 7]        ;
   PV[ 7]     = c*PV[ 7]-s*PV6           ;
   PV[10]     = c*PV10  +s*PV[11]        ;
-  PV[11]     = c*PV[11]-s*PV10          ;  
+  PV[11]     = c*PV[11]-s*PV10          ;
   return true;
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add  five dimension information to measured track parameters 
+// Add  five dimension information to measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1624,12 +1624,12 @@ bool  Trk::KalmanUpdator_xk::updateWithFiveDim
   const double pi2 = 2.*M_PI;
   const double pi = M_PI;
 
-  double w[15]={MV[ 0]+PV[ 0],MV[ 1]+PV[ 1],MV[ 2]+PV[ 2], 
-		MV[ 3]+PV[ 3],MV[ 4]+PV[ 4],MV[ 5]+PV[ 5], 
- 		MV[ 6]+PV[ 6],MV[ 7]+PV[ 7],MV[ 8]+PV[ 8], 
- 		MV[ 9]+PV[ 9],MV[10]+PV[10],MV[11]+PV[11], 
+  double w[15]={MV[ 0]+PV[ 0],MV[ 1]+PV[ 1],MV[ 2]+PV[ 2],
+		MV[ 3]+PV[ 3],MV[ 4]+PV[ 4],MV[ 5]+PV[ 5],
+ 		MV[ 6]+PV[ 6],MV[ 7]+PV[ 7],MV[ 8]+PV[ 8],
+ 		MV[ 9]+PV[ 9],MV[10]+PV[10],MV[11]+PV[11],
   		MV[12]+PV[12],MV[13]+PV[13],MV[14]+PV[14]};
-  
+
   if(!invert5(w,w)) return false;
 
   double k00 =(PV[ 0]*w[ 0]+PV[ 1]*w[ 1]+PV[ 3]*w[ 3])+(PV[ 6]*w[ 6]+PV[10]*w[10]);
@@ -1698,17 +1698,17 @@ bool  Trk::KalmanUpdator_xk::updateWithFiveDim
   if((PV[ 0]-=v0 )<=0.) return false;
       PV[ 1]-=v1 ;
   if((PV[ 2]-=v2 )<=0.) return false;
-      PV[ 3]-=v3 ; 
-      PV[ 4]-=v4 ; 
+      PV[ 3]-=v3 ;
+      PV[ 4]-=v4 ;
   if((PV[ 5]-=v5 )<=0.) return false;
-      PV[ 6]-=v6 ; 
-      PV[ 7]-=v7 ; 
-      PV[ 8]-=v8 ; 
+      PV[ 6]-=v6 ;
+      PV[ 7]-=v7 ;
+      PV[ 8]-=v8 ;
   if((PV[ 9]-=v9 )<=0.) return false;
-      PV[10]-=v10; 
-      PV[11]-=v11; 
-      PV[12]-=v12; 
-      PV[13]-=v13; 
+      PV[10]-=v10;
+      PV[11]-=v11;
+      PV[12]-=v12;
+      PV[13]-=v13;
   if((PV[14]-=v14)<=0.) return false;
 
   if(X) xi2 = Xi2(5,r,w);
@@ -1716,7 +1716,7 @@ bool  Trk::KalmanUpdator_xk::updateWithFiveDim
 }
 
 ///////////////////////////////////////////////////////////////////
-// Add or remove any dimension information to measured track parameters 
+// Add or remove any dimension information to measured track parameters
 // M and MV is measuremet           together with covariance
 // P and PV is new track parameters together with covarianace
 ///////////////////////////////////////////////////////////////////
@@ -1732,9 +1732,9 @@ bool Trk::KalmanUpdator_xk::updateWithAnyDim
 
   if(O>0) {s= 1.; for(int i=ib; i!=ie; ++i) {w[i-ib] = MV[i-ib]+PV[m_map[i]];}}
   else    {s=-1.; for(int i=ib; i!=ie; ++i) {w[i-ib] = MV[i-ib]-PV[m_map[i]];}}
-  
+
   if(N==1) w[0] = 1./w[0]; else if(!invert(N,w,w)) return false;
-  double v[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 
+  double v[15]={0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
   for(int i=ib; i!=ie; ++i) {v[m_map[i]] =w[i-ib];}
 
   double k00 =((PV[ 0]*v[ 0]+PV[ 1]*v[ 1]+PV[ 3]*v[ 3])+(PV[ 6]*v[ 6]+PV[10]*v[10]))*s;
@@ -1799,13 +1799,13 @@ bool Trk::KalmanUpdator_xk::updateWithAnyDim
   PV[10]-=v10; PV[11]-=v11; PV[12]-=v12; PV[13]-=v13; PV[14]-=v14;
 
   if(PV[0]<=0.||PV[2]<=0.||PV[5]<=0.||PV[9]<=0.||PV[14]<=0.) return false;
- 
+
   if(X) xi2 = Xi2(5,r,v);
   return true;
 }
 
 ///////////////////////////////////////////////////////////////////
-// Transformation track parameters to updator presentation 
+// Transformation track parameters to updator presentation
 // true if it is measured track parameters
 ///////////////////////////////////////////////////////////////////
 
@@ -1823,15 +1823,15 @@ bool Trk::KalmanUpdator_xk::trackParametersToUpdator
   if(!v) return false;
 
   const AmgSymMatrix(5)& c = *v;
-  V[ 0] = c(0,0); 
+  V[ 0] = c(0,0);
   V[ 1] = c(1,0);
   V[ 2] = c(1,1);
   V[ 3] = c(2,0);
-  V[ 4] = c(2,1); 
+  V[ 4] = c(2,1);
   V[ 5] = c(2,2);
-  V[ 6] = c(3,0); 
+  V[ 6] = c(3,0);
   V[ 7] = c(3,1);
-  V[ 8] = c(3,2); 
+  V[ 8] = c(3,2);
   V[ 9] = c(3,3);
   V[10] = c(4,0);
   V[11] = c(4,1);
@@ -1842,7 +1842,7 @@ bool Trk::KalmanUpdator_xk::trackParametersToUpdator
 }
 
 ///////////////////////////////////////////////////////////////////
-// Transformation track parameters to updator presentation 
+// Transformation track parameters to updator presentation
 // true if it is measured track parameters
 ///////////////////////////////////////////////////////////////////
 
@@ -1857,7 +1857,7 @@ bool Trk::KalmanUpdator_xk::trackParametersToUpdator
   P[3] = par[3];
   P[4] = par[4];
 
-  if(!T.iscovariance()) return false; 
+  if(!T.iscovariance()) return false;
 
   const AmgSymMatrix(5) & cov = *T.covariance();
 
@@ -1881,8 +1881,8 @@ bool Trk::KalmanUpdator_xk::trackParametersToUpdator
 
 ///////////////////////////////////////////////////////////////////
 // Transformation local parameters to updator presentation
-// N - dimension of local parameters,K - key  word 
-// P - parameters, V -covariance 
+// N - dimension of local parameters,K - key  word
+// P - parameters, V -covariance
 ///////////////////////////////////////////////////////////////////
 
 bool  Trk::KalmanUpdator_xk::localParametersToUpdator
@@ -1895,7 +1895,7 @@ bool  Trk::KalmanUpdator_xk::localParametersToUpdator
 
   //const CLHEP::HepVector& H = L;
 
-  P[ 0]=L(0); 
+  P[ 0]=L(0);
   V[ 0]=C(0,0);
 
   if(N>1) {
@@ -1921,9 +1921,9 @@ bool  Trk::KalmanUpdator_xk::localParametersToUpdator
 // Track parameters production from updator presentation
 ///////////////////////////////////////////////////////////////////
 
-Trk::TrackParameters* Trk::KalmanUpdator_xk::updatorToTrackParameters
+std::unique_ptr<Trk::TrackParameters> Trk::KalmanUpdator_xk::updatorToTrackParameters
 (const Trk::TrackParameters& T,double* P,double* V) const
-{  
+{
   AmgSymMatrix(5)* e = new AmgSymMatrix(5);
 
   (*e)<<
@@ -1932,19 +1932,19 @@ Trk::TrackParameters* Trk::KalmanUpdator_xk::updatorToTrackParameters
     V[ 3],V[ 4],V[ 5],V[ 8],V[12],
     V[ 6],V[ 7],V[ 8],V[ 9],V[13],
     V[10],V[11],V[12],V[13],V[14];
-  return T.associatedSurface().createTrackParameters(P[0],P[1],P[2],P[3],P[4],e); 
+  return T.associatedSurface().createUniqueTrackParameters(P[0],P[1],P[2],P[3],P[4],e);
 }
 
 ///////////////////////////////////////////////////////////////////
-// Inversion of a positive definite symmetric matrix 
-// with size (2x2), (3x3), (4x4) and (5x5)                 
+// Inversion of a positive definite symmetric matrix
+// with size (2x2), (3x3), (4x4) and (5x5)
 // Input parameters  : n - size of matrix
-//                     a - the elements of the lower triangle of     
-//                               the matrix to be inverted                 
-// Output parameters : b -  inverted matrix                           
+//                     a - the elements of the lower triangle of
+//                               the matrix to be inverted
+// Output parameters : b -  inverted matrix
 ///////////////////////////////////////////////////////////////////
 
-bool Trk::KalmanUpdator_xk::invert(int n,double* a,double* b) const 
+bool Trk::KalmanUpdator_xk::invert(int n,double* a,double* b) const
 {
   if(n==2) return invert2(a,b);
   if(n==3) return invert3(a,b);
@@ -1954,19 +1954,19 @@ bool Trk::KalmanUpdator_xk::invert(int n,double* a,double* b) const
 }
 
 ///////////////////////////////////////////////////////////////////
-// Inversion of a positive definite symmetric matrix (2x2)                 
-// using Kramer's rule                                                                            
-// Input parameters  : a(0/2) -  the elements of the lower triangle of     
-//                               the matrix to be inverted                 
-//                               0                                         
-//                               1   2                                     
-// Output parameters : b(0/2) -  inverted matrix                           
+// Inversion of a positive definite symmetric matrix (2x2)
+// using Kramer's rule
+// Input parameters  : a(0/2) -  the elements of the lower triangle of
+//                               the matrix to be inverted
+//                               0
+//                               1   2
+// Output parameters : b(0/2) -  inverted matrix
 ///////////////////////////////////////////////////////////////////
 
-bool  Trk::KalmanUpdator_xk::invert2 (double* a,double* b) const 
+bool  Trk::KalmanUpdator_xk::invert2 (double* a,double* b) const
 {
   double d  = a[0]*a[2]-a[1]*a[1]; if(d<=0.) return false; d=1./d;
-  double b0 = a[2]*d; 
+  double b0 = a[2]*d;
   b[1]      =-a[1]*d;
   b[2]      = a[0]*d;
   b[0]      =     b0;
@@ -1974,17 +1974,17 @@ bool  Trk::KalmanUpdator_xk::invert2 (double* a,double* b) const
 }
 
 ///////////////////////////////////////////////////////////////////
-// Inversion of a positive definite symmetric matrix (3x3)                 
-// using Kramer's rule                                                                            
-// Input parameters  : a(0/5) -  the elements of the lower triangle of     
-//                               the matrix to be inverted                 
-//                               0                                         
-//                               1   2                                     
-//                               3   4  5                                  
-// Output parameters : b(0/5) -  inverted matrix                           
+// Inversion of a positive definite symmetric matrix (3x3)
+// using Kramer's rule
+// Input parameters  : a(0/5) -  the elements of the lower triangle of
+//                               the matrix to be inverted
+//                               0
+//                               1   2
+//                               3   4  5
+// Output parameters : b(0/5) -  inverted matrix
 ///////////////////////////////////////////////////////////////////
 
-bool  Trk::KalmanUpdator_xk::invert3(double* a,double* b) const 
+bool  Trk::KalmanUpdator_xk::invert3(double* a,double* b) const
 {
   double b0 = (a[2]*a[5]-a[4]*a[4]);
   double b1 =-(a[1]*a[5]-a[3]*a[4]);
@@ -1992,7 +1992,7 @@ bool  Trk::KalmanUpdator_xk::invert3(double* a,double* b) const
   double b3 = (a[1]*a[4]-a[2]*a[3]);
   double b4 =-(a[0]*a[4]-a[1]*a[3]);
   double b5 = (a[0]*a[2]-a[1]*a[1]);
-  double  d = a[0]*b0+a[1]*b1+a[3]*b3; if(d<=0.) return false; 
+  double  d = a[0]*b0+a[1]*b1+a[3]*b3; if(d<=0.) return false;
   b[0]    = b0*(d=1./d);
   b[1]    = b1*d;
   b[2]    = b2*d;
@@ -2003,15 +2003,15 @@ bool  Trk::KalmanUpdator_xk::invert3(double* a,double* b) const
 }
 
 ///////////////////////////////////////////////////////////////////
-// Inversion of a positive definite symmetric matrix (4x4)       
-// using Kramer's rule 
-// Input parameters  : a(0/9) - the elements of the lower triangle of         
-//                               the matrix to be inverted                     
-//                               0                                             
-//                               1   2                                         
-//                               3   4  5                                      
-//                               6   7  8  9                                   
-// Output parameters : b(0/9) - inverted matrix                               
+// Inversion of a positive definite symmetric matrix (4x4)
+// using Kramer's rule
+// Input parameters  : a(0/9) - the elements of the lower triangle of
+//                               the matrix to be inverted
+//                               0
+//                               1   2
+//                               3   4  5
+//                               6   7  8  9
+// Output parameters : b(0/9) - inverted matrix
 ///////////////////////////////////////////////////////////////////
 
 bool Trk::KalmanUpdator_xk::invert4(double* a,double* b) const
@@ -2030,25 +2030,25 @@ bool Trk::KalmanUpdator_xk::invert4(double* a,double* b) const
   double d11 = a[4]*a[8]-a[5]*a[7];
   double d12 = a[4]*a[9]-a[8]*a[7];
   double d13 = a[5]*a[9]-a[8]*a[8];
-  
+
   // Determinant calculation
   //
-  double c0  = a[2]*d13-a[4]*d12+a[7]*d11; 
+  double c0  = a[2]*d13-a[4]*d12+a[7]*d11;
   double c1  = a[1]*d13-a[4]*d10+a[7]*d09;
   double c2  = a[1]*d12-a[2]*d10+a[7]*d08;
   double c3  = a[1]*d11-a[2]*d09+a[4]*d08;
   double det = a[0]*c0-a[1]*c1+a[3]*c2-a[6]*c3;
-  
+
   if (det <= 0.) return false;
   det = 1./det;
-   
+
   b[2] =  (a[0]*d13-a[3]*d10+a[6]*d09)*det;
   b[4] = -(a[0]*d12-a[1]*d10+a[6]*d08)*det;
   b[5] =  (a[0]*d07-a[1]*d05+a[6]*d03)*det;
   b[7] =  (a[0]*d11-a[1]*d09+a[3]*d08)*det;
   b[8] = -(a[0]*d06-a[1]*d04+a[3]*d03)*det;
   b[9] =  (a[0]*d02-a[1]*d01+a[3]*d00)*det;
-  b[0] =  c0                          *det; 
+  b[0] =  c0                          *det;
   b[1] = -c1                          *det;
   b[3] =  c2                          *det;
   b[6] = -c3                          *det;
@@ -2056,17 +2056,17 @@ bool Trk::KalmanUpdator_xk::invert4(double* a,double* b) const
 }
 
 ///////////////////////////////////////////////////////////////////
-// Inversion of a positive definite symmetric matrix (5x5)                     
-// by a modification of the Gauss-Jordan method                                
-//                                                                             
-// Input parameters  : a(0/14) - the elements of the lower triangle of         
-//                               the matrix to be inverted                     
-//                               0                                             
-//                               1   2                                         
-//                               3   4  5                                      
-//                               6   7  8  9                                   
-//                               10 11 12 13 14                                
-// Output parameters : b(0/14) - inverted matrix                               
+// Inversion of a positive definite symmetric matrix (5x5)
+// by a modification of the Gauss-Jordan method
+//
+// Input parameters  : a(0/14) - the elements of the lower triangle of
+//                               the matrix to be inverted
+//                               0
+//                               1   2
+//                               3   4  5
+//                               6   7  8  9
+//                               10 11 12 13 14
+// Output parameters : b(0/14) - inverted matrix
 ///////////////////////////////////////////////////////////////////
 
 bool Trk::KalmanUpdator_xk::invert5(double* a,double* b) const
@@ -2104,7 +2104,7 @@ bool Trk::KalmanUpdator_xk::invert5(double* a,double* b) const
   b8           = x5+x2*y4;
   b9           = x1+x2*y5;
   x1           = 1./b0;
-  x2           =-b1*x1; 
+  x2           =-b1*x1;
   x3           =-b3*x1;
   x4           = b6*x1;
   x5           = y2*x1;
@@ -2119,7 +2119,7 @@ bool Trk::KalmanUpdator_xk::invert5(double* a,double* b) const
   b8           = y5+y2*x4;
   b9           = y1+y2*x5;
   y1           = 1./b0;
-  y2           =-b1*y1; 
+  y2           =-b1*y1;
   y3           = b3*y1;
   y4           = b6*y1;
   y5           = x2*y1;
@@ -2133,7 +2133,7 @@ bool Trk::KalmanUpdator_xk::invert5(double* a,double* b) const
   b7           = x4+x2*y3;
   b8           = x5+x2*y4;
   b9           = x1+x2*y5;
-  b[14]        = 1./b0;     
+  b[14]        = 1./b0;
   b[10]        = b1*b[14];
   b[11]        = b3*b[14];
   b[12]        = b6*b[14];
@@ -2152,7 +2152,7 @@ bool Trk::KalmanUpdator_xk::invert5(double* a,double* b) const
 }
 
 ///////////////////////////////////////////////////////////////////
-// Xi2 for 2x2, 3x3, 4x4 and 5x5 matrix calculation 
+// Xi2 for 2x2, 3x3, 4x4 and 5x5 matrix calculation
 // R - residial  and W -weight matrix
 ///////////////////////////////////////////////////////////////////
 
@@ -2241,27 +2241,27 @@ double Trk::KalmanUpdator_xk::Xi2for5(double* R,double* W) const
 ///////////////////////////////////////////////////////////////////
 
 int Trk::KalmanUpdator_xk::differenceParLoc
-(int K,double* L,double* T, double* R) const 
+(int K,double* L,double* T, double* R) const
 {
   const double pi2 = 2.*M_PI;
   const double pi = M_PI;
-  
+
   int i = 0;
-  if(K &  1) {R[i]=L[i]-T[0]; ++i;} 
+  if(K &  1) {R[i]=L[i]-T[0]; ++i;}
   if(K &  2) {R[i]=L[i]-T[1]; ++i;}
   if(K &  4) {
-    R[i]=L[i]-T[2]; 
+    R[i]=L[i]-T[2];
     if     (R[i] > pi) R[i] = fmod(R[i]+pi,pi2)-pi;
     else if(R[i] <-pi) R[i] = fmod(R[i]-pi,pi2)+pi;
     ++i;
   }
   if(K &  8) {
-    R[i]=L[i]-T[3]; 
+    R[i]=L[i]-T[3];
     if     (R[i] > pi) R[i] = fmod(R[i]+pi,pi2)-pi;
     else if(R[i] <-pi) R[i] = fmod(R[i]-pi,pi2)+pi;
     ++i;
   }
-  if(K & 16) {R[i]=L[i]-T[4]; ++i;}  
+  if(K & 16) {R[i]=L[i]-T[4]; ++i;}
   return i;
 }
 
@@ -2271,20 +2271,20 @@ int Trk::KalmanUpdator_xk::differenceParLoc
 ///////////////////////////////////////////////////////////////////
 
 void Trk::KalmanUpdator_xk::differenceLocPar
-(int K,double* L,double* T, double* R) const 
+(int K,double* L,double* T, double* R) const
 {
   const double pi2 = 2.*M_PI;
   const double pi = M_PI;
   int i = 0;
   R[0]=0.; if(K &  1) R[0]=L[i++]-T[0];
-  R[1]=0.; if(K &  2) R[1]=L[i++]-T[1]; 
+  R[1]=0.; if(K &  2) R[1]=L[i++]-T[1];
   R[2]=0.; if(K &  4) {
-    R[2]=L[i++]-T[2]; 
+    R[2]=L[i++]-T[2];
     if     (R[2] > pi) R[2] = fmod(R[2]+pi,pi2)-pi;
     else if(R[2] <-pi) R[2] = fmod(R[2]-pi,pi2)+pi;
   }
   R[3]=0.; if(K &  8){
-    R[3]=L[i++]-T[3]; 
+    R[3]=L[i++]-T[3];
     if     (R[3] > pi) R[3] = fmod(R[3]+pi,pi2)-pi;
     else if(R[3] <-pi) R[3] = fmod(R[3]-pi,pi2)+pi;
   }
@@ -2302,7 +2302,7 @@ void Trk::KalmanUpdator_xk::mapKeyProduction()
   for(int K=1; K!= 32; ++K) {
 
     unsigned int I[5]={0,0,0,0,0};
-    unsigned int m=0; 
+    unsigned int m=0;
     for(int i=0; i!=5; ++i) {if((K>>i)&1) I[i]=1;}
 
     for(int i=0; i!=5; ++i) {
@@ -2314,7 +2314,7 @@ void Trk::KalmanUpdator_xk::mapKeyProduction()
 
 /////////////////////////////////////////////////////////////////////////////////
 // Test angles inside boundaries
-// Azimuthal angle p[2] shoud be > -pi and < +pi  
+// Azimuthal angle p[2] shoud be > -pi and < +pi
 // Polar     angle p[3] shoud be >  0  and < +pi
 /////////////////////////////////////////////////////////////////////////////////
 
@@ -2327,14 +2327,14 @@ void Trk::KalmanUpdator_xk::testAngles(double* p,double* v) const
   //
   if     (p[3] > pi) p[3] = fmod(p[3]+pi,pi2)-pi;
   else if(p[3] <-pi) p[3] = fmod(p[3]-pi,pi2)+pi;
-  
+
   if     (p[3] < 0.) {
 
     p[ 3] = -p[ 3];
     p[ 2]+=     pi;
-    v[ 6] = -v[ 6]; 
-    v[ 7] = -v[ 7]; 
-    v[ 8] = -v[ 8]; 
+    v[ 6] = -v[ 6];
+    v[ 7] = -v[ 7];
+    v[ 8] = -v[ 8];
     v[13] = -v[13];
   }
 
-- 
GitLab