diff --git a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderTool.cxx b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderTool.cxx
index 740e1dee82af254ebf30d80d607b2287553b6164..e0cd0a9481a5afd9b3e7ebe829ff855a9a7d4002 100644
--- a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderTool.cxx
+++ b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderTool.cxx
@@ -431,6 +431,7 @@ StatusCode DQTGlobalWZFinderTool::fillHistograms()
 
      std::vector<const xAOD::Electron*> goodelectrons;
      std::vector<const xAOD::Muon*> goodmuonsZ;
+     std::vector<const xAOD::Muon*> goodmuonsTP;
      std::vector<CLHEP::HepLorentzVector> goodmuonsJPsi;
      std::vector<Int_t> goodmuonJPsicharge;
 
@@ -526,47 +527,50 @@ StatusCode DQTGlobalWZFinderTool::fillHistograms()
        }
 	 
 	 
-	 ATH_MSG_DEBUG("Muon accept: " << m_muonSelectionTool->accept(**muonItr));
-	 ATH_MSG_DEBUG("Muon pt: " << (*muonItr)->pt() << " " << m_muonPtCut*GeV);
-	 ATH_MSG_DEBUG("Muon iso: " << m_isolationSelectionTool->accept(**muonItr));
-	 ATH_MSG_DEBUG("Muon d0sig: " << d0sig);
-	 ATH_MSG_DEBUG("Muon Good vtx: " << pVtx);
-	 if (pVtx) 
-	   ATH_MSG_DEBUG("Muon z0sinth: " << fabs((muTrk->z0()+muTrk->vz()-pVtx->z())*std::sin(muTrk->theta())) << " " << 0.5*mm);
-	 ATH_MSG_DEBUG("Muon isBad: " << isBad);
+	   ATH_MSG_DEBUG("Muon accept: " << m_muonSelectionTool->accept(**muonItr));
+	   ATH_MSG_DEBUG("Muon pt: " << (*muonItr)->pt() << " " << m_muonPtCut*GeV);
+	   ATH_MSG_DEBUG("Muon iso: " << m_isolationSelectionTool->accept(**muonItr));
+	   ATH_MSG_DEBUG("Muon d0sig: " << d0sig);
+	   ATH_MSG_DEBUG("Muon Good vtx: " << pVtx);
+	   if (pVtx) ATH_MSG_DEBUG("Muon z0sinth: " << fabs((muTrk->z0()+muTrk->vz()-pVtx->z())*std::sin(muTrk->theta())) << " " << 0.5*mm);
+	   ATH_MSG_DEBUG("Muon isBad: " << isBad);
 	 
-         if ( m_muonSelectionTool->accept(**muonItr) &&
-              ((*muonItr)->pt() > m_muonPtCut*GeV) &&
-	      m_isolationSelectionTool->accept(**muonItr) &&
-	      fabs(d0sig) < 3 &&
-	      pVtx &&
-	      fabs((muTrk->z0()+muTrk->vz()-pVtx->z())*std::sin(muTrk->theta())) < 0.5*mm &&
-	      !isBad
-	      ) {
+       if (m_muonSelectionTool->accept(**muonItr) &&
+           ((*muonItr)->pt() > 0.8*m_muonPtCut*GeV) &&
+	       m_isolationSelectionTool->accept(**muonItr) &&
+	       fabs(d0sig) < 3 &&
+	       pVtx &&
+	       fabs((muTrk->z0()+muTrk->vz()-pVtx->z())*std::sin(muTrk->theta())) < 0.5*mm &&
+	       !isBad)
+       {
 
+           goodmuonsTP.push_back(*muonItr);
+           if (((*muonItr)->pt() > m_muonPtCut*GeV))
+           {
              MuZ_N++;
-
-	     m_muon_Pt->Fill((*muonItr)->pt()/GeV, m_evtWeight);
-	     m_muon_Eta->Fill((*muonItr)->eta(), m_evtWeight);
+             m_muon_Pt->Fill((*muonItr)->pt()/GeV, m_evtWeight);
+	         m_muon_Eta->Fill((*muonItr)->eta(), m_evtWeight);
              goodmuonsZ.push_back(*muonItr);
-         }
-         if ( ((*muonItr)->pt() > minptCutJPsi) ) {
-             MuJPsi_N++;
-
-             Float_t px = (*muonItr)->p4().Px();
-             Float_t py = (*muonItr)->p4().Py();
-             Float_t pz = (*muonItr)->p4().Pz();
-             Float_t e = (*muonItr)->p4().E();
-             Int_t charge = 0;//(Int_t)((*muonItr)->charge()); // TODO update when xAODMuon-00-06-00
-
-             CLHEP::HepLorentzVector thislepton;
-             thislepton.setPx(px);
-             thislepton.setPy(py);
-             thislepton.setPz(pz);
-             thislepton.setE(e);
-             goodmuonsJPsi.push_back(thislepton);
-             goodmuonJPsicharge.push_back(charge);
-         }
+           }
+       }
+
+
+       if (((*muonItr)->pt() > minptCutJPsi)){
+         MuJPsi_N++;
+         Float_t px = (*muonItr)->p4().Px();
+         Float_t py = (*muonItr)->p4().Py();
+         Float_t pz = (*muonItr)->p4().Pz();
+         Float_t e = (*muonItr)->p4().E();
+         Int_t charge = 0;//(Int_t)((*muonItr)->charge()); // TODO update when xAODMuon-00-06-00
+
+         CLHEP::HepLorentzVector thislepton;
+         thislepton.setPx(px);
+         thislepton.setPy(py);
+         thislepton.setPz(pz);
+         thislepton.setE(e);
+         goodmuonsJPsi.push_back(thislepton);
+         goodmuonJPsicharge.push_back(charge);
+       }
      }
 
      if (thisEventInfo->eventType(xAOD::EventInfo::IS_SIMULATION)) {
@@ -582,16 +586,16 @@ StatusCode DQTGlobalWZFinderTool::fillHistograms()
     for (UInt_t iEle = 0; iEle < allElectrons.size(); iEle++) {
         Float_t pt = allElectrons[iEle]->pt();
         ATH_MSG_DEBUG("Ele pt " << pt);
-        if (! leadingAllEle || pt > leadingAllEle->pt()) {
+        if (!leadingAllEle || pt > leadingAllEle->pt()){
            subleadingAllEle = leadingAllEle;
            leadingAllEle = allElectrons[iEle];
         }
-        else if (! subleadingAllEle || pt > subleadingAllEle->pt()) {
+        else if (!subleadingAllEle || pt > subleadingAllEle->pt()){
            subleadingAllEle = allElectrons[iEle];
         }
      }
 
-     doMuonLooseTP(goodmuonsZ, pVtx);
+     doMuonLooseTP(goodmuonsTP, pVtx);
      doMuonInDetTP(goodmuonsZ, pVtx);
      doEleTP(leadingAllEle, subleadingAllEle, pVtx, thisEventInfo, isBad);
      doEleContainerTP(allElectrons, goodelectrons);
@@ -1240,77 +1244,78 @@ void DQTGlobalWZFinderTool::doMuonTruthEff(std::vector<const xAOD::Muon*>& goodm
   }
 }
 
-void DQTGlobalWZFinderTool::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuonsZ, const xAOD::Vertex* pVtx) {
+void DQTGlobalWZFinderTool::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuonsTP, const xAOD::Vertex* pVtx) {
   const xAOD::TrackParticleContainer* idTracks(0);
   evtStore()->retrieve(idTracks, "InDetTrackParticles");
   if (!idTracks) {
     ATH_MSG_FATAL("Unable to retrieve ID tracks to do muon T&P");
     return;
   }
-  for (const auto& tagmu : goodmuonsZ) {
+  for (const auto& tagmu : goodmuonsTP) {
     // only consider trigger-matched tags to avoid bias on probes
     bool matched = false;
     for (const auto chain: m_Z_mm_trigger) {
       if (m_muTrigMatchTool->match(tagmu, chain) || ! m_doTrigger) {
-	matched=true;
-	break;
+	    matched=true;
+	    break;
       }
     }
+
     if (!matched) continue;
     auto tagmup4(tagmu->p4());
     for (const auto& trk : *idTracks) {
-      if (trk->pt() <  m_muonPtCut*GeV || fabs(trk->eta()) > m_muonMaxEta) {
-	continue;
-      }
-      if (fabs((trk->z0()+trk->vz()-pVtx->z())*std::sin(trk->theta())) > 2*mm) {
-	continue;
-      }
+      if (trk->pt() <  m_muonPtCut*GeV || fabs(trk->eta()) > m_muonMaxEta) continue;     
+      if (fabs((trk->z0()+trk->vz()-pVtx->z())*std::sin(trk->theta())) > 2*mm) 	continue;
+      
       auto trkp4(trk->p4());
       Float_t mass = (tagmup4+trkp4).M();
-      if (mass > m_zCutLow*GeV && mass < m_zCutHigh*GeV) {
-	bool matched = false;
-	for (const auto& mu2 : goodmuonsZ) {
-	  if (tagmu == mu2) continue;
-	  auto idlink = mu2->inDetTrackParticleLink();
-	  if (*(idlink.cptr()) == trk) {
-	    //if (mu2->author() != 1) { ATH_MSG_WARNING("MATCH WOOO, author " << mu2->author()); };
-	    ATH_MSG_DEBUG("MATCH WOOO, authors " << mu2->allAuthors());
-	    if (trk->charge() != tagmu->charge()) {
-	      m_muloosetp_match_os->Fill(mass); 
+      if (mass < m_zCutLow*GeV || mass > m_zCutHigh*GeV) continue; 
+	  
+      bool matched = false;
+	  for (const auto& mu2 : goodmuonsTP) {
+	    if (tagmu == mu2) continue;
+	    auto idlink = mu2->inDetTrackParticleLink();
+	    if (*(idlink.cptr()) == trk) {
+	      //if (mu2->author() != 1) { ATH_MSG_WARNING("MATCH WOOO, author " << mu2->author()); };
+	      ATH_MSG_DEBUG("MATCH WOOO, authors " << mu2->allAuthors());
+	      (trk->charge() != tagmu->charge()) ? m_muloosetp_match_os->Fill(mass) : m_muloosetp_match_ss->Fill(mass);
+	      matched = true;
+	      break;
 	    } else { 
-	      m_muloosetp_match_ss->Fill(mass); 
-	    }
-	    matched = true;
-	    break;
-	  } else { ATH_MSG_DEBUG("MUON NO MATCH, author " << mu2->author());
-	    ATH_MSG_DEBUG("MUON NO MATCH, pt " << mu2->pt()/GeV << " " << trk->pt()/GeV << " eta " << mu2->eta() << " " << trk->eta());
-}
-	}
-	if (!matched) {
-	  ATH_MSG_DEBUG("NO MATCH BOOO");
-	  ATH_MSG_DEBUG("idtrk pt " << trk->pt()/GeV);
-	  if (trk->charge() != tagmu->charge()) {
-              m_muloosetp_nomatch_os->Fill(mass); 
-	  } else { 
-              m_muloosetp_nomatch_ss->Fill(mass); 
+          ATH_MSG_DEBUG("MUON NO MATCH, author " << mu2->author());	        
+          ATH_MSG_DEBUG("MUON NO MATCH, pt " << mu2->pt()/GeV << " " << trk->pt()/GeV << " eta " << mu2->eta() << " " << trk->eta());
+        }
 	  }
-	}
-      }
+
+	  if (!matched) {
+	    ATH_MSG_DEBUG("NO MATCH BOOO");
+	    ATH_MSG_DEBUG("idtrk pt " << trk->pt()/GeV);
+	    (trk->charge() != tagmu->charge()) ? m_muloosetp_nomatch_os->Fill(mass) : m_muloosetp_nomatch_ss->Fill(mass);
+	  }      
     }
   }
 }
  
-
-
 void DQTGlobalWZFinderTool::doMuonInDetTP(std::vector<const xAOD::Muon*>& goodmuonsZ, const xAOD::Vertex* pVtx) {
   const xAOD::EventInfo* thisEventInfo;
   StatusCode sc = evtStore()->retrieve(thisEventInfo);
-  const xAOD::TrackParticleContainer* msTracks(0);                                                                                                                                                             evtStore()->retrieve(msTracks, "ExtrapolatedMuonTrackParticles");
+
+  const xAOD::TrackParticleContainer* msTracks(0);
+  evtStore()->retrieve(msTracks, "ExtrapolatedMuonTrackParticles");
+
+  const xAOD::TrackParticleContainer* idTracks(0);
+  evtStore()->retrieve(idTracks, "InDetTrackParticles");
+            
+  if (!idTracks) {
+    ATH_MSG_FATAL("Unable to retrieve ID tracks to do muon T&P");
+    return;
+  }
   if (!msTracks) {
     ATH_MSG_FATAL("Unable to retrieve MS tracks to do muon T&P");
     return;
   }
-
+                                        
+                                        
   for (const auto& tagmu : goodmuonsZ) {
     bool matched = false;
     for (const auto chain: m_Z_mm_trigger) {
@@ -1319,28 +1324,41 @@ void DQTGlobalWZFinderTool::doMuonInDetTP(std::vector<const xAOD::Muon*>& goodmu
         break;
       }
     }
-
     if (!matched) continue;
     auto tagmup4(tagmu->p4());
+    // For Every ID track....
     for (const auto& trk : *msTracks) {
-      if (trk->pt() <  m_muonPtCut*GeV || fabs(trk->eta()) > m_muonMaxEta) continue;
-      
+      if (trk->pt() <  m_muonPtCut*GeV || fabs(trk->eta()) > m_muonMaxEta)     
+        continue; 
+      if (fabs((trk->z0()+trk->vz()-pVtx->z())*std::sin(trk->theta())) > 2*mm) 
+        continue;
+                                                                                                            
       auto trkp4(trk->p4());
       Float_t mass = (tagmup4+trkp4).M();
       bool matched = false;
-
+                                                                                                                
       if (mass < m_zCutLow*GeV || mass > m_zCutHigh*GeV) continue;
-      for (const auto& mu2 : goodmuonsZ) {
-        auto mslink = mu2->extrapolatedMuonSpectrometerTrackParticleLink();
-        if (*(mslink.cptr()) == trk) {
-          (trk->charge() != tagmu->charge()) ? static_cast<void>(m_mu_InDet_tp_match_os->Fill(mass)) : static_cast<void>(m_mu_InDet_tp_match_ss->Fill(mass));
-          matched = true;
-          break;
-        }
-      }
+                                                                                                                                
+      //for all ms tracks
+      for (const auto& mu2 : *idTracks) {
+        auto idtrkp4(mu2->p4());
+        auto mstrkp4(trk->p4());
+                                                                                                                                        
+        Float_t dR = idtrkp4.DeltaR(mstrkp4);
+        Float_t dPT = mstrkp4.Pt() - idtrkp4.Pt();
+    
+        if (fabs(dPT) < 10000 && dR < 0.05) 
+          matched = true;                
+        
+        if (!matched) 
+          continue;
 
-      if (!matched)  
-        (trk->charge() != tagmu->charge()) ? static_cast<void>(m_mu_InDet_tp_nomatch_os->Fill(mass)) : static_cast<void>(m_mu_InDet_tp_nomatch_ss->Fill(mass));      
+        (trk->charge() != tagmu->charge()) ? static_cast<void>(m_mu_InDet_tp_match_os->Fill(mass)) : static_cast<void>(m_mu_InDet_tp_match_ss->Fill(mass));
+        return; // once a match is found no need to continue
+      }
+                                        
+      // should only reach this point if a match was not made
+      (trk->charge() != tagmu->charge()) ? static_cast<void>(m_mu_InDet_tp_nomatch_os->Fill(mass)) : static_cast<void>(m_mu_InDet_tp_nomatch_ss->Fill(mass));
 
     }
   }
@@ -1348,8 +1366,6 @@ void DQTGlobalWZFinderTool::doMuonInDetTP(std::vector<const xAOD::Muon*>& goodmu
 
 
 
-
-
 //----------------------------------------------------------------------------------
 StatusCode DQTGlobalWZFinderTool::checkHists(bool /* fromFinalize */)
 //----------------------------------------------------------------------------------
diff --git a/DataQuality/DataQualityUtils/src/HanOutputFile.cxx b/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
index bb631d39ade94f1df266ab698b8b9fdb7e95024e..6ebc31a951b3416cfee4c90c712e8058a93a5f84 100644
--- a/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
+++ b/DataQuality/DataQualityUtils/src/HanOutputFile.cxx
@@ -852,7 +852,7 @@ void getImageBuffer(TImage* img, TCanvas* myC, char** x, int* y){
 bool HanOutputFile::saveHistogramToFile( std::string nameHis, std::string location, TDirectory* groupDir, bool drawRefs,std::string run_min_LB, std::string pathName,int cnvsType){
   std::pair<std::string,std::string> pngAndJson = getHistogram(nameHis,groupDir,drawRefs,run_min_LB,pathName,cnvsType);
   //std::string tosave = getHistogramPNG(nameHis, groupDir, drawRefs, run_min_LB, pathName);
-  if (pngAndJson.first== "") {
+  if (pngAndJson.first== ""&&pngAndJson.second=="") {
     return false;
   }
   std::string namePNG   = nameHis;
@@ -874,12 +874,12 @@ bool HanOutputFile::saveHistogramToFile( std::string nameHis, std::string locati
 std::string
 HanOutputFile::
 getHistogramPNG( std::string nameHis, TDirectory* groupDir, bool drawRefs,std::string run_min_LB, std::string pathName){
-    int cnvsType = 0;
+    int cnvsType = 1;
     return getHistogram(nameHis, groupDir,drawRefs,run_min_LB,pathName,cnvsType).first;
 }
 
 std::pair<std::string,std::string> HanOutputFile:: getHistogramJSON( std::string nameHis, TDirectory* groupDir, bool drawRefs,std::string run_min_LB, std::string pathName){
-    int cnvsType = 1;
+    int cnvsType = 2;
     return getHistogram(nameHis, groupDir,drawRefs,run_min_LB,pathName,cnvsType);
 }
 
diff --git a/InnerDetector/InDetDigitization/PixelRadDamDigitization/src/SensorSimPlanarTool.cxx b/InnerDetector/InDetDigitization/PixelRadDamDigitization/src/SensorSimPlanarTool.cxx
index c50b4379e5fa9c2bbdab25c9ed641c5bca6b30d0..6d88a5e06d46a4a267d47e8afe63cd2c253f24bc 100644
--- a/InnerDetector/InDetDigitization/PixelRadDamDigitization/src/SensorSimPlanarTool.cxx
+++ b/InnerDetector/InDetDigitization/PixelRadDamDigitization/src/SensorSimPlanarTool.cxx
@@ -124,7 +124,7 @@ StatusCode SensorSimPlanarTool::initialize() {
   else if(m_fluence==1){
     ATH_MSG_INFO("Use benchmark point 1!");
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl0em10.root") );  //IBL  PL - Barrel
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl7e13.root") );    //B-Layer - Barrel                                                                                                  
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl7e13.root") );    //B-Layer - Barrel                                                                                                  
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl3e13.root") );    //Layer-1 - Barrel
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl2e13.root") );    //Layer-2 - Barrel
 
@@ -134,7 +134,7 @@ StatusCode SensorSimPlanarTool::initialize() {
     m_fluence_layers.push_back(2e13);
 
     m_voltage_layers.push_back(80);
-    m_voltage_layers.push_back(150);
+    m_voltage_layers.push_back(250);
     m_voltage_layers.push_back(150);
     m_voltage_layers.push_back(150);
   }
@@ -142,8 +142,8 @@ StatusCode SensorSimPlanarTool::initialize() {
     ATH_MSG_INFO("Use benchmark point 2!");
 
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl1e14.root") );
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl1.2e14.root") );                                                                                                            
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl5e13.root") );
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl1_2e14.root") );                                                                                                            
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_200V_fl0_5e14.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl3e13.root") );
 
     m_fluence_layers.push_back(1e14);
@@ -152,14 +152,14 @@ StatusCode SensorSimPlanarTool::initialize() {
     m_fluence_layers.push_back(3e13);
 
     m_voltage_layers.push_back(80);
-    m_voltage_layers.push_back(150);
-    m_voltage_layers.push_back(150);
+    m_voltage_layers.push_back(350);
+    m_voltage_layers.push_back(200);
     m_voltage_layers.push_back(150);
   }else if(m_fluence==3){
     ATH_MSG_INFO("Use benchmark point 3!");
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_80V_fl2e14.root") );
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl1.7e14.root") );                                                                                                            
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl7e13.root") );
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl1_7e14.root") );                                                                                                            
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_200V_fl0_7e14.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl4e13.root") );
 
     m_fluence_layers.push_back(2e14);
@@ -168,15 +168,15 @@ StatusCode SensorSimPlanarTool::initialize() {
     m_fluence_layers.push_back(4e13);
 
     m_voltage_layers.push_back(80);
-    m_voltage_layers.push_back(150);
-    m_voltage_layers.push_back(150);
+    m_voltage_layers.push_back(350);
+    m_voltage_layers.push_back(200);
     m_voltage_layers.push_back(150);
   }else if(m_fluence==4){
     ATH_MSG_INFO("Use benchmark point 4!");
 
     mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_150V_fl2e14.root") );
-    mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl1.7e14.root") );                                                                                                            
-    mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl7e13.root") );
+    mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl1_7e14.root") );                                                                                                            
+    mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_PIX_200V_fl0_7e14.root") );
     mapsPath_list.push_back(  PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl4e13.root") );
 
     m_fluence_layers.push_back(2e14);
@@ -186,14 +186,14 @@ StatusCode SensorSimPlanarTool::initialize() {
 
     m_voltage_layers.push_back(150);
     m_voltage_layers.push_back(350);
-    m_voltage_layers.push_back(250);
+    m_voltage_layers.push_back(200);
     m_voltage_layers.push_back(150);
   }else if(m_fluence==5){
     ATH_MSG_INFO("Use benchmark point 5!");
 
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_PL_350V_fl5e14.root") );
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl3.1e14.root") );                                                                                                            
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl1.3e14.root") );
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_350V_fl3_1e14.root") );                                                                                                            
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_200V_fl1_3e14.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl8e13.root") );
 
     m_fluence_layers.push_back(5e14);
@@ -203,16 +203,15 @@ StatusCode SensorSimPlanarTool::initialize() {
 
     m_voltage_layers.push_back(350);
     m_voltage_layers.push_back(350);
-    m_voltage_layers.push_back(250);
+    m_voltage_layers.push_back(200);
     m_voltage_layers.push_back(150);
   }else if(m_fluence==6){
     ATH_MSG_INFO("Use benchmark point 6!");
 
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_400V_fl8_7e14.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_400V_fl4_6e14.root") );
-    
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl2_1e14.root") );
-    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_150V_fl1_3e14.root") );
+    mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_250V_fl1_3e14.root") );
 
     m_fluence_layers.push_back(8.7e14);
     m_fluence_layers.push_back(4.6e14);
@@ -222,13 +221,12 @@ StatusCode SensorSimPlanarTool::initialize() {
     m_voltage_layers.push_back(400);
     m_voltage_layers.push_back(400);
     m_voltage_layers.push_back(250);
-    m_voltage_layers.push_back(150);
+    m_voltage_layers.push_back(250);
   }else if(m_fluence==7){
     ATH_MSG_INFO("Use benchmark point 7!");
 
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_IBL_endLHC.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_blayer_endLHC.root") );
-
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_L1_endLHC.root") );
     mapsPath_list.push_back( PathResolverFindCalibFile("PixelDigitization/maps_PIX_L2_endLHC.root") );
 
@@ -237,10 +235,10 @@ StatusCode SensorSimPlanarTool::initialize() {
     m_fluence_layers.push_back(2*2.1e14);
     m_fluence_layers.push_back(2*1.3e14);
 
-    m_voltage_layers.push_back(350);
-    m_voltage_layers.push_back(350);
+    m_voltage_layers.push_back(400);
+    m_voltage_layers.push_back(400);
+    m_voltage_layers.push_back(250);
     m_voltage_layers.push_back(250);
-    m_voltage_layers.push_back(150);
   }
  
     if(mapsPath_list.size()==0 ){
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetKeys.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetKeys.py
index 3b8d795ebcbbadb0f153340b78ea5569fb0632ea..f20a24a9b4c1e4c22a6c302861147128706059b0 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/InDetKeys.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetKeys.py
@@ -431,6 +431,12 @@ class ExtendedTracksMapLargeD0(JobProperty):
     allowedTypes = ['str']
     StoredValue  = 'ExtendedTracksMapLargeD0'
 
+class ExtendedTracksMapDSP(JobProperty):
+    """ Storegate key for new-tracking high-d0 extended tracks map"""
+    statusOn     = True
+    allowedTypes = ['str']
+    StoredValue  = 'ExtendedTracksMapDSP'
+
 class ExtendedTracks(JobProperty):
     """StoreGate key for unslimmed inside out tracks"""
     statusOn     = True
@@ -467,6 +473,12 @@ class ExtendedLargeD0Tracks(JobProperty):
     allowedTypes = ['str']
     StoredValue  = 'ExtendedLargeD0Tracks'
 
+class ExtendedDSPTracks(JobProperty):
+    """ Storegate key for new-tracking extended high-d0 tracks"""
+    statusOn     = True
+    allowedTypes = ['str']
+    StoredValue  = 'ExtendedDSPTracks'
+
 class ProcessedESDTracks(JobProperty):
     """ Storegate key for already processed tracks from ESD"""
     statusOn     = True
@@ -757,6 +769,12 @@ class SiSpSeededLargeD0Tracks(JobProperty):
     allowedTypes = ['str']
     StoredValue  = 'SiSpSeededLargeD0Tracks'
 
+class SiSpSeededDSPTracks(JobProperty):
+    """ Storegate key for new-tracking SP seeded displace soft-pion tracks"""
+    statusOn     = True
+    allowedTypes = ['str']
+    StoredValue  = 'SiSpSeededDSPTracks'
+
 class ResolvedTracks(JobProperty):
     """ Storegate key for new-tracking resolved tracks"""
     statusOn     = True
@@ -823,6 +841,12 @@ class ResolvedLargeD0Tracks(JobProperty):
     allowedTypes = ['str']
     StoredValue  = 'ResolvedLargeD0Tracks'
 
+class ResolvedDSPTracks(JobProperty):
+    """ Storegate key for new-tracking resolved high-d0 tracks"""
+    statusOn     = True
+    allowedTypes = ['str']
+    StoredValue  = 'ResolvedDSPTracks'
+
 class HaloTracks(JobProperty):
     """StoreGate key for beam halo tracks """
     statusOn     = True
@@ -1266,12 +1290,14 @@ jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksMapSLHC)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksMapLowPt)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksMapBeamGas)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksMapLargeD0)
+jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksMapDSP)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksPhase)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedSLHCTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedLowPtTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedBeamGasTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedLargeD0Tracks)
+jobproperties.InDetContainerKeys.add_JobProperty(ExtendedDSPTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ProcessedESDTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedDetailedTracksTruth)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedTracksTruth)
@@ -1323,6 +1349,7 @@ jobproperties.InDetContainerKeys.add_JobProperty(SiSpSeededForwardTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(SiSpSeededSLHCConversionFindingTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(SiSpSeededBeamGasTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(SiSpSeededLargeD0Tracks)
+jobproperties.InDetContainerKeys.add_JobProperty(SiSpSeededDSPTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedSLHCTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedLowPtTracks)
@@ -1334,6 +1361,7 @@ jobproperties.InDetContainerKeys.add_JobProperty(ResolvedSLHCConversionFindingTr
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedForwardTrackParticlesTruth)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedBeamGasTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedLargeD0Tracks)
+jobproperties.InDetContainerKeys.add_JobProperty(ResolvedDSPTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(HaloTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ExtendedHaloTracks)
 jobproperties.InDetContainerKeys.add_JobProperty(ResolvedSiCosmicTracks)
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
index 7b57015dfa300e601c61a32bdb3d5d8770f57b93..e91300517c68288a99a3daddec846369de8d2ffa 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
@@ -791,8 +791,8 @@ else:
       if InDetFlags.useExistingTracksAsInput():
           InputCombinedInDetTracks += [ InDetKeys.ProcessedESDTracks() ]
       InDetDisplacedSoftPionSiPattern = ConfiguredNewTrackingSiPattern(InputCombinedInDetTracks,
-                                                                       InDetKeys.ResolvedLargeD0Tracks(),
-                                                                       InDetKeys.SiSpSeededLargeD0Tracks(),
+                                                                       InDetKeys.ResolvedDSPTracks(), #ResolvedLargeD0Tracks(),
+                                                                       InDetKeys.SiSpSeededDSPTracks(), #SiSpSeededLargeD0Tracks(),
                                                                        InDetNewTrackingCutsDisplacedSoftPion,
                                                                        TrackCollectionKeys,
                                                                        TrackCollectionTruthKeys)    
@@ -802,8 +802,8 @@ else:
       include ("InDetRecExample/ConfiguredNewTrackingTRTExtension.py")
       InDetDisplacedSoftPionTRTExtension = ConfiguredNewTrackingTRTExtension(InDetNewTrackingCutsDisplacedSoftPion,
                                                                              InDetDisplacedSoftPionSiPattern.SiTrackCollection(),
-                                                                             InDetKeys.ExtendedLargeD0Tracks(),
-                                                                             InDetKeys.ExtendedTracksMapLargeD0(),
+                                                                             InDetKeys.ExtendedDSPTracks(), #ExtendedLargeD0Tracks(),
+                                                                             InDetKeys.ExtendedTracksMapDSP(), #ExtendedTracksMapLargeD0(),
                                                                              TrackCollectionKeys,
                                                                              TrackCollectionTruthKeys,
                                                                              False)
diff --git a/InnerDetector/InDetRecTools/TRT_ToT_Tools/TRT_ToT_Tools/TRT_ToT_dEdx.h b/InnerDetector/InDetRecTools/TRT_ToT_Tools/TRT_ToT_Tools/TRT_ToT_dEdx.h
index 379686b07d2c8fa6d9e957bce8c7f359e124e3f8..1ccdccfde4239ff4d39cb4f5b39e19485d9e016b 100644
--- a/InnerDetector/InDetRecTools/TRT_ToT_Tools/TRT_ToT_Tools/TRT_ToT_dEdx.h
+++ b/InnerDetector/InDetRecTools/TRT_ToT_Tools/TRT_ToT_Tools/TRT_ToT_dEdx.h
@@ -62,6 +62,7 @@ class TRT_ToT_dEdx : virtual public ITRT_ToT_dEdx, public AthAlgTool
     const InDetDD::TRT_DetectorManager* m_trtman;                         // ID TRT detector manager 
 
     // Algorithm switchers
+    bool m_applyBugfix;               // If true - apply bugfixes for r21.0 concerning unused option DivideByL, wrong hit selection and truncation. Will calculate dEdx using recommended settings (DivideByL=true, useHThits=true, m_toolScenario=kAlgReweightTrunkOne)
     bool m_corrected;                 // If true - make correction using rs-distributions
     bool m_divideByL;                 // If true - divide ToT to the L of track in straw.
     bool m_useHThits;                 // If true - use HT hit for dEdX estimator calculation
@@ -89,6 +90,8 @@ class TRT_ToT_dEdx : virtual public ITRT_ToT_dEdx, public AthAlgTool
     mutable int m_gasTypeInStraw;                  // Starw gas type. 0:Xenon, 1:Argon, 2:Krypton
     mutable double L; // Length in straw
 
+    static const unsigned int m_mask_last_bits=0xFFFFFF0;  // 1 1 11111111 1 11111111 1 11110000
+
   public:
     /** AlgTool like constructor */
     TRT_ToT_dEdx(const std::string&,const std::string&,const IInterface*);
diff --git a/InnerDetector/InDetRecTools/TRT_ToT_Tools/src/TRT_ToT_dEdx.cxx b/InnerDetector/InDetRecTools/TRT_ToT_Tools/src/TRT_ToT_dEdx.cxx
index a092bfb75a085cb04c6398c35784efba977842f8..0cf623e1e00aa32611e614413664aab3a05b2c84 100644
--- a/InnerDetector/InDetRecTools/TRT_ToT_Tools/src/TRT_ToT_dEdx.cxx
+++ b/InnerDetector/InDetRecTools/TRT_ToT_Tools/src/TRT_ToT_dEdx.cxx
@@ -49,6 +49,8 @@ TRT_ToT_dEdx::TRT_ToT_dEdx(const std::string& t, const std::string& n, const IIn
 
 void TRT_ToT_dEdx::SetDefaultConfiguration()
 {
+        //If this option is set to true, bugfixes for r21.0 are applied concerning unused option DivideByL, wrong hit selection and truncation
+        declareProperty("TRT_dEdx_applyBugfix",m_applyBugfix=false);
 	declareProperty("TRT_dEdx_divideByL",m_divideByL=true);
 	declareProperty("TRT_dEdx_useHThits",m_useHThits=true);
 	declareProperty("TRT_dEdx_corrected",m_corrected=true);
@@ -68,6 +70,7 @@ void TRT_ToT_dEdx::ShowDEDXSetup() const
 	ATH_MSG_DEBUG("//////////////////////////////////////////////////////////////////");
 	ATH_MSG_DEBUG("///              TRT_ToT_Tool setup configuration              ///");
 	ATH_MSG_DEBUG(" ");
+	ATH_MSG_DEBUG("m_applyBugfix                   ="<<m_applyBugfix<<"");
 	ATH_MSG_DEBUG("m_divideByL                     ="<<m_divideByL<<"");
 	ATH_MSG_DEBUG("m_useHThits                     ="<<m_useHThits<<"");
 	ATH_MSG_DEBUG("m_corrected                     ="<<m_corrected<<"");
@@ -152,6 +155,7 @@ StatusCode TRT_ToT_dEdx::initialize()
   ATH_MSG_INFO("//////////////////////////////////////////////////////////////////");
   ATH_MSG_INFO("///              TRT_ToT_Tool setup configuration              ///");
   ATH_MSG_INFO(" ");
+  ATH_MSG_INFO("m_applyBugfix                   ="<<m_applyBugfix<<"");
   ATH_MSG_INFO("m_divideByL                     ="<<m_divideByL<<"");
   ATH_MSG_INFO("m_useHThits                     ="<<m_useHThits<<"");
   ATH_MSG_INFO("m_corrected                     ="<<m_corrected<<"");
@@ -680,16 +684,26 @@ bool TRT_ToT_dEdx::isGood_Hit(const Trk::TrackStateOnSurface *itr) const
   double Trt_RHit = fabs(driftcircle->localParameters()[Trk::driftRadius]);
   double Trt_HitTheta = trkP->parameters()[Trk::theta];
   double Trt_HitPhi = trkP->parameters()[Trk::phi];
-  double error2 = 2*driftcircle->localCovariance()(Trk::driftRadius,Trk::driftRadius);
-  double distance2 = (Trt_Rtrack - Trt_RHit)*(Trt_Rtrack - Trt_RHit);
   Identifier DCId = driftcircle->identify();
   int HitPart =  m_trtId->barrel_ec(DCId);
   const InDetDD::TRT_BaseElement* element = m_trtman->getElement(DCId);
   double strawphi = element->center(DCId).phi();
+  
+  if (m_applyBugfix){
+    double error = sqrt(driftcircle->localCovariance()(Trk::driftRadius,Trk::driftRadius));
 
-  if ( m_useZeroRHitCut && Trt_RHit==0) return false;                                     // tube hit
-  if ( (Trt_Rtrack >= m_trackConfig_maxRtrack) || (Trt_Rtrack <= m_trackConfig_minRtrack) )return false;    // drift radius close to wire or wall
-  if (distance2 > error2) return false; // Select precision hit only
+    if ( itr->type(Trk::TrackStateOnSurface::Outlier)  ) return false; //Outliers
+    if ( m_useZeroRHitCut && Trt_RHit==0 && error>1.) return false;    //Select precision hits only
+    if ( (Trt_Rtrack >= m_trackConfig_maxRtrack) || (Trt_Rtrack <= m_trackConfig_minRtrack) ) return false;    // drift radius close to wire or wall
+  }
+  else{
+    double error2 = 2*driftcircle->localCovariance()(Trk::driftRadius,Trk::driftRadius);
+    double distance2 = (Trt_Rtrack - Trt_RHit)*(Trt_Rtrack - Trt_RHit);
+    
+    if ( m_useZeroRHitCut && Trt_RHit==0) return false;                                     // tube hit
+    if ( (Trt_Rtrack >= m_trackConfig_maxRtrack) || (Trt_Rtrack <= m_trackConfig_minRtrack) )return false;    // drift radius close to wire or wall
+    if (distance2 > error2) return false; // Select precision hit only
+  }
 
   L = 0;
   if (std::abs(HitPart)==1) { //Barrel
@@ -727,11 +741,35 @@ double TRT_ToT_dEdx::dEdx(const Trk::Track* track, bool DivideByL, bool useHThit
 	if(corrected) SwitchOnRSCorrection();
 	else SwitchOffRSCorrection();
 
-	if(DivideByL) SwitchOnDivideByL();
-	else SwitchOffDivideByL();
+	if (m_applyBugfix) {
 
-	if(useHThits) SwitchOnUseHThits();
-	else SwitchOffUseHThits();
+	  if(DivideByL) SwitchOnDivideByL();
+	  else{
+	    ATH_MSG_WARNING("dEdx(): DivideByL=false is an unused option. DivideByL is set to true.");
+	    SwitchOnDivideByL();
+	  }
+	  
+	  if(useHThits) SwitchOnUseHThits();
+	  else{
+	    ATH_MSG_WARNING("dEdx(): useHThits=false is an unused option. useHThits is set to true.");
+	    SwitchOnUseHThits();
+	  }
+	  
+	  if (m_toolScenario!=kAlgReweightTrunkOne){
+	    ATH_MSG_WARNING("dEdx(): m_toolScenario is set to default kAlgReweightTrunkOne.");
+	    m_toolScenario=kAlgReweightTrunkOne;
+	  }
+	  
+	  m_trackConfig_minRtrack=0.15;
+	  m_trackConfig_maxRtrack=1.85;
+	}
+	else {
+	  if(DivideByL) SwitchOnDivideByL(); 	
+	  else SwitchOffDivideByL();
+
+	  if(useHThits) SwitchOnUseHThits();
+	  else SwitchOffUseHThits();
+	}
 
 	return dEdx(track);
 }
@@ -845,36 +883,64 @@ double TRT_ToT_dEdx::dEdx(const Trk::Track* track)
 	  int ntrunk = 1;
 	  if(m_divideByL)
 	  {
-		  if(m_toolScenario==kAlgReweight){
-				if(nhitsXe>0) nhitsXe-=ntrunk;
-				if(nhitsAr>0) nhitsAr-=ntrunk;
-				if(nhitsKr>0) nhitsKr-=ntrunk;
+	    if(m_applyBugfix){
+	          if(m_toolScenario==kAlgReweight){
+		    if(nhitsXe>ntrunk) nhitsXe-=ntrunk;
+		    if(nhitsAr>ntrunk) nhitsAr-=ntrunk;
+		    if(nhitsKr>ntrunk) nhitsKr-=ntrunk;
 		  }
 		  else // kAlgReweightTrunkOne
-		  {
-		  	int trunkGas = kUnset;
-		  	double maxToT = 0.;
-		  	if(nhitsXe>0 && vecToT_Xe.at(nhitsXe-1)>maxToT) trunkGas = kXenon;
-		  	if(nhitsAr>0 && vecToT_Ar.at(nhitsAr-1)>maxToT) trunkGas = kArgon;
+		    {
+		      int trunkGas = kUnset;
+		      double maxToT = 0.;
+		      if(nhitsXe>0 && vecToT_Xe.at(nhitsXe-1)>maxToT){
+			trunkGas = kXenon;
+			maxToT = vecToT_Xe.at(nhitsXe-1);
+		      }
+		      if(nhitsAr>0 && vecToT_Ar.at(nhitsAr-1)>maxToT){
+			trunkGas = kArgon;
+			maxToT = vecToT_Ar.at(nhitsAr-1);
+		      }
+		      if(nhitsKr>0 && vecToT_Kr.at(nhitsKr-1)>maxToT) trunkGas = kKrypton;
+		      if(trunkGas==kXenon)   nhitsXe-=ntrunk;
+		      else
+			if(trunkGas==kArgon)   nhitsAr-=ntrunk;
+			else
+			  if(trunkGas==kKrypton) nhitsKr-=ntrunk;
+		    }
+	    }
+	    else { 
+	          if(m_toolScenario==kAlgReweight){
+		    if(nhitsXe>0) nhitsXe-=ntrunk;
+		    if(nhitsAr>0) nhitsAr-=ntrunk;
+		    if(nhitsKr>0) nhitsKr-=ntrunk;
+		  }
+		  else // kAlgReweightTrunkOne
+		    {
+		      int trunkGas = kUnset;
+		      double maxToT = 0.;
+		      if(nhitsXe>0 && vecToT_Xe.at(nhitsXe-1)>maxToT) trunkGas = kXenon;
+		      if(nhitsAr>0 && vecToT_Ar.at(nhitsAr-1)>maxToT) trunkGas = kArgon;
 		  	if(nhitsKr>0 && vecToT_Kr.at(nhitsKr-1)>maxToT) trunkGas = kKrypton;
-
+			
 		  	if(trunkGas==kXenon)   nhitsXe-=ntrunk;
 		  	else
-		  	if(trunkGas==kArgon)   nhitsAr-=ntrunk;
-		  	else
-		  	if(trunkGas==kKrypton) nhitsKr-=ntrunk;
-		  }
-		}
-
-		m_useTrackPartWithGasType = gasTypeForCorrectNormalization;
+			  if(trunkGas==kArgon)   nhitsAr-=ntrunk;
+			  else
+			    if(trunkGas==kKrypton) nhitsKr-=ntrunk;
+		    }
+	    }
+	  }
 
-		// Boost speed.
-		int nhits  = nhitsXe + nhitsAr + nhitsKr;
-		if(nhits<1) return 0.0;
+	  m_useTrackPartWithGasType = gasTypeForCorrectNormalization;
 
-		double ToTsumXe = 0;
-  	double ToTsumAr = 0;
-  	double ToTsumKr = 0;
+	  // Boost speed.
+	  int nhits  = nhitsXe + nhitsAr + nhitsKr;
+	  if(nhits<1) return 0.0;
+	  
+	  double ToTsumXe = 0;
+	  double ToTsumAr = 0;
+	  double ToTsumKr = 0;
 	  for (int i = 0; i < nhitsXe;i++){
 	    ToTsumXe+=vecToT_Xe.at(i);
 	  } 
@@ -884,19 +950,19 @@ double TRT_ToT_dEdx::dEdx(const Trk::Track* track)
 	  for (int i = 0; i < nhitsKr;i++){
 	    ToTsumKr+=vecToT_Kr.at(i);
 	  } 
-
+	  
 	  if(nhitsXe>0) ToTsumXe/=nhitsXe;
 	  else ToTsumXe = 0;
 	  if(nhitsAr>0) ToTsumAr/=nhitsAr;
 	  else ToTsumAr = 0;
 	  if(nhitsKr>0) ToTsumKr/=nhitsKr;
 	  else ToTsumKr = 0;
-
-
+	  
+	  
 	  double ToTsum = ToTsumXe*nhitsXe + ToTsumAr*nhitsAr + ToTsumKr*nhitsKr;
-
+	  
 	  ToTsum*=correctNormalization(m_divideByL, m_isData, nVtx);
-
+	  
 	  return ToTsum/nhits;
   }
   
@@ -909,13 +975,36 @@ double TRT_ToT_dEdx::dEdx(const Trk::Track* track)
 
 double TRT_ToT_dEdx::usedHits(const Trk::Track* track, bool DivideByL, bool useHThits)
 {
-	if(DivideByL) 	SwitchOnDivideByL();
-	else			SwitchOffDivideByL();
 
-	if(useHThits) 	SwitchOnUseHThits();
-	else			SwitchOffUseHThits();
+  if (m_applyBugfix){
+        if(DivideByL) SwitchOnDivideByL();
+	else{
+	  ATH_MSG_WARNING("usedHits(): DivideByL=false is an unused option. DivideByL is set to true.");
+	  SwitchOnDivideByL();
+	}
 
-	return usedHits(track);
+	if(useHThits) SwitchOnUseHThits();
+	else{
+	  ATH_MSG_WARNING("usedHits(): useHThits=false is an unused option. useHThits is set to true.");
+	  SwitchOnUseHThits();
+	}
+
+	if (m_toolScenario!=kAlgReweightTrunkOne){
+	  ATH_MSG_WARNING("usedHits(): m_toolScenario is set to default kAlgReweightTrunkOne.");
+	  m_toolScenario=kAlgReweightTrunkOne;
+	}
+
+	m_trackConfig_minRtrack=0.15;
+	m_trackConfig_maxRtrack=1.85;
+  }
+  else{
+    if(DivideByL) 	SwitchOnDivideByL();
+    else		SwitchOffDivideByL();
+
+    if(useHThits) 	SwitchOnUseHThits();
+    else		SwitchOffUseHThits();
+  }
+  return usedHits(track);
 }
 
 
@@ -987,14 +1076,29 @@ double TRT_ToT_dEdx::usedHits(const Trk::Track* track)
 
 	  int ntrunk = 1;
 	  if(m_divideByL) {
-		  if(m_toolScenario==kAlgReweight){
-				if(nhitsXe>0) nhitsXe-=ntrunk;
-				if(nhitsAr>0) nhitsAr-=ntrunk;
-				if(nhitsKr>0) nhitsKr-=ntrunk;
+	          if (m_applyBugfix){
+		    if(m_toolScenario==kAlgReweight){
+		      if(nhitsXe>ntrunk) nhitsXe-=ntrunk;
+		      if(nhitsAr>ntrunk) nhitsAr-=ntrunk;
+		      if(nhitsKr>ntrunk) nhitsKr-=ntrunk;
+		      nhits  = nhitsXe + nhitsAr + nhitsKr;
+		    }
+		    else { // kAlgReweightTrunkOne
+		      nhits  = nhitsXe + nhitsAr + nhitsKr;
+		      if(nhits>ntrunk)
+			nhits -= ntrunk;
+		    }
 		  }
-		  else { // kAlgReweightTrunkOne
-		  	if(nhitsXe>0 || nhitsAr>0 || nhitsKr>0)
-		  		nhitsXe -= ntrunk;
+		  else{
+		    if(m_toolScenario==kAlgReweight){
+		      if(nhitsXe>0) nhitsXe-=ntrunk;
+		      if(nhitsAr>0) nhitsAr-=ntrunk;
+		      if(nhitsKr>0) nhitsKr-=ntrunk;
+		    }
+		    else { // kAlgReweightTrunkOne
+		      if(nhitsXe>0 || nhitsAr>0 || nhitsKr>0)
+			nhitsXe -= ntrunk;
+		    }
 		  }
 		}
 
@@ -1687,20 +1791,26 @@ double TRT_ToT_dEdx::getToTlargerIsland(unsigned int BitPattern) const
 	unsigned int best_length = 0;
 	unsigned int current_length = 0;
 	unsigned int k = 0;
+	unsigned int BitPattern_correct = BitPattern;
 
+	if (m_applyBugfix){
+	  //Set 4 last bits to zero (to match data and MC bitmasks)
+	  BitPattern_correct = BitPattern & m_mask_last_bits;
+	}
+	
 	//shift bitmask to the right until end;
 	while (true) {
-		if (BitPattern & mask) {
-			++current_length;
+	        if (BitPattern_correct & mask) {
+		  ++current_length;
 		}
 		else {
-		 // remember longest island
-		 if (current_length > best_length)
-		  	best_length = current_length;
-		 current_length = 0;
+		  // remember longest island
+		  if (current_length > best_length)
+		    best_length = current_length;
+		  current_length = 0;
 		}
 		if (!mask)
-			break;
+		  break;
 		assert(k < 24);
 		mask >>= 1;
 		if (k == 7 || k == 15)
diff --git a/MuonSpectrometer/MuonOverlay/CscOverlay/CscOverlay/CscOverlay.h b/MuonSpectrometer/MuonOverlay/CscOverlay/CscOverlay/CscOverlay.h
index 4098222badab40597b8aead9c81f55e932d1046f..8b205c5e0bbfb2e3959ff1dec1395bf629991e06 100644
--- a/MuonSpectrometer/MuonOverlay/CscOverlay/CscOverlay/CscOverlay.h
+++ b/MuonSpectrometer/MuonOverlay/CscOverlay/CscOverlay/CscOverlay.h
@@ -92,6 +92,7 @@ private:
   std::string m_mainInputCSC_Name;
   std::string m_overlayInputCSC_Name;
 
+  bool m_isDataOverlay;
   const CscIdHelper   * m_cscHelper;
   ToolHandle<ICscCalibTool> m_cscCalibTool;
   ToolHandle<IMuonDigitizationTool> m_digTool;
diff --git a/MuonSpectrometer/MuonOverlay/CscOverlay/share/CscOverlay_jobOptions.py b/MuonSpectrometer/MuonOverlay/CscOverlay/share/CscOverlay_jobOptions.py
index babfcbc43ce8ffd8e7a37f46d37ec961cebc8db7..76fa7c0b0f329066478bd99ecafab7e949ace6f1 100644
--- a/MuonSpectrometer/MuonOverlay/CscOverlay/share/CscOverlay_jobOptions.py
+++ b/MuonSpectrometer/MuonOverlay/CscOverlay/share/CscOverlay_jobOptions.py
@@ -17,6 +17,7 @@ job.CscOverlay.MakeRDOTool4.EvtStore     = job.CscOverlay.MCStore
 job.CscOverlay.MakeRDOTool4.addNoise     = False
 job.CscOverlay.MakeRDOTool4.NumSamples   = 4
 job.CscOverlay.RndmSvc                   = digitizationFlags.rndmSvc.get_Value()
+job.CscOverlay.isDataOverlay             = isRealData
 
 #job.CscOverlay.OutputLevel=VERBOSE
 #svcMgr.MessageSvc.defaultLimit=100000
diff --git a/MuonSpectrometer/MuonOverlay/CscOverlay/src/CscOverlay.cxx b/MuonSpectrometer/MuonOverlay/CscOverlay/src/CscOverlay.cxx
index 9dbaf04add9e8978873766d3767c51a6b36311b8..2746e7907f0a9ea007f11c3a9191f22158a8b1d5 100644
--- a/MuonSpectrometer/MuonOverlay/CscOverlay/src/CscOverlay.cxx
+++ b/MuonSpectrometer/MuonOverlay/CscOverlay/src/CscOverlay.cxx
@@ -22,6 +22,7 @@ const uint16_t MAX_AMPL = 4095; // 12-bit ADC
 CscOverlay::CscOverlay(const std::string &name, ISvcLocator *pSvcLocator) :
   MuonOverlayBase(name, pSvcLocator),
   m_storeGateTemp("StoreGateSvc/BkgEvent_1_SG", name),
+  m_isDataOverlay(false),
   m_cscHelper(0),
   m_cscCalibTool( "CscCalibTool", this),
   m_digTool("CscDigitizationTool", this ),
@@ -45,6 +46,7 @@ CscOverlay::CscOverlay(const std::string &name, ISvcLocator *pSvcLocator) :
   declareProperty("IsByteStream", m_isByteStream = false ); 
   declareProperty("RndmSvc", 	     m_rndmSvc, "Random Number Service used for CscDigitToCscRDOTool" );
   declareProperty("RndmEngine",      m_rndmEngineName, "Random engine name for CscDigitToCscRDOTool");
+  declareProperty("isDataOverlay", m_isDataOverlay);
 
 }
 
@@ -452,7 +454,7 @@ void CscOverlay::mergeCollections(CscRawDataCollection *out_coll,
        std::map< int,std::vector<uint16_t> > ovlSamples;
        uint32_t sigHash;
        uint32_t ovlHash;
-       uint32_t sigAddress = this->stripData( sigData, nSigSamples, sigSamples, sigHash, spuID, j , true); // real data
+       uint32_t sigAddress = this->stripData( sigData, nSigSamples, sigSamples, sigHash, spuID, j , m_isDataOverlay); // need to patch in the case of real data
        uint32_t ovlAddress = this->stripData( ovlData, nOvlSamples, ovlSamples, ovlHash, spuID, j , false); // simulation
        if (sigSamples.size()==0 && ovlSamples.size()==0) continue;
  
@@ -525,8 +527,8 @@ void CscOverlay::mergeCollections(CscRawDataCollection *out_coll,
 	    if (measuresPhi) {
 	      int stationEta  =  ( ((address & 0x00001000) >> 12 ) == 0x0) ? -1 : 1;
 	      if (stationEta>0) {
+                msg<<MSG::VERBOSE<<"FLIP strip. Formerly strip="<<strip<<", now strip="<<49-strip<<endmsg;
 		strip = 49-strip;
-		msg<<MSG::VERBOSE<<"FLIP strip, now strip="<<strip<<endmsg;
 	      }
 	    }
 	    insertedstrips.insert(strip);//for checks
@@ -551,8 +553,12 @@ void CscOverlay::mergeCollections(CscRawDataCollection *out_coll,
        //check
        if (readstrips!=insertedstrips){
 	 msg << MSG::WARNING << "Readstrips != Insertedstrips: "<<endmsg;
-	 for (std::set<int>::const_iterator i = readstrips.begin(); i!=readstrips.end(); ++i){std::cout<<*i<<" ";} std::cout<<std::endl;
-	 for (std::set<int>::const_iterator i = insertedstrips.begin(); i!=insertedstrips.end(); ++i){std::cout<<*i<<" ";} std::cout<<std::endl;
+         std::ostringstream readstream;
+         for (std::set<int>::const_iterator i = readstrips.begin(); i!=readstrips.end(); ++i){readstream<<*i<<" ";}
+         msg << MSG::WARNING << readstream.str()<<endmsg;
+         std::ostringstream insertstream;
+         for (std::set<int>::const_iterator i = insertedstrips.begin(); i!=insertedstrips.end(); ++i){insertstream<<*i<<" ";}
+         msg << MSG::WARNING << insertstream.str()<<endmsg;
        }
 
     } 
diff --git a/Reconstruction/egamma/egammaValidation/scripts/EgammaARTmonitoring_plotsMaker.py b/Reconstruction/egamma/egammaValidation/scripts/EgammaARTmonitoring_plotsMaker.py
index 7798484e354378b204a26063a4835b54faf81e2d..3b7e4338d568e4dc7c00663fff1f8f690bf7fcc2 100755
--- a/Reconstruction/egamma/egammaValidation/scripts/EgammaARTmonitoring_plotsMaker.py
+++ b/Reconstruction/egamma/egammaValidation/scripts/EgammaARTmonitoring_plotsMaker.py
@@ -145,6 +145,20 @@ def make_comparison_plots(type, f_base, f_nightly, result_file):
             make_ratio_plot(h_base, h_nightly, folder['title'], result_file)
 
 
+
+def makeIQEPlots(inHist, name):
+    outHist = inHist.QuantilesX(0.75, "EResolution_IQE_mu")
+    outHist.GetXaxis().SetTitle("<#mu>")
+    outHist.GetYaxis().SetTitle("IQE")
+    outHist25 = inHist.QuantilesX(0.25, "EResolutio_IQE_mu_25")
+    outHist.Add(outHist25, -1)
+    outHist.Scale(1/1.349)
+    
+    return outHist.Clone(inHist.GetName() + "_"+ name)
+
+
+
+
 def make_profile_plots(f_base, f_nightly, result_file, particle_type):
 
     cluster_list_to_loop = cluster_list
@@ -155,17 +169,26 @@ def make_profile_plots(f_base, f_nightly, result_file, particle_type):
         for histo in get_key_names(f_nightly, folder['name']):
             if '2D' not in histo:
                 continue
-            h_base = f_base.Get(folder['name'] + '/' + histo)
-            h_base_profile = h_base.ProfileX(histo+"_ProfileB")
-            h_nightly = f_nightly.Get(folder['name'] + '/' + histo)
-            h_nightly_profile = h_nightly.ProfileX(histo+"_Profile")
-            h_base_profile.SetDirectory(0)
-            h_nightly_profile.SetDirectory(0)
-
-            y_axis_label = "Mean %s" % (h_base_profile.GetTitle() )
-            h_base_profile.SetTitle("")
-
-            make_ratio_plot(h_base_profile, h_nightly_profile, folder['title'], result_file, y_axis_label)
+            if 'mu' in histo:
+              h_base = f_base.Get(folder['name'] + '/' + histo)
+              h_nightly = f_nightly.Get(folder['name'] + '/' + histo)
+
+              h_base = makeIQEPlots(h_base,'IQE')
+              h_nightly = makeIQEPlots(h_nightly,'IQE')
+              make_ratio_plot(h_base, h_nightly, folder['title'], result_file, 'IQE')
+
+            else: 
+              h_base = f_base.Get(folder['name'] + '/' + histo)
+              h_base_profile = h_base.ProfileX(histo+"_ProfileB")
+              h_nightly = f_nightly.Get(folder['name'] + '/' + histo)
+              h_nightly_profile = h_nightly.ProfileX(histo+"_Profile")
+              h_base_profile.SetDirectory(0)
+              h_nightly_profile.SetDirectory(0)
+
+              y_axis_label = "Mean %s" % (h_base_profile.GetTitle() )
+              h_base_profile.SetTitle("")
+
+              make_ratio_plot(h_base_profile, h_nightly_profile, folder['title'], result_file, y_axis_label)
 
 
 
diff --git a/Reconstruction/egamma/egammaValidation/src/ClusterHistograms.cxx b/Reconstruction/egamma/egammaValidation/src/ClusterHistograms.cxx
index bb42bb965a85d927a4987860ba0ee3579aa71bfe..d32ad1a47764e0ccda0aef8bad19e7aeabf6f4c3 100644
--- a/Reconstruction/egamma/egammaValidation/src/ClusterHistograms.cxx
+++ b/Reconstruction/egamma/egammaValidation/src/ClusterHistograms.cxx
@@ -18,7 +18,7 @@ StatusCode ClusterHistograms::initializePlots() {
   histo2DMap["number_cells_vs_et_in_layer_3_2D"] = (new TH2D(Form("%s_%s",m_name.c_str(),"number_cells_vs_et_in_layer_3_2D"), "Number of cells;E_{T}", 600,0,300,50,   0,100.));
   
   histo2DMap["number_cell_in_layer"] = (new TH2D(Form("%s_%s",m_name.c_str(),"number_cell_in_layer"), ";Number of cells;Layer",100,0,200, 4,0,4));  
-
+  histo2DMap["mu_energy_resolution_2D"] = (new TH2D(Form("%s_%s",m_name.c_str(),"mu_energy_resolution_2D"), ";<#mu>; Energy Resolution", 5,0,80,20,-1,1));
 
   ATH_CHECK(m_rootHistSvc->regHist(m_folder+"Eraw_Etruth_vs_Etruth_2D", histo2DMap["Eraw_Etruth_vs_Etruth_2D"]));
   ATH_CHECK(m_rootHistSvc->regHist(m_folder+"Eraw_Etruth_vs_eta_2D", histo2DMap["Eraw_Etruth_vs_eta_2D"]));
@@ -28,9 +28,9 @@ StatusCode ClusterHistograms::initializePlots() {
   ATH_CHECK(m_rootHistSvc->regHist(m_folder+"number_cells_vs_et_in_layer_2_2D", histo2DMap["number_cells_vs_et_in_layer_2_2D"]));
   ATH_CHECK(m_rootHistSvc->regHist(m_folder+"number_cells_vs_et_in_layer_3_2D", histo2DMap["number_cells_vs_et_in_layer_3_2D"]));
  
-
+ 
   ATH_CHECK(m_rootHistSvc->regHist(m_folder+"number_cell_in_layer", histo2DMap["number_cell_in_layer"]));
-
+  ATH_CHECK(m_rootHistSvc->regHist(m_folder+"mu_energy_resolution_2D", histo2DMap["mu_energy_resolution_2D"]));
 
 
 
@@ -44,17 +44,20 @@ void ClusterHistograms::fill(const xAOD::Egamma& egamma) {
 
 void ClusterHistograms::fill(const xAOD::Egamma& egamma, float mu = 0) {
 
-  (void)mu; 
-
   const xAOD::CaloCluster *cluster = egamma.caloCluster();
   
   const xAOD::TruthParticle *truth_egamma = xAOD::TruthHelpers::getTruthParticle(egamma);
+
   
   if ( !truth_egamma ) return;
 
-  histo2DMap["Eraw_Etruth_vs_Etruth_2D"]->Fill(truth_egamma->e()/1000,cluster->rawE()/truth_egamma->e());
-  histo2DMap["Eraw_Etruth_vs_eta_2D"]->Fill(truth_egamma->eta(),cluster->rawE()/truth_egamma->e());
+  const auto Ereco = cluster->rawE();
+  const auto Etruth = truth_egamma->e();
+  const auto Eres = (Ereco - Etruth)/Etruth;
 
+  histo2DMap["Eraw_Etruth_vs_Etruth_2D"]->Fill(truth_egamma->e()/1000,Ereco/Etruth);
+  histo2DMap["Eraw_Etruth_vs_eta_2D"]->Fill(truth_egamma->eta(),Ereco/Etruth);
+  histo2DMap["mu_energy_resolution_2D"]->Fill(mu,Eres);
 
   const CaloClusterCellLink* cellLinks = cluster->getCellLinks();
   
diff --git a/Reconstruction/egamma/egammaValidation/src/EgammaMonitoring.cxx b/Reconstruction/egamma/egammaValidation/src/EgammaMonitoring.cxx
index 9d637b529a06bcf4fb8386da0968711f6dbef127..fcb169e2478924ed7896f0a2c05ba2005c643db4 100644
--- a/Reconstruction/egamma/egammaValidation/src/EgammaMonitoring.cxx
+++ b/Reconstruction/egamma/egammaValidation/src/EgammaMonitoring.cxx
@@ -276,6 +276,9 @@ StatusCode EgammaMonitoring::execute() {
   // Retrieve things from the event store
   const xAOD::EventInfo *eventInfo = nullptr;
   ANA_CHECK(evtStore()->retrieve(eventInfo, "EventInfo"));
+  const float mu = eventInfo->averageInteractionsPerCrossing();
+
+ 
 
   // Retrieve egamma truth particles
   const xAOD::TruthParticleContainer *egTruthParticles = nullptr;
@@ -325,9 +328,9 @@ StatusCode EgammaMonitoring::execute() {
 
       if (!electron) continue;
 
-      clusterPromptAll->fill(*electron);
+      clusterPromptAll->fill(*electron,mu);
       if (egtruth->pt() > 10*Gaudi::Units::GeV) {
-        clusterPrompt10GeV->fill(*electron);
+        clusterPrompt10GeV->fill(*electron,mu);
       }
      
 
@@ -502,9 +505,9 @@ StatusCode EgammaMonitoring::execute() {
     for (auto elrec : *RecoEl) {
 
       if (!elrec) continue;
-      clusterAll->fill(*elrec);
+      clusterAll->fill(*elrec,mu);
       if (elrec->pt() > 10*Gaudi::Units::GeV) {
-        cluster10GeV->fill(*elrec);
+        cluster10GeV->fill(*elrec,mu);
       }
       recoElectronAll->fill(*elrec);
       showerShapesAll->fill(*elrec);
@@ -579,9 +582,9 @@ StatusCode EgammaMonitoring::execute() {
       recoPhotonAll->fill(*phrec);
       isolationAll->fill(*phrec);
       showerShapesAll->fill(*phrec);
-      clusterAll->fill(*phrec);
+      clusterAll->fill(*phrec,mu);
       if (phrec->pt() > 10*Gaudi::Units::GeV) {
-        cluster10GeV->fill(*phrec);
+        cluster10GeV->fill(*phrec,mu);
       }
       if (phrec->pt() > 10*Gaudi::Units::GeV){ 
         showerShapes10GeV->fill(*phrec);
@@ -600,9 +603,9 @@ StatusCode EgammaMonitoring::execute() {
       if (!photon) continue;
 
       truthPhotonRecoPhoton->fill(*egtruth);
-      clusterPromptAll->fill(*photon);
+      clusterPromptAll->fill(*photon,mu);
       if (egtruth->pt() > 10*Gaudi::Units::GeV) {
-        clusterPrompt10GeV->fill(*photon);
+        clusterPrompt10GeV->fill(*photon,mu);
       }
 
       bool isRecoConv = xAOD::EgammaHelpers::isConvertedPhoton(photon);
@@ -616,23 +619,23 @@ StatusCode EgammaMonitoring::execute() {
 
           truthPhotonConvRecoConv->fill(*egtruth);
 
-          clusterConvPhoton->fill(*photon);
+          clusterConvPhoton->fill(*photon,mu);
 
           if (convType == xAOD::EgammaParameters::singleSi) {
             truthPhotonConvRecoConv1Si->fill(*egtruth);
-            clusterConvPhotonSi->fill(*photon);
+            clusterConvPhotonSi->fill(*photon,mu);
           } else if (convType == xAOD::EgammaParameters::singleTRT) {
             truthPhotonConvRecoConv1TRT->fill(*egtruth);
-            clusterConvPhotonTRT->fill(*photon);
+            clusterConvPhotonTRT->fill(*photon,mu);
           } else if (convType == xAOD::EgammaParameters::doubleSi) {
             truthPhotonConvRecoConv2Si->fill(*egtruth);
-            clusterConvPhotonSiSi->fill(*photon);
+            clusterConvPhotonSiSi->fill(*photon,mu);
           } else if (convType == xAOD::EgammaParameters::doubleTRT) {
             truthPhotonConvRecoConv2TRT->fill(*egtruth);
-            clusterConvPhotonTRTTRT->fill(*photon);
+            clusterConvPhotonTRTTRT->fill(*photon,mu);
           } else if (convType == xAOD::EgammaParameters::doubleSiTRT) {
             truthPhotonConvRecoConv2SiTRT->fill(*egtruth);
-            clusterConvPhotonSiTRT->fill(*photon); 
+            clusterConvPhotonSiTRT->fill(*photon,mu); 
           }
 
           if (m_IsoFixedCutTight->accept(*photon)) recoPhotonConvIsoFixedCutTight->fill(*egtruth);
@@ -641,7 +644,7 @@ StatusCode EgammaMonitoring::execute() {
         } // isRecoConv
         else {
           truthPhotonConvRecoUnconv->fill(*egtruth);
-          clusterUnconvPhoton->fill(*photon); 
+          clusterUnconvPhoton->fill(*photon,mu); 
         } 
 
       } //isTrueConv
diff --git a/Reconstruction/egamma/egammaValidation/test/test_electron_pileup.sh b/Reconstruction/egamma/egammaValidation/test/test_electron_pileup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..049e211840dd6ce30b7ec0b78f9324c338bd2e5e
--- /dev/null
+++ b/Reconstruction/egamma/egammaValidation/test/test_electron_pileup.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# art-description: ART Monitoring Tool for electron Validation
+#
+# art-type: grid
+# art-input: mc16_13TeV.423000.ParticleGun_single_electron_egammaET.recon.RDO.e3566_s3113_r10470
+# art-input-nfiles: 15
+# art-cores: 4
+# art-include: 21.0/Athena
+# art-include: master/Athena
+# art-output: *.hist.root
+# art-output: *.txt
+# art-output: *.png
+
+echo "ArtProcess: $ArtProcess"
+
+case $ArtProcess in
+    
+    "start")
+	echo "Starting"
+	echo "List of files = " ${ArtInFile}
+	;;
+
+    "end")
+	echo "Ending"
+	
+	echo "Merging AODs"
+        echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+        unset  ATHENA_NUM_PROC
+        unset  ATHENA_PROC_NUMBER
+
+	AODMerge_tf.py --inputAODFile=art_core_*/Nightly_AOD_electron.pool.root --outputAOD_MRGFile=Nightly_AOD_electron.pool.root --postExec "all:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST.LATERAL.ENG_FRAC_EM\");StreamAOD.ItemList=CILMergeAOD()"
+	
+	echo  "art-result: $? AODMerge"
+
+	set +e
+
+	checkFile.py Nightly_AOD_electron.pool.root > checkFile_Nightly_electron.txt 
+
+	echo  "art-result: $? checks_files"
+
+	get_files -jo egamma_art_checker_joboptions.py
+	athena -c "particleType='electron'" egamma_art_checker_joboptions.py
+
+	echo  "art-result: $? athena_job"
+
+	EgammaARTmonitoring_plotsMaker.py /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/egammaValidation/Baseline_Files/rootFiles/Baseline-monitoring_electron_pileup.hist.root Nightly-monitoring_electron.hist.root electron
+
+	echo  "art-result: $? final_comparison"
+
+	;;
+
+    *)
+	echo "Test $ArtProcess"
+
+	mkdir "art_core_${ArtProcess}"
+	cd "art_core_${ArtProcess}"
+	
+	IFS=',' read -r -a file <<< "${ArtInFile}"
+	file=${file[${ArtProcess}]}
+	x="../$file"
+
+	echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+	unset  ATHENA_NUM_PROC
+	unset  ATHENA_PROC_NUMBER
+	
+	Reco_tf.py --inputRDOFile=$x --outputAODFile=Nightly_AOD_electron.pool.root --maxEvents=2000 --autoConfiguration="everything" --preExec="from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(False); rec.doTrigger=False; rec.doMuon=False; rec.doTau=False ; from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doMuonSpShower=False ; rec.doBTagging=False ; recAlgs.doEFlow=False ; recAlgs.doEFlowJet=False ; recAlgs.doMissingET=False ; recAlgs.doMissingETSig=False ; from JetRec.JetRecFlags import jetFlags ; jetFlags.Enabled=False ; " --postExec "ESDtoAOD:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()" "POOLMergeAthenaMPAOD0:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()"
+	
+	echo  "art-result: $? reconstruction"
+
+	;;
+esac
diff --git a/Reconstruction/egamma/egammaValidation/test/test_gamma_pileup.sh b/Reconstruction/egamma/egammaValidation/test/test_gamma_pileup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7ea71140b2e4bdfa3b32e63eb194e45f66a05ca6
--- /dev/null
+++ b/Reconstruction/egamma/egammaValidation/test/test_gamma_pileup.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+#
+# art-description: ART Monitoring Tool for gamma Validation
+#
+# art-type: grid
+# art-input: mc16_13TeV.423001.ParticleGun_single_photon_egammaET.recon.RDO.e3566_s3113_r10470
+# art-input-nfiles: 15
+# art-cores: 4
+# art-include: 21.0/Athena
+# art-include: master/Athena
+# art-output: *.hist.root
+# art-output: *.txt
+# art-output: *.png
+# art-output: log.*
+
+echo "ArtProcess: $ArtProcess"
+
+case $ArtProcess in
+    
+    "start")
+	echo "Starting"
+	echo "List of files = " ${ArtInFile}
+	;;
+
+    "end")
+	echo "Ending"
+	
+	echo "Merging AODs"
+        echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+        unset  ATHENA_NUM_PROC
+        unset  ATHENA_PROC_NUMBER
+
+        AODMerge_tf.py --inputAODFile=art_core_*/Nightly_AOD_gamma.pool.root --outputAOD_MRGFile=Nightly_AOD_gamma.pool.root --postExec "all:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST.LATERAL.ENG_FRAC_EM\");StreamAOD.ItemList=CILMergeAOD()"
+	
+	echo  "art-result: $? AODMerge"
+
+	set +e
+
+	checkFile.py Nightly_AOD_gamma.pool.root > checkFile_Nightly_gamma.txt 
+
+	echo  "art-result: $? checks_files"
+
+	get_files -jo egamma_art_checker_joboptions.py
+	athena -c "particleType='gamma'" egamma_art_checker_joboptions.py
+
+	echo  "art-result: $? athena_job"
+
+	EgammaARTmonitoring_plotsMaker.py /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/egammaValidation/Baseline_Files/rootFiles/Baseline-monitoring_gamma_pileup.hist.root Nightly-monitoring_gamma.hist.root gamma
+
+	echo  "art-result: $? final_comparison"
+
+	;;
+
+    *)
+	echo "Test $ArtProcess"
+
+	mkdir "art_core_${ArtProcess}"
+	cd "art_core_${ArtProcess}"
+
+	IFS=',' read -r -a file <<< "${ArtInFile}"
+        file=${file[${ArtProcess}]}
+	x="../$file"
+		
+	echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+	unset  ATHENA_NUM_PROC
+	unset  ATHENA_PROC_NUMBER
+	
+	Reco_tf.py --inputRDOFile=$x --outputAODFile=Nightly_AOD_gamma.pool.root --maxEvents=2000 --autoConfiguration="everything" --preExec="from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(False); rec.doTrigger=False; rec.doMuon=False; rec.doTau=False ; from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doMuonSpShower=False ; rec.doBTagging=False ; recAlgs.doEFlow=False ; recAlgs.doEFlowJet=False ; recAlgs.doMissingET=False ; recAlgs.doMissingETSig=False ; from JetRec.JetRecFlags import jetFlags ; jetFlags.Enabled=False ; " --postExec "ESDtoAOD:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()" "POOLMergeAthenaMPAOD0:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()"
+	
+	echo  "art-result: $? reconstruction"
+
+	;;
+esac
diff --git a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
index 809c9169f361c4f745e363f78af670648780bc2f..cc7aed96978d965068ea9833a214e95d72009729 100755
--- a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
+++ b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
@@ -1397,7 +1397,14 @@ StatusCode FastShowerCellBuilderTool::process_particle(CaloCellContainer* theCel
         return StatusCode::SUCCESS;
       }
 
-      if(p.E>=3 && p.E*Ein>2000) {
+      float ERatioThresh = 3;
+      if (std::abs(Epara->eta() - 1.37) < 0.01) {
+        // Increase threshold in the gap region.  It's possible for a shower
+        // to fluctuate to have almost all its energy in TileGap3, which has
+        // a relatively small weight.
+        ERatioThresh = 4;
+      }
+      if(p.E>=ERatioThresh && p.E*Ein>2000) {
         ATH_MSG_WARNING("particle energy/truth="<<p.E);
         ATH_MSG_WARNING(" - "<<particle_info_str.str());
         ATH_MSG_WARNING(" parametrization  : "<< Epara->GetTitle());
diff --git a/Simulation/G4Utilities/G4UserActions/G4UserActions/RadiationMapsMaker.h b/Simulation/G4Utilities/G4UserActions/G4UserActions/RadiationMapsMaker.h
index 3ab905b05174adf22d5be81f43aae86fe2e15012..b8701db37414ef49c8aee85cdfea5db62f0e1190 100644
--- a/Simulation/G4Utilities/G4UserActions/G4UserActions/RadiationMapsMaker.h
+++ b/Simulation/G4Utilities/G4UserActions/G4UserActions/RadiationMapsMaker.h
@@ -61,6 +61,11 @@ namespace G4UA
 	int nBinslogEo  = 45;   
 	double logEMino = -2.; // min log10(E_kin/MeV) 
 	double logEMaxo =  7.; // max log10(E_kin/MeV) 
+
+	// time dependent TID maps
+	int nBinslogT   =  20;   
+	double logTMin  = -9.; // log10(t_cut/s); first bin for t < 1 ns 
+	double logTMax  = 11.; // log10(t_cut/s); last bin for t < 3169 a
       };
 
 
@@ -177,7 +182,14 @@ namespace G4UA
 	std::vector<double> m_rz_rest_spec;
         /// vector of e^+/- spectra in log10(E/MeV) bins and the full 2d grid
 	std::vector<double> m_full_rz_rest_spec;
-	
+
+	// time dependent maps
+
+	/// vector of time dependent TID in zoom 2d grid 
+	std::vector<double> m_rz_tid_time;
+	/// vector of time dependent TID in full 2d grid 
+	std::vector<double> m_full_rz_tid_time;
+
 	void merge(const Report& maps);
       };
 
diff --git a/Simulation/G4Utilities/G4UserActions/share/jobOptions.RadiationMapsMaker.py b/Simulation/G4Utilities/G4UserActions/share/jobOptions.RadiationMapsMaker.py
index f5fed21f0be49d209ea76641ca208d8828db2098..1eac9d9a1e29d7e4ac8cbb83ecb353d2f745055b 100644
--- a/Simulation/G4Utilities/G4UserActions/share/jobOptions.RadiationMapsMaker.py
+++ b/Simulation/G4Utilities/G4UserActions/share/jobOptions.RadiationMapsMaker.py
@@ -10,6 +10,7 @@ from G4UserActions.G4UserActionsConf import G4UA__RadiationMapsMakerTool
 # radmaptool.NBinsZ          =   240
 # radmaptool.NBinsLogEn      =    90
 # radmaptool.NBinsLogEo      =    45
+# radmaptool.NBinsLogTimeCut =    20
 # radmaptool.NBinsR3D        =    30
 # radmaptool.NBinsZ3D        =    60
 # radmaptool.NBinsPhi3D      =    32
@@ -27,6 +28,8 @@ from G4UserActions.G4UserActionsConf import G4UA__RadiationMapsMakerTool
 # radmaptool.LogEMaxn        =    7.0  # in log10(E/MeV)
 # radmaptool.LogEMino        =   -2.0  # in log10(E/MeV)
 # radmaptool.LogEMaxo        =    7.0  # in log10(E/MeV)
+# radmaptool.LogTMin         =   -9.0  # in log10(t_cut/s)
+# radmaptool.LogTMax         =   11.0  # in log10(t_cut/s)
 #
 simFlags.OptionalUserActionList.addAction('G4UA::RadiationMapsMakerTool',['Run','Step'])
 
diff --git a/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMaker.cxx b/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMaker.cxx
index 4e791a49b6e7bc4b4e4ba61a7b554f2a41379ccb..1451e193c46f940e30508a4da7c6e0ca448d4983 100644
--- a/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMaker.cxx
+++ b/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMaker.cxx
@@ -105,6 +105,15 @@ namespace G4UA{
       m_3d_chad[i] += maps.m_3d_chad[i];
     }
 
+    // all time 2d vectors have same size 
+    for(unsigned int i=0;i<maps.m_rz_tid_time.size();i++) {
+      // zoom 2d
+      m_rz_tid_time [i] += maps.m_rz_tid_time [i];
+
+      // full 2d
+      m_full_rz_tid_time [i] += maps.m_full_rz_tid_time [i];
+    }
+    
     for(unsigned int i=0;i<maps.m_3d_vol.size();i++) {
       // need volume fraction only if particular material is selected
       m_3d_vol [i] += maps.m_3d_vol [i];
@@ -158,6 +167,9 @@ namespace G4UA{
     m_maps.m_3d_neut.resize(0);
     m_maps.m_3d_chad.resize(0);
 
+    m_maps.m_rz_tid_time      .resize(0);
+    m_maps.m_full_rz_tid_time .resize(0);
+
     m_maps.m_rz_neut_spec     .resize(0);
     m_maps.m_full_rz_neut_spec.resize(0);
     m_maps.m_rz_gamm_spec     .resize(0);
@@ -206,6 +218,9 @@ namespace G4UA{
     m_maps.m_3d_neut.resize(m_config.nBinsz3d*m_config.nBinsr3d*m_config.nBinsphi3d,0.0);
     m_maps.m_3d_chad.resize(m_config.nBinsz3d*m_config.nBinsr3d*m_config.nBinsphi3d,0.0);
 
+    m_maps.m_rz_tid_time      .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogT,0.0);
+    m_maps.m_full_rz_tid_time .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogT,0.0);
+
     m_maps.m_rz_neut_spec     .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEn,0.0);
     m_maps.m_full_rz_neut_spec.resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEn,0.0);
     m_maps.m_rz_gamm_spec     .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEo,0.0);
@@ -338,6 +353,23 @@ namespace G4UA{
     
       double rho = aStep->GetTrack()->GetMaterial()->GetDensity()/CLHEP::g*CLHEP::cm3; 
 
+      // get time of step as average between pre- and post-step point
+      G4StepPoint* pre_step_point = aStep->GetPreStepPoint();
+      G4StepPoint* post_step_point = aStep->GetPostStepPoint();
+      G4ThreeVector startPoint = pre_step_point->GetPosition();
+      G4ThreeVector endPoint   = post_step_point->GetPosition();
+      G4ThreeVector p = (startPoint + endPoint) * 0.5;
+
+      double timeOfFlight = (pre_step_point->GetGlobalTime() +
+			     post_step_point->GetGlobalTime()) * 0.5;
+
+      // then compute time difference to a particle traveling with speed of light until this position
+      double deltatime = (timeOfFlight - p.mag()/CLHEP::c_light)/CLHEP::s;
+
+      // and use the log10 of that time difference in seconds to fill time-dependent histograms
+      // note that the upper bin boundary is the relevant cut. The first bin contains thus all times even shorter than the first lower bin boundary
+      double logt = (deltatime<0?m_config.logTMin-1:log10(deltatime));
+      
       bool goodMaterial(false);
 
       if (m_config.material.empty()) {
@@ -406,7 +438,10 @@ namespace G4UA{
       double dE_ION = dE_TOT-dE_NIEL;
 
       for(unsigned int i=0;i<nStep;i++) {
-	double absz = fabs(z0+dz*(i+0.5));
+	double abszorz = z0+dz*(i+0.5);
+	// if |z| instead of z take abs value
+	if ( m_config.zMinFull >= 0 ) abszorz = fabs(abszorz);
+
 	double rr = sqrt(pow(x0+dx*(i+0.5),2)+
 			 pow(y0+dy*(i+0.5),2));
 	double pphi = atan2(y0+dy*(i+0.5),x0+dx*(i+0.5))*180/M_PI;
@@ -418,15 +453,21 @@ namespace G4UA{
 	int vBinFullSpecn = -1;
 	int vBinZoomSpeco = -1;
 	int vBinFullSpeco = -1;
+	int vBinZoomTime  = -1;
+	int vBinFullTime  = -1;
 	
 	// zoom 2d
-	if ( m_config.zMinZoom < absz && 
-	     m_config.zMaxZoom > absz ) {
-	  int iz = (absz-m_config.zMinZoom)/(m_config.zMaxZoom-m_config.zMinZoom)*m_config.nBinsz;
+	if ( m_config.zMinZoom < abszorz && 
+	     m_config.zMaxZoom > abszorz ) {
+	  int iz = (abszorz-m_config.zMinZoom)/(m_config.zMaxZoom-m_config.zMinZoom)*m_config.nBinsz;
 	  if ( m_config.rMinZoom < rr && 
 	       m_config.rMaxZoom > rr ) {
 	    int ir = (rr-m_config.rMinZoom)/(m_config.rMaxZoom-m_config.rMinZoom)*m_config.nBinsr;
 	    vBinZoom = m_config.nBinsr*iz+ir;
+	    if ( m_config.logTMax > logt ){
+	      int ilt = (logt < m_config.logTMin?0:(logt-m_config.logTMin)/(m_config.logTMax-m_config.logTMin)*m_config.nBinslogT);
+	      vBinZoomTime = m_config.nBinsr*m_config.nBinslogT*iz+ir*m_config.nBinslogT+ilt;
+	    }
 	    if ( m_config.logEMinn < logEKin && 
 		 m_config.logEMaxn > logEKin &&
 		 (pdgid == 6 || pdgid == 7)) {
@@ -443,13 +484,17 @@ namespace G4UA{
 	}
 	
 	// full 2d
-	if ( m_config.zMinFull < absz && 
-	     m_config.zMaxFull > absz ) {
-	  int iz = (absz-m_config.zMinFull)/(m_config.zMaxFull-m_config.zMinFull)*m_config.nBinsz;
+	if ( m_config.zMinFull < abszorz && 
+	     m_config.zMaxFull > abszorz ) {
+	  int iz = (abszorz-m_config.zMinFull)/(m_config.zMaxFull-m_config.zMinFull)*m_config.nBinsz;
 	  if ( m_config.rMinFull < rr && 
 	       m_config.rMaxFull > rr ) {
 	    int ir = (rr-m_config.rMinFull)/(m_config.rMaxFull-m_config.rMinFull)*m_config.nBinsr;
 	    vBinFull = m_config.nBinsr*iz+ir;
+	    if ( m_config.logTMax > logt ){
+	      int ilt = (logt < m_config.logTMin?0:(logt-m_config.logTMin)/(m_config.logTMax-m_config.logTMin)*m_config.nBinslogT);
+	      vBinFullTime = m_config.nBinsr*m_config.nBinslogT*iz+ir*m_config.nBinslogT+ilt;
+	    }
 	    if ( m_config.logEMinn < logEKin && 
 		 m_config.logEMaxn > logEKin &&
 		 (pdgid == 6 || pdgid == 7)) {
@@ -466,9 +511,9 @@ namespace G4UA{
 	}
 	
 	// zoom 3d
-	if ( m_config.zMinZoom < absz && 
-	     m_config.zMaxZoom > absz ) {
-	  int iz = (absz-m_config.zMinZoom)/(m_config.zMaxZoom-m_config.zMinZoom)*m_config.nBinsz3d;
+	if ( m_config.zMinZoom < abszorz && 
+	     m_config.zMaxZoom > abszorz ) {
+	  int iz = (abszorz-m_config.zMinZoom)/(m_config.zMaxZoom-m_config.zMinZoom)*m_config.nBinsz3d;
 	  if ( m_config.rMinZoom < rr && 
 	       m_config.rMaxZoom > rr ) {
 	    int ir = (rr-m_config.rMinZoom)/(m_config.rMaxZoom-m_config.rMinZoom)*m_config.nBinsr3d;
@@ -503,6 +548,9 @@ namespace G4UA{
 	    m_maps.m_rz_eion[vBinZoom] += dE_ION;
 	  }
 	}
+	if ( goodMaterial && vBinZoomTime >=0 ) {
+	    m_maps.m_rz_tid_time[vBinZoomTime] += dE_ION/rho;
+	}
 	if ( goodMaterial && vBinFull >=0 ) {
 	  if ( pdgid == 999 ) {
 	    m_maps.m_full_rz_tid [vBinFull] += dl;
@@ -513,6 +561,9 @@ namespace G4UA{
 	    m_maps.m_full_rz_eion[vBinFull] += dE_ION;
 	  }
 	}
+	if ( goodMaterial && vBinFullTime >=0 ) {
+	    m_maps.m_full_rz_tid_time[vBinFullTime] += dE_ION/rho;
+	}
 	if ( goodMaterial && vBin3d >=0 ) {
 	  if ( pdgid == 999 ) {
 	    m_maps.m_3d_tid [vBin3d] += dl;
diff --git a/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMakerTool.cxx b/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMakerTool.cxx
index 461f0d9f8824c77652cd8d6a25b4a923b153fc38..b9ee2a5c3de40da5411cd4b384871a1df0799f56 100644
--- a/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMakerTool.cxx
+++ b/Simulation/G4Utilities/G4UserActions/src/RadiationMapsMakerTool.cxx
@@ -20,39 +20,44 @@ namespace G4UA{
     /// Output Filename for the Radiation Maps
     declareProperty("RadMapsFileName", m_radMapsFileName);
     /// Name of the material to make radiation maps for (take all if empty) 
-    declareProperty("Material"  , m_config.material);
+    declareProperty("Material"       , m_config.material);
     /// map granularities 
     /// number of bins in r and z for all 2D maps
-    declareProperty("NBinsR"    , m_config.nBinsr);
-    declareProperty("NBinsZ"    , m_config.nBinsz);
+    declareProperty("NBinsR"         , m_config.nBinsr);
+    declareProperty("NBinsZ"         , m_config.nBinsz);
     /// number of bins in logE for energy spectra of neutrons in 2D grids
-    declareProperty("NBinsLogEn", m_config.nBinslogEn);
+    declareProperty("NBinsLogEn"     , m_config.nBinslogEn);
     /// number of bins in logE for energy spectra of other particles in 2D grids
-    declareProperty("NBinsLogEo", m_config.nBinslogEo);
+    declareProperty("NBinsLogEo"     , m_config.nBinslogEo);
     /// number of bins in r, z and phi for all 3D maps
-    declareProperty("NBinsR3D"  , m_config.nBinsr3d);
-    declareProperty("NBinsZ3D"  , m_config.nBinsz3d);
-    declareProperty("NBinsPhi3D", m_config.nBinsphi3d);
+    declareProperty("NBinsR3D"       , m_config.nBinsr3d);
+    declareProperty("NBinsZ3D"       , m_config.nBinsz3d);
+    declareProperty("NBinsPhi3D"     , m_config.nBinsphi3d);
+    /// number of bins in logTimeCut for time dependent TID 2D maps
+    declareProperty("NBinsLogTimeCut", m_config.nBinslogT);
     /// map ranges
     /// for Zoomed area in 2D and 3D
-    declareProperty("RMinZoom"  , m_config.rMinZoom);
-    declareProperty("RMaxZoom"  , m_config.rMaxZoom);
-    declareProperty("ZMinZoom"  , m_config.zMinZoom);
-    declareProperty("ZMaxZoom"  , m_config.zMaxZoom);
+    declareProperty("RMinZoom"       , m_config.rMinZoom);
+    declareProperty("RMaxZoom"       , m_config.rMaxZoom);
+    declareProperty("ZMinZoom"       , m_config.zMinZoom);
+    declareProperty("ZMaxZoom"       , m_config.zMaxZoom);
     /// for Full detector in 2D
-    declareProperty("RMinFull"  , m_config.rMinFull);
-    declareProperty("RMaxFull"  , m_config.rMaxFull);
-    declareProperty("ZMinFull"  , m_config.zMinFull);
-    declareProperty("ZMaxFull"  , m_config.zMaxFull);
+    declareProperty("RMinFull"       , m_config.rMinFull);
+    declareProperty("RMaxFull"       , m_config.rMaxFull);
+    declareProperty("ZMinFull"       , m_config.zMinFull);
+    declareProperty("ZMaxFull"       , m_config.zMaxFull);
     /// for Zoomed area in 3D 
-    declareProperty("PhiMinZoom", m_config.phiMinZoom);
-    declareProperty("PhiMaxZoom", m_config.phiMaxZoom);
+    declareProperty("PhiMinZoom"     , m_config.phiMinZoom);
+    declareProperty("PhiMaxZoom"     , m_config.phiMaxZoom);
     /// for logE of neutrons in 2D spectra
-    declareProperty("LogEMinn"  , m_config.logEMinn);
-    declareProperty("LogEMaxn"  , m_config.logEMaxn);
+    declareProperty("LogEMinn"       , m_config.logEMinn);
+    declareProperty("LogEMaxn"       , m_config.logEMaxn);
     /// for logE of other particles in 2D spectra
-    declareProperty("LogEMino"  , m_config.logEMino);
-    declareProperty("LogEMaxo"  , m_config.logEMaxo);
+    declareProperty("LogEMino"       , m_config.logEMino);
+    declareProperty("LogEMaxo"       , m_config.logEMaxo);
+    /// for logT in time-dependent TID 2D maps
+    declareProperty("LogTMin"        , m_config.logTMin);
+    declareProperty("LogTMax"        , m_config.logTMax);
   }
 
   //---------------------------------------------------------------------------
@@ -60,25 +65,27 @@ namespace G4UA{
   //---------------------------------------------------------------------------
   StatusCode RadiationMapsMakerTool::initialize()
   {
-    ATH_MSG_INFO( "Initializing     " << name() << "\n" <<
-                  "OutputFile:      " << m_radMapsFileName   << "\n"                 << 
-                  "Material:        " << m_config.material   << "\n"                 << 
-                  "2D Maps:         " << m_config.nBinsz     << " |z|-bins, "        << 
-		                         m_config.nBinsr     << " r-bins"            << "\n"                << 
-		  "Zoom:            " << m_config.zMinZoom   << " < |z|/cm < "       << m_config.zMaxZoom   << ", " << 
-                                         m_config.rMinZoom   << " < r/cm < "         << m_config.rMaxZoom   << "\n" << 
-                  "Full:            " << m_config.zMinFull   << " < |z|/cm < "       << m_config.zMaxFull   << ", " << 
-                                         m_config.rMinFull   << " < r/cm < "         << m_config.rMaxFull   << "\n" << 
-                  "Neutron Spectra: " << m_config.nBinslogEn << " log10E-bins"       << ", "                <<
-                                         m_config.logEMinn   << " < log10(E/MeV) < " << m_config.logEMaxn   << "\n" << 
-                  "Other Spectra:   " << m_config.nBinslogEo << " log10E-bins"       << ", "                <<
-                                         m_config.logEMino   << " < log10(E/MeV) < " << m_config.logEMaxo   << "\n" << 
-                  "3D Maps:         " << m_config.nBinsz3d   << " |z|-bins, "       << 
-                                         m_config.nBinsr3d   << " r-bins, "         << 
-                                         m_config.nBinsphi3d << " phi-bins"         << "\n"                << 
-                  "Zoom:            " << m_config.zMinZoom   << " < |z|/cm < "      << m_config.zMaxZoom   << ", " << 
-                                         m_config.rMinZoom   << " < r/cm < "        << m_config.rMaxZoom   << ", " <<
-                                         m_config.phiMinZoom << " < phi/degrees < " << m_config.phiMaxZoom );
+    ATH_MSG_INFO( "Initializing     " << name()              << "\n"                                              <<
+                  "OutputFile:      " << m_radMapsFileName   << "\n"                                              << 
+                  "Material:        " << m_config.material   << "\n"                                              << 
+                  "2D Maps:         " << m_config.nBinsz     << (m_config.zMinFull<0?" z-bins, ":" |z|-bins, ")   << 
+		                         m_config.nBinsr     << " r-bins"                                         << "\n"                << 
+		  "Zoom:            " << m_config.zMinZoom   << (m_config.zMinFull<0?" < z/cm < ":" < |z|/cm < ") << m_config.zMaxZoom   << ", " << 
+                                         m_config.rMinZoom   << " < r/cm < "                                      << m_config.rMaxZoom   << "\n" << 
+                  "Full:            " << m_config.zMinFull   << (m_config.zMinFull<0?" < z/cm < ":" < |z|/cm < ") << m_config.zMaxFull   << ", " << 
+                                         m_config.rMinFull   << " < r/cm < "                                      << m_config.rMaxFull   << "\n" << 
+                  "Neutron Spectra: " << m_config.nBinslogEn << " log10E-bins"                                    << ", "                <<
+                                         m_config.logEMinn   << " < log10(E/MeV) < "                              << m_config.logEMaxn   << "\n" << 
+                  "Other Spectra:   " << m_config.nBinslogEo << " log10E-bins"                                    << ", "                <<
+                                         m_config.logEMino   << " < log10(E/MeV) < "                              << m_config.logEMaxo   << "\n" << 
+                  "3D Maps:         " << m_config.nBinsz3d   << (m_config.zMinFull<0?" z-bins, ":" |z|-bins, ")   << 
+                                         m_config.nBinsr3d   << " r-bins, "                                       << 
+                                         m_config.nBinsphi3d << " phi-bins"                                       << "\n"                << 
+                  "Zoom:            " << m_config.zMinZoom   << (m_config.zMinFull<0?" < z/cm < ":" < |z|/cm < ") << m_config.zMaxZoom   << ", " << 
+                                         m_config.rMinZoom   << " < r/cm < "                                      << m_config.rMaxZoom   << ", " <<
+                                         m_config.phiMinZoom << " < phi/degrees < "                               << m_config.phiMaxZoom << "\n" <<
+                  "Time TID Maps:   " << m_config.nBinslogT  << " Time-cut bins, "                                <<
+		                         m_config.logTMin    << " < log10(t_cut/s) < "                            << m_config.logTMax );
       
     return StatusCode::SUCCESS;
   }
@@ -128,6 +135,9 @@ namespace G4UA{
     m_report.m_rz_rest_spec     .resize(0);
     m_report.m_full_rz_rest_spec.resize(0);
 
+    m_report.m_rz_tid_time      .resize(0);
+    m_report.m_full_rz_tid_time .resize(0);
+
     if (!m_config.material.empty()) {
       // need volume fraction only if particular material is selected
       // 2d zoom
@@ -178,6 +188,10 @@ namespace G4UA{
     m_report.m_full_rz_prot_spec.resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEo,0.0);
     m_report.m_rz_rest_spec     .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEo,0.0);
     m_report.m_full_rz_rest_spec.resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogEo,0.0);
+
+    m_report.m_rz_tid_time      .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogT,0.0);
+    m_report.m_full_rz_tid_time .resize(m_config.nBinsz*m_config.nBinsr*m_config.nBinslogT,0.0);
+
     if (!m_config.material.empty()) {
       // need volume fraction only if particular material is selected
       // 2d zoom
@@ -203,12 +217,14 @@ namespace G4UA{
     TH2D * h_rz_neut = new TH2D("rz_neut","rz_neut",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom);
     TH2D * h_rz_chad = new TH2D("rz_chad","rz_chad",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom);
 
-    h_rz_tid  ->SetXTitle("|z| [cm]");
-    h_rz_eion ->SetXTitle("|z| [cm]");
-    h_rz_niel ->SetXTitle("|z| [cm]");
-    h_rz_h20  ->SetXTitle("|z| [cm]");
-    h_rz_neut ->SetXTitle("|z| [cm]");
-    h_rz_chad ->SetXTitle("|z| [cm]");
+    const char * xtitle =  (m_config.zMinFull<0?"z [cm]":"|z| [cm]");
+
+    h_rz_tid  ->SetXTitle(xtitle);
+    h_rz_eion ->SetXTitle(xtitle);
+    h_rz_niel ->SetXTitle(xtitle);
+    h_rz_h20  ->SetXTitle(xtitle);
+    h_rz_neut ->SetXTitle(xtitle);
+    h_rz_chad ->SetXTitle(xtitle);
 
     h_rz_tid  ->SetYTitle("r [cm]");
     h_rz_eion ->SetYTitle("r [cm]");
@@ -231,12 +247,12 @@ namespace G4UA{
     TH2D *h_full_rz_neut = new TH2D("full_rz_neut","full_rz_neut",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull);
     TH2D *h_full_rz_chad = new TH2D("full_rz_chad","full_rz_chad",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull);
 
-    h_full_rz_tid  ->SetXTitle("|z| [cm]");
-    h_full_rz_eion ->SetXTitle("|z| [cm]");
-    h_full_rz_niel ->SetXTitle("|z| [cm]");
-    h_full_rz_h20  ->SetXTitle("|z| [cm]");
-    h_full_rz_neut ->SetXTitle("|z| [cm]");
-    h_full_rz_chad ->SetXTitle("|z| [cm]");
+    h_full_rz_tid  ->SetXTitle(xtitle);
+    h_full_rz_eion ->SetXTitle(xtitle);
+    h_full_rz_niel ->SetXTitle(xtitle);
+    h_full_rz_h20  ->SetXTitle(xtitle);
+    h_full_rz_neut ->SetXTitle(xtitle);
+    h_full_rz_chad ->SetXTitle(xtitle);
 
     h_full_rz_tid  ->SetYTitle("r [cm]");
     h_full_rz_eion ->SetYTitle("r [cm]");
@@ -259,12 +275,12 @@ namespace G4UA{
     TH3D * h_3d_neut = new TH3D("h3d_neut","h3d_neut",m_config.nBinsz3d,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr3d,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinsphi3d,m_config.phiMinZoom,m_config.phiMaxZoom);
     TH3D * h_3d_chad = new TH3D("h3d_chad","h3d_chad",m_config.nBinsz3d,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr3d,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinsphi3d,m_config.phiMinZoom,m_config.phiMaxZoom);
 
-    h_3d_tid  ->SetXTitle("|z| [cm]");
-    h_3d_eion ->SetXTitle("|z| [cm]");
-    h_3d_niel ->SetXTitle("|z| [cm]");
-    h_3d_h20  ->SetXTitle("|z| [cm]");
-    h_3d_neut ->SetXTitle("|z| [cm]");
-    h_3d_chad ->SetXTitle("|z| [cm]");
+    h_3d_tid  ->SetXTitle(xtitle);
+    h_3d_eion ->SetXTitle(xtitle);
+    h_3d_niel ->SetXTitle(xtitle);
+    h_3d_h20  ->SetXTitle(xtitle);
+    h_3d_neut ->SetXTitle(xtitle);
+    h_3d_chad ->SetXTitle(xtitle);
 
     h_3d_tid  ->SetYTitle("r [cm]");
     h_3d_eion ->SetYTitle("r [cm]");
@@ -291,12 +307,12 @@ namespace G4UA{
     TH3D *h_full_rz_neut_spec = new TH3D("full_rz_neut_spec","full_rz_neut_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEn,m_config.logEMinn,m_config.logEMaxn);
     TH3D *h_rz_neut_spec      = new TH3D("rz_neut_spec","rz_neut_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEn,m_config.logEMinn,m_config.logEMaxn);
 
-    h_rz_neut_spec      ->SetXTitle("|z| [cm]");
+    h_rz_neut_spec      ->SetXTitle(xtitle);
     h_rz_neut_spec      ->SetYTitle("r [cm]");
     h_rz_neut_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_neut_spec      ->SetTitle("FLUX [n(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_neut_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_neut_spec ->SetXTitle(xtitle);
     h_full_rz_neut_spec ->SetYTitle("r [cm]");
     h_full_rz_neut_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_neut_spec ->SetTitle("FLUX [n(log_{10}(E/MeV))/cm^{2}]");
@@ -305,12 +321,12 @@ namespace G4UA{
     TH3D *h_full_rz_gamm_spec = new TH3D("full_rz_gamm_spec","full_rz_gamm_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_gamm_spec      = new TH3D("rz_gamm_spec","rz_gamm_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_gamm_spec      ->SetXTitle("|z| [cm]");
+    h_rz_gamm_spec      ->SetXTitle(xtitle);
     h_rz_gamm_spec      ->SetYTitle("r [cm]");
     h_rz_gamm_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_gamm_spec      ->SetTitle("FLUX [#gamma(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_gamm_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_gamm_spec ->SetXTitle(xtitle);
     h_full_rz_gamm_spec ->SetYTitle("r [cm]");
     h_full_rz_gamm_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_gamm_spec ->SetTitle("FLUX [#gamma(log_{10}(E/MeV))/cm^{2}]");
@@ -319,12 +335,12 @@ namespace G4UA{
     TH3D *h_full_rz_elec_spec = new TH3D("full_rz_elec_spec","full_rz_elec_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_elec_spec      = new TH3D("rz_elec_spec","rz_elec_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_elec_spec      ->SetXTitle("|z| [cm]");
+    h_rz_elec_spec      ->SetXTitle(xtitle);
     h_rz_elec_spec      ->SetYTitle("r [cm]");
     h_rz_elec_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_elec_spec      ->SetTitle("FLUX [e^{#pm}(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_elec_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_elec_spec ->SetXTitle(xtitle);
     h_full_rz_elec_spec ->SetYTitle("r [cm]");
     h_full_rz_elec_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_elec_spec ->SetTitle("FLUX [e^{#pm}(log_{10}(E/MeV))/cm^{2}]");
@@ -333,12 +349,12 @@ namespace G4UA{
     TH3D *h_full_rz_muon_spec = new TH3D("full_rz_muon_spec","full_rz_muon_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_muon_spec      = new TH3D("rz_muon_spec","rz_muon_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_muon_spec      ->SetXTitle("|z| [cm]");
+    h_rz_muon_spec      ->SetXTitle(xtitle);
     h_rz_muon_spec      ->SetYTitle("r [cm]");
     h_rz_muon_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_muon_spec      ->SetTitle("FLUX [#mu^{#pm}(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_muon_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_muon_spec ->SetXTitle(xtitle);
     h_full_rz_muon_spec ->SetYTitle("r [cm]");
     h_full_rz_muon_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_muon_spec ->SetTitle("FLUX [#mu^{#pm}(log_{10}(E/MeV))/cm^{2}]");
@@ -347,12 +363,12 @@ namespace G4UA{
     TH3D *h_full_rz_pion_spec = new TH3D("full_rz_pion_spec","full_rz_pion_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_pion_spec      = new TH3D("rz_pion_spec","rz_pion_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_pion_spec      ->SetXTitle("|z| [cm]");
+    h_rz_pion_spec      ->SetXTitle(xtitle);
     h_rz_pion_spec      ->SetYTitle("r [cm]");
     h_rz_pion_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_pion_spec      ->SetTitle("FLUX [#pi^{#pm}(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_pion_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_pion_spec ->SetXTitle(xtitle);
     h_full_rz_pion_spec ->SetYTitle("r [cm]");
     h_full_rz_pion_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_pion_spec ->SetTitle("FLUX [#pi^{#pm}(log_{10}(E/MeV))/cm^{2}]");
@@ -361,12 +377,12 @@ namespace G4UA{
     TH3D *h_full_rz_prot_spec = new TH3D("full_rz_prot_spec","full_rz_prot_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_prot_spec      = new TH3D("rz_prot_spec","rz_prot_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_prot_spec      ->SetXTitle("|z| [cm]");
+    h_rz_prot_spec      ->SetXTitle(xtitle);
     h_rz_prot_spec      ->SetYTitle("r [cm]");
     h_rz_prot_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_prot_spec      ->SetTitle("FLUX [p(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_prot_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_prot_spec ->SetXTitle(xtitle);
     h_full_rz_prot_spec ->SetYTitle("r [cm]");
     h_full_rz_prot_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_prot_spec ->SetTitle("FLUX [p(log_{10}(E/MeV))/cm^{2}]");
@@ -375,16 +391,26 @@ namespace G4UA{
     TH3D *h_full_rz_rest_spec = new TH3D("full_rz_rest_spec","full_rz_rest_spec",m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
     TH3D *h_rz_rest_spec      = new TH3D("rz_rest_spec","rz_rest_spec",m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogEo,m_config.logEMino,m_config.logEMaxo);
 
-    h_rz_rest_spec      ->SetXTitle("|z| [cm]");
+    h_rz_rest_spec      ->SetXTitle(xtitle);
     h_rz_rest_spec      ->SetYTitle("r [cm]");
     h_rz_rest_spec      ->SetZTitle("log_{10}(E/MeV)");
     h_rz_rest_spec      ->SetTitle("FLUX [rest(log_{10}(E/MeV))/cm^{2}]");
 
-    h_full_rz_rest_spec ->SetXTitle("|z| [cm]");
+    h_full_rz_rest_spec ->SetXTitle(xtitle);
     h_full_rz_rest_spec ->SetYTitle("r [cm]");
     h_full_rz_rest_spec ->SetZTitle("log_{10}(E/MeV)");
     h_full_rz_rest_spec ->SetTitle("FLUX [rest(log_{10}(E/MeV))/cm^{2}]");
 
+    // time dependent TID maps
+    TH3D * h_rz_tid_time       = new TH3D("rz_tid_time" ,"rz_tid_time"           ,m_config.nBinsz,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinslogT,m_config.logTMin,m_config.logTMax);
+    TH3D * h_full_rz_tid_time  = new TH3D("full_rz_tid_time" ,"full_rz_tid_time" ,m_config.nBinsz,m_config.zMinFull,m_config.zMaxFull,m_config.nBinsr,m_config.rMinFull,m_config.rMaxFull,m_config.nBinslogT,m_config.logTMin,m_config.logTMax);
+    h_rz_tid_time     ->SetXTitle(xtitle);
+    h_full_rz_tid_time->SetXTitle(xtitle);
+    h_rz_tid_time     ->SetYTitle("r [cm]");
+    h_full_rz_tid_time->SetYTitle("r [cm]");
+    h_rz_tid_time     ->SetZTitle("log_{10}(t_{cut}/s)");
+    h_full_rz_tid_time->SetZTitle("log_{10}(t_{cut}/s)");
+
     TH2D * h_rz_vol  = 0;
     TH2D * h_rz_norm = 0;
     TH2D * h_full_rz_vol  = 0;
@@ -406,8 +432,8 @@ namespace G4UA{
       h_3d_vol  = new TH3D("h3d_vol" ,"h3d_vol" ,m_config.nBinsz3d,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr3d,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinsphi3d,m_config.phiMinZoom,m_config.phiMaxZoom);
       h_3d_norm = new TH3D("h3d_norm","h3d_norm",m_config.nBinsz3d,m_config.zMinZoom,m_config.zMaxZoom,m_config.nBinsr3d,m_config.rMinZoom,m_config.rMaxZoom,m_config.nBinsphi3d,m_config.phiMinZoom,m_config.phiMaxZoom);
 
-      h_rz_vol  ->SetXTitle("|z| [cm]");
-      h_rz_norm ->SetXTitle("|z| [cm]");
+      h_rz_vol  ->SetXTitle(xtitle);
+      h_rz_norm ->SetXTitle(xtitle);
       h_rz_vol  ->SetYTitle("r [cm]");
       h_rz_norm ->SetYTitle("r [cm]");
       std::string hname("Volume fraction of ");
@@ -415,15 +441,15 @@ namespace G4UA{
       h_rz_vol  ->SetZTitle(hname.data());
       h_rz_norm ->SetZTitle("Volume norm");
 
-      h_full_rz_vol  ->SetXTitle("|z| [cm]");
-      h_full_rz_norm ->SetXTitle("|z| [cm]");
+      h_full_rz_vol  ->SetXTitle(xtitle);
+      h_full_rz_norm ->SetXTitle(xtitle);
       h_full_rz_vol  ->SetYTitle("r [cm]");
       h_full_rz_norm ->SetYTitle("r [cm]");
       h_full_rz_vol  ->SetZTitle(hname.data());
       h_full_rz_norm ->SetZTitle("Volume norm");
 
-      h_3d_vol  ->SetXTitle("|z| [cm]");
-      h_3d_norm ->SetXTitle("|z| [cm]");
+      h_3d_vol  ->SetXTitle(xtitle);
+      h_3d_norm ->SetXTitle(xtitle);
       h_3d_vol  ->SetYTitle("r [cm]");
       h_3d_norm ->SetYTitle("r [cm]");
       h_3d_vol  ->SetZTitle("#phi [#circ]");
@@ -432,7 +458,6 @@ namespace G4UA{
       h_3d_norm ->SetTitle("Volume norm");
     }
 
-
     // normalize to volume element per bin
     for(int i=0;i<h_rz_tid->GetNbinsX();i++) { 
       for(int j=0;j<h_rz_tid->GetNbinsY();j++) { 
@@ -442,7 +467,9 @@ namespace G4UA{
 	double r1=h_rz_tid->GetYaxis()->GetBinUpEdge(j+1);
 	double z0=h_rz_tid->GetXaxis()->GetBinLowEdge(i+1);
 	double z1=h_rz_tid->GetXaxis()->GetBinUpEdge(i+1); 
-	double vol=2*(z1-z0)*M_PI*(r1*r1-r0*r0); 
+	double vol=(z1-z0)*M_PI*(r1*r1-r0*r0);
+	// if |z| instead of z double the volume
+	if ( m_config.zMinFull >= 0 ) vol *= 2; 
 	double val;
 	// TID
 	val =m_report.m_rz_tid[vBin];
@@ -486,6 +513,13 @@ namespace G4UA{
 	  val =m_report.m_rz_rest_spec[vBinE];
 	  h_rz_rest_spec->SetBinContent(kBin,val/vol);
 	}
+	// Time dependent TID maps
+	for(int k=0;k<h_rz_tid_time->GetNbinsZ();k++) { 
+	  int kBin = h_rz_tid_time->GetBin(i+1,j+1,k+1); 
+	  int vBinT = m_config.nBinsr*m_config.nBinslogT*i+j*m_config.nBinslogT+k;
+	  val =m_report.m_rz_tid_time[vBinT];
+	  h_rz_tid_time->SetBinContent(kBin,val/vol);
+	}
 	if (!m_config.material.empty()) {
 	  // need volume fraction only if particular material is selected
 	  // VOL
@@ -510,6 +544,7 @@ namespace G4UA{
     h_rz_pion_spec->Write();
     h_rz_prot_spec->Write();
     h_rz_rest_spec->Write();
+    h_rz_tid_time->Write();
     
     // normalize to volume element per bin
     for(int i=0;i<h_full_rz_tid->GetNbinsX();i++) { 
@@ -520,7 +555,9 @@ namespace G4UA{
 	double r1=h_full_rz_tid->GetYaxis()->GetBinUpEdge(j+1);
 	double z0=h_full_rz_tid->GetXaxis()->GetBinLowEdge(i+1);
 	double z1=h_full_rz_tid->GetXaxis()->GetBinUpEdge(i+1); 
-	double vol=2*(z1-z0)*M_PI*(r1*r1-r0*r0); 
+	double vol=(z1-z0)*M_PI*(r1*r1-r0*r0); 
+	// if |z| instead of z double the volume
+	if ( m_config.zMinFull >= 0 ) vol *= 2; 
 	double val;
 	// TID
 	val =m_report.m_full_rz_tid[vBin];
@@ -564,6 +601,13 @@ namespace G4UA{
 	  val =m_report.m_full_rz_rest_spec[vBinE];
 	  h_full_rz_rest_spec->SetBinContent(kBin,val/vol);
 	}
+	// Time dependent TID maps
+	for(int k=0;k<h_full_rz_tid_time->GetNbinsZ();k++) { 
+	  int kBin = h_full_rz_tid_time->GetBin(i+1,j+1,k+1); 
+	  int vBinT = m_config.nBinsr*m_config.nBinslogT*i+j*m_config.nBinslogT+k;
+	  val =m_report.m_full_rz_tid_time[vBinT];
+	  h_full_rz_tid_time->SetBinContent(kBin,val/vol);
+	}
 	if (!m_config.material.empty()) {
 	  // need volume fraction only if particular material is selected
 	  // VOL
@@ -588,6 +632,7 @@ namespace G4UA{
     h_full_rz_pion_spec->Write();
     h_full_rz_prot_spec->Write();
     h_full_rz_rest_spec->Write();
+    h_full_rz_tid_time->Write();
 
     // normalize to volume element per bin
     for(int i=0;i<h_3d_tid->GetNbinsX();i++) { /* |z| */
@@ -601,7 +646,9 @@ namespace G4UA{
 	  double r1=h_3d_tid->GetYaxis()->GetBinUpEdge(j+1);
 	  double z0=h_3d_tid->GetXaxis()->GetBinLowEdge(i+1);
 	  double z1=h_3d_tid->GetXaxis()->GetBinUpEdge(i+1); 
-	  double vol=2*(z1-z0)*M_PI*(r1*r1-r0*r0)*(phi1-phi0)/360.; 
+	  double vol=(z1-z0)*M_PI*(r1*r1-r0*r0)*(phi1-phi0)/360.; 
+	  // if |z| instead of z double the volume
+	  if ( m_config.zMinFull >= 0 ) vol *= 2; 
 	  // assume that phi-range corresponds to full 360 degrees in case 
 	  // lower phi boundary is 0 - i.e. all phi-segments mapped to first
 	  if ( m_config.phiMinZoom == 0 ) {
diff --git a/Tools/PROCTools/python/RunTier0TestsTools.py b/Tools/PROCTools/python/RunTier0TestsTools.py
index 3748d9b18c15fa190cebd15b9a071d736f5650f9..0f93fa2c55ad8a251c93208160065d39b49ee27a 100644
--- a/Tools/PROCTools/python/RunTier0TestsTools.py
+++ b/Tools/PROCTools/python/RunTier0TestsTools.py
@@ -23,8 +23,8 @@ ciRefFileMap = {
                 's3126-21.9'           : 'v1',
                 's3126-22.0'           : 'v1',
                 # OverlayTier0Test_required-test
-                'overlay-d1498-21.0'   : 'v3',
-                'overlay-d1498-22.0'   : 'v1',
+                'overlay-d1498-21.0'   : 'v4',
+                'overlay-d1498-22.0'   : 'v17',
                 'overlay-bkg-21.0'     : 'v1',
                 'overlay-bkg-22.0'     : 'v1',
                }
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CFit.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CFit.cxx
index 18c13688dbb84e96b8c6cb3458bc75f50ae25b4f..21e8bd1d43489468e5993f9c5cb43e3363c1649d 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CFit.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CFit.cxx
@@ -171,9 +171,9 @@ long int fitVertex(VKVertex * vk, long int iflag)
 {
     long int  i, jerr, tk, it=0;
 
-    double chi2df, dparst[6];
+    double dparst[6];
     double chi2min, dxyzst[3],  chi21s=11., chi22s=10., vShift;
-    double aermd[30],tmpd[30];  // temporary array
+    double aermd[6],tmpd[6]={0.};  // temporary arrays
     double tmpPer[5],tmpCov[15], tmpWgt[15];
     double VrtMomCov[21],PartMom[4];
     double vBx,vBy,vBz;
@@ -189,6 +189,7 @@ long int fitVertex(VKVertex * vk, long int iflag)
     extern void cfsetdiag(long int , double *, double );
     extern int cfInv5(double *cov, double *wgt );
     extern void cfTrkCovarCorr(double *cov);
+    extern void FullMTXfill( VKVertex* , double *);
 
 //
 //    New datastructure
@@ -205,7 +206,6 @@ long int fitVertex(VKVertex * vk, long int iflag)
     VKTrack * trk=0;
 
     chi2min = 1e15;
-    chi2df = 0.;
 
     if( forcft_1.nmcnst && forcft_1.useMassCnst )  {       //mass constraints are present
       std::vector<int> index;
@@ -213,7 +213,7 @@ long int fitVertex(VKVertex * vk, long int iflag)
         if(forcft_.wmfit[ic]>0){    // new mass constraint
            index.clear();
            for(tk=0; tk<NTRK; tk++){ if( forcft_.indtrkmc[ic*NTrkM + tk] )index.push_back(tk);}
-           vk->ConstraintList.push_back(new VKMassConstraint( NTRK, forcft_.wmfit[it], index, vk));
+           vk->ConstraintList.push_back(new VKMassConstraint( NTRK, forcft_.wmfit[ic], index, vk));
         }
       }
       //VKMassConstraint *ctmp=dynamic_cast<VKMassConstraint*>( vk->ConstraintList[0]); std::cout<<(*ctmp)<<'\n';
@@ -298,9 +298,9 @@ long int fitVertex(VKVertex * vk, long int iflag)
             myPropagator.Propagate(vk->TrackList[tk], vk->refV,  targV, tmpPer, tmpCov);
             cfTrkCovarCorr(tmpCov);
             double eig5=cfSmallEigenvalue(tmpCov,5 );
- 	    if(eig5<1.e-15 ){ 
+ 	    if(eig5>0 && eig5<1.e-15 ){ 
                 tmpCov[0]+=1.e-15; tmpCov[2]+=1.e-15; tmpCov[5]+=1.e-15;  tmpCov[9]+=1.e-15;  tmpCov[14]+=1.e-15; 
-	    }else if(tmpCov[0]>1.e9) {  //Bad propagation with material. Try without it.
+	    }else if(tmpCov[0]>1.e9 || eig5<0.) {  //Bad propagation with material. Try without it.
                myPropagator.Propagate(-999, vk->TrackList[tk]->Charge,
                                        vk->TrackList[tk]->refPerig,vk->TrackList[tk]->refCovar,
 	             	               vk->refV,  targV, tmpPer, tmpCov);
@@ -386,8 +386,9 @@ long int fitVertex(VKVertex * vk, long int iflag)
 	  forcft_1.localbmag = vBz; vkalvrtbmag.bmag  = vBz;
 	  vkalvrtbmag.bmagz = vBz; vkalvrtbmag.bmagy = vBy; vkalvrtbmag.bmagx = vBx;
 
-	  if ( vk->passNearVertex ) {
+	  if ( vk->passNearVertex && it>1 ) {  //No necessary information at first iteration
             jerr = afterFit(vk, workarray_1.ader, vk->FVC.dcv, PartMom, VrtMomCov);
+            if(jerr!=0) return -17;  // Non-invertable matrix for combined track
 	    cfdcopy( PartMom, &dparst[3], 3);  //vertex part of it is filled above
             cfdcopy(VrtMomCov,vk->FVC.dcovf,21);  //Used in chi2 caclulation later...
 	    cfdcopy(  PartMom, vk->fitMom, 3);          //save Momentum
@@ -416,14 +417,15 @@ long int fitVertex(VKVertex * vk, long int iflag)
         }
 //
 // 
-	if (chi22s > 1e8) {  IERR = -1; return IERR; }      // TOO HIGH CHI2 - BAD FIT
+	if (chi22s > 1e8)     { return  -1; }      // TOO HIGH CHI2 - BAD FIT
+	if (chi22s != chi22s) { return -14; }      // Chi2 == nan  - BAD FIT
 	for( i=0; i<3; i++) dxyzst[i] = vk->refIterV[i]+vk->fitV[i];  //   fitted vertex in global frame
 	//std::cout.precision(11);
 	//std::cout<<"NNFIT Iter="<<it<<" Chi2ss="<< chi21s <<", "<<chi22s<<", "<<vShift<<'\n';
 	//std::cout<<"NNVertex="<<dxyzst[0]<<", "<<dxyzst[1]<<", "<<dxyzst[2]<<'\n';
 	//std::cout<<"-----------------------------------------------"<<'\n';
 /*  Test of convergence */
-	chi2df = fabs(chi21s - chi22s);
+	double chi2df = fabs(chi21s - chi22s);
   /*---------------------Normal convergence--------------------*/
         double PrecLimit = min(chi22s*1.e-4, forcft_1.IterationPrecision);
 	//std::cout<<"Convergence="<< chi2df <<"<"<<PrecLimit<<" cnst="<<cnstRemnants<<"<"<<ConstraintAccuracy<<'\n';
@@ -443,7 +445,9 @@ long int fitVertex(VKVertex * vk, long int iflag)
 
 // Track near vertex constraint recalculation for next fit
 	if ( vk->passNearVertex ) {
-            jerr = afterFit(vk, workarray_1.ader, vk->FVC.dcv, PartMom, VrtMomCov);
+            if(it==1)jerr = afterFit(vk,                0, vk->FVC.dcv, PartMom, VrtMomCov);
+            else     jerr = afterFit(vk, workarray_1.ader, vk->FVC.dcv, PartMom, VrtMomCov);
+            if(jerr!=0) return -17;  // Non-invertable matrix for combined track
             for( i=0; i<3; i++) dparst[i] = vk->refIterV[i]+vk->fitV[i]; // fitted vertex at global frame
             cfdcopy( PartMom, &dparst[3], 3);
             cfdcopy(VrtMomCov,vk->FVC.dcovf,21);  //Used in chi2 caclulation later...
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CascadeUtils.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CascadeUtils.cxx
index 37b4a10d780b8759eb60e64a4fb9e79d47483225..72fe6a2ca8cf9be3afcc6990a645bd1a56555999 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CascadeUtils.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/CascadeUtils.cxx
@@ -87,9 +87,9 @@ int fixPseudoTrackPt(long int NPar, double * fullMtx, double * LSide)
           DerivT[iniPosTrk+it*3+2] =  (sinth2sum*pt*cth)/(curv*ptsum);                 //  dTheta/dC_i      
 	  tpx+=pp[0]; tpy+=pp[1];
         }
-        double iniV0Curv=myMagFld.getCnvCst()*vMagFld[iv]/sqrt(tpx*tpx+tpy*tpy);    //initial PseudoTrack Curvature
-        if(csum<0)iniV0Curv *= -1.;
-        iniV0Curv *= vMagFld[ivnext]/vMagFld[iv];  //magnetic field correction
+//        double iniV0Curv=myMagFld.getCnvCst()*vMagFld[iv]/sqrt(tpx*tpx+tpy*tpy);    //initial PseudoTrack Curvature
+//        if(csum<0)iniV0Curv *= -1.;
+//        iniV0Curv *= vMagFld[ivnext]/vMagFld[iv];  //magnetic field correction
 //
 //fill Full Matrix and left side vector
 //
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Derclc1.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Derclc1.cxx
index 329f3ea469cef36fdccdfb877461f9a188094b1e..96e4ecf04868a9137b59c6ff165998b7df4436a0 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Derclc1.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/Derclc1.cxx
@@ -2,103 +2,103 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#include <math.h> 
-#include "TrkVKalVrtCore/Derivt.h"
-#include "TrkVKalVrtCore/CommonPars.h"
-#include "TrkVKalVrtCore/TrkVKalVrtCore.h"
-#include <iostream>
-
-namespace Trk {
-
-
-//
-//   Mass constraint calculation in new data model.
-//
-//      cnstV and cnstP values are used!!!
-//-----------------------------------------------
-
-extern std::vector<double> getCnstParticleMom( VKTrack * );
-
-void  calcMassConstraint( VKMassConstraint * cnst )
-{
-    int it,itc;
-    double ptot[4]={0.,0.,0.,0.};  
-    double cth, invR, pp2, pt; 
-    VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
-    VKVertex * vk=cnst->getOriginVertex();
-    int usedNTRK = cnst->usedParticles.size();
-    VKTrack * trk;
-    std::vector< std::vector<double> > pp(usedNTRK);
-    for( itc=0; itc<usedNTRK; itc++){
-      it = cnst->usedParticles[itc];
-      trk = vk->TrackList.at(it);
-      pp[itc]=getCnstParticleMom( trk );
-      ptot[0] += pp[itc][0];    
-      ptot[1] += pp[itc][1];    
-      ptot[2] += pp[itc][2];    
-      ptot[3] += pp[itc][3];    
-   }
-   
-   double temp = 1.e-10;
-   int ip=0; if( fabs(ptot[1]) > fabs(ptot[ip]) )ip=1; if( fabs(ptot[2]) > fabs(ptot[ip]) )ip=2;
-   int im=0; if( fabs(ptot[1]) < fabs(ptot[im]) )im=1; if( fabs(ptot[2]) < fabs(ptot[im]) )im=2;
-   int id=4; for(int i=0;i<3;i++) if(i!=ip && i!=im)id=i;
-   if(id==4){
-     std::cout<<"ERROR in mass constraint!!!"<<'\n';
-     temp=ptot[3]*ptot[3]-ptot[0]*ptot[0]-ptot[1]*ptot[1]-ptot[2]*ptot[2];
-   } else {
-     temp = sqrt( (ptot[3]-ptot[ip])*(ptot[3]+ptot[ip]) );
-     temp = sqrt( (  temp -ptot[id])*(  temp +ptot[id]) );
-     temp =       (  temp -ptot[im])*(  temp +ptot[im]);
-   }
-   if(temp<1.e-10)temp=1.e-10;  //protection
-   temp=sqrt(temp);             //system mass
-//
-//
-    int numCNST=0;   //constraint number. Single constraint in this case
-//
-//Difference   
-   base_cnst->aa[numCNST] = ( temp - cnst->targetMass ) * ( temp + cnst->targetMass ); 
-//
-//Derivatives               Here pp[][3] - particle energy, pp[][4] - squared particle mom
-    for( itc=0; itc<usedNTRK; itc++){
-      it = cnst->usedParticles[itc];
-      trk  = vk->TrackList.at(it);
-      invR = trk->cnstP[2];
-      cth  = 1. / tan( trk->cnstP[0] );
-      pt   = sqrt(pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1]);
-      pp2  =      pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1] + pp[itc][2]*pp[itc][2];
-      base_cnst->f0t[it][numCNST].X =  ptot[3] * (-pp2* cth / pp[itc][3]) 
-			             - ptot[2] * (-pt   * (cth*cth + 1.));
-      base_cnst->f0t[it][numCNST].Y = -ptot[0] * (-pp[itc][1]) 
-			             - ptot[1] *   pp[itc][0];
-      base_cnst->f0t[it][numCNST].Z =  ptot[3] * (-pp2/ (invR * pp[itc][3])) 
-	                             - ptot[0] * (-pp[itc][0] / invR) 
-			             - ptot[1] * (-pp[itc][1] / invR) 
-			             - ptot[2] * (-pp[itc][2] / invR);
-
-    }
-    base_cnst->h0t[numCNST].X = 0.;
-    base_cnst->h0t[numCNST].Y = 0.;
-    base_cnst->h0t[numCNST].Z = 0.;
-/* -- Relative normalisation. Now it is target mass (squared?) to make performance uniform */
-    double Scale=0.025/(2.*cnst->targetMass+1.); //28.03.2011 wrong idea for cascade. VK 06.05.2011 actually correct!
-    //Scale=0.01;
-    for (it = 0; it < (int)vk->TrackList.size(); ++it) {
-	base_cnst->f0t[it][numCNST].X *=  Scale * 2;
-	base_cnst->f0t[it][numCNST].Y *=  Scale * 2;
-	base_cnst->f0t[it][numCNST].Z *=  Scale * 2;
-    }
-    base_cnst->aa[numCNST] *= Scale;
-//std::cout.precision(11);
-//std::cout<<" mass="<<temp<<", "<<cnst->targetMass<<", "<<base_cnst->aa[numCNST]<<'\n';
-//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
-//         <<base_cnst->f0t[0][numCNST].Z<<'\n';
-//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
-//         <<base_cnst->f0t[1][numCNST].Z<<'\n';
-}
-
-
-
-
-} /* End of namespace */
+#include <math.h> 
+#include "TrkVKalVrtCore/Derivt.h"
+#include "TrkVKalVrtCore/CommonPars.h"
+#include "TrkVKalVrtCore/TrkVKalVrtCore.h"
+#include <iostream>
+
+namespace Trk {
+
+
+//
+//   Mass constraint calculation in new data model.
+//
+//      cnstV and cnstP values are used!!!
+//-----------------------------------------------
+
+extern std::vector<double> getCnstParticleMom( VKTrack * );
+
+void  calcMassConstraint( VKMassConstraint * cnst )
+{
+    int it,itc;
+    double ptot[4]={0.,0.,0.,0.};  
+    double cth, invR, pp2, pt; 
+    VKConstraintBase * base_cnst = (VKConstraintBase*) cnst;
+    VKVertex * vk=cnst->getOriginVertex();
+    int usedNTRK = cnst->usedParticles.size();
+    VKTrack * trk;
+    std::vector< std::vector<double> > pp(usedNTRK);
+    for( itc=0; itc<usedNTRK; itc++){
+      it = cnst->usedParticles[itc];
+      trk = vk->TrackList.at(it);
+      pp[itc]=getCnstParticleMom( trk );
+      ptot[0] += pp[itc][0];    
+      ptot[1] += pp[itc][1];    
+      ptot[2] += pp[itc][2];    
+      ptot[3] += pp[itc][3];    
+   }
+   
+   double temp = 1.e-10;
+   int ip=0; if( fabs(ptot[1]) > fabs(ptot[ip]) )ip=1; if( fabs(ptot[2]) > fabs(ptot[ip]) )ip=2;
+   int im=0; if( fabs(ptot[1]) < fabs(ptot[im]) )im=1; if( fabs(ptot[2]) < fabs(ptot[im]) )im=2;
+   int id=4; for(int i=0;i<3;i++) if(i!=ip && i!=im)id=i;
+   if(id==4){
+     std::cout<<"ERROR in mass constraint!!!"<<'\n';
+     temp=ptot[3]*ptot[3]-ptot[0]*ptot[0]-ptot[1]*ptot[1]-ptot[2]*ptot[2];
+   } else {
+     temp = sqrt( (ptot[3]-ptot[ip])*(ptot[3]+ptot[ip]) );
+     temp = sqrt( (  temp -ptot[id])*(  temp +ptot[id]) );
+     temp =       (  temp -ptot[im])*(  temp +ptot[im]);
+   }
+   if(temp<1.e-10)temp=1.e-10;  //protection
+   temp=sqrt(temp);             //system mass
+//
+//
+    int numCNST=0;   //constraint number. Single constraint in this case
+//
+//Difference   
+   base_cnst->aa[numCNST] = ( temp - cnst->targetMass ) * ( temp + cnst->targetMass ); 
+//
+//Derivatives               Here pp[][3] - particle energy, pp[][4] - squared particle mom
+    for( itc=0; itc<usedNTRK; itc++){
+      it = cnst->usedParticles[itc];
+      trk  = vk->TrackList.at(it);
+      invR = trk->cnstP[2];
+      cth  = 1. / tan( trk->cnstP[0] );
+      pt   = sqrt(pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1]);
+      pp2  =      pp[itc][0]*pp[itc][0] + pp[itc][1]*pp[itc][1] + pp[itc][2]*pp[itc][2];
+      base_cnst->f0t[it][numCNST].X =  ptot[3] * (-pp2* cth / pp[itc][3]) 
+			             - ptot[2] * (-pt   * (cth*cth + 1.));
+      base_cnst->f0t[it][numCNST].Y = -ptot[0] * (-pp[itc][1]) 
+			             - ptot[1] *   pp[itc][0];
+      base_cnst->f0t[it][numCNST].Z =  ptot[3] * (-pp2/ (invR * pp[itc][3])) 
+	                             - ptot[0] * (-pp[itc][0] / invR) 
+			             - ptot[1] * (-pp[itc][1] / invR) 
+			             - ptot[2] * (-pp[itc][2] / invR);
+
+    }
+    base_cnst->h0t[numCNST].X = 0.;
+    base_cnst->h0t[numCNST].Y = 0.;
+    base_cnst->h0t[numCNST].Z = 0.;
+/* -- Relative normalisation. Now it is target mass (squared?) to make performance uniform */
+    double Scale=0.025/(2.*cnst->targetMass+1.); //28.03.2011 wrong idea for cascade. VK 06.05.2011 actually correct!
+    //Scale=0.01;
+    for (it = 0; it < (int)vk->TrackList.size(); ++it) {
+	base_cnst->f0t[it][numCNST].X *=  Scale * 2;
+	base_cnst->f0t[it][numCNST].Y *=  Scale * 2;
+	base_cnst->f0t[it][numCNST].Z *=  Scale * 2;
+    }
+    base_cnst->aa[numCNST] *= Scale;
+//std::cout.precision(11);
+//std::cout<<" mass="<<temp<<", "<<cnst->targetMass<<", "<<base_cnst->aa[numCNST]<<'\n';
+//std::cout<<base_cnst->f0t[0][numCNST].X<<", "<<base_cnst->f0t[0][numCNST].Y<<", "
+//         <<base_cnst->f0t[0][numCNST].Z<<'\n';
+//std::cout<<base_cnst->f0t[1][numCNST].X<<", "<<base_cnst->f0t[1][numCNST].Y<<", "
+//         <<base_cnst->f0t[1][numCNST].Z<<'\n';
+}
+
+
+
+
+} /* End of namespace */
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFit.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFit.cxx
index 60afb03d080a2dbebb288e2472f26c0621cef201..ef43c98ed0a1e87933b1f52b0a90616e4dde406d 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFit.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFit.cxx
@@ -230,12 +230,13 @@ extern DerivT derivt_;
 
 	deps[kt] = trk->a0()    - eps;
 	 dzp[kt] = trk->z()     - xyz[2];      // Precision
+	 dzp[kt]-= zp;
 	dtet[kt] = trk->theta() - theta_ini;
 	dphi[kt] = trk->phi()   - phi_ini;     // Precision
+	dphi[kt]-= phip;
 	drho[kt] = trk->invR()  - invR_ini;
-	       dzp[kt] -= zp; dphi[kt] -= phip;
-        zp   += xyz[2];   //To gain precision
-	phip += phi_ini;  //To gain precision
+        //zp   += xyz[2];   //To recover standard zp   definition in case of further use. Not needed
+	//phip += phi_ini;  //To recover standard phip definition in case of further use. Not needed
         while(dphi[kt] >  M_PI)dphi[kt]-=2.*M_PI;
         while(dphi[kt] < -M_PI)dphi[kt]+=2.*M_PI;
 //std::cout.precision(11);
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitC.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitC.cxx
index c52c691e5ff643834608965a7bad2810d8f43457..cd500e425eb473901ea6e4dd64e738370339d310 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitC.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitC.cxx
@@ -62,6 +62,7 @@ int vtcfitc( VKVertex * vk )
 	 tf0t.push_back( tmpVec );
        }
     }
+    if(totNC==0)return 0;
     tmpVec.clear();
 //
     std::vector< std::vector<double> > denom;
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitE.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitE.cxx
index 19bc8713c81638dd3b7a55558bb27a4dd909c19f..751b662492a5171ed7b3671887f7ea6994a93680 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitE.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtCFitE.cxx
@@ -2,401 +2,429 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#include <math.h>
-#include "TrkVKalVrtCore/Derivt.h"
-#include "TrkVKalVrtCore/WorkArray.h"
-#include "TrkVKalVrtCore/CommonPars.h"
-#include "TrkVKalVrtCore/TrkVKalVrtCore.h"
-#include <iostream>
-
-namespace Trk {
-
-
-extern WorkArray workarray_;
-extern DerivT derivt_;
-
-
-#define derivt_1 derivt_
-#define workarray_1 workarray_
-
-
-#define ader_ref(a_1,a_2) workarray_1.ader[(a_2)*(NTrkM*3+3) + (a_1) - (NTrkM*3+4)]
-
-
-/* -------------------------------------------------------------- */
-/*  RETURN FULL ERROR MATRIX AFTER THE FIT                        */
-/*  ERRMTX SHOULD HAVE AT LEAST (3*NTRK+3)*(3*NTRK+4)/2. ELEMENTS */
-
-
-int fiterm(long int NTRK, double  *errmtx)
-{
-    int ii=0, i, j;
-    int lim = (NTRK+1)*3;
-    if(workarray_.existFullCov){
-      for (j = 1; j <= lim; ++j) {          /* COLUMN */
-	 for (i = 1; i <= j; ++i) {        /* ROW */
-	    errmtx[ii] = ader_ref(i, j);
-	    ++ii;
-	 }
-      }
-      return 0;
-    }else{
-      return -1;
-    }
-}
-
-
-/* ------------------------------------------------------- */
-/*  RETURN ERROR OF ANY VARIABLE AFTER THE FIT */
-
-void cferrany_(long int *ntrk, double  *deriv, double  *covar)
-{
-    (*covar) = 0.;
-
-    if (deriv==0) return;
-    --deriv;
-
-    int lim, ic, jc;
-
-    lim = ((*ntrk) + 1) * 3;
-    for (ic = 1; ic <= lim; ++ic) {
-	for (jc = 1; jc <= lim; ++jc) {
-	    (*covar) += deriv[ic] * ader_ref(ic, jc) * deriv[jc];
-	}
-    }
-} 
-
-#undef ader_ref
-
-
-
-
-
-
-
-/* ---------------------------------------------------------- */
-/* Entry for error matrix calculation after successful fit    */
-/* Error matrix has a form V(X,Y,Z,PX,PY,PZ)                  */
-/* ADER - full covariance matrix after fit in form            */
-/*        (x,y,z,track1(1:3),track2(1:3),......)              */
-
-#define ader_ref(a_1,a_2) ader[(a_2)*(NTrkM*3+3) + (a_1) - (NTrkM*3+4)]
-#define verr_ref(a_1,a_2) verr[(a_2)*6 + (a_1) - 7]
-#define dcv_ref(a_1,a_2)  dcv[(a_2)*6 + (a_1) - 7]
-
-
-#define useWeightScheme 1
-
-int getFullVrtCov(VKVertex * vk, double *ader, double *dcv, double *verr)
-{
-    extern void scaleg(double *, double *, long int  ,long int );
-
-    int i,j,ic1,ic2;
-
-    long int ic, jc, it, jt;
-    double  cnt = 1e8;
-
-
-    extern void dsinv(long int *, double  *, long int , long int *);
-    extern void FullMTXfill( VKVertex* , double *);
-    extern void vkSVDCmp(double**, int, int, double*, double**);
-
-    TWRK    * t_trk=0;
-    long int NTRK = vk->TrackList.size();
-    long int IERR=0;
-    long int NVar = (NTRK + 1) * 3;
-    if(vk->passNearVertex) {     /*  Fit is with "pass near" constraint and then */
-                                 /*     matrix is already present                */
-    } else if ( vk->ConstraintList.size()>0  && useWeightScheme ) {
-/*  Full matrix inversion i */
-//
-        FullMTXfill( vk, ader);
-        Vect3DF th0t,tf0t;
-        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
-          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
-            th0t = vk->ConstraintList[ic1]->h0t[ic2];
-            ader_ref(1, 1) += cnt * th0t.X * th0t.X;
-            ader_ref(2, 1) += cnt * th0t.Y * th0t.X;
-            ader_ref(3, 1) += cnt * th0t.Z * th0t.X;
-            ader_ref(1, 2) += cnt * th0t.X * th0t.Y;
-            ader_ref(2, 2) += cnt * th0t.Y * th0t.Y;
-            ader_ref(3, 2) += cnt * th0t.Z * th0t.Y;
-            ader_ref(1, 3) += cnt * th0t.X * th0t.Z;
-            ader_ref(2, 3) += cnt * th0t.Y * th0t.Z;
-            ader_ref(3, 3) += cnt * th0t.Z * th0t.Z;
-	    for (it = 1; it <= NTRK; ++it) {
-                tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
-		ader_ref(1, it * 3 + 1) += cnt * th0t.X * tf0t.X;
-		ader_ref(2, it * 3 + 1) += cnt * th0t.Y * tf0t.X;
-		ader_ref(3, it * 3 + 1) += cnt * th0t.Z * tf0t.X;
-		ader_ref(1, it * 3 + 2) += cnt * th0t.X * tf0t.Y;
-		ader_ref(2, it * 3 + 2) += cnt * th0t.Y * tf0t.Y;
-		ader_ref(3, it * 3 + 2) += cnt * th0t.Z * tf0t.Y;
-		ader_ref(1, it * 3 + 3) += cnt * th0t.X * tf0t.Z;
-		ader_ref(2, it * 3 + 3) += cnt * th0t.Y * tf0t.Z;
-		ader_ref(3, it * 3 + 3) += cnt * th0t.Z * tf0t.Z;
-	    }
-	  }
-	}
-
-
-        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
-          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
-	    for (it = 1; it <= NTRK; ++it) {
-	      for (jt = it; jt <= NTRK; ++jt) {
-                Vect3DF tf0ti = vk->ConstraintList[ic1]->f0t[it-1][ic2];
-                Vect3DF tf0tj = vk->ConstraintList[ic1]->f0t[jt-1][ic2];
-	        ader_ref(it*3 + 1, jt*3 + 1) += cnt * tf0ti.X * tf0tj.X;
-	        ader_ref(it*3 + 2, jt*3 + 1) += cnt * tf0ti.Y * tf0tj.X;
-	        ader_ref(it*3 + 3, jt*3 + 1) += cnt * tf0ti.Z * tf0tj.X;
-	        ader_ref(it*3 + 1, jt*3 + 2) += cnt * tf0ti.X * tf0tj.Y;
-	        ader_ref(it*3 + 2, jt*3 + 2) += cnt * tf0ti.Y * tf0tj.Y;
-	        ader_ref(it*3 + 3, jt*3 + 2) += cnt * tf0ti.Z * tf0tj.Y;
-	        ader_ref(it*3 + 1, jt*3 + 3) += cnt * tf0ti.X * tf0tj.Z;
-	        ader_ref(it*3 + 2, jt*3 + 3) += cnt * tf0ti.Y * tf0tj.Z;
-	        ader_ref(it*3 + 3, jt*3 + 3) += cnt * tf0ti.Z * tf0tj.Z;
-	      }
-	    }	    
-	  }
-	}
-/* symmetrisation */
-	for (i=1; i<=NVar-1; ++i) {
-	    for (j = i+1; j<=NVar; ++j) {
-		ader_ref(j,i) = ader_ref(i,j);
-	    }
-	}
-//-------------------------------------------------------------------------
-/* several checks for debugging */
-//std::cout.precision(12);
-//        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
-//          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
-//            th0t = vk->ConstraintList[ic1]->h0t[ic2];
-//std::cout<<"h0t="<<th0t.X<<", "<<th0t.Y<<", "<<th0t.Z<<'\n';
-//	    for (it = 1; it <= NTRK; ++it) {
-//                tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
-//std::cout<<"f0t="<<tf0t.X<<", "<<tf0t.Y<<", "<<tf0t.Z<<'\n';
-//        } } }
-//if(NTRK==2){
-//  for(i=1; i<=NVar; i++){std::cout<<" newmtx=";
-//    for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
-//}
-//-------------------------------------------------------------------------
-/* weight matrix ready.Invert */
-        double * Scale=new double[NVar]; scaleg(ader, Scale, NVar, NTrkM*3+3);                  // Balance matrix
-        double **ta = new double*[NVar+1]; for(i=0; i<NVar+1; i++) ta[i] = new double[NVar+1];  // Make a copy 
- 	for (i=1; i<=NVar; ++i) for (j = i; j<=NVar; ++j) ta[i][j] = ta[j][i] = ader_ref(i,j);  // for failure treatment
-	dsinv(&NVar, ader, NTrkM*3+3, &IERR);
-	if ( IERR != 0) {
-          double **tv = new double*[NVar+1]; for(i=0; i<NVar+1; i++) tv[i] = new double[NVar+1];
-          double **tr = new double*[NVar+1]; for(i=0; i<NVar+1; i++) tr[i] = new double[NVar+1];
-          double  *tw = new double[NVar+1];
-          vkSVDCmp( ta, NVar, NVar, tw, tv);
-          double tmax=0; 
-          for(i=1; i<NVar+1; i++) if(fabs(tw[i])>tmax)tmax=fabs(tw[i]); 
-          //for(i=1; i<NVar+1; i++) std::cout<<tw[i]<<"; "; std::cout<<'\n'; 
-          for(i=1; i<NVar+1; i++) if(fabs(tw[i])/tmax < 1.e-15) tw[i]=0.;
-          for(i=1; i<=NVar; i++){ for(j=1; j<=NVar; j++){
-            tr[i][j]=0.; for(int k=1; k<=NVar; k++)  if(tw[k]!=0.) tr[i][j] += ta[i][k]*tv[j][k]/tw[k];
-          }} 
-	  for (i=1; i<=NVar; ++i) for (j=1; j<=NVar; ++j) ader_ref(i,j)=tr[i][j];
-          for(i=0; i<NVar+1; i++) {delete[] tv[i];delete[] tr[i];} 
-	  delete[] tv; delete[] tr; delete[] tw;	
-	  IERR=0; //return IERR;
-        }
- 	for (i=1; i<=NVar; ++i) for (j = 1; j<=NVar; ++j) ader_ref(i,j)*=Scale[i-1]*Scale[j-1];
-        delete[] Scale; //Restore scale
-        for(i=0; i<NVar+1; i++) delete[] ta[i];
-        delete[] ta;                 //Clean memory
-/* ---------------------------------------- */
-    } else {
-/* ---------------------------------------- */
-/* Simple and fast without constraints */
-	for (i=1; i<=NVar; i++) {
-	    for (j=1; j<=NVar; j++) {
-		ader_ref(i,j)=0.;
-	    }
-	}
-        double vcov[6]={vk->fitVcov[0],vk->fitVcov[1],vk->fitVcov[2],vk->fitVcov[3],vk->fitVcov[4],vk->fitVcov[5]};
-	ader_ref(1,1) = vcov[0];
-	ader_ref(1,2) = vcov[1];
-	ader_ref(2,2) = vcov[2];
-	ader_ref(1,3) = vcov[3];
-	ader_ref(2,3) = vcov[4];
-	ader_ref(3,3) = vcov[5];
-	ader_ref(2,1) = ader_ref(1,2);
-	ader_ref(3,1) = ader_ref(1,3);
-	ader_ref(3,2) = ader_ref(2,3);
-
-	for (it=1; it<=NTRK; it++) {
-            t_trk=vk->tmpArr[it-1];
-	    ader_ref(1, it*3 + 1) = -vcov[0] * t_trk->wbci[0] 
-	                           - vcov[1] * t_trk->wbci[1] 
-				   - vcov[3] * t_trk->wbci[2];
-	    ader_ref(2, it*3 + 1) = -vcov[1] * t_trk->wbci[0] 
-	                           - vcov[2] * t_trk->wbci[1] 
-				   - vcov[4] * t_trk->wbci[2];
-	    ader_ref(3, it*3 + 1) = -vcov[3] * t_trk->wbci[0] 
-	                           - vcov[4] * t_trk->wbci[1] 
-				   - vcov[5] * t_trk->wbci[2];
-	    ader_ref(1, it*3 + 2) = -vcov[0] * t_trk->wbci[3] 
-	                           - vcov[1] * t_trk->wbci[4] 
-		                   - vcov[3] * t_trk->wbci[5];
-	    ader_ref(2, it*3 + 2) = -vcov[1] * t_trk->wbci[3] 
-	                           - vcov[2] * t_trk->wbci[4] 
-				   - vcov[4] * t_trk->wbci[5];
-	    ader_ref(3, it*3 + 2) = -vcov[3] * t_trk->wbci[3] 
-	                           - vcov[4] * t_trk->wbci[4] 
-				   - vcov[5] * t_trk->wbci[5];
-	    ader_ref(1, it*3 + 3) = -vcov[0] * t_trk->wbci[6] 
-	                           - vcov[1] * t_trk->wbci[7] 
-				   - vcov[3] * t_trk->wbci[8];
-	    ader_ref(2, it*3 + 3) = -vcov[1] * t_trk->wbci[6] 
-	                           - vcov[2] * t_trk->wbci[7] 
-				   - vcov[4] * t_trk->wbci[8];
-	    ader_ref(3, it*3 + 3) = -vcov[3] * t_trk->wbci[6]  
-		                   - vcov[4] * t_trk->wbci[7] 
-				   - vcov[5] * t_trk->wbci[8];
-	    ader_ref(it*3 + 1, 1) = ader_ref(1, it*3 + 1);
-	    ader_ref(it*3 + 1, 2) = ader_ref(2, it*3 + 1);
-	    ader_ref(it*3 + 1, 3) = ader_ref(3, it*3 + 1);
-	    ader_ref(it*3 + 2, 1) = ader_ref(1, it*3 + 2);
-	    ader_ref(it*3 + 2, 2) = ader_ref(2, it*3 + 2);
-	    ader_ref(it*3 + 2, 3) = ader_ref(3, it*3 + 2);
-	    ader_ref(it*3 + 3, 1) = ader_ref(1, it*3 + 3);
-	    ader_ref(it*3 + 3, 2) = ader_ref(2, it*3 + 3);
-	    ader_ref(it*3 + 3, 3) = ader_ref(3, it*3 + 3);
-	}
-
-
-	for (it = 1; it<=NTRK; ++it) {
-            t_trk=vk->tmpArr[it-1];
-	    for (jt=1; jt<=NTRK; ++jt) {
-	        int j3   = jt*3;
-	        int i3   = it*3;
-		ader_ref( i3+1, j3+1) = -t_trk->wbci[0]*ader_ref(1, j3+1) - t_trk->wbci[1]*ader_ref(2, j3+1) - t_trk->wbci[2]*ader_ref(3, j3+1);
-		ader_ref( i3+2, j3+1) = -t_trk->wbci[3]*ader_ref(1, j3+1) - t_trk->wbci[4]*ader_ref(2, j3+1) - t_trk->wbci[5]*ader_ref(3, j3+1);
-		ader_ref( i3+3, j3+1) = -t_trk->wbci[6]*ader_ref(1, j3+1) - t_trk->wbci[7]*ader_ref(2, j3+1) - t_trk->wbci[8]*ader_ref(3, j3+1);
-		ader_ref( i3+1, j3+2) = -t_trk->wbci[0]*ader_ref(1, j3+2) - t_trk->wbci[1]*ader_ref(2, j3+2) - t_trk->wbci[2]*ader_ref(3, j3+2);
-		ader_ref( i3+2, j3+2) = -t_trk->wbci[3]*ader_ref(1, j3+2) - t_trk->wbci[4]*ader_ref(2, j3+2) - t_trk->wbci[5]*ader_ref(3, j3+2);
-		ader_ref( i3+3, j3+2) = -t_trk->wbci[6]*ader_ref(1, j3+2) - t_trk->wbci[7]*ader_ref(2, j3+2) - t_trk->wbci[8]*ader_ref(3, j3+2);
-		ader_ref( i3+1, j3+3) = -t_trk->wbci[0]*ader_ref(1, j3+3) - t_trk->wbci[1]*ader_ref(2, j3+3) - t_trk->wbci[2]*ader_ref(3, j3+3);
-		ader_ref( i3+2, j3+3) = -t_trk->wbci[3]*ader_ref(1, j3+3) - t_trk->wbci[4]*ader_ref(2, j3+3) - t_trk->wbci[5]*ader_ref(3, j3+3);
-		ader_ref( i3+3, j3+3) = -t_trk->wbci[6]*ader_ref(1, j3+3) - t_trk->wbci[7]*ader_ref(2, j3+3) - t_trk->wbci[8]*ader_ref(3, j3+3);
-		if (it == jt) {
-		    ader_ref( i3+1, i3+1) += t_trk->wci[0];
-		    ader_ref( i3+1, i3+2) += t_trk->wci[1];
-		    ader_ref( i3+2, i3+1) += t_trk->wci[1];
-		    ader_ref( i3+2, i3+2) += t_trk->wci[2];
-		    ader_ref( i3+1, i3+3) += t_trk->wci[3];
-		    ader_ref( i3+3, i3+1) += t_trk->wci[3];
-		    ader_ref( i3+2, i3+3) += t_trk->wci[4];
-		    ader_ref( i3+3, i3+2) += t_trk->wci[4];
-		    ader_ref( i3+3, i3+3) += t_trk->wci[5];
-		}
-	    }
-	}
-//for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<" fast full m NEW"<<'\n';        
-        if( vk->ConstraintList.size()>0  && !useWeightScheme ){
-//---------------------------------------------------------------------
-// Covariance matrix with constraints a la Avery.
-// ader_ref() should contain nonconstraint covariance matrix
-//---------------------------------------------------------------------
-          long int totNC=0;  //total number of constraints
-          std::vector<std::vector< Vect3DF> > tf0t;  // derivative collectors
-          std::vector< Vect3DF >              th0t;  // derivative collectors
-          std::vector< double >               taa;   // derivative collectors
-          std::vector< Vect3DF > tmpVec;
-          for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
-             totNC += vk->ConstraintList[ii]->NCDim;
-             for(ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
-               taa.push_back(  vk->ConstraintList[ii]->aa[ic] );
-               th0t.push_back( vk->ConstraintList[ii]->h0t[ic] );
-               tmpVec.clear();
-               for(it=0; it<(int)vk->ConstraintList[ii]->f0t.size(); it++){
-	         tmpVec.push_back( vk->ConstraintList[ii]->f0t[it][ic] );
-              }
-	      tf0t.push_back( tmpVec );
-            }
-          }
-// R,RC[ic][i]
-	  double **R =new double*[totNC]; for(ic=0; ic<totNC; ic++) R[ic]=new double[NVar]; 
-	  double **RC=new double*[totNC]; for(ic=0; ic<totNC; ic++)RC[ic]=new double[NVar]; 
-	  double *RCRt=new double[totNC*totNC];
-	  for(ic=0; ic<totNC; ic++){
-	    R[ic][0]=th0t[ic].X;
-	    R[ic][1]=th0t[ic].Y;
-	    R[ic][2]=th0t[ic].Z;
-	    for(it=1; it<=NTRK; it++){
-	      R[ic][it*3+0]=tf0t[ic][it-1].X;
-	      R[ic][it*3+1]=tf0t[ic][it-1].Y;
-	      R[ic][it*3+2]=tf0t[ic][it-1].Z;
-            }
-	  }
-// R*Cov matrix
-          for(ic=0; ic<totNC; ic++){
-	    for(j=0; j<NVar; j++){ RC[ic][j]=0;
-	      for(i=0; i<NVar; i++) RC[ic][j] += R[ic][i]*ader_ref(i+1,j+1);
-            }
-          }
-// R*Cov*Rt matrix        -  Lagrange multiplyers errors
-          for(ic=0; ic<totNC; ic++){
-            for(jc=0; jc<totNC; jc++){  RCRt[ic*totNC + jc] =0.;
-	      for(i=0; i<NVar; i++) RCRt[ic*totNC + jc] += RC[ic][i]*R[jc][i];
-	    }
-          }
-	  dsinv(&totNC, RCRt, totNC, &IERR);
-	  if ( IERR != 0) return IERR;
-// Correction matrix
-	 for(i=0; i<NVar; i++){
-	   for(j=0; j<NVar; j++){  double COR=0.;
-             for(ic=0; ic<totNC; ic++){
-               for(jc=0; jc<totNC; jc++){
-	         COR += RC[ic][i]*RC[jc][j]*RCRt[ic*totNC +jc];
-	       }
-	     }
-	     ader_ref(i+1, j+1) -= COR;
-	   }
-	 }
-// Delete temporary matrices
-         for(ic=0; ic<totNC; ic++) delete[]  R[ic];
-         delete[] R;
-         for(ic=0; ic<totNC; ic++) delete[] RC[ic];
-         delete[] RC;
-	 delete[] RCRt;
-//for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<" avery full m NEW"<<'\n';        
-       }  //end of Avery matrix
-
-
-
-    }  // End of global IF() for matrix type selection
-    
-//if(NTRK==2){
-//  for(i=1; i<=NVar; i++){std::cout<<" new covfull=";
-//    for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
-//}
-
-/* --Conversion to (X,Y,Z,Px,Py,Pz) form */
-    for (i = 1; i <= 6; ++i) {
-	for (j = 1; j <= 6; ++j) {
-	    verr_ref(i,j) = 0.;
-	    for (ic=1; ic<=NVar; ++ic) {
-	        if(dcv_ref(i, ic)==0.) continue;
-		for (jc=1; jc<=NVar; ++jc) {
-	            if(dcv_ref(j, jc)==0.) continue;
-		    verr_ref(i, j) += dcv_ref(i, ic) * ader_ref(ic, jc) * dcv_ref(j, jc);
-		}
-	    }
-	}
-    }
-//for(int ii=1; ii<=6; ii++)std::cout<<verr_ref(ii,ii)<<", "; std::cout<<" final m NEW"<<'\n';        
-    workarray_.existFullCov = 1;
-    return 0;
-} 
-#undef dcv_ref
-#undef verr_ref
-#undef ader_ref
-
-#undef useWeightScheme
-
-} /* End of VKalVrtCore namespace*/
-
+#include <math.h>
+#include "TrkVKalVrtCore/Derivt.h"
+#include "TrkVKalVrtCore/WorkArray.h"
+#include "TrkVKalVrtCore/CommonPars.h"
+#include "TrkVKalVrtCore/TrkVKalVrtCore.h"
+#include <iostream>
+
+namespace Trk {
+
+
+extern WorkArray workarray_;
+extern DerivT derivt_;
+
+
+#define derivt_1 derivt_
+#define workarray_1 workarray_
+
+
+#define ader_ref(a_1,a_2) workarray_1.ader[(a_2)*(NTrkM*3+3) + (a_1) - (NTrkM*3+4)]
+
+
+/* -------------------------------------------------------------- */
+/*  RETURN FULL ERROR MATRIX AFTER THE FIT                        */
+/*  ERRMTX SHOULD HAVE AT LEAST (3*NTRK+3)*(3*NTRK+4)/2. ELEMENTS */
+
+
+int fiterm(long int NTRK, double  *errmtx)
+{
+    int ii=0, i, j;
+    int lim = (NTRK+1)*3;
+    if(workarray_.existFullCov){
+      for (j = 1; j <= lim; ++j) {          /* COLUMN */
+	 for (i = 1; i <= j; ++i) {        /* ROW */
+	    errmtx[ii] = ader_ref(i, j);
+	    ++ii;
+	 }
+      }
+      return 0;
+    }else{
+      return -1;
+    }
+}
+
+
+/* ------------------------------------------------------- */
+/*  RETURN ERROR OF ANY VARIABLE AFTER THE FIT */
+
+void cferrany_(long int *ntrk, double  *deriv, double  *covar)
+{
+    (*covar) = 0.;
+
+    if (deriv==0) return;
+    --deriv;
+
+    int lim, ic, jc;
+
+    lim = ((*ntrk) + 1) * 3;
+    for (ic = 1; ic <= lim; ++ic) {
+	for (jc = 1; jc <= lim; ++jc) {
+	    (*covar) += deriv[ic] * ader_ref(ic, jc) * deriv[jc];
+	}
+    }
+} 
+
+#undef ader_ref
+
+
+
+
+
+
+
+/* ---------------------------------------------------------- */
+/* Entry for error matrix calculation after successful fit    */
+/* Error matrix has a form V(X,Y,Z,PX,PY,PZ)                  */
+/* ADER - full covariance matrix after fit in form            */
+/*        (x,y,z,track1(1:3),track2(1:3),......)              */
+
+#define ader_ref(a_1,a_2) ader[(a_2)*(NTrkM*3+3) + (a_1) - (NTrkM*3+4)]
+#define verr_ref(a_1,a_2) verr[(a_2)*6 + (a_1) - 7]
+#define dcv_ref(a_1,a_2)  dcv[(a_2)*6 + (a_1) - 7]
+
+
+#define useWeightScheme 1
+
+int getFullVrtCov(VKVertex * vk, double *ader, double *dcv, double *verr)
+{
+    extern void scaleg(double *, double *, long int  ,long int );
+
+    int i,j,ic1,ic2;
+
+    long int ic, jc, it, jt;
+    double  cnt = 1e8;
+
+
+    extern void dsinv(long int *, double  *, long int , long int *);
+    extern void FullMTXfill( VKVertex* , double *);
+    extern void vkSVDCmp(double**, int, int, double*, double**);
+
+    TWRK    * t_trk=0;
+    long int NTRK = vk->TrackList.size();
+    long int IERR=0;
+    long int NVar = (NTRK + 1) * 3;
+    if(vk->passNearVertex && vk->ConstraintList.size()==0) {
+                                 /*  Fit is with "pass near" constraint and then */
+                                 /*     matrix is already present                */
+    } else if ( vk->ConstraintList.size()>0  && useWeightScheme ) {
+/*  Full matrix inversion i */
+//
+        FullMTXfill( vk, ader);
+	if ( vk->passNearVertex ) {
+          double drdpy[2][3];
+          double dpipj[3][3];
+	  for (it = 1; it <= NTRK; ++it) {
+	    drdpy[0][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[1];
+            drdpy[1][0] = vk->tmpArr[it-1]->drdp[0][0] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][0] * vk->FVC.ywgt[2];
+	    drdpy[0][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[1];
+	    drdpy[1][1] = vk->tmpArr[it-1]->drdp[0][1] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][1] * vk->FVC.ywgt[2];
+	    drdpy[0][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[0] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[1];
+	    drdpy[1][2] = vk->tmpArr[it-1]->drdp[0][2] * vk->FVC.ywgt[1] + vk->tmpArr[it-1]->drdp[1][2] * vk->FVC.ywgt[2];
+	    for (jt = 1; jt <= NTRK; ++jt) {   /* Matrix */
+		    for (int k = 0; k < 3; ++k) {
+			for (int l = 0; l < 3; ++l) {
+			    dpipj[k][l] = 0.;
+			    for (int j = 0; j < 2; ++j) {
+				dpipj[k][l] +=  vk->tmpArr[jt-1]->drdp[j][k] * drdpy[j][l];
+			    }
+			}
+		    }
+		    for (int k = 1; k <= 3; ++k) {
+			for (int l = 1; l <= 3; ++l) {
+			    ader_ref(it * 3 + k, jt * 3 + l) +=  dpipj[l-1][k-1];
+			}
+		    }
+	    }
+	  }
+	}
+        Vect3DF th0t,tf0t;
+        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
+          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
+            th0t = vk->ConstraintList[ic1]->h0t[ic2];
+            ader_ref(1, 1) += cnt * th0t.X * th0t.X;
+            ader_ref(2, 1) += cnt * th0t.Y * th0t.X;
+            ader_ref(3, 1) += cnt * th0t.Z * th0t.X;
+            ader_ref(1, 2) += cnt * th0t.X * th0t.Y;
+            ader_ref(2, 2) += cnt * th0t.Y * th0t.Y;
+            ader_ref(3, 2) += cnt * th0t.Z * th0t.Y;
+            ader_ref(1, 3) += cnt * th0t.X * th0t.Z;
+            ader_ref(2, 3) += cnt * th0t.Y * th0t.Z;
+            ader_ref(3, 3) += cnt * th0t.Z * th0t.Z;
+	    for (it = 1; it <= NTRK; ++it) {
+                tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
+		ader_ref(1, it * 3 + 1) += cnt * th0t.X * tf0t.X;
+		ader_ref(2, it * 3 + 1) += cnt * th0t.Y * tf0t.X;
+		ader_ref(3, it * 3 + 1) += cnt * th0t.Z * tf0t.X;
+		ader_ref(1, it * 3 + 2) += cnt * th0t.X * tf0t.Y;
+		ader_ref(2, it * 3 + 2) += cnt * th0t.Y * tf0t.Y;
+		ader_ref(3, it * 3 + 2) += cnt * th0t.Z * tf0t.Y;
+		ader_ref(1, it * 3 + 3) += cnt * th0t.X * tf0t.Z;
+		ader_ref(2, it * 3 + 3) += cnt * th0t.Y * tf0t.Z;
+		ader_ref(3, it * 3 + 3) += cnt * th0t.Z * tf0t.Z;
+	    }
+	  }
+	}
+
+
+        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
+          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
+	    for (it = 1; it <= NTRK; ++it) {
+	      for (jt = it; jt <= NTRK; ++jt) {
+                Vect3DF tf0ti = vk->ConstraintList[ic1]->f0t[it-1][ic2];
+                Vect3DF tf0tj = vk->ConstraintList[ic1]->f0t[jt-1][ic2];
+	        ader_ref(it*3 + 1, jt*3 + 1) += cnt * tf0ti.X * tf0tj.X;
+	        ader_ref(it*3 + 2, jt*3 + 1) += cnt * tf0ti.Y * tf0tj.X;
+	        ader_ref(it*3 + 3, jt*3 + 1) += cnt * tf0ti.Z * tf0tj.X;
+	        ader_ref(it*3 + 1, jt*3 + 2) += cnt * tf0ti.X * tf0tj.Y;
+	        ader_ref(it*3 + 2, jt*3 + 2) += cnt * tf0ti.Y * tf0tj.Y;
+	        ader_ref(it*3 + 3, jt*3 + 2) += cnt * tf0ti.Z * tf0tj.Y;
+	        ader_ref(it*3 + 1, jt*3 + 3) += cnt * tf0ti.X * tf0tj.Z;
+	        ader_ref(it*3 + 2, jt*3 + 3) += cnt * tf0ti.Y * tf0tj.Z;
+	        ader_ref(it*3 + 3, jt*3 + 3) += cnt * tf0ti.Z * tf0tj.Z;
+	      }
+	    }	    
+	  }
+	}
+/* symmetrisation */
+	for (i=1; i<=NVar-1; ++i) {
+	    for (j = i+1; j<=NVar; ++j) {
+		ader_ref(j,i) = ader_ref(i,j);
+	    }
+	}
+//-------------------------------------------------------------------------
+/* several checks for debugging */
+//std::cout.precision(12);
+//        for(ic1=0; ic1<(int)vk->ConstraintList.size();ic1++){
+//          for(ic2=0; ic2<vk->ConstraintList[ic1]->NCDim; ic2++){
+//            th0t = vk->ConstraintList[ic1]->h0t[ic2];
+//std::cout<<"h0t="<<th0t.X<<", "<<th0t.Y<<", "<<th0t.Z<<'\n';
+//	    for (it = 1; it <= NTRK; ++it) {
+//                tf0t = vk->ConstraintList[ic1]->f0t[it-1][ic2];
+//std::cout<<"f0t="<<tf0t.X<<", "<<tf0t.Y<<", "<<tf0t.Z<<'\n';
+//        } } }
+//if(NTRK==2){
+//  for(i=1; i<=NVar; i++){std::cout<<" newmtx=";
+//    for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
+//}
+//-------------------------------------------------------------------------
+/* weight matrix ready.Invert */
+        double * Scale=new double[NVar]; scaleg(ader, Scale, NVar, NTrkM*3+3);                  // Balance matrix
+        double **ta = new double*[NVar+1]; for(i=0; i<NVar+1; i++) ta[i] = new double[NVar+1];  // Make a copy 
+ 	for (i=1; i<=NVar; ++i) for (j = i; j<=NVar; ++j) ta[i][j] = ta[j][i] = ader_ref(i,j);  // for failure treatment
+	dsinv(&NVar, ader, NTrkM*3+3, &IERR);
+	if ( IERR != 0) {
+          double **tv = new double*[NVar+1]; for(i=0; i<NVar+1; i++) tv[i] = new double[NVar+1];
+          double **tr = new double*[NVar+1]; for(i=0; i<NVar+1; i++) tr[i] = new double[NVar+1];
+          double  *tw = new double[NVar+1];
+          vkSVDCmp( ta, NVar, NVar, tw, tv);
+          double tmax=0; 
+          for(i=1; i<NVar+1; i++) if(fabs(tw[i])>tmax)tmax=fabs(tw[i]); 
+          //for(i=1; i<NVar+1; i++) std::cout<<tw[i]<<"; "; std::cout<<'\n'; 
+          for(i=1; i<NVar+1; i++) if(fabs(tw[i])/tmax < 1.e-15) tw[i]=0.;
+          for(i=1; i<=NVar; i++){ for(j=1; j<=NVar; j++){
+            tr[i][j]=0.; for(int k=1; k<=NVar; k++)  if(tw[k]!=0.) tr[i][j] += ta[i][k]*tv[j][k]/tw[k];
+          }} 
+	  for (i=1; i<=NVar; ++i) for (j=1; j<=NVar; ++j) ader_ref(i,j)=tr[i][j];
+          for(i=0; i<NVar+1; i++) {delete[] tv[i];delete[] tr[i];} 
+	  delete[] tv; delete[] tr; delete[] tw;	
+	  IERR=0; //return IERR;
+        }
+ 	for (i=1; i<=NVar; ++i) for (j = 1; j<=NVar; ++j) ader_ref(i,j)*=Scale[i-1]*Scale[j-1];
+        delete[] Scale; //Restore scale
+        for(i=0; i<NVar+1; i++) delete[] ta[i];
+        delete[] ta;                 //Clean memory
+/* ---------------------------------------- */
+    } else {
+/* ---------------------------------------- */
+/* Simple and fast without constraints */
+	for (i=1; i<=NVar; i++) {
+	    for (j=1; j<=NVar; j++) {
+		ader_ref(i,j)=0.;
+	    }
+	}
+        double vcov[6]={vk->fitVcov[0],vk->fitVcov[1],vk->fitVcov[2],vk->fitVcov[3],vk->fitVcov[4],vk->fitVcov[5]};
+	ader_ref(1,1) = vcov[0];
+	ader_ref(1,2) = vcov[1];
+	ader_ref(2,2) = vcov[2];
+	ader_ref(1,3) = vcov[3];
+	ader_ref(2,3) = vcov[4];
+	ader_ref(3,3) = vcov[5];
+	ader_ref(2,1) = ader_ref(1,2);
+	ader_ref(3,1) = ader_ref(1,3);
+	ader_ref(3,2) = ader_ref(2,3);
+
+	for (it=1; it<=NTRK; it++) {
+            t_trk=vk->tmpArr[it-1];
+	    ader_ref(1, it*3 + 1) = -vcov[0] * t_trk->wbci[0] 
+	                           - vcov[1] * t_trk->wbci[1] 
+				   - vcov[3] * t_trk->wbci[2];
+	    ader_ref(2, it*3 + 1) = -vcov[1] * t_trk->wbci[0] 
+	                           - vcov[2] * t_trk->wbci[1] 
+				   - vcov[4] * t_trk->wbci[2];
+	    ader_ref(3, it*3 + 1) = -vcov[3] * t_trk->wbci[0] 
+	                           - vcov[4] * t_trk->wbci[1] 
+				   - vcov[5] * t_trk->wbci[2];
+	    ader_ref(1, it*3 + 2) = -vcov[0] * t_trk->wbci[3] 
+	                           - vcov[1] * t_trk->wbci[4] 
+		                   - vcov[3] * t_trk->wbci[5];
+	    ader_ref(2, it*3 + 2) = -vcov[1] * t_trk->wbci[3] 
+	                           - vcov[2] * t_trk->wbci[4] 
+				   - vcov[4] * t_trk->wbci[5];
+	    ader_ref(3, it*3 + 2) = -vcov[3] * t_trk->wbci[3] 
+	                           - vcov[4] * t_trk->wbci[4] 
+				   - vcov[5] * t_trk->wbci[5];
+	    ader_ref(1, it*3 + 3) = -vcov[0] * t_trk->wbci[6] 
+	                           - vcov[1] * t_trk->wbci[7] 
+				   - vcov[3] * t_trk->wbci[8];
+	    ader_ref(2, it*3 + 3) = -vcov[1] * t_trk->wbci[6] 
+	                           - vcov[2] * t_trk->wbci[7] 
+				   - vcov[4] * t_trk->wbci[8];
+	    ader_ref(3, it*3 + 3) = -vcov[3] * t_trk->wbci[6]  
+		                   - vcov[4] * t_trk->wbci[7] 
+				   - vcov[5] * t_trk->wbci[8];
+	    ader_ref(it*3 + 1, 1) = ader_ref(1, it*3 + 1);
+	    ader_ref(it*3 + 1, 2) = ader_ref(2, it*3 + 1);
+	    ader_ref(it*3 + 1, 3) = ader_ref(3, it*3 + 1);
+	    ader_ref(it*3 + 2, 1) = ader_ref(1, it*3 + 2);
+	    ader_ref(it*3 + 2, 2) = ader_ref(2, it*3 + 2);
+	    ader_ref(it*3 + 2, 3) = ader_ref(3, it*3 + 2);
+	    ader_ref(it*3 + 3, 1) = ader_ref(1, it*3 + 3);
+	    ader_ref(it*3 + 3, 2) = ader_ref(2, it*3 + 3);
+	    ader_ref(it*3 + 3, 3) = ader_ref(3, it*3 + 3);
+	}
+
+
+	for (it = 1; it<=NTRK; ++it) {
+            t_trk=vk->tmpArr[it-1];
+	    for (jt=1; jt<=NTRK; ++jt) {
+	        int j3   = jt*3;
+	        int i3   = it*3;
+		ader_ref( i3+1, j3+1) = -t_trk->wbci[0]*ader_ref(1, j3+1) - t_trk->wbci[1]*ader_ref(2, j3+1) - t_trk->wbci[2]*ader_ref(3, j3+1);
+		ader_ref( i3+2, j3+1) = -t_trk->wbci[3]*ader_ref(1, j3+1) - t_trk->wbci[4]*ader_ref(2, j3+1) - t_trk->wbci[5]*ader_ref(3, j3+1);
+		ader_ref( i3+3, j3+1) = -t_trk->wbci[6]*ader_ref(1, j3+1) - t_trk->wbci[7]*ader_ref(2, j3+1) - t_trk->wbci[8]*ader_ref(3, j3+1);
+		ader_ref( i3+1, j3+2) = -t_trk->wbci[0]*ader_ref(1, j3+2) - t_trk->wbci[1]*ader_ref(2, j3+2) - t_trk->wbci[2]*ader_ref(3, j3+2);
+		ader_ref( i3+2, j3+2) = -t_trk->wbci[3]*ader_ref(1, j3+2) - t_trk->wbci[4]*ader_ref(2, j3+2) - t_trk->wbci[5]*ader_ref(3, j3+2);
+		ader_ref( i3+3, j3+2) = -t_trk->wbci[6]*ader_ref(1, j3+2) - t_trk->wbci[7]*ader_ref(2, j3+2) - t_trk->wbci[8]*ader_ref(3, j3+2);
+		ader_ref( i3+1, j3+3) = -t_trk->wbci[0]*ader_ref(1, j3+3) - t_trk->wbci[1]*ader_ref(2, j3+3) - t_trk->wbci[2]*ader_ref(3, j3+3);
+		ader_ref( i3+2, j3+3) = -t_trk->wbci[3]*ader_ref(1, j3+3) - t_trk->wbci[4]*ader_ref(2, j3+3) - t_trk->wbci[5]*ader_ref(3, j3+3);
+		ader_ref( i3+3, j3+3) = -t_trk->wbci[6]*ader_ref(1, j3+3) - t_trk->wbci[7]*ader_ref(2, j3+3) - t_trk->wbci[8]*ader_ref(3, j3+3);
+		if (it == jt) {
+		    ader_ref( i3+1, i3+1) += t_trk->wci[0];
+		    ader_ref( i3+1, i3+2) += t_trk->wci[1];
+		    ader_ref( i3+2, i3+1) += t_trk->wci[1];
+		    ader_ref( i3+2, i3+2) += t_trk->wci[2];
+		    ader_ref( i3+1, i3+3) += t_trk->wci[3];
+		    ader_ref( i3+3, i3+1) += t_trk->wci[3];
+		    ader_ref( i3+2, i3+3) += t_trk->wci[4];
+		    ader_ref( i3+3, i3+2) += t_trk->wci[4];
+		    ader_ref( i3+3, i3+3) += t_trk->wci[5];
+		}
+	    }
+	}
+//for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<" fast full m NEW"<<'\n';        
+        if( vk->ConstraintList.size()>0  && !useWeightScheme ){
+//---------------------------------------------------------------------
+// Covariance matrix with constraints a la Avery.
+// ader_ref() should contain nonconstraint covariance matrix
+//---------------------------------------------------------------------
+          long int totNC=0;  //total number of constraints
+          std::vector<std::vector< Vect3DF> > tf0t;  // derivative collectors
+          std::vector< Vect3DF >              th0t;  // derivative collectors
+          std::vector< double >               taa;   // derivative collectors
+          std::vector< Vect3DF > tmpVec;
+          for(int ii=0; ii<(int)vk->ConstraintList.size();ii++){
+             totNC += vk->ConstraintList[ii]->NCDim;
+             for(ic=0; ic<(int)vk->ConstraintList[ii]->NCDim; ic++){
+               taa.push_back(  vk->ConstraintList[ii]->aa[ic] );
+               th0t.push_back( vk->ConstraintList[ii]->h0t[ic] );
+               tmpVec.clear();
+               for(it=0; it<(int)vk->ConstraintList[ii]->f0t.size(); it++){
+	         tmpVec.push_back( vk->ConstraintList[ii]->f0t[it][ic] );
+              }
+	      tf0t.push_back( tmpVec );
+            }
+          }
+// R,RC[ic][i]
+	  double **R =new double*[totNC]; for(ic=0; ic<totNC; ic++) R[ic]=new double[NVar]; 
+	  double **RC=new double*[totNC]; for(ic=0; ic<totNC; ic++)RC[ic]=new double[NVar]; 
+	  double *RCRt=new double[totNC*totNC];
+	  for(ic=0; ic<totNC; ic++){
+	    R[ic][0]=th0t[ic].X;
+	    R[ic][1]=th0t[ic].Y;
+	    R[ic][2]=th0t[ic].Z;
+	    for(it=1; it<=NTRK; it++){
+	      R[ic][it*3+0]=tf0t[ic][it-1].X;
+	      R[ic][it*3+1]=tf0t[ic][it-1].Y;
+	      R[ic][it*3+2]=tf0t[ic][it-1].Z;
+            }
+	  }
+// R*Cov matrix
+          for(ic=0; ic<totNC; ic++){
+	    for(j=0; j<NVar; j++){ RC[ic][j]=0;
+	      for(i=0; i<NVar; i++) RC[ic][j] += R[ic][i]*ader_ref(i+1,j+1);
+            }
+          }
+// R*Cov*Rt matrix        -  Lagrange multiplyers errors
+          for(ic=0; ic<totNC; ic++){
+            for(jc=0; jc<totNC; jc++){  RCRt[ic*totNC + jc] =0.;
+	      for(i=0; i<NVar; i++) RCRt[ic*totNC + jc] += RC[ic][i]*R[jc][i];
+	    }
+          }
+	  dsinv(&totNC, RCRt, totNC, &IERR);
+	  if ( IERR != 0) return IERR;
+// Correction matrix
+	 for(i=0; i<NVar; i++){
+	   for(j=0; j<NVar; j++){  double COR=0.;
+             for(ic=0; ic<totNC; ic++){
+               for(jc=0; jc<totNC; jc++){
+	         COR += RC[ic][i]*RC[jc][j]*RCRt[ic*totNC +jc];
+	       }
+	     }
+	     ader_ref(i+1, j+1) -= COR;
+	   }
+	 }
+// Delete temporary matrices
+         for(ic=0; ic<totNC; ic++) delete[]  R[ic];
+         delete[] R;
+         for(ic=0; ic<totNC; ic++) delete[] RC[ic];
+         delete[] RC;
+	 delete[] RCRt;
+//for(int ii=1; ii<=9; ii++)std::cout<<ader_ref(ii,ii)<<", "; std::cout<<" avery full m NEW"<<'\n';        
+       }  //end of Avery matrix
+
+
+
+    }  // End of global IF() for matrix type selection
+    
+//if(NTRK==2){
+//  for(i=1; i<=NVar; i++){std::cout<<" new covfull=";
+//    for(j=1; j<=NVar; j++)std::cout<<ader_ref(j,i)<<", "; std::cout<<'\n';}
+//}
+
+/* --Conversion to (X,Y,Z,Px,Py,Pz) form */
+    for (i = 1; i <= 6; ++i) {
+	for (j = 1; j <= 6; ++j) {
+	    verr_ref(i,j) = 0.;
+	    for (ic=1; ic<=NVar; ++ic) {
+	        if(dcv_ref(i, ic)==0.) continue;
+		for (jc=1; jc<=NVar; ++jc) {
+	            if(dcv_ref(j, jc)==0.) continue;
+		    verr_ref(i, j) += dcv_ref(i, ic) * ader_ref(ic, jc) * dcv_ref(j, jc);
+		}
+	    }
+	}
+    }
+//for(int ii=1; ii<=6; ii++)std::cout<<verr_ref(ii,ii)<<", "; std::cout<<" final m NEW"<<'\n';        
+    workarray_.existFullCov = 1;
+    return 0;
+} 
+#undef dcv_ref
+#undef verr_ref
+#undef ader_ref
+
+#undef useWeightScheme
+
+} /* End of VKalVrtCore namespace*/
+
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtDeriv.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtDeriv.cxx
index 6ca0a2b6579fbd7e0ef7829eb21724416ee40f37..5114e4812bc6833d530909e998668d084ed8ce07 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtDeriv.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/VtDeriv.cxx
@@ -27,7 +27,7 @@ void vpderiv(bool UseTrackErr, long int Charge, double *pari0, double *covi, dou
     /* Local variables */
     double pari[6], covd[15], dcov[3], rvec[50]; /* was [2][6*4+1] */
     double  paro[5];
-    long int jerr, j, ij, ip, ipp, id=0;
+    long int j, ij, ip, ipp, id=0;
     double dwgt0[3]={0.,0.,0.}, constB;
     //double deriv[6], dchi2[4*6+1];                     //VK for debugging
     double cs, pp, sn, pt, rho;
@@ -66,7 +66,6 @@ void vpderiv(bool UseTrackErr, long int Charge, double *pari0, double *covi, dou
 
     /* Function Body */
 /* --------------------- */
-    jerr = 0;
 //VK    constB = *localbmag * .0029979246;
     constB =vkalvrtbmag.bmag  * vkalMagCnvCst;
     
@@ -181,7 +180,7 @@ void vpderiv(bool UseTrackErr, long int Charge, double *pari0, double *covi, dou
 /*---------------------------------------------------------------- */	
 //     Weight matrix and chi2 for given shift	
 //
-	jerr=cfdinv(dcov, &dwgt[0], -2); if(jerr){jerr=cfdinv(dcov, &dwgt[0], 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.; jerr=0;}};
+	int jerr=cfdinv(dcov, &dwgt[0], -2); if(jerr){jerr=cfdinv(dcov, &dwgt[0], 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}};
 	//dchi2[ip] = sqrt(fabs(dwgt[0]*paro[0]*paro[0] + 2.*dwgt[1]*paro[0]*paro[1] + dwgt[2]*paro[1]*paro[1]));
 	rvec_ref(1, ip) = paro[0];
 	rvec_ref(2, ip) = paro[1];
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfImp.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfImp.cxx
index 449c0c56ce24ae57353b2b24809859081cb3c35c..b58263ef1ceee289e224da4f8b8834a8a0b39081 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfImp.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfImp.cxx
@@ -2,185 +2,185 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#include <math.h>
-#include "TrkVKalVrtCore/Propagator.h"
-#include <iostream>
-
-namespace Trk {
-
-extern vkalPropagator  myPropagator;
-extern int cfdinv(double *, double *, long int); 
-
-#define min(a,b) ((a) <= (b) ? (a) : (b))
-#define max(a,b) ((a) >= (b) ? (a) : (b))
-
-
- void   cfimp(long int TrkID, long int ich, long int IFL, double *par, 
-	double *err, double *vrt, double *vcov, double *rimp, 
-	double *rcov, double *sign )
-{
-    double dcov[3], errd[15], paro[5];
-    double dwgt[3], errn[15];
-    long int jerr, i__, j, ij;
-
-
-    double cs, sn;
-
-    double cnv[6]	/* was [2][3] */;
-/* --------------------------------------------------------- */
-/*  Impact parameter calculation                             */
-/*  Input:                                                   */
-/*      ICH -charge(-1,0,1)                                  */
-/*      IFL = 1 contribution from VRT is added               */
-/*      IFL =-1 contribution from VRT is subtructed          */
-/*      PAR(5),ERR(15) - peregee parameters and error matrix */
-/*      VRT(3),VCOV(6) - vertex and its error matrix         */
-/*                                                           */
-/*    SIGNIFICANCE IS CALCULATED FOR PERIGEE POINT BY DEF.   */
-/*           (NOT FOR THE CLOSEST POINT!!!)                  */
-/*                                                           */
-/*  Output:                                                  */
-/*     RIMP(1) - impact in XY                                */
-/*     RIMP(2) - impact in Z                                 */
-/*     RIMP(3) - Theta at new vertex                         */
-/*     RIMP(4) - Phi at new vertex                           */
-/*     RIMP(5) - curvature at vertex                         */
-/*     RCOV(3) - error matrix for RIMP                       */
-/*     SIGN    - impact significance                         */
-/* Author: V.Kostyukhin                                      */
-/* --------------------------------------------------------- */
-    /* Parameter adjustments */
-    --vcov;
-
-    /* Function Body */
-    for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
-
-
-    double Ref0[3]={0.,0.,0.};  //base reference point for standard perigee
-    myPropagator.Propagate( TrkID, ich, par, errd, Ref0, vrt, paro, errn);
-
-//std::cout <<" CFImp new par R,Z="<<paro[0]<<", "<<paro[1]<<'\n';
-/* ---------- */
-    rimp[0] = paro[0];
-    rimp[1] = paro[1];
-    rimp[2] = paro[2];
-    rimp[3] = paro[3];
-    rimp[4] = paro[4];
-/*  X=paro(1)*sn, Y=-paro(1)*cs */
-    sn = sin(paro[3]);
-    cs = cos(paro[3]);
-/* -- New error version */
-    cnv[0] = -sn;
-    cnv[2] = cs;
-    cnv[4] = 0.;
-    cnv[1] = sn / tan(paro[2]);
-    cnv[3] = cs / tan(paro[2]);
-    cnv[5] = -1.;
-    dcov[0] = 0.;
-    dcov[1] = 0.;
-    dcov[2] = 0.;
-    for (i__ = 1; i__ <= 3; ++i__) {
-	for (j = 1; j <= 3; ++j) {
-	    ij = max(i__,j);
-	    ij = ij * (ij - 1) / 2 + min(i__,j);
-	    dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
-	    dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
-	    dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
-	}
-    }
-/* --------------------------------------------------------------- */
-    if (IFL == 1) {
-	rcov[0] = errn[0] + dcov[0];
-	rcov[1] = errn[1] + dcov[1];
-	rcov[2] = errn[2] + dcov[2];
-    } else if (IFL == -1) {
-	rcov[0] = errn[0] - dcov[0];
-	rcov[1] = errn[1] - dcov[1];
-	rcov[2] = errn[2] - dcov[2];
-    } else {
-	rcov[0] = errn[0];
-	rcov[1] = errn[1];
-	rcov[2] = errn[2];
-    }
-    jerr=cfdinv(rcov, dwgt, -2);
-    if (jerr) {jerr=cfdinv(rcov, dwgt, 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.; jerr=0;}}
-    (*sign) = sqrt(fabs(dwgt[0] * rimp[0] * rimp[0] + dwgt[1] * 2. * rimp[0] * rimp[1] + 
-	    dwgt[2] * rimp[1] * rimp[1]));
-} 
-
-
- void   cfimpc(long int TrkID, long int ich, long int IFL, double *par, 
-	double *err, double *vrt, double *vcov, double *rimp, 
-	double *rcov, double *sign )
-{
-    double dcov[3], errd[15], paro[5];
-    double dwgt[3], errn[15], cnv[6];	/* was [2][3] */
-    long int jerr, i__, j, ij;
-
-
-    double cs, sn;
-    extern void cfClstPnt(double *p, double *, double *);
-/* --------------------------------------------------------- */
-/*    SIGNIFICANCE IS CALCULATED FOR THE CLOSEST POINT NOW!!!*/
-/* Author: V.Kostyukhin                                      */
-/* --------------------------------------------------------- */
-    /* Parameter adjustments */
-    --vcov;
-    for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
-
-    double Ref0[3]={0.,0.,0.};  //base reference point for standard perigee
-    myPropagator.Propagate( TrkID, ich, par, errd, Ref0, vrt, paro, errn);
-
-    double tmpVrt[3]={0.,0.,0.}; double ClosestPnt[3];
-    cfClstPnt( paro, tmpVrt, ClosestPnt);
-    paro[0]=sqrt(ClosestPnt[0]*ClosestPnt[0] + ClosestPnt[1]*ClosestPnt[1]);
-    paro[1]=ClosestPnt[2];
-/* ---------- */
-    rimp[0] = paro[0];
-    rimp[1] = paro[1];
-    rimp[2] = paro[2];
-    rimp[3] = paro[3];
-    rimp[4] = paro[4];
-    sn = sin(paro[3]);
-    cs = cos(paro[3]);
-/* -- New error version */
-    cnv[0] = -sn;
-    cnv[2] = cs;
-    cnv[4] = 0.;
-    cnv[1] = sn / tan(paro[2]);
-    cnv[3] = cs / tan(paro[2]);
-    cnv[5] = -1.;
-    dcov[0] = 0.;
-    dcov[1] = 0.;
-    dcov[2] = 0.;
-    for (i__ = 1; i__ <= 3; ++i__) {
-	for (j = 1; j <= 3; ++j) {
-	    ij = max(i__,j);
-	    ij = ij * (ij - 1) / 2 + min(i__,j);
-	    dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
-	    dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
-	    dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
-	}
-    }
-/* --------------------------------------------------------------- */
-    if (IFL == 1) {
-	rcov[0] = errn[0] + dcov[0];
-	rcov[1] = errn[1] + dcov[1];
-	rcov[2] = errn[2] + dcov[2];
-    } else if (IFL == -1) {
-	rcov[0] = errn[0] - dcov[0];
-	rcov[1] = errn[1] - dcov[1];
-	rcov[2] = errn[2] - dcov[2];
-    } else {
-	rcov[0] = errn[0];
-	rcov[1] = errn[1];
-	rcov[2] = errn[2];
-    }
-    jerr=cfdinv(rcov, dwgt, -2);
-    if (jerr) {jerr=cfdinv(rcov, dwgt, 2);if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.; jerr=0;}}
-    (*sign) = sqrt(fabs(dwgt[0] * rimp[0] * rimp[0] + dwgt[1] * 2. * rimp[0] * rimp[1] + 
-	    dwgt[2] * rimp[1] * rimp[1]));
-} 
-
-} /* end of namespace */
-
+#include <math.h>
+#include "TrkVKalVrtCore/Propagator.h"
+#include <iostream>
+
+namespace Trk {
+
+extern vkalPropagator  myPropagator;
+extern int cfdinv(double *, double *, long int); 
+
+#define min(a,b) ((a) <= (b) ? (a) : (b))
+#define max(a,b) ((a) >= (b) ? (a) : (b))
+
+
+ void   cfimp(long int TrkID, long int ich, long int IFL, double *par, 
+	double *err, double *vrt, double *vcov, double *rimp, 
+	double *rcov, double *sign )
+{
+    double dcov[3], errd[15], paro[5];
+    double dwgt[3], errn[15];
+    int i__, j, ij;
+
+
+    double cs, sn;
+
+    double cnv[6]	/* was [2][3] */;
+/* --------------------------------------------------------- */
+/*  Impact parameter calculation                             */
+/*  Input:                                                   */
+/*      ICH -charge(-1,0,1)                                  */
+/*      IFL = 1 contribution from VRT is added               */
+/*      IFL =-1 contribution from VRT is subtructed          */
+/*      PAR(5),ERR(15) - peregee parameters and error matrix */
+/*      VRT(3),VCOV(6) - vertex and its error matrix         */
+/*                                                           */
+/*    SIGNIFICANCE IS CALCULATED FOR PERIGEE POINT BY DEF.   */
+/*           (NOT FOR THE CLOSEST POINT!!!)                  */
+/*                                                           */
+/*  Output:                                                  */
+/*     RIMP(1) - impact in XY                                */
+/*     RIMP(2) - impact in Z                                 */
+/*     RIMP(3) - Theta at new vertex                         */
+/*     RIMP(4) - Phi at new vertex                           */
+/*     RIMP(5) - curvature at vertex                         */
+/*     RCOV(3) - error matrix for RIMP                       */
+/*     SIGN    - impact significance                         */
+/* Author: V.Kostyukhin                                      */
+/* --------------------------------------------------------- */
+    /* Parameter adjustments */
+    --vcov;
+
+    /* Function Body */
+    for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
+
+
+    double Ref0[3]={0.,0.,0.};  //base reference point for standard perigee
+    myPropagator.Propagate( TrkID, ich, par, errd, Ref0, vrt, paro, errn);
+
+//std::cout <<" CFImp new par R,Z="<<paro[0]<<", "<<paro[1]<<'\n';
+/* ---------- */
+    rimp[0] = paro[0];
+    rimp[1] = paro[1];
+    rimp[2] = paro[2];
+    rimp[3] = paro[3];
+    rimp[4] = paro[4];
+/*  X=paro(1)*sn, Y=-paro(1)*cs */
+    sn = sin(paro[3]);
+    cs = cos(paro[3]);
+/* -- New error version */
+    cnv[0] = -sn;
+    cnv[2] = cs;
+    cnv[4] = 0.;
+    cnv[1] = sn / tan(paro[2]);
+    cnv[3] = cs / tan(paro[2]);
+    cnv[5] = -1.;
+    dcov[0] = 0.;
+    dcov[1] = 0.;
+    dcov[2] = 0.;
+    for (i__ = 1; i__ <= 3; ++i__) {
+	for (j = 1; j <= 3; ++j) {
+	    ij = max(i__,j);
+	    ij = ij * (ij - 1) / 2 + min(i__,j);
+	    dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
+	    dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
+	    dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
+	}
+    }
+/* --------------------------------------------------------------- */
+    if (IFL == 1) {
+	rcov[0] = errn[0] + dcov[0];
+	rcov[1] = errn[1] + dcov[1];
+	rcov[2] = errn[2] + dcov[2];
+    } else if (IFL == -1) {
+	rcov[0] = errn[0] - dcov[0];
+	rcov[1] = errn[1] - dcov[1];
+	rcov[2] = errn[2] - dcov[2];
+    } else {
+	rcov[0] = errn[0];
+	rcov[1] = errn[1];
+	rcov[2] = errn[2];
+    }
+    int jerr=cfdinv(rcov, dwgt, -2);
+    if (jerr) {jerr=cfdinv(rcov, dwgt, 2); if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
+    (*sign) = sqrt(fabs(dwgt[0] * rimp[0] * rimp[0] + dwgt[1] * 2. * rimp[0] * rimp[1] + 
+	    dwgt[2] * rimp[1] * rimp[1]));
+} 
+
+
+ void   cfimpc(long int TrkID, long int ich, long int IFL, double *par, 
+	double *err, double *vrt, double *vcov, double *rimp, 
+	double *rcov, double *sign )
+{
+    double dcov[3], errd[15], paro[5];
+    double dwgt[3], errn[15], cnv[6];	/* was [2][3] */
+    int i__, j, ij;
+
+
+    double cs, sn;
+    extern void cfClstPnt(double *p, double *, double *);
+/* --------------------------------------------------------- */
+/*    SIGNIFICANCE IS CALCULATED FOR THE CLOSEST POINT NOW!!!*/
+/* Author: V.Kostyukhin                                      */
+/* --------------------------------------------------------- */
+    /* Parameter adjustments */
+    --vcov;
+    for (int ii = 0; ii < 15; ++ii) {errd[ii] = err[ii];}
+
+    double Ref0[3]={0.,0.,0.};  //base reference point for standard perigee
+    myPropagator.Propagate( TrkID, ich, par, errd, Ref0, vrt, paro, errn);
+
+    double tmpVrt[3]={0.,0.,0.}; double ClosestPnt[3];
+    cfClstPnt( paro, tmpVrt, ClosestPnt);
+    paro[0]=sqrt(ClosestPnt[0]*ClosestPnt[0] + ClosestPnt[1]*ClosestPnt[1]);
+    paro[1]=ClosestPnt[2];
+/* ---------- */
+    rimp[0] = paro[0];
+    rimp[1] = paro[1];
+    rimp[2] = paro[2];
+    rimp[3] = paro[3];
+    rimp[4] = paro[4];
+    sn = sin(paro[3]);
+    cs = cos(paro[3]);
+/* -- New error version */
+    cnv[0] = -sn;
+    cnv[2] = cs;
+    cnv[4] = 0.;
+    cnv[1] = sn / tan(paro[2]);
+    cnv[3] = cs / tan(paro[2]);
+    cnv[5] = -1.;
+    dcov[0] = 0.;
+    dcov[1] = 0.;
+    dcov[2] = 0.;
+    for (i__ = 1; i__ <= 3; ++i__) {
+	for (j = 1; j <= 3; ++j) {
+	    ij = max(i__,j);
+	    ij = ij * (ij - 1) / 2 + min(i__,j);
+	    dcov[0] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 2] * vcov[ij];
+	    dcov[2] += cnv[(i__ << 1) - 1] * cnv[(j << 1) - 1] * vcov[ij];
+	    dcov[1] += cnv[(i__ << 1) - 2] * cnv[(j << 1) - 1] * vcov[ij];
+	}
+    }
+/* --------------------------------------------------------------- */
+    if (IFL == 1) {
+	rcov[0] = errn[0] + dcov[0];
+	rcov[1] = errn[1] + dcov[1];
+	rcov[2] = errn[2] + dcov[2];
+    } else if (IFL == -1) {
+	rcov[0] = errn[0] - dcov[0];
+	rcov[1] = errn[1] - dcov[1];
+	rcov[2] = errn[2] - dcov[2];
+    } else {
+	rcov[0] = errn[0];
+	rcov[1] = errn[1];
+	rcov[2] = errn[2];
+    }
+    int jerr=cfdinv(rcov, dwgt, -2);
+    if (jerr) {jerr=cfdinv(rcov, dwgt, 2);if(jerr){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
+    (*sign) = sqrt(fabs(dwgt[0] * rimp[0] * rimp[0] + dwgt[1] * 2. * rimp[0] * rimp[1] + 
+	    dwgt[2] * rimp[1] * rimp[1]));
+} 
+
+} /* end of namespace */
+
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfNewPm.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfNewPm.cxx
index 5c5a1e68545c5d631d32b56391f274947cee4030..6fc8a6a61acb1dc47174a66305602ad9c9344815 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfNewPm.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfNewPm.cxx
@@ -2,133 +2,134 @@
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
-#include <math.h>
-#include <iostream>
-#include "TrkVKalVrtCore/VKalVrtBMag.h"
-#include "TrkVKalVrtCore/Propagator.h"
-
-namespace Trk {
-
-extern vkalPropagator  myPropagator;
-extern VKalVrtBMag vkalvrtbmag;
-extern vkalMagFld  myMagFld;
-
-
-extern double d_sign(double, double);
-extern void cfnewp(long int *, double *, double *, double *, double *, double *);
-extern void vkgrkuta_(double *, double *, double *, double *);
-
-
-void cfnewpm(double *par, double *xyzStart, double *xyzEnd, double *ustep, double *parn, double *closePoint)
-{
-    double d__1, d__2,dist_left;
-    double vect[7], stmg, vout[7], dpar0[5];
-    double p, perig[3], dstep, constB, xyzst[3], charge, fx, fy, fz, pt, px, py, pz;
-    double posold, poscur, totway, dp;
-    double dX, dY, dZ;
-    long int ich;
-
-/* --------------------------------------------------------- */
-/*  The same as CFNEWP but for the case on nonuniform        */
-/*   magnetic field                                          */
-/*                                                           */
-/*  Propagation from xyzStart reference point to xyzEnd point*/
-/*     PAR  - perigee parameters wrt xyzStart                */
-/*     PARN - perigee parameters wrt xyzEnd                  */
-/*  Author: V.Kostyukhin                                     */
-/* --------------------------------------------------------- */
-    /* Parameter adjustments */
-    --par;
-
-    d__1 = tan(par[3]);
-    totway = (*ustep) * sqrt(1. / (d__1 * d__1) + 1.);
-
-    if (fabs(*ustep) < 10. && fabs(totway) < 20.)  return;   // Distance(mm) is small. Simplest propagation is used
-
-    stmg = 40.;  //Propagation step in mm for nonuniform field
-
-    vect[0] =  sin(par[4]) * par[1]   +xyzStart[0];
-    vect[1] = -cos(par[4]) * par[1]   +xyzStart[1];
-    vect[2] = par[2]                  +xyzStart[2];
-
-    myMagFld.getMagFld( vect[0],vect[1],vect[2],fx,fy,fz);
-    constB = fz * myMagFld.getCnvCst();
-
-    pt = constB / fabs(par[5]);
-    px = pt * cos(par[4]);
-    py = pt * sin(par[4]);
-    pz = pt / tan(par[3]);
-    p = sqrt(pt * pt + pz * pz);
-
-    vect[3] = px / p;
-    vect[4] = py / p;
-    vect[5] = pz / p;
-    vect[6] = p;
-    charge = -d_sign( 1., par[5]);
-    poscur = 0.;
-//std::cout <<"VkGrkuta vect="<<vect[0]<<", "<<vect[1]<<", "<<vect[2]<<", "<<vect[3]<<", "
-//                            <<vect[4]<<", "<<vect[5]<<", "<<vect[6]<<'\n';
-    while(fabs(poscur) < fabs(totway)) {
-	posold = poscur;
-	d__1 = fabs(poscur) + stmg;
-        d__2 = fabs(totway);
-	poscur = d__1 < d__2 ? d__1 : d__2;
-	poscur = d_sign(poscur, totway);
-	dstep = poscur - posold;
-	vkgrkuta_(&charge, &dstep, vect, vout);
-	vect[0] = vout[0];
-	vect[1] = vout[1];
-	vect[2] = vout[2];
-	vect[3] = vout[3];
-	vect[4] = vout[4];
-	vect[5] = vout[5];
-// safety for strongly nonuniform field
-	dX = vect[0]-xyzEnd[0];
-	dY = vect[1]-xyzEnd[1];
-	dZ = vect[2]-xyzEnd[2];
-	dist_left = sqrt( dX*dX + dY*dY + dZ*dZ);
-	if(dist_left < stmg) break;    // arrived
-    }
-
-/* --- Now we are in the new point. Calculate track parameters */
-/*   at new point with new mag.field */
-
-    myMagFld.getMagFld( xyzEnd[0],xyzEnd[1],xyzEnd[2],fx,fy,fz);
-    //myMagFld.getMagFld( vect[0], vect[1], vect[2], fx, fy, fz);
-    constB = fz * myMagFld.getCnvCst();
-
-    dpar0[0] = 0.;
-    dpar0[1] = 0.;
-    dpar0[2] = acos(vout[5]);
-    dpar0[3] = atan2(vout[4], vout[3]);
-//    if (dpar0[3] < 0.) dpar0[3] += 6.2831853071794;
-
-    px = vect[3] * vect[6];
-    py = vect[4] * vect[6];
-    dpar0[4] = d_sign(  (constB/sqrt(px*px+py*py)), par[5]);    /* new value of curvature */
-    ich = (long int) charge;
-    xyzst[0] = xyzEnd[0] - vout[0];
-    xyzst[1] = xyzEnd[1] - vout[1];
-    xyzst[2] = xyzEnd[2] - vout[2];
-
-    cfnewp(&ich, dpar0, xyzst, &dp, parn, perig); // Last step of propagation 
-    closePoint[0] = perig[0] + vout[0];                  // with simple program
-    closePoint[1] = perig[1] + vout[1];
-    closePoint[2] = perig[2] + vout[2];
-
-//std::cout <<" Exit from cfNewPm="<<dp<<'\n';
-//std::cout <<parn[0]<<'\n';
-//   if(parn[0] == 0.) {
-//std::cout <<dp<<", "<<(*ustep)<<'\n';
-//       for (int jj=0; jj<6;jj++) std::cout <<" vout="<<vout[jj]<<'\n';
-//       for (int jj=0; jj<3;jj++) std::cout <<" xyzst="<<xyzst[jj]<<'\n';
-//       for (int jj=0; jj<5;jj++) std::cout <<" dpar0="<<dpar0[jj]<<'\n';
-//       for (int jj=0; jj<5;jj++) std::cout <<" parn="<<parn[jj]<<'\n';
-//   }
-    return;
-} 
-
-
-
-
-} /* End of namespace */
+#include <math.h>
+#include <iostream>
+#include "TrkVKalVrtCore/VKalVrtBMag.h"
+#include "TrkVKalVrtCore/Propagator.h"
+
+namespace Trk {
+
+extern vkalPropagator  myPropagator;
+extern VKalVrtBMag vkalvrtbmag;
+extern vkalMagFld  myMagFld;
+
+
+extern double d_sign(double, double);
+extern void cfnewp(long int *, double *, double *, double *, double *, double *);
+extern void vkgrkuta_(double *, double *, double *, double *);
+
+
+void cfnewpm(double *par, double *xyzStart, double *xyzEnd, double *ustep, double *parn, double *closePoint)
+{
+    double d__1, d__2,dist_left;
+    double vect[7], stmg, dpar0[5];
+    double vout[7]={0.};
+    double p, perig[3], dstep, constB, xyzst[3], charge, fx, fy, fz, pt, px, py, pz;
+    double posold, poscur, totway, dp;
+    double dX, dY, dZ;
+    long int ich;
+
+/* --------------------------------------------------------- */
+/*  The same as CFNEWP but for the case on nonuniform        */
+/*   magnetic field                                          */
+/*                                                           */
+/*  Propagation from xyzStart reference point to xyzEnd point*/
+/*     PAR  - perigee parameters wrt xyzStart                */
+/*     PARN - perigee parameters wrt xyzEnd                  */
+/*  Author: V.Kostyukhin                                     */
+/* --------------------------------------------------------- */
+    /* Parameter adjustments */
+    --par;
+
+    d__1 = tan(par[3]);
+    totway = (*ustep) * sqrt(1. / (d__1 * d__1) + 1.);
+
+    if (fabs(*ustep) < 10. && fabs(totway) < 20.)  return;   // Distance(mm) is small. Simplest propagation is used
+
+    stmg = 40.;  //Propagation step in mm for nonuniform field
+
+    vect[0] =  sin(par[4]) * par[1]   +xyzStart[0];
+    vect[1] = -cos(par[4]) * par[1]   +xyzStart[1];
+    vect[2] = par[2]                  +xyzStart[2];
+
+    myMagFld.getMagFld( vect[0],vect[1],vect[2],fx,fy,fz);
+    constB = fz * myMagFld.getCnvCst();
+
+    pt = constB / fabs(par[5]);
+    px = pt * cos(par[4]);
+    py = pt * sin(par[4]);
+    pz = pt / tan(par[3]);
+    p = sqrt(pt * pt + pz * pz);
+
+    vect[3] = px / p;
+    vect[4] = py / p;
+    vect[5] = pz / p;
+    vect[6] = p;
+    charge = -d_sign( 1., par[5]);
+    poscur = 0.;
+//std::cout <<"VkGrkuta vect="<<vect[0]<<", "<<vect[1]<<", "<<vect[2]<<", "<<vect[3]<<", "
+//                            <<vect[4]<<", "<<vect[5]<<", "<<vect[6]<<'\n';
+    while(fabs(poscur) < fabs(totway)) {
+	posold = poscur;
+	d__1 = fabs(poscur) + stmg;
+        d__2 = fabs(totway);
+	poscur = d__1 < d__2 ? d__1 : d__2;
+	poscur = d_sign(poscur, totway);
+	dstep = poscur - posold;
+	vkgrkuta_(&charge, &dstep, vect, vout);
+	vect[0] = vout[0];
+	vect[1] = vout[1];
+	vect[2] = vout[2];
+	vect[3] = vout[3];
+	vect[4] = vout[4];
+	vect[5] = vout[5];
+// safety for strongly nonuniform field
+	dX = vect[0]-xyzEnd[0];
+	dY = vect[1]-xyzEnd[1];
+	dZ = vect[2]-xyzEnd[2];
+	dist_left = sqrt( dX*dX + dY*dY + dZ*dZ);
+	if(dist_left < stmg) break;    // arrived
+    }
+
+/* --- Now we are in the new point. Calculate track parameters */
+/*   at new point with new mag.field */
+
+    myMagFld.getMagFld( xyzEnd[0],xyzEnd[1],xyzEnd[2],fx,fy,fz);
+    //myMagFld.getMagFld( vect[0], vect[1], vect[2], fx, fy, fz);
+    constB = fz * myMagFld.getCnvCst();
+
+    dpar0[0] = 0.;
+    dpar0[1] = 0.;
+    dpar0[2] = acos(vout[5]);
+    dpar0[3] = atan2(vout[4], vout[3]);
+//    if (dpar0[3] < 0.) dpar0[3] += 6.2831853071794;
+
+    px = vect[3] * vect[6];
+    py = vect[4] * vect[6];
+    dpar0[4] = d_sign(  (constB/sqrt(px*px+py*py)), par[5]);    /* new value of curvature */
+    ich = (long int) charge;
+    xyzst[0] = xyzEnd[0] - vout[0];
+    xyzst[1] = xyzEnd[1] - vout[1];
+    xyzst[2] = xyzEnd[2] - vout[2];
+
+    cfnewp(&ich, dpar0, xyzst, &dp, parn, perig); // Last step of propagation 
+    closePoint[0] = perig[0] + vout[0];                  // with simple program
+    closePoint[1] = perig[1] + vout[1];
+    closePoint[2] = perig[2] + vout[2];
+
+//std::cout <<" Exit from cfNewPm="<<dp<<'\n';
+//std::cout <<parn[0]<<'\n';
+//   if(parn[0] == 0.) {
+//std::cout <<dp<<", "<<(*ustep)<<'\n';
+//       for (int jj=0; jj<6;jj++) std::cout <<" vout="<<vout[jj]<<'\n';
+//       for (int jj=0; jj<3;jj++) std::cout <<" xyzst="<<xyzst[jj]<<'\n';
+//       for (int jj=0; jj<5;jj++) std::cout <<" dpar0="<<dpar0[jj]<<'\n';
+//       for (int jj=0; jj<5;jj++) std::cout <<" parn="<<parn[jj]<<'\n';
+//   }
+    return;
+} 
+
+
+
+
+} /* End of namespace */
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfTotCov.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfTotCov.cxx
index 593ff0bfd69b2217aad2397515f8ef7171678492..3ce736aaba70e7c42a6817eb1e2c65ac518fef84 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfTotCov.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfTotCov.cxx
@@ -39,7 +39,7 @@ int afterFit(VKVertex *vk, double *ader, double * dcv, double * ptot, double * V
     for (i=1; i<=6; ++i) {
 	for (j=1; j<=NVar  ; ++j) dcv[i + j*6 - 7] = 0.;
     }
-    cfsetdiag( 6, VrtMomCov, 10.);
+    cfsetdiag( 6, VrtMomCov, 100.);
     ptot[0] = 0.;
     ptot[1] = 0.;
     ptot[2] = 0.;
@@ -66,6 +66,7 @@ int afterFit(VKVertex *vk, double *ader, double * dcv, double * ptot, double * V
     dcv[0]  = 1.;
     dcv[7]  = 1.;
     dcv[14] = 1.;
+    if(!ader)return 0;
     int IERR=getFullVrtCov(vk, ader, dcv, verr);     if (IERR) return IERR;
     int ijk = 0;
     for ( i=1; i<=6; ++i) {
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfVrtDst.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfVrtDst.cxx
index f62c75105551205ca47b8ce319e62c2c729097c0..78009a360b1a09e27fffe4afc40b8e0f5006dd04 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfVrtDst.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/cfVrtDst.cxx
@@ -32,7 +32,7 @@ extern vkalPropagator  myPropagator;
 //--------------------------------------------------------------------------------------------------
 double cfVrtDstSig( VKVertex * vk, bool UseTrkErr)
 {
-    long int it,IERR; int i,j,ij;
+    int i,j,ij,it;
     double parV0[5], covParV0[15];
     double Signif;
 
@@ -96,7 +96,7 @@ double cfVrtDstSig( VKVertex * vk, bool UseTrkErr)
     if ( UseTrkErr){ covImp[0] += nCov[0]; covImp[1] += nCov[1]; covImp[2] += nCov[2];}
 
     double dwgt[3];
-    IERR=cfdinv(covImp, dwgt, -2); if(IERR){ IERR=cfdinv(covImp, dwgt, 2); if(IERR){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.; IERR=0; }}
+    int IERR=cfdinv(covImp, dwgt, -2); if(IERR){ IERR=cfdinv(covImp, dwgt, 2); if(IERR){dwgt[0]=dwgt[2]=1.e6; dwgt[1]=0.;}}
     Signif = sqrt(dwgt[0] * nPar[0] * nPar[0] +  2. * dwgt[1] * nPar[0] * nPar[1] + 
                   dwgt[2] * nPar[1] * nPar[1]);
  
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/CMakeLists.txt b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/CMakeLists.txt
index 6711f985fe0dcfbb51d0029962208275524ce895..481fa8b256a48b51a971636bf39c7fbda9dfe1dd 100644
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/CMakeLists.txt
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/CMakeLists.txt
@@ -25,7 +25,7 @@ atlas_depends_on_subdirs( PUBLIC
                           #Tracking/TrkEvent/VxVertex
 
 # External dependencies:
-find_package( CLHEP )
+#find_package( CLHEP )
 find_package( Eigen )
 
 # Component(s) in the package:
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/ITrkVKalVrtFitter.h b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/ITrkVKalVrtFitter.h
index 33c7a25f3b2730a7c215b9d88e0fd5b5fbaf47ec..097eec118c34ef50426f730eea6bc49fcb8035d4 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/ITrkVKalVrtFitter.h
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/ITrkVKalVrtFitter.h
@@ -113,7 +113,7 @@ namespace Trk{
       virtual void setVertexForConstraint(double,double,double)=0;
       virtual void setCovVrtForConstraint(double,double,double,
                                           double,double,double)=0;
-      virtual void setMassInputParticles( std::vector<double>& )=0;
+      virtual void setMassInputParticles( const std::vector<double>& )=0;
       virtual void setDefault() =0;
       virtual void setZeroCharge(int)=0;
 //
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/TrkVKalVrtFitter.h b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/TrkVKalVrtFitter.h
index 605cd73b00416e6959cf3ad24ee1bb8c5d19cee1..4462cd5ebe29ab5d7d25678f921bc28ff33ae258 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/TrkVKalVrtFitter.h
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/TrkVKalVrtFitter.h
@@ -33,7 +33,7 @@ class IMagFieldAthenaSvc;
 
 namespace Trk{
 
-  static const int m_NTrMaxVFit=300;
+  static const int NTrMaxVFit=300;
   typedef std::vector<double> dvect;
   class VKalAtlasMagFld;
   class IExtrapolator;
@@ -225,7 +225,7 @@ namespace Trk{
         void setCovVrtForConstraint(double,double,double,
                                   double,double,double);
 				  
-        void setMassInputParticles( std::vector<double>& );
+        void setMassInputParticles( const std::vector<double>& );
         void setMomCovCalc(int);
         void setDefault();
         void setZeroCharge(int);
@@ -279,8 +279,8 @@ namespace Trk{
       SimpleProperty<bool>   m_firstMeasuredPointLimit;
       SimpleProperty<bool>   m_makeExtendedVertex;
 
-      bool isAtlasField;
-      bool isFieldInitialized;
+      bool m_isAtlasField;
+      bool m_isFieldInitialized;
 
       bool m_useAprioriVertex ;
       bool m_useThetaCnst;
@@ -347,13 +347,13 @@ namespace Trk{
 //
 // Arrays needed for fitting kernel
 //
-      double m_par0[m_NTrMaxVFit][3];   //used only for fit preparation
-      double m_apar[m_NTrMaxVFit][5];   //used only for fit preparation
-      double m_awgt[m_NTrMaxVFit][15];  //used only for fit preparation
-      long int m_ich[m_NTrMaxVFit];
-      double m_chi2tr[m_NTrMaxVFit];
-      double m_parfs[m_NTrMaxVFit][3];
-      double m_wm[m_NTrMaxVFit];
+      double m_par0[NTrMaxVFit][3];   //used only for fit preparation
+      double m_apar[NTrMaxVFit][5];   //used only for fit preparation
+      double m_awgt[NTrMaxVFit][15];  //used only for fit preparation
+      long int m_ich[NTrMaxVFit];
+      double m_chi2tr[NTrMaxVFit];
+      double m_parfs[NTrMaxVFit][3];
+      double m_wm[NTrMaxVFit];
       double m_VrtCst[3];
       double m_CovVrtCst[6];
 
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/VKalVrtAtlas.h b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/VKalVrtAtlas.h
index 9f9423c105f449f06c6789a0c6a8804b41295046..f5a0768273d42e8dcab9cc1ac6cdbbda7e4f9852 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/VKalVrtAtlas.h
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/TrkVKalVrtFitter/VKalVrtAtlas.h
@@ -37,11 +37,11 @@ namespace Trk{
     
        MagField::IMagFieldSvc*  m_VKalAthenaField;
        double m_FIXED_ATLAS_FIELD;
-       const double mm;
+       const double m_mm;
        double m_magFrameX, m_magFrameY, m_magFrameZ ;
        double m_saveXpos, m_saveYpos, m_saveZpos;
        double m_saveBX, m_saveBY, m_saveBZ;   
-       Amg::Vector3D Point;
+       Amg::Vector3D m_Point;
        
 
    };
@@ -85,7 +85,7 @@ class StraightLineSurface;
     private:
     
         const IExtrapolator     *m_extrapolator;       //!< Pointer to Extrapolator AlgTool
-        TrkVKalVrtFitter            *vkalFitSvc;        //!< Pointer to TrkVKalVrtFitter
+        TrkVKalVrtFitter            *m_vkalFitSvc;        //!< Pointer to TrkVKalVrtFitter
 
         double Protection(double *) const;
 
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtParametersBase.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtParametersBase.cxx
index 43a706779a981a4a4e53302bc1123c5f51e47539..0e9adb4ad4e460eb18507b227ff6b8a0e0a8f6d6 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtParametersBase.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtParametersBase.cxx
@@ -34,11 +34,11 @@ namespace Trk {
     std::vector<const TrackParameters*>::const_iterator   i_pbase;
     AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0.;
     Amg::Vector3D perGlobalPos,perGlobalVrt;
-    const Trk::Perigee* m_mPer=0;
-    const Trk::AtaStraightLine* m_Line=0; 
+    const Trk::Perigee* mPer=0;
+    const Trk::AtaStraightLine* Line=0; 
     double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,fz,m_BMAG_FIXED;
+    double fx,fy,fz,BMAG_FIXED;
     double rxyMin=1000000.;
 
 //
@@ -49,8 +49,8 @@ namespace Trk {
      m_fitField->setAtlasMagRefFrame( 0., 0., 0.);
 
      if( m_InDetExtrapolator == 0 && m_PropagatorType != 3 ){
-       //log << MSG::WARNING  << "No InDet extrapolator given. Can't use TrackParameters!!!" << endreq;
-       if(msgLvl(MSG::WARNING))msg()<< "No InDet extrapolator given. Can't use TrackParameters!!!" << endreq;
+       //log << MSG::WARNING  << "No InDet extrapolator given. Can't use TrackParameters!!!" << endmsg;
+       if(msgLvl(MSG::WARNING))msg()<< "No InDet extrapolator given. Can't use TrackParameters!!!" << endmsg;
        return StatusCode::FAILURE;        
      }
 //
@@ -101,38 +101,38 @@ namespace Trk {
        if( trkparO ){
          const Trk::TrackParameters* trkparN = m_fitPropagator->myExtrapWithMatUpdate( ntrk, trkparO, &m_refGVertex );
          if(trkparN == 0) return StatusCode::FAILURE;
-         m_mPer = dynamic_cast<const Trk::Perigee*>(trkparN); 
-         if( m_mPer == 0) {   delete trkparN;  return StatusCode::FAILURE; }
-         VectPerig    =  m_mPer->parameters(); 
-         perGlobalPos =  m_mPer->position();    //Global position of perigee point
-         //perGlobalVrt =  m_mPer->vertex();      //Global position of reference point
-         perGlobalVrt =  m_mPer->associatedSurface().center();      //Global position of reference point
-         if( !convertAmg5SymMtx(m_mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
+         mPer = dynamic_cast<const Trk::Perigee*>(trkparN); 
+         if( mPer == 0) {   delete trkparN;  return StatusCode::FAILURE; }
+         VectPerig    =  mPer->parameters(); 
+         perGlobalPos =  mPer->position();    //Global position of perigee point
+         //perGlobalVrt =  mPer->vertex();      //Global position of reference point
+         perGlobalVrt =  mPer->associatedSurface().center();      //Global position of reference point
+         if( !convertAmg5SymMtx(mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
          delete trkparN;
       }
 // std::cout<<" Tr="<<ntrk<<" GlobPosTrn="<<perGlobalPos.x()<<", "<<perGlobalPos.y()<<", "<<perGlobalPos.z()<<'\n';
 // std::cout<<" Common Ref. point="<<perGlobalVrt.x()<<", "<<perGlobalVrt.y()<<", "<<perGlobalVrt.z()<<'\n';
        m_refFrameX=m_refFrameY=m_refFrameZ=0.; m_fitField->setAtlasMagRefFrame( 0., 0., 0.);  //restore ATLAS frame for safety
        m_fitField->getMagFld(  perGlobalPos.x(), perGlobalPos.y(), perGlobalPos.z(),  // Magnetic field
-                               fx, fy, m_BMAG_FIXED);                                 // at perigee point
-       if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                               fx, fy, BMAG_FIXED);                                 // at perigee point
+       if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
      }else{                   // For rotation case only!!!
        if( trkparO ){
          const Trk::TrackParameters* trkparN = m_fitPropagator->myExtrapToLine((long int)counter, trkparO, &m_refGVertex, lineTarget);
          if(trkparN == 0) return StatusCode::FAILURE;
-         m_Line = dynamic_cast<const Trk::AtaStraightLine*>(trkparN); 
-         if( m_Line == 0) {   delete trkparN;  return StatusCode::FAILURE; }
-         VectPerig    =  m_Line->parameters(); 
-         perGlobalPos =  m_Line->position();    //Global position of perigee point
-         Amg::Vector3D perMomentum(m_Line->momentum().x(),m_Line->momentum().y(),m_Line->momentum().z());
+         Line = dynamic_cast<const Trk::AtaStraightLine*>(trkparN); 
+         if( Line == 0) {   delete trkparN;  return StatusCode::FAILURE; }
+         VectPerig    =  Line->parameters(); 
+         perGlobalPos =  Line->position();    //Global position of perigee point
+         Amg::Vector3D perMomentum(Line->momentum().x(),Line->momentum().y(),Line->momentum().z());
          Amg::Vector3D rotatedMomentum=magFldRot*perMomentum;
 //         VectPerig[2] += atan2(rotatedMomentum.y(),rotatedMomentum.x());  //VK wrong 27.09.10
          VectPerig[2] = atan2(rotatedMomentum.y(),rotatedMomentum.x());
          VectPerig[3] = atan2(rotatedMomentum.perp(),rotatedMomentum.z());
-         if( !convertAmg5SymMtx(m_Line->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
+         if( !convertAmg5SymMtx(Line->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
          delete trkparN;
-         m_BMAG_FIXED=sqrt(fx*fx+fy*fy+fz*fz);
-         m_fitRotatedField->setAtlasMag(m_BMAG_FIXED);  //set fixed ROTATED field in corresponding VKal oblect
+         BMAG_FIXED=sqrt(fx*fx+fy*fy+fz*fz);
+         m_fitRotatedField->setAtlasMag(BMAG_FIXED);  //set fixed ROTATED field in corresponding VKal oblect
        }else{  return StatusCode::FAILURE;   }
        m_trkControl[counter].trkRotation=magFldRot;
        m_trkControl[counter].trkRotationVertex=   Amg::Vector3D( m_refGVertex.x(), m_refGVertex.y(), m_refGVertex.z());
@@ -140,7 +140,7 @@ namespace Trk {
      }
        counter++;
 //std::cout<<"TESTVK="<<'\n'; std::cout.precision(16); for(int ik=0; ik<15; ik++)std::cout<<CovVertTrk[ik]<<'\n';
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
+       VKalTransform( BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
               (double)VectPerig[2], (double)VectPerig[3], (double)VectPerig[4], CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        if( trkparO==0 ) {                                              //neutral track
@@ -151,7 +151,7 @@ namespace Trk {
                                 m_awgt[ntrk][12] = -m_awgt[ntrk][12];
                                 m_awgt[ntrk][13] = -m_awgt[ntrk][13]; }
        }
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
@@ -170,10 +170,10 @@ namespace Trk {
     std::vector<const NeutralParameters*>::const_iterator   i_pbase;
     AmgVector(5) VectPerig;
     Amg::Vector3D perGlobalPos,perGlobalVrt;
-    const NeutralPerigee* m_mPerN=0;
+    const NeutralPerigee* mPerN=0;
     double CovVertTrk[15];
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,fz,m_BMAG_FIXED;
+    double fx,fy,fz,BMAG_FIXED;
     double rxyMin=1000000.;
 
 //
@@ -184,8 +184,8 @@ namespace Trk {
     m_fitField->setAtlasMagRefFrame( 0., 0., 0.);
 
     if( m_InDetExtrapolator == 0 && m_PropagatorType != 3 ){
-       //log << MSG::WARNING  << "No InDet extrapolator given. Can't use TrackParameters!!!" << endreq;
-       if(msgLvl(MSG::WARNING))msg()<< "No InDet extrapolator given. Can't use TrackParameters!!!" << endreq;
+       //log << MSG::WARNING  << "No InDet extrapolator given. Can't use TrackParameters!!!" << endmsg;
+       if(msgLvl(MSG::WARNING))msg()<< "No InDet extrapolator given. Can't use TrackParameters!!!" << endmsg;
        return StatusCode::FAILURE;        
     }
 //
@@ -233,18 +233,18 @@ namespace Trk {
          const Trk::NeutralParameters* neuparO = (*i_pbase);
          if(neuparO == 0) return StatusCode::FAILURE;
          const Trk::NeutralParameters* neuparN = m_fitPropagator->myExtrapNeutral( neuparO, &m_refGVertex );
-         m_mPerN = dynamic_cast<const Trk::NeutralPerigee*>(neuparN); 
-         if( m_mPerN == 0) {   delete neuparN;  return StatusCode::FAILURE; }
-         VectPerig    =  m_mPerN->parameters(); 
-         perGlobalPos =  m_mPerN->position();    //Global position of perigee point
-         //perGlobalVrt =  m_mPerN->vertex();      //Global position of reference point
-         perGlobalVrt =  m_mPerN->associatedSurface().center();      //Global position of reference point
-         if( !convertAmg5SymMtx(m_mPerN->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
+         mPerN = dynamic_cast<const Trk::NeutralPerigee*>(neuparN); 
+         if( mPerN == 0) {   delete neuparN;  return StatusCode::FAILURE; }
+         VectPerig    =  mPerN->parameters(); 
+         perGlobalPos =  mPerN->position();    //Global position of perigee point
+         //perGlobalVrt =  mPerN->vertex();      //Global position of reference point
+         perGlobalVrt =  mPerN->associatedSurface().center();      //Global position of reference point
+         if( !convertAmg5SymMtx(mPerN->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
          delete neuparN;
          m_refFrameX=m_refFrameY=m_refFrameZ=0.; m_fitField->setAtlasMagRefFrame( 0., 0., 0.);  //restore ATLAS frame for safety
          m_fitField->getMagFld(  perGlobalPos.x(), perGlobalPos.y(), perGlobalPos.z(),  // Magnetic field
-                               fx, fy, m_BMAG_FIXED);                                 // at perigee point
-         if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                               fx, fy, BMAG_FIXED);                                 // at perigee point
+         if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
        }else{                   // For rotation case only!!!
          return StatusCode::FAILURE; 
        }
@@ -252,7 +252,7 @@ namespace Trk {
 
 //std::cout<<" BaseEMtx="<<CovMtx.fast(1,1)<<", "<<CovMtx.fast(2,2)<<", "<<CovMtx.fast(3,3)<<", "
 //                       <<CovMtx.fast(4,4)<<", "<<CovMtx.fast(5,5)<<'\n';
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
+       VKalTransform( BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
               (double)VectPerig[2], (double)VectPerig[3], (double)VectPerig[4], CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        m_ich[ntrk]=0; 
@@ -261,7 +261,7 @@ namespace Trk {
                               m_awgt[ntrk][11] = -m_awgt[ntrk][11];
                               m_awgt[ntrk][12] = -m_awgt[ntrk][12];
                               m_awgt[ntrk][13] = -m_awgt[ntrk][13]; }
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrackParticle.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrackParticle.cxx
index 70cdde2ff5819489ed2bc5565ae7f1ed028a5b8b..43dc820ac8b8eb2f59f306a5dde038c31b5f5cda 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrackParticle.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrackParticle.cxx
@@ -30,10 +30,10 @@ namespace Trk {
 
     std::vector<const xAOD::TrackParticle*>::const_iterator   i_ntrk;
     AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0.;
-    const Trk::Perigee*        m_mPer=0;
+    const Trk::Perigee*        mPer=0;
     double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,m_BMAG_FIXED;
+    double fx,fy,BMAG_FIXED;
 //
 // ----- Set reference frame to (0.,0.,0.) == ATLAS frame
 // ----- Magnetic field is taken in reference point
@@ -48,9 +48,9 @@ namespace Trk {
      m_trkControl.clear(); m_trkControl.reserve(InpTrk.size());
      for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
 //-- (Measured)Perigee in xAOD::TrackParticle
-       m_mPer = &(*i_ntrk)->perigeeParameters(); 
-       if( m_mPer==0 ) continue; // No perigee!!!
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
+       mPer = &(*i_ntrk)->perigeeParameters(); 
+       if( mPer==0 ) continue; // No perigee!!!
+       perGlobalPos =  mPer->position();    //Global position of perigee point
        if(fabs(perGlobalPos.z())   > m_IDsizeZ)return StatusCode::FAILURE;   // Crazy user protection
        if(     perGlobalPos.perp() > m_IDsizeR)return StatusCode::FAILURE;
        tmp_refFrameX += perGlobalPos.x() ;	// Reference system calculation
@@ -61,7 +61,7 @@ namespace Trk {
        tmpMat.trkRotation = Amg::RotationMatrix3D::Identity();
        tmpMat.rotateToField=false; if(m_useMagFieldRotation)tmpMat.rotateToField=true;
        tmpMat.extrapolationType=2;                   // Perigee point strategy
-       tmpMat.TrkPnt=m_mPer; 
+       tmpMat.TrkPnt=mPer; 
        tmpMat.prtMass = 139.5702;
        if(counter<(int)m_MassInputParticles.size())tmpMat.prtMass = m_MassInputParticles[counter];
        tmpMat.TrkID=counter; m_trkControl.push_back(tmpMat);
@@ -87,25 +87,25 @@ namespace Trk {
 //
 //-- (Measured)Perigee in TrackParticle
 //
-       m_mPer = &(*i_ntrk)->perigeeParameters(); 
-       if( m_mPer==0 ) continue; // No perigee!!!
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
-       if( !convertAmg5SymMtx(m_mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
+       mPer = &(*i_ntrk)->perigeeParameters(); 
+       if( mPer==0 ) continue; // No perigee!!!
+       perGlobalPos =  mPer->position();    //Global position of perigee point
+       if( !convertAmg5SymMtx(mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
        m_fitField->getMagFld( perGlobalPos.x(), perGlobalPos.y(), perGlobalPos.z(),           // Magnetic field
-                                                                  fx, fy, m_BMAG_FIXED);      // at the track perigee point
-       if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                                                                  fx, fy, BMAG_FIXED);      // at the track perigee point
+       if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
 //
 //--- Get rid of beamline rotation and move ref. frame to the track common point m_refGVertex
 //    Small beamline inclination doesn't change track covariance matrix 
-       AmgSymMatrix(5) * tmpCov = new AmgSymMatrix(5)(*(m_mPer->covariance()));
-       const Perigee * tmpPer=surfGRefPoint.createTrackParameters(m_mPer->position(),m_mPer->momentum(),m_mPer->charge(),tmpCov);
+       AmgSymMatrix(5) * tmpCov = new AmgSymMatrix(5)(*(mPer->covariance()));
+       const Perigee * tmpPer=surfGRefPoint.createTrackParameters(mPer->position(),mPer->momentum(),mPer->charge(),tmpCov);
        VectPerig    =  tmpPer->parameters(); 
 //std::cout.precision(12);
 //std::cout<<"beamtilt="<<(*i_ntrk)->beamlineTiltX()<<", "<<(*i_ntrk)->beamlineTiltY()<<'\n';
-//std::cout<<" Def per==>"<<(*m_mPer)<<'\n';
-//std::cout<<" Def srf==>"<<m_mPer->associatedSurface()<<'\n';
-//std::cout<<" Def rot==>"<<m_mPer->associatedSurface().transform().rotation()<<'\n';
-//std::cout<<" Def trn==>"<<m_mPer->associatedSurface().transform().translation()<<'\n';
+//std::cout<<" Def per==>"<<(*mPer)<<'\n';
+//std::cout<<" Def srf==>"<<mPer->associatedSurface()<<'\n';
+//std::cout<<" Def rot==>"<<mPer->associatedSurface().transform().rotation()<<'\n';
+//std::cout<<" Def trn==>"<<mPer->associatedSurface().transform().translation()<<'\n';
 //std::cout<<" New per==>"<<(*tmpPer)<<'\n';
 //std::cout<<" New per==>"<<tmpPer->momentum()<<'\n';
 //std::cout<<" New srf==>"<<tmpPer->associatedSurface()<<'\n';
@@ -113,12 +113,12 @@ namespace Trk {
 //std::cout<<" New trn==>"<<tmpPer->associatedSurface().transform().translation()<<'\n';
 //
 //--- Transform to internal parametrisation
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
+       VKalTransform( BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
               (double)VectPerig[2], (double)VectPerig[3], (double)VectPerig[4], CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        delete tmpPer; //tmpCov matrix is deleted here!!!
 //
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
@@ -138,10 +138,10 @@ namespace Trk {
 
     std::vector<const xAOD::NeutralParticle*>::const_iterator   i_ntrk;
     AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0.;
-    const  NeutralPerigee*        m_mPer=0;
+    const  NeutralPerigee*        mPer=0;
     double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,m_BMAG_FIXED;
+    double fx,fy,BMAG_FIXED;
 //
 // ----- Set reference frame to (0.,0.,0.) == ATLAS frame
 // ----- Magnetic field is taken in reference point
@@ -156,9 +156,9 @@ namespace Trk {
      m_trkControl.clear(); m_trkControl.reserve(InpTrk.size());
      for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
 //-- (Measured)Perigee in xAOD::NeutralParticle
-       m_mPer = &(*i_ntrk)->perigeeParameters(); 
-       if( m_mPer==0 ) continue; // No perigee!!!
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
+       mPer = &(*i_ntrk)->perigeeParameters(); 
+       if( mPer==0 ) continue; // No perigee!!!
+       perGlobalPos =  mPer->position();    //Global position of perigee point
        if(fabs(perGlobalPos.z())   > m_IDsizeZ)return StatusCode::FAILURE;   // Crazy user protection
        if(     perGlobalPos.perp() > m_IDsizeR)return StatusCode::FAILURE;
        tmp_refFrameX += perGlobalPos.x() ;	// Reference system calculation
@@ -194,23 +194,23 @@ namespace Trk {
 //
 //-- (Measured)Perigee in TrackParticle
 //
-       m_mPer = &(*i_ntrk)->perigeeParameters(); 
-       if( m_mPer==0 ) continue; // No perigee!!!
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
-       if( !convertAmg5SymMtx(m_mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
+       mPer = &(*i_ntrk)->perigeeParameters(); 
+       if( mPer==0 ) continue; // No perigee!!!
+       perGlobalPos =  mPer->position();    //Global position of perigee point
+       if( !convertAmg5SymMtx(mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
        m_fitField->getMagFld( perGlobalPos.x(), perGlobalPos.y(), perGlobalPos.z(),           // Magnetic field
-                                                                  fx, fy, m_BMAG_FIXED);      // at track perigee point
-       if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                                                                  fx, fy, BMAG_FIXED);      // at track perigee point
+       if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
 
 //
 //--- Get rid of beamline rotation and move ref. frame to the track common point m_refGVertex
 //    Small beamline inclination doesn't change track covariance matrix 
 //
-       AmgSymMatrix(5) * tmpCov = new AmgSymMatrix(5)(*(m_mPer->covariance()));
-       const Perigee * tmpPer=surfGRefPoint.createTrackParameters(m_mPer->position(),m_mPer->momentum(),m_mPer->charge(),tmpCov);
+       AmgSymMatrix(5) * tmpCov = new AmgSymMatrix(5)(*(mPer->covariance()));
+       const Perigee * tmpPer=surfGRefPoint.createTrackParameters(mPer->position(),mPer->momentum(),mPer->charge(),tmpCov);
        VectPerig    =  tmpPer->parameters(); 
        //--- Transform to internal parametrisation
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
+       VKalTransform( BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
               (double)VectPerig[2], (double)VectPerig[3], (double)VectPerig[4], CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        m_ich[ntrk]=0;
@@ -222,7 +222,7 @@ namespace Trk {
        delete tmpPer; //tmpCov matrix is deleted here!!!
 //
 
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
@@ -245,10 +245,10 @@ namespace Trk {
 
     std::vector<const TrackParticleBase*>::const_iterator   i_ntrk;
     AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0.;
-    const Trk::Perigee*        m_mPer=0;
+    const Trk::Perigee*        mPer=0;
     double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,m_BMAG_FIXED;
+    double fx,fy,BMAG_FIXED;
 //
 // ----- Set reference frame to (0.,0.,0.) == ATLAS frame
 // ----- Magnetic field is taken in reference point
@@ -263,9 +263,9 @@ namespace Trk {
      m_trkControl.clear(); m_trkControl.reserve(InpTrk.size());
      for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
 //-- (Measured)Perigee in TrackParticle
-       m_mPer = GetPerigee(*i_ntrk); 
-       if( m_mPer==0 ) continue; // No perigee!!!
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
+       mPer = GetPerigee(*i_ntrk); 
+       if( mPer==0 ) continue; // No perigee!!!
+       perGlobalPos =  mPer->position();    //Global position of perigee point
        if(fabs(perGlobalPos.z())   > m_IDsizeZ)return StatusCode::FAILURE;   // Crazy user protection
        if(     perGlobalPos.perp() > m_IDsizeR)return StatusCode::FAILURE;
        tmp_refFrameX += perGlobalPos.x() ;	// Reference system calculation
@@ -276,7 +276,7 @@ namespace Trk {
        tmpMat.trkRotation = Amg::RotationMatrix3D::Identity();
        tmpMat.rotateToField=false; if(m_useMagFieldRotation)tmpMat.rotateToField=true;
        tmpMat.extrapolationType=2;                   // Perigee point strategy
-       tmpMat.TrkPnt=m_mPer;
+       tmpMat.TrkPnt=mPer;
        tmpMat.prtMass = 139.5702;
        if(counter<(int)m_MassInputParticles.size())tmpMat.prtMass = m_MassInputParticles[counter];
        tmpMat.TrkID=counter; m_trkControl.push_back(tmpMat);
@@ -299,19 +299,19 @@ namespace Trk {
 //
 //-- (Measured)Perigee in TrackParticle
 //
-       m_mPer = GetPerigee(*i_ntrk);
-       if( m_mPer==0 ) continue; // No perigee!!!
-       VectPerig    =  m_mPer->parameters(); 
-       perGlobalVrt =  m_mPer->associatedSurface().center();      //Global position of reference point
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
-       if( !convertAmg5SymMtx(m_mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
+       mPer = GetPerigee(*i_ntrk);
+       if( mPer==0 ) continue; // No perigee!!!
+       VectPerig    =  mPer->parameters(); 
+       perGlobalVrt =  mPer->associatedSurface().center();      //Global position of reference point
+       perGlobalPos =  mPer->position();    //Global position of perigee point
+       if( !convertAmg5SymMtx(mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!;
        m_refFrameX=m_refFrameY=m_refFrameZ=0.; m_fitField->setAtlasMagRefFrame( 0., 0., 0.);  //restore ATLAS frame
        m_fitField->getMagFld( perGlobalPos.x(), perGlobalPos.y(), perGlobalPos.z(), // Magnetic field
-                              fx, fy, m_BMAG_FIXED);                                // at track perigee point
-       if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                              fx, fy, BMAG_FIXED);                                // at track perigee point
+       if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
 
 
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
+       VKalTransform( BMAG_FIXED, (double)VectPerig[0], (double)VectPerig[1],
               (double)VectPerig[2], (double)VectPerig[3], (double)VectPerig[4], CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
 //std::cout<< "New="<<m_awgt[ntrk][0]<<", "<<m_awgt[ntrk][1]<<", "<<m_awgt[ntrk][2]<<", "<<m_awgt[ntrk][3]<<'\n';
@@ -337,7 +337,7 @@ namespace Trk {
           myPropagator.Propagate(ntrk, Charge, pari, covi, vrtini, vrtend,&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        }
 
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
@@ -356,11 +356,11 @@ namespace Trk {
 
   const Perigee* TrkVKalVrtFitter::GetPerigee( const TrackParticleBase* i_ntrk) 
   {
-       const Perigee* m_mPer = 0;
+       const Perigee* mPer = 0;
        if(   i_ntrk->definingParameters().associatedSurface().type() == Surface::Perigee
           && i_ntrk->definingParameters().covariance() != 0 ) 
-           m_mPer = dynamic_cast<const Perigee*> (&(i_ntrk->definingParameters()));
-       return m_mPer ;
+           mPer = dynamic_cast<const Perigee*> (&(i_ntrk->definingParameters()));
+       return mPer ;
   }
   const TrackParameters* TrkVKalVrtFitter::GetFirstPoint(const Trk::TrackParticleBase* i_ntrk)
   {
@@ -382,10 +382,10 @@ namespace Trk {
 
   const Perigee* TrkVKalVrtFitter::GetPerigee( const TrackParameters* i_ntrk) 
   {
-       const Perigee* m_mPer = 0;
+       const Perigee* mPer = 0;
        if(i_ntrk->associatedSurface().type()==Surface::Perigee && i_ntrk->covariance()!= 0 ) 
-            m_mPer = dynamic_cast<const Perigee*> (i_ntrk);
-       return m_mPer;
+            mPer = dynamic_cast<const Perigee*> (i_ntrk);
+       return mPer;
   }
 
 
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrkTrack.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrkTrack.cxx
index 0cd3ab9f1b5acfbb3eebb4feab3b16532f21f0d2..cf93dd38595a1f2a88520c00968da963343b6cda 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrkTrack.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/CvtTrkTrack.cxx
@@ -33,10 +33,10 @@ namespace Trk{
 
     std::vector<const Track*>::const_iterator   i_ntrk;
     AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0;
-    const  Perigee* m_mPer;
+    const  Perigee* mPer;
     double CovVertTrk[15]; std::fill(CovVertTrk,CovVertTrk+15,0.);
     double tmp_refFrameX=0, tmp_refFrameY=0, tmp_refFrameZ=0;
-    double fx,fy,m_BMAG_FIXED;
+    double fx,fy,BMAG_FIXED;
 //
 // ----- Set reference frame to (0.,0.,0.) == ATLAS frame
 // ----- Magnetic field is taken in reference point
@@ -50,16 +50,16 @@ namespace Trk{
     Amg::Vector3D perGlobalVrt,perGlobalPos;
     m_trkControl.clear();
     for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
-       m_mPer = (*i_ntrk)->perigeeParameters(); if( m_mPer == 0 ){ continue; } 
-       perGlobalPos =  m_mPer->position(); //Global position of perigee point
+       mPer = (*i_ntrk)->perigeeParameters(); if( mPer == 0 ){ continue; } 
+       perGlobalPos =  mPer->position(); //Global position of perigee point
        if(fabs(perGlobalPos.z())   > m_IDsizeZ)return StatusCode::FAILURE;   // Crazy user protection
        if(     perGlobalPos.perp() > m_IDsizeR)return StatusCode::FAILURE;
 //       tmp_refFrameX += perGlobalPos.x()+VectPerig[0]*sin(VectPerig[2]);   // Reference point for given perigee
 //       tmp_refFrameY += perGlobalPos.y()-VectPerig[0]*cos(VectPerig[2]);
 //       tmp_refFrameZ += perGlobalPos.z()-VectPerig[1];
 // std::cout<<" Global posVKAL="<<perGlobalPos.x()<<", "<<perGlobalPos.y()<<", "<<perGlobalPos.z()<<'\n';
-       //VK//perGlobalVrt =  m_mPer->vertex();   //Global position of reference point for perigee
-       perGlobalVrt =  m_mPer->associatedSurface().center();      //Global position of reference point
+       //VK//perGlobalVrt =  mPer->vertex();   //Global position of reference point for perigee
+       perGlobalVrt =  mPer->associatedSurface().center();      //Global position of reference point
 // std::cout<<" Global vrtVKAL="<<perGlobalVrt.x()<<", "<<perGlobalVrt.y()<<", "<<perGlobalVrt.z()<<'\n';
        //tmp_refFrameX += perGlobalVrt.x() ;   // Reference point for given perigee
        //tmp_refFrameY += perGlobalVrt.y() ;   // Normally gives (0,0,
@@ -72,7 +72,7 @@ namespace Trk{
        tmpMat.rotateToField=false; if(m_useMagFieldRotation)tmpMat.rotateToField=true;
        tmpMat.trkRotation = Amg::RotationMatrix3D::Identity();
        tmpMat.extrapolationType=2;                   // Perigee point strategy
-       tmpMat.TrkPnt=m_mPer;
+       tmpMat.TrkPnt=mPer;
        tmpMat.prtMass = 139.5702;
        if(counter<(int)m_MassInputParticles.size())tmpMat.prtMass = m_MassInputParticles[counter];
        tmpMat.TrkID=counter; m_trkControl.push_back(tmpMat);
@@ -88,18 +88,18 @@ namespace Trk{
 //  Common reference frame is ready. Start extraction of parameters for fit.
 //
     for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
-       m_mPer = (*i_ntrk)->perigeeParameters(); if( m_mPer == 0 ){ continue; } 
-       VectPerig = m_mPer->parameters(); 
-       perGlobalPos =  m_mPer->position();    //Global position of perigee point
-       //VK//perGlobalVrt =  m_mPer->vertex();      //Global position of reference point
-       perGlobalVrt =  m_mPer->associatedSurface().center();      //Global position of reference point
+       mPer = (*i_ntrk)->perigeeParameters(); if( mPer == 0 ){ continue; } 
+       VectPerig = mPer->parameters(); 
+       perGlobalPos =  mPer->position();    //Global position of perigee point
+       //VK//perGlobalVrt =  mPer->vertex();      //Global position of reference point
+       perGlobalVrt =  mPer->associatedSurface().center();      //Global position of reference point
        m_refFrameX=m_refFrameY=m_refFrameZ=0.; m_fitField->setAtlasMagRefFrame( 0., 0., 0.);  //restore ATLAS frame
        m_fitField->getMagFld(  perGlobalPos.x() , perGlobalPos.y() , perGlobalPos.z() ,   // Magnetic field
-                               fx, fy, m_BMAG_FIXED);                                     // at perigee point
-       if(fabs(m_BMAG_FIXED) < 0.01) m_BMAG_FIXED=0.01;
+                               fx, fy, BMAG_FIXED);                                     // at perigee point
+       if(fabs(BMAG_FIXED) < 0.01) BMAG_FIXED=0.01;
  
-       if( !convertAmg5SymMtx(m_mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
-       VKalTransform( m_BMAG_FIXED, (double)VectPerig(0), (double)VectPerig(1),
+       if( !convertAmg5SymMtx(mPer->covariance(), CovVertTrk) ) return StatusCode::FAILURE; //VK no good covariance matrix!
+       VKalTransform( BMAG_FIXED, (double)VectPerig(0), (double)VectPerig(1),
               (double)VectPerig(2), (double)VectPerig(3), (double)VectPerig(4), CovVertTrk,
                      m_ich[ntrk],&m_apar[ntrk][0],&m_awgt[ntrk][0]);
 //
@@ -115,14 +115,14 @@ namespace Trk{
 	  double pari[5],covi[15]; double vrtini[3]={0.,0.,0.}; double vrtend[3]={dX,dY,dZ};
 	  for(int i=0; i<5; i++) pari[i]=m_apar[ntrk][i];
 	  for(int i=0; i<15;i++) covi[i]=m_awgt[ntrk][i];
-          long int Charge = (long int) m_mPer->charge();  
+          long int Charge = (long int) mPer->charge();  
 //VK 17.06/2008 Wrong!!! m_fitPropagator is defined only when InDet extrapolator is provided!!!
           //m_fitPropagator->Propagate(ntrk,Charge, pari, covi, vrtini, vrtend,&m_apar[ntrk][0],&m_awgt[ntrk][0]);
           myPropagator.Propagate(ntrk,Charge, pari, covi, vrtini, vrtend,&m_apar[ntrk][0],&m_awgt[ntrk][0]);
        }
 
 //
-       ntrk++; if(ntrk>=m_NTrMaxVFit) return StatusCode::FAILURE;
+       ntrk++; if(ntrk>=NTrMaxVFit) return StatusCode::FAILURE;
     }
 //-------------- Finally setting new reference frame common for ALL tracks
     m_refFrameX=tmp_refFrameX;
@@ -168,12 +168,12 @@ namespace Trk{
   {
 //
 // ------  Magnetic field access
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(vX,vY,vZ,fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.01) m_BMAG_CUR=0.01;  //safety
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(vX,vY,vZ,fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.01) BMAG_CUR=0.01;  //safety
 
     double TrkP1, TrkP2, TrkP3, TrkP4, TrkP5;
-    VKalToTrkTrack(m_BMAG_CUR, VKPerigee[2], VKPerigee[3],VKPerigee[4], TrkP3, TrkP4, TrkP5);
+    VKalToTrkTrack(BMAG_CUR, VKPerigee[2], VKPerigee[3],VKPerigee[4], TrkP3, TrkP4, TrkP5);
     TrkP1=-VKPerigee[0];   /*!!!! Change of sign !!!!*/
     TrkP2= VKPerigee[1];
     TrkP5=-TrkP5;                  /*!!!! Change of sign of charge!!!!*/
@@ -186,8 +186,8 @@ namespace Trk{
     Deriv[1][1]= 1.;
     Deriv[2][3]= 1.;
     Deriv[3][2]= 1.;
-    Deriv[4][2]= (cos(VKPerigee[2])/(m_CNVMAG*m_BMAG_CUR)) * VKPerigee[4];
-    Deriv[4][4]=-(sin(VKPerigee[2])/(m_CNVMAG*m_BMAG_CUR));
+    Deriv[4][2]= (cos(VKPerigee[2])/(m_CNVMAG*BMAG_CUR)) * VKPerigee[4];
+    Deriv[4][4]=-(sin(VKPerigee[2])/(m_CNVMAG*BMAG_CUR));
 
     CovMtxOld[0][0]                =VKCov[0];
     CovMtxOld[0][1]=CovMtxOld[1][0]=VKCov[1];
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/SetFitOptions.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/SetFitOptions.cxx
index 6968f587625c2ba573d40ac647a269681c16a400..2bb7cf1a48b160bbf1c2f567b0f7e0275491e1bb 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/SetFitOptions.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/SetFitOptions.cxx
@@ -84,7 +84,7 @@ namespace Trk{
 //---
 //   Additional change of settings 
 //---
-    long int Index[m_NTrMaxVFit+1]={0};
+    long int Index[NTrMaxVFit+1]={0};
     if(m_PartMassCnst.size() > 0) {
       for(int ic=0; ic<(int)m_PartMassCnst.size(); ic++){ 
         long int NTrk=m_PartMassCnstTrk[ic].size();
@@ -126,21 +126,21 @@ namespace Trk{
   }
   
   void TrkVKalVrtFitter::setRobustness(int IROB)
-  { if(IROB>0)msg(MSG::DEBUG)<< "Robustness is changed at execution stage "<<m_Robustness<<"=>"<<IROB<< endreq;
+  { if(IROB>0)msg(MSG::DEBUG)<< "Robustness is changed at execution stage "<<m_Robustness<<"=>"<<IROB<< endmsg;
     m_Robustness = IROB;
     if(m_Robustness<0)m_Robustness=0;
     if(m_Robustness>7)m_Robustness=0;
   }
 
   void TrkVKalVrtFitter::setRobustScale(double Scale)
-  { if(Scale!=m_RobustScale)msg(MSG::DEBUG)<< "Robust Scale is changed at execution stage "<<m_RobustScale<<"=>"<<Scale<< endreq;
+  { if(Scale!=m_RobustScale)msg(MSG::DEBUG)<< "Robust Scale is changed at execution stage "<<m_RobustScale<<"=>"<<Scale<< endmsg;
     m_RobustScale = Scale;
     if(m_RobustScale<0.01) m_RobustScale=1.;
     if(m_RobustScale>100.) m_RobustScale=1.;
   }
  
   void TrkVKalVrtFitter::setCnstType(int TYPE)
-  { if(TYPE>0)msg(MSG::DEBUG)<< "ConstraintType is changed at execution stage "<<m_iflag<<"=>"<<TYPE<< endreq;
+  { if(TYPE>0)msg(MSG::DEBUG)<< "ConstraintType is changed at execution stage "<<m_iflag<<"=>"<<TYPE<< endmsg;
     m_iflag = TYPE;
     if(m_iflag<0)m_iflag=0;
     if(m_iflag>14)m_iflag=0;
@@ -171,15 +171,15 @@ namespace Trk{
   { m_ifcovv0 = abs(TYPE);}
 
   void TrkVKalVrtFitter::setCascadeCnstPrec(double Prec)
-  { if(Prec!=m_cascadeCnstPrecision) msg(MSG::DEBUG)<< "Cascade precision is changed at execution stage "<<m_cascadeCnstPrecision<<"=>"<<Prec<< endreq;
+  { if(Prec!=m_cascadeCnstPrecision) msg(MSG::DEBUG)<< "Cascade precision is changed at execution stage "<<m_cascadeCnstPrecision<<"=>"<<Prec<< endmsg;
     if(Prec<1.e-7)Prec=1.e-7;
     if(Prec>1.   )Prec=1.;
     m_cascadeCnstPrecision=Prec; 
   }
 
   void TrkVKalVrtFitter::setIterations(int Num, double Prec)
-  { if(Num!=m_IterationNumber) msg(MSG::DEBUG)<< "Iteration limit is changed at execution stage "<<m_IterationNumber<<"=>"<<Num<< endreq;
-     if(Prec!=m_IterationPrecision) msg(MSG::DEBUG)<< "Iteration precision is changed at execution stage "<<m_IterationPrecision<<"=>"<<Prec<< endreq;
+  { if(Num!=m_IterationNumber) msg(MSG::DEBUG)<< "Iteration limit is changed at execution stage "<<m_IterationNumber<<"=>"<<Num<< endmsg;
+     if(Prec!=m_IterationPrecision) msg(MSG::DEBUG)<< "Iteration precision is changed at execution stage "<<m_IterationPrecision<<"=>"<<Prec<< endmsg;
     m_IterationNumber    = Num;
     m_IterationPrecision = Prec;
   }
@@ -217,7 +217,7 @@ namespace Trk{
      m_CovVrtForConstraint.push_back(ZZ);
   }			  
 
-  void TrkVKalVrtFitter::setMassInputParticles( std::vector<double>& mass)
+  void TrkVKalVrtFitter::setMassInputParticles( const std::vector<double>& mass)
   { m_MassInputParticles.clear();
     for(int i=0; i<(int)mass.size(); i++) m_MassInputParticles.push_back(fabs(mass[i]));
   }
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkCascadeFitter.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkCascadeFitter.cxx
index 48bd6c4124992948a6c63a2970f3767cd3cc2f35..578744568aed4a256c99601c5269650a49d99a08 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkCascadeFitter.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkCascadeFitter.cxx
@@ -82,7 +82,7 @@ VertexID TrkVKalVrtFitter::startVertex(const  std::vector<const xAOD::TrackParti
 {
     VertexID new_vID=10000;
 
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     m_cascadeSize=1;
     int NTRK = list.size();
     m_partMassForCascade.clear();
@@ -320,7 +320,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
     std::vector<double>  fitFullCovariance;
     std::vector<double>  particleChi2;
 //
-    if(!isFieldInitialized)setInitializedField();    //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();    //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -329,7 +329,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
     }
 //
     long int ntrk=0;
-    StatusCode sc;
+    StatusCode sc; sc.setChecked();
     std::vector<const TrackParameters*> baseInpTrk;
     if(m_firstMeasuredPoint){               //First measured point strategy
        std::vector<const xAOD::TrackParticle*>::const_iterator   i_ntrk;
@@ -377,7 +377,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
     }
     if(IERR){ cleanCascade(); return 0;}
     if(msgLvl(MSG::DEBUG)){
-       msg(MSG::DEBUG)<<"Standard cascade fit" << endreq;
+       msg(MSG::DEBUG)<<"Standard cascade fit" << endmsg;
        printSimpleCascade(m_vertexDefinition,m_cascadeDefinition);
     }
 //
@@ -446,7 +446,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
        m_cascadeVList[ivTo].mergedIN.push_back(ivFrom);
        makeSimpleCascade(new_vertexDefinition, new_cascadeDefinition);
        if(msgLvl(MSG::DEBUG)){
-          msg(MSG::DEBUG)<<"Compressed cascade fit" << endreq;
+          msg(MSG::DEBUG)<<"Compressed cascade fit" << endmsg;
           printSimpleCascade(new_vertexDefinition,new_cascadeDefinition);
        }
 //-----------------------------------------------------------------------------------------
@@ -467,18 +467,20 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
 	     int icv=indexInV(inV);  if(icv<0) break;
 	     if(m_cascadeVList[icv].mergedTO == m_partMassCnstForCascade[ic].VRT){
 	        IERR = findPositions(m_cascadeVList[icv].trkInVrt,    new_vertexDefinition[index],  indexTT);
-	        if(IERR)break;  for(int ki=0; ki<(int)indexTT.size(); ki++) indexT.push_back(indexTT[ki]);
+	        if(IERR)break;
+                for(int ki=0; ki<(int)indexTT.size(); ki++) indexT.push_back(indexTT[ki]);
 	     }else{
 	        std::vector<int> tmpI(1); tmpI[0]=inV;
                 IERR = findPositions(tmpI, new_cascadeDefinition[index], indexVV);
-		if(IERR)break; for(int ki=0; ki<(int)indexVV.size(); ki++) indexV.push_back(indexVV[ki]);
+		if(IERR)break;
+                for(int ki=0; ki<(int)indexVV.size(); ki++) indexV.push_back(indexVV[ki]);
              }							 
          }   if(IERR)break;
          //std::cout<<"trk2="; for(int I=0; I<(int)indexT.size(); I++)std::cout<<indexT[I]; std::cout<<'\n';
          //std::cout<<"pse="; for(int I=0; I<(int)indexV.size(); I++)std::cout<<indexV[I]; std::cout<<'\n';
          IERR = setCascadeMassConstraint(index , indexT, indexV, m_partMassCnstForCascade[ic].Mass); if(IERR)break;
        }
-       msg(MSG::DEBUG)<<"Setting compressed mass constraints ierr="<<IERR<<endreq;
+       msg(MSG::DEBUG)<<"Setting compressed mass constraints ierr="<<IERR<<endmsg;
        if(IERR){ cleanCascade(); return 0;}
 //
 //--------------------------- Refit
@@ -513,11 +515,11 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
 //------------------------- Real tracks
 //
        if(msgLvl(MSG::DEBUG)){
-         msg(MSG::DEBUG)<<"Initial cascade momenta"<<endreq;
+         msg(MSG::DEBUG)<<"Initial cascade momenta"<<endmsg;
          for(int kv=0; kv<(int)fittedParticles.size(); kv++){
            for(int kt=0; kt<(int)fittedParticles[kv].size(); kt++)std::cout<<
 	         " Px="<<fittedParticles[kv][kt].Px<<" Py="<<fittedParticles[kv][kt].Py<<";"; std::cout<<'\n'; }
-         msg(MSG::DEBUG)<<"Squized cascade momenta"<<endreq;
+         msg(MSG::DEBUG)<<"Squized cascade momenta"<<endmsg;
          for(int kv=0; kv<(int)t_fittedParticles.size(); kv++){
            for(int kt=0; kt<(int)t_fittedParticles[kv].size(); kt++)std::cout<<
 	         " Px="<<t_fittedParticles[kv][kt].Px<<" Py="<<t_fittedParticles[kv][kt].Py<<";"; std::cout<<'\n'; }
@@ -569,7 +571,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
          }
        }
        if(msgLvl(MSG::DEBUG)){
-         msg(MSG::DEBUG)<<"Refit cascade momenta"<<endreq;
+         msg(MSG::DEBUG)<<"Refit cascade momenta"<<endmsg;
           for(int kv=0; kv<(int)fittedParticles.size(); kv++){
             for(int kt=0; kt<(int)fittedParticles[kv].size(); kt++)std::cout<<
 	          " Px="<<fittedParticles[kv][kt].Px<<" Py="<<fittedParticles[kv][kt].Py<<";"; std::cout<<'\n'; }
@@ -593,7 +595,7 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
 //
 //-------------------------------------Saving
 //
-    msg(MSG::DEBUG)<<"Now save results" << endreq;
+    msg(MSG::DEBUG)<<"Now save results" << endmsg;
     //CLHEP::HepSymMatrix VrtCovMtx(3,0);  
     Amg::MatrixX VrtCovMtx(3,3);
     Trk::Perigee * measPerigee;
@@ -719,11 +721,11 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
        if( m_makeExtendedVertex ) {
   	 Amg::MatrixX tmpCovMtx(NRealT*3+3,NRealT*3+3);                      // New Eigen based EDM
          tmpCovMtx=genCOV.similarity(*fullDeriv);
-         floatErrMtx.resize(NRealT*3+3);
+         floatErrMtx.resize((NRealT*3+3)*(NRealT*3+3+1)/2);
          int ivk=0;
          for(int i=0;i<NRealT*3+3;i++){
            for(int j=0;j<=i;j++){
-               floatErrMtx[ivk++]=tmpCovMtx(i,j);
+               floatErrMtx.at(ivk++)=tmpCovMtx(i,j);
            }
 	 }
        }else{
@@ -731,16 +733,21 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
          for(int i=0; i<6; i++) floatErrMtx[i]=covVertices[iv][i];
        }
        tmpXAODVertex->setCovariance(floatErrMtx);
-       std::vector<VxTrackAtVertex> xaodVTAV=tmpXAODVertex->vxTrackAtVertex();
+       std::vector<VxTrackAtVertex> & xaodVTAV=tmpXAODVertex->vxTrackAtVertex();
        xaodVTAV.swap(*tmpVTAV);
        for(int itvk=0; itvk<(int)xaodVTAV.size(); itvk++) {
-          ElementLink<xAOD::TrackParticleContainer> TEL;  TEL.setElement( m_partListForCascade[itvk] );
+          ElementLink<xAOD::TrackParticleContainer> TEL;
+	  if(itvk < (int)m_cascadeVList[iv].trkInVrt.size()){
+	    TEL.setElement( m_partListForCascade[ m_cascadeVList[iv].trkInVrt[itvk] ] );
+	  }else{
+	    TEL.setElement( 0 );
+	  }
           tmpXAODVertex->addTrackAtVertex(TEL,1.);
        }
        xaodVrtList.push_back(tmpXAODVertex);              //VK Save xAOD::Vertex
 //
 //---- Save and clean
-       delete tmpVTAV;delete tmpRecV;         //Mandatory cleaning
+       delete tmpVTAV;delete tmpRecV; delete fullDeriv;   //Mandatory cleaning
     }
 //
 //  Save momenta of all particles including combined at vertex positions
@@ -785,7 +792,6 @@ VxCascadeInfo * TrkVKalVrtFitter::fitCascade(const Vertex* primVrt, bool FirstDe
        }
     }    
 //
-    
 //
 //    VxCascadeInfo * recCascade= new VxCascadeInfo(vxVrtList,particleMoms,particleCovs, NDOF ,fullChi2);
     VxCascadeInfo * recCascade= new VxCascadeInfo(xaodVrtList,particleMoms,particleCovs, NDOF ,fullChi2);
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitter.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitter.cxx
index d278059f001dee888c87f97f7a8090d494cea784..666cdfa3e9554d426d313da7d644cf175fec9a55 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitter.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/TrkVKalVrtFitter.cxx
@@ -138,15 +138,15 @@ TrkVKalVrtFitter:: TrkVKalVrtFitter(const std::string& type,
     m_fitPropagator = 0;
     m_InDetExtrapolator = 0;
 
-    isAtlasField       = false;   // To allow callback and then field first call only at execute stage
-    isFieldInitialized = false;   //
+    m_isAtlasField       = false;   // To allow callback and then field first call only at execute stage
+    m_isFieldInitialized = false;   //
 }
 
 
 //Destructor---------------------------------------------------------------
 TrkVKalVrtFitter::~TrkVKalVrtFitter(){
-    //log << MSG::DEBUG << "TrkVKalVrtFitter destructor called" << endreq;
-    if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"TrkVKalVrtFitter destructor called" << endreq;
+    //log << MSG::DEBUG << "TrkVKalVrtFitter destructor called" << endmsg;
+    if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"TrkVKalVrtFitter destructor called" << endmsg;
     delete m_fitField;
     delete m_fitRotatedField;
     if(m_fitPropagator) delete m_fitPropagator;
@@ -157,21 +157,22 @@ TrkVKalVrtFitter::~TrkVKalVrtFitter(){
 
 StatusCode TrkVKalVrtFitter::finalize()
 {
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     if(m_timingProfile)m_timingProfile->chronoPrint("Trk_VKalVrtFitter");
-    if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"TrkVKalVrtFitter finalize() successful" << endreq;
+    if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"TrkVKalVrtFitter finalize() successful" << endmsg;
     return StatusCode::SUCCESS;
 }
 
 
 void TrkVKalVrtFitter::setInitializedField() {
-  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "Execute() time magnetic field setting is called" << endreq;
-  if(isAtlasField){
+  if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "Execute() time magnetic field setting is called" << endmsg;
+  if(m_isAtlasField){
       MagField::IMagFieldSvc* mtmp =   & (*m_magFieldAthenaSvc);
       setAthenaField(mtmp);
-      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "MagFieldAthenaSvc is initialized and used" << endreq;  
+      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "MagFieldAthenaSvc is initialized and used" << endmsg;  
   }
-  isFieldInitialized = true;   //  to signal end of mag.field init procedure 
+  m_isFieldInitialized = true;   //  to signal end of mag.field init procedure 
   return;
 }
 
@@ -209,30 +210,30 @@ StatusCode TrkVKalVrtFitter::initialize()
 //    if( m_Constraint == 12) { m_usePhiCnst = true; m_useThetaCnst = true;}
 //    setCnstType((int)m_Constraint);
     if( m_Constraint ){
-       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"jobOption Constraint is obsolte now! Use the following jobO instead:"<< endreq;
-       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"       useAprioriVertexCnst,useThetaCnst,usePhiCnst,usePointingCnst"<<endreq;
-       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"       useZPointingCnst,usePassNearCnst,usePassWithTrkErrCnst"<<endreq;
+       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"jobOption Constraint is obsolte now! Use the following jobO instead:"<< endmsg;
+       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"       useAprioriVertexCnst,useThetaCnst,usePhiCnst,usePointingCnst"<<endmsg;
+       if(msgLvl(MSG::INFO))msg(MSG::INFO)<<"       useZPointingCnst,usePassNearCnst,usePassWithTrkErrCnst"<<endmsg;
        m_Constraint=0;
     }
 
     StatusCode sc=m_magFieldAthenaSvc.retrieve();
     if (sc.isFailure() ){
-        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Could not find MagFieldAthenaSvc"<< endreq;
+        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Could not find MagFieldAthenaSvc"<< endmsg;
     }else{
-	isAtlasField = true;
-        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "MagFieldAthenaSvc is retrieved" << endreq;  
+	m_isAtlasField = true;
+        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "MagFieldAthenaSvc is retrieved" << endmsg;  
     }
 //
 //
 //
     if (m_extPropagator.name() == "DefaultVKalPropagator" ){
-      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "External propagator is not supplied - use internal one"<<endreq;
+      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "External propagator is not supplied - use internal one"<<endmsg;
     }else{
       if (m_extPropagator.retrieve().isFailure()) {
-        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "Could not find external propagator=" <<m_extPropagator<<endreq;
-        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "TrkVKalVrtFitter will uses internal propagator" << endreq;
+        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "Could not find external propagator=" <<m_extPropagator<<endmsg;
+        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "TrkVKalVrtFitter will uses internal propagator" << endmsg;
       }else{
-        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "External propagator="<<m_extPropagator<<" retrieved" << endreq;
+        if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<< "External propagator="<<m_extPropagator<<" retrieved" << endmsg;
         const IExtrapolator * tmp =& (*m_extPropagator);
         setAthenaPropagator(tmp);
       }
@@ -241,44 +242,44 @@ StatusCode TrkVKalVrtFitter::initialize()
     m_timingProfile=0;
     sc = service("ChronoStatSvc", m_timingProfile);
     if ( sc.isFailure() || 0 == m_timingProfile) {
-      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Can not find ChronoStatSvc name="<<m_timingProfile << endreq;
+      if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Can not find ChronoStatSvc name="<<m_timingProfile << endmsg;
     }
 
 //    m_PropagatorType=1;  //Just for technical checks
 //
     m_ErrMtx=0;            // pointer to double array for error matrix
 //
-    if(msgLvl(MSG::INFO))msg(MSG::INFO)<< "TrkVKalVrtFitter initialize() successful" << endreq;
+    if(msgLvl(MSG::INFO))msg(MSG::INFO)<< "TrkVKalVrtFitter initialize() successful" << endmsg;
     if(msgLvl(MSG::DEBUG)){
-       msg(MSG::DEBUG)<< "TrkVKalVrtFitter configuration:" << endreq;
-       msg(MSG::DEBUG)<< "   A priori vertex constraint:           "<< m_useAprioriVertex <<endreq;
-       msg(MSG::DEBUG)<< "   Angle dTheta=0 constraint:            "<< m_useThetaCnst <<endreq;
-       msg(MSG::DEBUG)<< "   Angle dPhi=0 constraint:              "<< m_usePhiCnst <<endreq;
-       msg(MSG::DEBUG)<< "   Pointing to other vertex constraint:  "<< m_usePointingCnst <<endreq;
-       msg(MSG::DEBUG)<< "   ZPointing to other vertex constraint: "<< m_useZPointingCnst <<endreq;
-       msg(MSG::DEBUG)<< "   Comb. particle pass near other vertex:"<< m_usePassNear <<endreq;
-       msg(MSG::DEBUG)<< "   Pass near with comb.particle errors:  "<< m_usePassWithTrkErr <<endreq;
+       msg(MSG::DEBUG)<< "TrkVKalVrtFitter configuration:" << endmsg;
+       msg(MSG::DEBUG)<< "   A priori vertex constraint:           "<< m_useAprioriVertex <<endmsg;
+       msg(MSG::DEBUG)<< "   Angle dTheta=0 constraint:            "<< m_useThetaCnst <<endmsg;
+       msg(MSG::DEBUG)<< "   Angle dPhi=0 constraint:              "<< m_usePhiCnst <<endmsg;
+       msg(MSG::DEBUG)<< "   Pointing to other vertex constraint:  "<< m_usePointingCnst <<endmsg;
+       msg(MSG::DEBUG)<< "   ZPointing to other vertex constraint: "<< m_useZPointingCnst <<endmsg;
+       msg(MSG::DEBUG)<< "   Comb. particle pass near other vertex:"<< m_usePassNear <<endmsg;
+       msg(MSG::DEBUG)<< "   Pass near with comb.particle errors:  "<< m_usePassWithTrkErr <<endmsg;
        if(m_MassForConstraint>0){ 
-         msg(MSG::DEBUG)<< "   Mass constraint M="<< m_MassForConstraint <<endreq; 
+         msg(MSG::DEBUG)<< "   Mass constraint M="<< m_MassForConstraint <<endmsg; 
          msg(MSG::DEBUG)<< " with particles M=";
          for(int i=0; i<(int)m_MassInputParticles.size(); i++) msg(MSG::DEBUG)<<m_MassInputParticles[i]<<", ";
-         msg(MSG::DEBUG)<<endreq; ;
+         msg(MSG::DEBUG)<<endmsg; ;
        }
 
-       if(isAtlasField){ msg(MSG::DEBUG)<< " ATLAS magnetic field is used!"<<endreq;	}
-       else            { msg(MSG::DEBUG)<< " Constant magnetic field is used! B="<<m_BMAG<<endreq;	}
+       if(m_isAtlasField){ msg(MSG::DEBUG)<< " ATLAS magnetic field is used!"<<endmsg;	}
+       else            { msg(MSG::DEBUG)<< " Constant magnetic field is used! B="<<m_BMAG<<endmsg;	}
 
-       if(m_InDetExtrapolator){ msg(MSG::DEBUG)<< " InDet extrapolator is used!"<<endreq; }
-       else { msg(MSG::DEBUG)<< " Internal VKalVrt extrapolator is used!"<<endreq;}
+       if(m_InDetExtrapolator){ msg(MSG::DEBUG)<< " InDet extrapolator is used!"<<endmsg; }
+       else { msg(MSG::DEBUG)<< " Internal VKalVrt extrapolator is used!"<<endmsg;}
 
-       if(m_Robustness) { msg(MSG::DEBUG)<< " VKalVrt uses robust algorithm! Type="<<m_Robustness<<" with Scale="<<m_RobustScale<<endreq; }
+       if(m_Robustness) { msg(MSG::DEBUG)<< " VKalVrt uses robust algorithm! Type="<<m_Robustness<<" with Scale="<<m_RobustScale<<endmsg; }
 
-       if(m_firstMeasuredPoint){ msg(MSG::DEBUG)<< " VKalVrt will use FirstMeasuredPoint strategy in fits with InDetExtrapolator"<<endreq; }
-       else                    { msg(MSG::DEBUG)<< " VKalVrt will use Perigee strategy in fits with InDetExtrapolator"<<endreq; }
-       if(m_firstMeasuredPointLimit){ msg(MSG::DEBUG)<< " VKalVrt will use FirstMeasuredPointLimit strategy "<<endreq; }
+       if(m_firstMeasuredPoint){ msg(MSG::DEBUG)<< " VKalVrt will use FirstMeasuredPoint strategy in fits with InDetExtrapolator"<<endmsg; }
+       else                    { msg(MSG::DEBUG)<< " VKalVrt will use Perigee strategy in fits with InDetExtrapolator"<<endmsg; }
+       if(m_firstMeasuredPointLimit){ msg(MSG::DEBUG)<< " VKalVrt will use FirstMeasuredPointLimit strategy "<<endmsg; }
        if(m_useMagFieldRotation){ 
-                 msg(MSG::DEBUG)<< " VKalVrt will use ROTATION to magnetic field direction. NO pointing constraints are allowed "<<endreq;
-                 msg(MSG::DEBUG)<< "        The only function fit(Trk::TrackParameters trk, Trk::Vertex vrt) is allowed for the moment "<<endreq;
+                 msg(MSG::DEBUG)<< " VKalVrt will use ROTATION to magnetic field direction. NO pointing constraints are allowed "<<endmsg;
+                 msg(MSG::DEBUG)<< "        The only function fit(Trk::TrackParameters trk, Trk::Vertex vrt) is allowed for the moment "<<endmsg;
        }
     }
 
@@ -298,8 +299,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*> & vectorTrk
 {
 //    m_fitSvc->setDefault();
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<< " fit(Track trk, Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endreq;
+       msg(MSG::WARNING)<< " fit(Track trk, Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endmsg;
        return 0;
     }
     m_globalFirstHit = 0;
@@ -320,7 +321,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*> & vectorTrk
           vxavList[it].setOrigTrack(linkTT);           //pointer to initial Track
       }
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
@@ -335,8 +337,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParticleBase*>
 {
 //    m_fitSvc->setDefault();
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(TrackParticleBase trk, Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(TrackParticleBase trk, Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endmsg;
        return 0;
     }
     m_globalFirstHit = 0;
@@ -357,7 +359,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParticleBase*>
         vxavList[it].setOrigTrack(ITL);              //pointer to initial TrackParticle(Base)
       }
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
@@ -378,11 +381,11 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*>& vectorTrk,
                                                  const xAOD::Vertex& firstStartingPoint)
 {   
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(Track trk, xAOD::Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Amg::Vector3D vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(Track trk, xAOD::Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Amg::Vector3D vrt) instead"<<endmsg;
        return 0;
     }
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is added to VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is added to VKalVrt fitter!" << endmsg;
 //    m_fitSvc->setDefault();
     m_globalFirstHit = 0;
     Amg::Vector3D VertexIni(0.,0.,0.);
@@ -419,7 +422,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*>& vectorTrk,
           vxavList[it].setOrigTrack(linkTT);           //pointer to initial Track
       }
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -431,11 +435,11 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParticleBase*>
                                     const xAOD::Vertex & firstStartingPoint)
 {   
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(TrackParticleBase trk, xAOD::Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Amg::Vector3D vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(TrackParticleBase trk, xAOD::Vertex vrt) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Amg::Vector3D vrt) instead"<<endmsg;
        return 0;
     }
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is added to VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is added to VKalVrt fitter!" << endmsg;
 //    m_fitSvc->setDefault();
     m_globalFirstHit = 0;
     Amg::Vector3D VertexIni(0.,0.,0.);
@@ -472,7 +476,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParticleBase*>
         vxavList[it].setOrigTrack(ITL);              //pointer to initial TrackParticle(Base)
       }
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -535,7 +540,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*> &
     if(sc.isSuccess()) {
       tmpVertex = makeXAODVertex( 0, m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
@@ -558,7 +564,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*>
     if(sc.isSuccess()) {
       tmpVertex = makeXAODVertex( (int)perigeeListN.size() , m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
@@ -574,7 +581,7 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*>
 xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*> & perigeeListC,
                                     const xAOD::Vertex & constraint)
 {
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endmsg;
     m_globalFirstHit = 0;
     Amg::Vector3D VertexIni(0.,0.,0.);
     StatusCode sc=VKalVrtFitFast(perigeeListC, VertexIni); 
@@ -605,7 +612,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*> &
     if(sc.isSuccess()) {
       tmpVertex = makeXAODVertex( 0, m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -617,7 +625,7 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*>
                                     const std::vector<const NeutralParameters*> & perigeeListN,
                                     const xAOD::Vertex & constraint)
 {
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endmsg;
     m_globalFirstHit = 0;
     Amg::Vector3D VertexIni(0.,0.,0.);
     StatusCode sc=VKalVrtFitFast(perigeeListC, VertexIni); 
@@ -647,7 +655,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const TrackParameters*>
     if(sc.isSuccess()) {
       tmpVertex = makeXAODVertex( (int)perigeeListN.size(), m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -680,7 +689,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
        }
     }
 
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
 
@@ -716,7 +726,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
        }
     }
 
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
 
@@ -728,7 +739,7 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
 xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle*> & xtpListC,
                                      const xAOD::Vertex & constraint)
 {
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endmsg;
     m_globalFirstHit = 0;
     xAOD::Vertex * tmpVertex = 0;
     setApproximateVertex(constraint.position().x(), constraint.position().y(),constraint.position().z());
@@ -757,7 +768,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
        }
     }
 
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -769,7 +781,7 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
                                      const std::vector<const xAOD::NeutralParticle*> & xtpListN,
                                      const xAOD::Vertex & constraint)
 {
-    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endreq;
+    if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG)<< "A priori vertex constraint is activated in VKalVrt fitter!" << endmsg;
     m_globalFirstHit = 0;
     xAOD::Vertex * tmpVertex = 0;
     setApproximateVertex(constraint.position().x(), constraint.position().y(),constraint.position().z());
@@ -803,7 +815,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
        }
     }
 
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_useAprioriVertex=false;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
@@ -820,8 +833,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const xAOD::TrackParticle
 xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*> & vectorTrk)
 {
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(Track trk) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(ParametersBase trk, Amg::Vector3D vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(Track trk) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(ParametersBase trk, Amg::Vector3D vrt) instead"<<endmsg;
        return 0;
     }
     Amg::Vector3D VertexIni(0.,0.,0.);
@@ -846,7 +859,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*> & vectorTrk
           vxavList[it].setOrigTrack(linkTT);           //pointer to initial Track
       }
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
 }
@@ -854,8 +868,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const Track*> & vectorTrk
 xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const  TrackParameters*> & perigeeListC)
 {
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(TrackParameters trk) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(TrackParameters trk) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endmsg;
        return 0;
     }
     m_globalFirstHit = 0;
@@ -871,7 +885,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const  TrackParameters*>
     if(sc.isSuccess()) {
        tmpVertex = makeXAODVertex( 0, m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
@@ -881,8 +896,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const  TrackParameters*>
                                     const std::vector<const  NeutralParameters*> & perigeeListN)
 {
     if(m_useMagFieldRotation){ 
-       msg(MSG::WARNING)<<"fit(TrackParameters trk) is not allowed with  useMagFieldRotation jobO"<<endreq;
-       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endreq;
+       msg(MSG::WARNING)<<"fit(TrackParameters trk) is not allowed with  useMagFieldRotation jobO"<<endmsg;
+       msg(MSG::WARNING)<<"Use fit(TrackParameters trk, Vertex vrt) instead"<<endmsg;
        return 0;
     }
     m_globalFirstHit = 0;
@@ -897,7 +912,8 @@ xAOD::Vertex * TrkVKalVrtFitter::fit(const std::vector<const  TrackParameters*>
     if(sc.isSuccess()) {
        tmpVertex = makeXAODVertex( (int)perigeeListN.size(), m_Vertex, m_ErrorMatrix, m_Chi2PerTrk, m_TrkAtVrt, m_Chi2 );
     }
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;
+    if(m_ErrMtx)delete[] m_ErrMtx;
+    m_ErrMtx=0;
     m_planeCnstNDOF = 0;       // No plane constraint by default
     setMomCovCalc(0);          // No full covariance by default
     return tmpVertex;
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
index 8cd88ee55cf08f13edc0f5cbc6d456e18eaac921..979d1792ff4c6a2699929b296a3d5ee22d65e39b 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalExtPropagator.cxx
@@ -25,7 +25,7 @@
   VKalExtPropagator::VKalExtPropagator( TrkVKalVrtFitter* pnt)
   {
        m_extrapolator = 0;
-       vkalFitSvc = pnt;
+       m_vkalFitSvc = pnt;
   }
   VKalExtPropagator::~VKalExtPropagator(){}
 
@@ -40,11 +40,11 @@
 //
   double VKalExtPropagator::Protection(double *RefEnd) const
   {   
-      double Xend=RefEnd[0] + vkalFitSvc->m_refFrameX;
-      double Yend=RefEnd[1] + vkalFitSvc->m_refFrameY;
-      double Zend=RefEnd[2] + vkalFitSvc->m_refFrameZ;
-      double Rlim=sqrt(Xend*Xend+Yend*Yend) / vkalFitSvc->m_IDsizeR;
-      double Zlim=fabs(Zend)                / vkalFitSvc->m_IDsizeZ;
+      double Xend=RefEnd[0] + m_vkalFitSvc->m_refFrameX;
+      double Yend=RefEnd[1] + m_vkalFitSvc->m_refFrameY;
+      double Zend=RefEnd[2] + m_vkalFitSvc->m_refFrameZ;
+      double Rlim=sqrt(Xend*Xend+Yend*Yend) / m_vkalFitSvc->m_IDsizeR;
+      double Zlim=fabs(Zend)                / m_vkalFitSvc->m_IDsizeZ;
       double Scale = Rlim; if(Zlim>Rlim) Scale=Zlim;
       return Scale;
   }
@@ -52,24 +52,24 @@
   bool VKalExtPropagator::checkTarget( double *RefEnd) const
   {
       double vX=RefEnd[0]; double vY=RefEnd[1]; double vZ=RefEnd[2];
-      if( vkalFitSvc->m_trkControl[0].rotateToField) {
+      if( m_vkalFitSvc->m_trkControl[0].rotateToField) {
         double fx,fy,fz, oldField, newField;
-        Amg::Vector3D step(RefEnd[0]-vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.x(),
-                           RefEnd[1]-vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.y(),
-                           RefEnd[2]-vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.z());
-        Amg::Vector3D globalRefEnd = (vkalFitSvc->m_trkControl[0].trkRotation.inverse())*step 
-                                    + vkalFitSvc->m_trkControl[0].trkRotationVertex;
+        Amg::Vector3D step(RefEnd[0]-m_vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.x(),
+                           RefEnd[1]-m_vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.y(),
+                           RefEnd[2]-m_vkalFitSvc->m_trkControl[0].trkSavedLocalVertex.z());
+        Amg::Vector3D globalRefEnd = (m_vkalFitSvc->m_trkControl[0].trkRotation.inverse())*step 
+                                    + m_vkalFitSvc->m_trkControl[0].trkRotationVertex;
 //
-        vX=vkalFitSvc->m_trkControl[0].trkRotationVertex.x()-vkalFitSvc->m_refFrameX;
-        vY=vkalFitSvc->m_trkControl[0].trkRotationVertex.y()-vkalFitSvc->m_refFrameY;
-        vZ=vkalFitSvc->m_trkControl[0].trkRotationVertex.z()-vkalFitSvc->m_refFrameZ;
-        vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
+        vX=m_vkalFitSvc->m_trkControl[0].trkRotationVertex.x()-m_vkalFitSvc->m_refFrameX;
+        vY=m_vkalFitSvc->m_trkControl[0].trkRotationVertex.y()-m_vkalFitSvc->m_refFrameY;
+        vZ=m_vkalFitSvc->m_trkControl[0].trkRotationVertex.z()-m_vkalFitSvc->m_refFrameZ;
+        m_vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
         oldField=sqrt(fx*fx+fy*fy+fz*fz); if(oldField<0.2) oldField=0.2;
 //
-        vX=globalRefEnd.x()-vkalFitSvc->m_refFrameX;
-        vY=globalRefEnd.y()-vkalFitSvc->m_refFrameY;
-        vZ=globalRefEnd.z()-vkalFitSvc->m_refFrameZ;
-        vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
+        vX=globalRefEnd.x()-m_vkalFitSvc->m_refFrameX;
+        vY=globalRefEnd.y()-m_vkalFitSvc->m_refFrameY;
+        vZ=globalRefEnd.z()-m_vkalFitSvc->m_refFrameZ;
+        m_vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
         newField=sqrt(fx*fx+fy*fy+fz*fz); if(newField<0.2) newField=0.2;
 //
         if( fabs(newField-oldField)/oldField > 1.0 ) return false;
@@ -100,19 +100,19 @@
 //           so it's rotated back using saved on given track rotation parameters 
 //-----------
       double vX=RefEnd[0]; double vY=RefEnd[1]; double vZ=RefEnd[2];
-      if(  vkalFitSvc->m_trkControl.at(trkID_loc).rotateToField &&
-          !vkalFitSvc->m_trkControl[trkID_loc].trkRotation.isIdentity()) {
+      if(  m_vkalFitSvc->m_trkControl.at(trkID_loc).rotateToField &&
+          !m_vkalFitSvc->m_trkControl[trkID_loc].trkRotation.isIdentity()) {
 
-        Amg::Vector3D step(RefEnd[0]-vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.x(),
-                           RefEnd[1]-vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.y(),
-                           RefEnd[2]-vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.z());
-        Amg::Vector3D globalRefEnd = (vkalFitSvc->m_trkControl[trkID_loc].trkRotation.inverse())*step 
-                                    + vkalFitSvc->m_trkControl[trkID_loc].trkRotationVertex;
-        vX=globalRefEnd.x()-vkalFitSvc->m_refFrameX;
-        vY=globalRefEnd.y()-vkalFitSvc->m_refFrameY;
-        vZ=globalRefEnd.z()-vkalFitSvc->m_refFrameZ;
+        Amg::Vector3D step(RefEnd[0]-m_vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.x(),
+                           RefEnd[1]-m_vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.y(),
+                           RefEnd[2]-m_vkalFitSvc->m_trkControl[trkID_loc].trkSavedLocalVertex.z());
+        Amg::Vector3D globalRefEnd = (m_vkalFitSvc->m_trkControl[trkID_loc].trkRotation.inverse())*step 
+                                    + m_vkalFitSvc->m_trkControl[trkID_loc].trkRotationVertex;
+        vX=globalRefEnd.x()-m_vkalFitSvc->m_refFrameX;
+        vY=globalRefEnd.y()-m_vkalFitSvc->m_refFrameY;
+        vZ=globalRefEnd.z()-m_vkalFitSvc->m_refFrameZ;
       }
-      Amg::Vector3D endPoint( vX + vkalFitSvc->m_refFrameX, vY + vkalFitSvc->m_refFrameY, vZ + vkalFitSvc->m_refFrameZ);
+      Amg::Vector3D endPoint( vX + m_vkalFitSvc->m_refFrameX, vY + m_vkalFitSvc->m_refFrameY, vZ + m_vkalFitSvc->m_refFrameZ);
 //
 // ---- Make MeasuredPerigee from input. Mag.field at start point is used here
 //
@@ -126,26 +126,26 @@
         CovPerigeeIni[0]=1.e6;CovPerigeeIni[2]=1.e6;CovPerigeeIni[5]=1.;CovPerigeeIni[9]=1.;CovPerigeeIni[14]=fabs(PerigeeIni[4]);
       }        
       const Perigee* inpPer = 
-          vkalFitSvc->CreatePerigee( RefStart[0], RefStart[1], RefStart[2], PerigeeIni, CovPerigeeIni);
+          m_vkalFitSvc->CreatePerigee( RefStart[0], RefStart[1], RefStart[2], PerigeeIni, CovPerigeeIni);
       const TrackParameters * inpPar= (const TrackParameters*) inpPer;
 //
 // ----- Magnetic field is taken at target point
 //
-      double fx,fy,fz,m_BMAG_FIXED;
-      vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
-      m_BMAG_FIXED=fz;  // standard when rotation to field direction is absent 
-      if(vkalFitSvc->m_trkControl[trkID_loc].rotateToField) {
-         m_BMAG_FIXED=sqrt(fx*fx+fy*fy+fz*fz);
-         vkalFitSvc->m_fitRotatedField->setAtlasMag(m_BMAG_FIXED);  //set fixed ROTATED field in corresponding VKal oblect
+      double fx,fy,fz,BMAG_FIXED;
+      m_vkalFitSvc->m_fitField->getMagFld(vX,vY,vZ,fx,fy,fz);
+      BMAG_FIXED=fz;  // standard when rotation to field direction is absent 
+      if(m_vkalFitSvc->m_trkControl[trkID_loc].rotateToField) {
+         BMAG_FIXED=sqrt(fx*fx+fy*fy+fz*fz);
+         m_vkalFitSvc->m_fitRotatedField->setAtlasMag(BMAG_FIXED);  //set fixed ROTATED field in corresponding VKal oblect
       }
 //
 // ----- Prepare line target. In case of rotation - save new rotation parameters to track object
       Amg::RotationMatrix3D magFldRot; magFldRot.setIdentity();
-      if(trkID>=0 && vkalFitSvc->m_trkControl[trkID].rotateToField){
-          magFldRot=vkalFitSvc->getMagFldRotation(fx,fy,fz,vkalFitSvc->m_refFrameX,vkalFitSvc->m_refFrameY,0.);
-          vkalFitSvc->m_trkControl[trkID].trkRotation=magFldRot;
-          vkalFitSvc->m_trkControl[trkID].trkRotationVertex   = Amg::Vector3D(endPoint.x(),endPoint.y(),endPoint.z());
-          vkalFitSvc->m_trkControl[trkID].trkSavedLocalVertex = Amg::Vector3D(RefEnd[0],RefEnd[1],RefEnd[2]);
+      if(trkID>=0 && m_vkalFitSvc->m_trkControl[trkID].rotateToField){
+          magFldRot=m_vkalFitSvc->getMagFldRotation(fx,fy,fz,m_vkalFitSvc->m_refFrameX,m_vkalFitSvc->m_refFrameY,0.);
+          m_vkalFitSvc->m_trkControl[trkID].trkRotation=magFldRot;
+          m_vkalFitSvc->m_trkControl[trkID].trkRotationVertex   = Amg::Vector3D(endPoint.x(),endPoint.y(),endPoint.z());
+          m_vkalFitSvc->m_trkControl[trkID].trkSavedLocalVertex = Amg::Vector3D(RefEnd[0],RefEnd[1],RefEnd[2]);
       }
 //
 //-------------------- Extrapolation itself
@@ -154,12 +154,12 @@
       if(trkID<0){
             endPer = myExtrapWithMatUpdate( trkID, inpPar, &endPoint);
       }else{
-        if(vkalFitSvc->m_trkControl[trkID].rotateToField) {
-            Amg::Vector3D lineCenter( vX + vkalFitSvc->m_refFrameX, vY + vkalFitSvc->m_refFrameY, vZ + vkalFitSvc->m_refFrameZ);
+        if(m_vkalFitSvc->m_trkControl[trkID].rotateToField) {
+            Amg::Vector3D lineCenter( vX + m_vkalFitSvc->m_refFrameX, vY + m_vkalFitSvc->m_refFrameY, vZ + m_vkalFitSvc->m_refFrameZ);
             StraightLineSurface lineTarget(new Amg::Transform3D( magFldRot.inverse() , lineCenter));
 //=Check StraightLineSurface
 //          GlobalPosition testpos(lineCenter.x()-100.*fx,lineCenter.y()-100.*fy,lineCenter.z()-100.*fz);
-//          std::cout<<" checkLineSurface="<<*(lineTarget.globalToLocal(testpos))<<" BMAG="<<m_BMAG_FIXED<<'\n';
+//          std::cout<<" checkLineSurface="<<*(lineTarget.globalToLocal(testpos))<<" BMAG="<<BMAG_FIXED<<'\n';
             endPer = myExtrapToLine(trkID,  inpPar, &endPoint, lineTarget);
         }else{	   
             endPer = myExtrapWithMatUpdate( trkID, inpPar, &endPoint);
@@ -170,26 +170,26 @@
         ParNew[0]=0.; ParNew[1]=0.;ParNew[2]=0.;ParNew[3]=0.;ParNew[4]=0.;
         delete inpPer; return;
       }
-      const Perigee*          m_mPer = dynamic_cast<const Perigee*>(endPer);
-      const AtaStraightLine*  m_Line = dynamic_cast<const AtaStraightLine*>(endPer);
+      const Perigee*          mPer = dynamic_cast<const Perigee*>(endPer);
+      const AtaStraightLine*  Line = dynamic_cast<const AtaStraightLine*>(endPer);
       AmgVector(5) VectPerig; VectPerig<<0.,0.,0.,0.,0.;
       const AmgSymMatrix(5) *CovMtx=0;
-      if( m_mPer ){
-        VectPerig = m_mPer->parameters(); 
-        CovMtx    = m_mPer->covariance();
+      if( mPer ){
+        VectPerig = mPer->parameters(); 
+        CovMtx    = mPer->covariance();
       } 
-      if( m_Line ){
-        VectPerig = m_Line->parameters(); 
-        CovMtx    = m_Line->covariance();
+      if( Line ){
+        VectPerig = Line->parameters(); 
+        CovMtx    = Line->covariance();
       }      
-      if( (m_Line==0 && m_mPer==0) || CovMtx==0 ){         
+      if( (Line==0 && mPer==0) || CovMtx==0 ){         
         ParNew[0]=0.; ParNew[1]=0.;ParNew[2]=0.;ParNew[3]=0.;ParNew[4]=0.;
         delete inpPer; return;
       }
-      if(vkalFitSvc->m_trkControl[trkID_loc].rotateToField) {
+      if(m_vkalFitSvc->m_trkControl[trkID_loc].rotateToField) {
          Amg::Vector3D rotatedMomentum(0.,0.,0.);
-         if(m_mPer)rotatedMomentum=magFldRot*Amg::Vector3D(m_mPer->momentum().x(),m_mPer->momentum().y(),m_mPer->momentum().z());
-         if(m_Line)rotatedMomentum=magFldRot*Amg::Vector3D(m_Line->momentum().x(),m_Line->momentum().y(),m_Line->momentum().z());
+         if(mPer)rotatedMomentum=magFldRot*Amg::Vector3D(mPer->momentum().x(),mPer->momentum().y(),mPer->momentum().z());
+         if(Line)rotatedMomentum=magFldRot*Amg::Vector3D(Line->momentum().x(),Line->momentum().y(),Line->momentum().z());
 //         VectPerig[2] += atan2(rotatedMomentum.y(),rotatedMomentum.x()); //VK wrong 27.09.10
          VectPerig[2] = atan2(rotatedMomentum.y(),rotatedMomentum.x());
          VectPerig[3] = atan2(rotatedMomentum.perp(),rotatedMomentum.z());
@@ -222,12 +222,12 @@
 //                                          ", "<<(*CovMtx)(3,3)<<", "<<(*CovMtx)(4,4)<<'\n';          
 
       if(CovNew != 0) {
-         vkalFitSvc->VKalTransform( m_BMAG_FIXED, VectPerig(0), VectPerig(1),
+         m_vkalFitSvc->VKalTransform( BMAG_FIXED, VectPerig(0), VectPerig(1),
             VectPerig(2), VectPerig(3), VectPerig(4), CovVertTrk,
                       locCharge,  &ParNew[0] , &CovNew[0]);
       }else{
          double CovVertTrkTmp[15];
-         vkalFitSvc->VKalTransform( m_BMAG_FIXED, VectPerig(0), VectPerig(1),
+         m_vkalFitSvc->VKalTransform( BMAG_FIXED, VectPerig(0), VectPerig(1),
             VectPerig(2), VectPerig(3), VectPerig(4), CovVertTrk,
                       locCharge,  &ParNew[0] , CovVertTrkTmp);
       }
@@ -262,11 +262,11 @@
       Amg::Vector3D pmom=inpPer->momentum();
 //Track reference point ( some point on track provided initially, global frame )
       Amg::Vector3D refPoint(0.,0.,0.);
-      if(TrkID>=0)refPoint = vkalFitSvc->m_trkControl.at(TrkID).trkRefGlobPos;
+      if(TrkID>=0)refPoint = m_vkalFitSvc->m_trkControl.at(TrkID).trkRefGlobPos;
 //
       Amg::Vector3D step  = (*endPoint) - iniPoint;
 //
-      int Strategy = 0; if(TrkID>=0) Strategy = vkalFitSvc->m_trkControl[TrkID].extrapolationType;
+      int Strategy = 0; if(TrkID>=0) Strategy = m_vkalFitSvc->m_trkControl[TrkID].extrapolationType;
 //
 // Extrapolation for new track - no material at all
 //
@@ -280,9 +280,9 @@
         }
         return endPer;
       }else{
-        pntOnTrk=dynamic_cast<const TrackParameters*> (vkalFitSvc->m_trkControl.at(TrkID).TrkPnt);
+        pntOnTrk=dynamic_cast<const TrackParameters*> (m_vkalFitSvc->m_trkControl.at(TrkID).TrkPnt);
         if(pntOnTrk==0)return endPer;
-        //double inpMass=vkalFitSvc->m_trkControl[TrkID].prtMass;
+        //double inpMass=m_vkalFitSvc->m_trkControl[TrkID].prtMass;
         //if(     inpMass >  0. && inpMass< 20.) {  prtType=electron; }  //VK  Disabled according to users request
         //else if(inpMass > 20. && inpMass<120.) {  prtType=muon; }      //    May be activated in future
         //else if(inpMass >120. && inpMass<200.) {  prtType=pion; }
@@ -369,7 +369,7 @@
       Amg::Vector3D iniPoint =  inpPer->position();
       Amg::Vector3D step  = (*endPoint) - iniPoint;
 //
-      int Strategy = 0; if(TrkID>=0) Strategy = vkalFitSvc->m_trkControl[TrkID].extrapolationType;
+      int Strategy = 0; if(TrkID>=0) Strategy = m_vkalFitSvc->m_trkControl[TrkID].extrapolationType;
 //
 // Extrapolation for new track - no material at all
 //
@@ -377,9 +377,9 @@
       if(TrkID<0){  
         return endPer;
       }else{
-        pntOnTrk=dynamic_cast<const TrackParameters*> (vkalFitSvc->m_trkControl.at(TrkID).TrkPnt);
+        pntOnTrk=dynamic_cast<const TrackParameters*> (m_vkalFitSvc->m_trkControl.at(TrkID).TrkPnt);
         if(!pntOnTrk) return endPer;
-        //double inpMass=vkalFitSvc->m_trkControl[TrkID].prtMass;
+        //double inpMass=m_vkalFitSvc->m_trkControl[TrkID].prtMass;
         //if(     inpMass >  0. && inpMass< 20.) {  prtType=electron; }  //VK  Disabled according to users request
         //else if(inpMass > 20. && inpMass<120.) {  prtType=muon; }      //    May be activated in future
         //else if(inpMass >120. && inpMass<200.) {  prtType=pion; }
@@ -436,16 +436,16 @@
   {
     if(!xprt->isAvailable<float>("radiusOfFirstHit")) return 0;  // No radiusOfFirstHit on track
 
-    const Trk::Perigee*  m_mPer = &(xprt->perigeeParameters()); 
+    const Trk::Perigee*  mPer = &(xprt->perigeeParameters()); 
     Amg::Transform3D *trnsf = new Amg::Transform3D(); 
     (*trnsf).setIdentity();
     CylinderSurface surfacePntOnTrk( trnsf, xprt->radiusOfFirstHit(), 20000.);        
     ParticleHypothesis prtType = pion;
     
     const TrackParameters *hitOnTrk = 
-          m_extrapolator->extrapolate( *m_mPer, surfacePntOnTrk, alongMomentum, true, prtType, removeNoise);
+          m_extrapolator->extrapolate( *mPer, surfacePntOnTrk, alongMomentum, true, prtType, removeNoise);
 //std::cout<<" Radius="<<xprt->radiusOfFirstHit()<<" extrap="<<hitOnTrk<<'\n';
-    if(hitOnTrk==0)hitOnTrk=m_extrapolator->extrapolateDirectly( *m_mPer, surfacePntOnTrk, alongMomentum, true, prtType);
+    if(hitOnTrk==0)hitOnTrk=m_extrapolator->extrapolateDirectly( *mPer, surfacePntOnTrk, alongMomentum, true, prtType);
     if(hitOnTrk==0)return 0;
 
     //convert result to Perigee 
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalGetImpact.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalGetImpact.cxx
index 3925e2489f46f66f655a1f6725aaef53ecffb6d9..2cf744a5c6dfb5108620e300863c12e1300fee09 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalGetImpact.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalGetImpact.cxx
@@ -40,7 +40,7 @@ namespace Trk{
 
     long int vkCharge=Charge;
 
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -100,7 +100,7 @@ namespace Trk{
 
     long int vkCharge=Charge;
 
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -157,7 +157,7 @@ namespace Trk{
 
     long int vkCharge=Charge;
 
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalMagFld.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalMagFld.cxx
index 0083698b4891e74223d69fea9f6fe6625f001302..de224d1e353c3cfd51947becff00048f7fe31f6f 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalMagFld.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalMagFld.cxx
@@ -42,7 +42,7 @@
 namespace Trk{
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 //                  ATLAS magnetic field access
-  VKalAtlasMagFld::VKalAtlasMagFld(): mm(1.) {
+  VKalAtlasMagFld::VKalAtlasMagFld(): m_mm(1.) {
      m_VKalAthenaField=0; 
      m_FIXED_ATLAS_FIELD=1.997;
      m_magFrameX=0.;
@@ -75,14 +75,14 @@ namespace Trk{
                                     double &bx, double &by, double &bz)
   {   
       double fieldXYZ[3];  double BField[3];
-      fieldXYZ[0]= (x +m_magFrameX) *mm;
-      fieldXYZ[1]= (y +m_magFrameY) *mm;
-      fieldXYZ[2]= (z +m_magFrameZ) *mm;
+      fieldXYZ[0]= (x +m_magFrameX) *m_mm;
+      fieldXYZ[1]= (y +m_magFrameY) *m_mm;
+      fieldXYZ[2]= (z +m_magFrameZ) *m_mm;
       if( m_VKalAthenaField ) {
 	 double Shift= (m_saveXpos-fieldXYZ[0])*(m_saveXpos-fieldXYZ[0])
 	              +(m_saveYpos-fieldXYZ[1])*(m_saveYpos-fieldXYZ[1])
 	              +(m_saveZpos-fieldXYZ[2])*(m_saveZpos-fieldXYZ[2]);
-         if(Shift < -1.*1.*mm*mm){   //17.03.2010 VK no caching - mag.field is steplike
+         if(Shift < -1.*1.*m_mm*m_mm){   //17.03.2010 VK no caching - mag.field is steplike
 	   bx=m_saveBX;
 	   by=m_saveBY;
 	   bz=m_saveBZ;
@@ -117,7 +117,7 @@ namespace Trk{
      //m_fitField->getMagFld(0.,0.,0.,Bx,By,Bz);
      //m_fitField->setAtlasMag(Bz);
      if(m_PropagatorType == 0) m_PropagatorType = 1;  // set up Runge-Kutta propagator from Core
-     isFieldInitialized = true;   //  to signal end of mag.field init procedure 
+     m_isFieldInitialized = true;   //  to signal end of mag.field init procedure 
   }
 
 
@@ -126,6 +126,6 @@ namespace Trk{
      m_fitField->setAtlasMag( Field );
      if(m_PropagatorType == 1) m_PropagatorType = 0;  // set up constant field propagator if Runge-Kutta was
                                                       // used before. Otherwise use what is set.
-     isFieldInitialized = true;   //  to signal end of mag.field init procedure 
+     m_isFieldInitialized = true;   //  to signal end of mag.field init procedure 
   }
 }
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalTransform.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalTransform.cxx
index 7d5ef992a27a830fbd030328fed208e4d01c3475..e4514b75dea5f0d90b7129ab8722fe1f5ef38f81 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalTransform.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalTransform.cxx
@@ -29,11 +29,11 @@ namespace Trk{
        //----- Check perigee covarince matrix for safety
        double DET=AmgMtx->determinant();
        if( DET!=DET ) {
-          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" NaN in Perigee covariance is detected! Stop fit."<<endreq;
+          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<" NaN in Perigee covariance is detected! Stop fit."<<endmsg;
 	  return false;
        }
        if( fabs(DET) < 1000.*std::numeric_limits<double>::min()) {
-          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Zero Perigee covariance DET is detected! Stop fit."<<endreq;
+          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Zero Perigee covariance DET is detected! Stop fit."<<endmsg;
           return false;
        }
 //std::cout.setf(std::ios::scientific); std::cout<<"VKMINNUMB="<<std::numeric_limits<double>::min()<<", "<<DET<<'\n';
@@ -56,12 +56,12 @@ namespace Trk{
        return true;
  }
  
- void TrkVKalVrtFitter::VKalTransform(double m_BMAG_FIXED,
+ void TrkVKalVrtFitter::VKalTransform(double BMAG_FIXED,
      double A0V,double ZV,double PhiV,double ThetaV,double  PInv,double CovTrk[15],
      long int & Charge, double VTrkPar[5], double VTrkCov[15])
  {
      int i,j,ii,jj;
-     double CnvCst=m_CNVMAG*m_BMAG_FIXED;
+     double CnvCst=m_CNVMAG*BMAG_FIXED;
      double  sinT = sin(ThetaV);
      double  cosT = cos(ThetaV);
  
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitFastSvc.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitFastSvc.cxx
index 160099e1a00be603369630c5a442dffae27de3ef..4dc2330795aad9c8e290dd5a5a0d9a4325197dea 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitFastSvc.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitFastSvc.cxx
@@ -35,7 +35,7 @@ namespace Trk{
 //
 //--- Magnetic field
 //
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     if(m_useMagFieldRotation) return StatusCode::FAILURE;
     if(m_PropagatorType <=1 ){  Trk::myPropagator.setTypeProp(m_PropagatorType);   // needed for reenterability
     }else{                      Trk::myPropagator.setPropagator(m_fitPropagator);} // needed for reenterability
@@ -45,9 +45,9 @@ namespace Trk{
     long int ntrk=0; 
     StatusCode sc = CvtTrkTrack(InpTrk,ntrk);
     if(sc.isFailure() || ntrk<1 ) return StatusCode::FAILURE; 
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(0.,0.,0.,fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.1) m_BMAG_CUR=0.1;
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(0.,0.,0.,fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.1) BMAG_CUR=0.1;
 //
 //------ Variables and arrays needed for fitting kernel
 //
@@ -59,13 +59,13 @@ namespace Trk{
 //
     double xyz0[3]={ -m_refFrameX, -m_refFrameY, -m_refFrameZ};
     if(ntrk==2){	 
-    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&m_BMAG_CUR,out);
-      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, m_BMAG_CUR, out);
+    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&BMAG_CUR,out);
+      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, BMAG_CUR, out);
     } else {
       for( i=0;      i<ntrk-1; i++){
 	 for( j=i+1; j<ntrk;   j++){
-          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&m_BMAG_CUR,out);
-            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, m_BMAG_CUR, out);
+          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&BMAG_CUR,out);
+            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, BMAG_CUR, out);
 	    xx.push_back(out[0]);
 	    yy.push_back(out[1]);
 	    zz.push_back(out[2]);
@@ -102,7 +102,7 @@ namespace Trk{
 //
 //--- Magnetic field
 //
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     if(m_useMagFieldRotation) return StatusCode::FAILURE;
     if(m_PropagatorType <=1 ){    Trk::myPropagator.setTypeProp(m_PropagatorType);    // needed for reenterability
     }else{                        Trk::myPropagator.setPropagator(m_fitPropagator); } // needed for reenterability
@@ -112,9 +112,9 @@ namespace Trk{
     long int ntrk=0; 
     StatusCode sc = CvtTrackParticle(InpTrk,ntrk);
     if(sc.isFailure() || ntrk<1 ) return StatusCode::FAILURE; 
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(0.,0.,0.,fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.1) m_BMAG_CUR=0.1;
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(0.,0.,0.,fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.1) BMAG_CUR=0.1;
 //
 //------ Variables and arrays needed for fitting kernel
 //
@@ -126,13 +126,13 @@ namespace Trk{
 //
     double xyz0[3]={ -m_refFrameX, -m_refFrameY, -m_refFrameZ};
     if(ntrk==2){	 
-    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&m_BMAG_CUR,out);
-      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, m_BMAG_CUR, out);
+    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&BMAG_CUR,out);
+      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, BMAG_CUR, out);
     } else {
       for( i=0;      i<ntrk-1; i++){
 	 for( j=i+1; j<ntrk;   j++){
-          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&m_BMAG_CUR,out);
-            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, m_BMAG_CUR, out);
+          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&BMAG_CUR,out);
+            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, BMAG_CUR, out);
 	    xx.push_back(out[0]);
 	    yy.push_back(out[1]);
 	    zz.push_back(out[2]);
@@ -169,7 +169,7 @@ namespace Trk{
 //
 //--- Magnetic field
 //
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     if(m_useMagFieldRotation) return StatusCode::FAILURE;
     if(m_PropagatorType <=1 ){  Trk::myPropagator.setTypeProp(m_PropagatorType);    // needed for reenterability
     }else{                      Trk::myPropagator.setPropagator(m_fitPropagator); } // needed for reenterability
@@ -179,9 +179,9 @@ namespace Trk{
     long int ntrk=0; 
     StatusCode sc = CvtTrackParticle(InpTrk,ntrk);
     if(sc.isFailure() || ntrk<1 ) return StatusCode::FAILURE; 
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(0.,0.,0.,fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.1) m_BMAG_CUR=0.1;
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(0.,0.,0.,fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.1) BMAG_CUR=0.1;
 //
 //------ Variables and arrays needed for fitting kernel
 //
@@ -193,13 +193,13 @@ namespace Trk{
 //
     double xyz0[3]={ -m_refFrameX, -m_refFrameY, -m_refFrameZ};
     if(ntrk==2){	 
-    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&m_BMAG_CUR,out);
-      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, m_BMAG_CUR, out);
+    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&BMAG_CUR,out);
+      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, BMAG_CUR, out);
     } else {
       for( i=0;      i<ntrk-1; i++){
 	 for( j=i+1; j<ntrk;   j++){
-          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&m_BMAG_CUR,out);
-            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, m_BMAG_CUR, out);
+          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&BMAG_CUR,out);
+            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, BMAG_CUR, out);
 	    xx.push_back(out[0]);
 	    yy.push_back(out[1]);
 	    zz.push_back(out[2]);
@@ -236,7 +236,7 @@ namespace Trk{
 //
 //--- Magnetic field
 //
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     if(m_PropagatorType <=1 ){  Trk::myPropagator.setTypeProp(m_PropagatorType);     // needed for reenterability
     }else{                      Trk::myPropagator.setPropagator(m_fitPropagator); }  // needed for reenterability
 //
@@ -245,9 +245,9 @@ namespace Trk{
     long int ntrk=0; 
     StatusCode sc = CvtTrackParameters(InpTrk,ntrk);
     if(sc.isFailure() || ntrk<1 ) return StatusCode::FAILURE; 
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(0.,0.,0.,fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.1) m_BMAG_CUR=0.1;
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(0.,0.,0.,fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.1) BMAG_CUR=0.1;
 //
 //------ Variables and arrays needed for fitting kernel
 //
@@ -259,13 +259,13 @@ namespace Trk{
 //
     double xyz0[3]={ -m_refFrameX, -m_refFrameY, -m_refFrameZ};
     if(ntrk==2){	 
-    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&m_BMAG_CUR,out);
-      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, m_BMAG_CUR, out);
+    //Trk::vkvfast_(&m_apar[0][0],&m_apar[1][0],&BMAG_CUR,out);
+      Trk::vkvFastV(&m_apar[0][0],&m_apar[1][0], xyz0, BMAG_CUR, out);
     } else {
       for( i=0;      i<ntrk-1; i++){
 	 for( j=i+1; j<ntrk;   j++){
-          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&m_BMAG_CUR,out);
-            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, m_BMAG_CUR, out);
+          //Trk::vkvfast_(&m_apar[i][0],&m_apar[j][0],&BMAG_CUR,out);
+            Trk::vkvFastV(&m_apar[i][0],&m_apar[j][0], xyz0, BMAG_CUR, out);
 	    xx.push_back(out[0]);
 	    yy.push_back(out[1]);
 	    zz.push_back(out[2]);
diff --git a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitSvc.cxx b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitSvc.cxx
index a1902ce1850d71cf25ae7887f83f3fe4437d0290..222adb34961eb3ba5674dc307819880027477f65 100755
--- a/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitSvc.cxx
+++ b/Tracking/TrkVertexFitter/TrkVKalVrtFitter/src/VKalVrtFitSvc.cxx
@@ -56,7 +56,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const Track*>& InpTrk,
 //
 //------  extract information about selected tracks
 //
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -86,7 +86,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const xAOD::TrackParti
         std::vector< std::vector<double> >& TrkAtVrt,
 	double& Chi2 ) 
 {
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -105,7 +105,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const xAOD::TrackParti
        if(InpTrkC.size()){
           if( m_InDetExtrapolator == 0 && m_PropagatorType != 3 ){
             if(msgLvl(MSG::WARNING))msg()<< "No InDet extrapolator given."<<
-	                                 "Can't use FirstMeasuredPoint with xAOD::TrackParticle!!!" << endreq;
+	                                 "Can't use FirstMeasuredPoint with xAOD::TrackParticle!!!" << endmsg;
             return StatusCode::FAILURE;        
           }
           std::vector<const xAOD::TrackParticle*>::const_iterator     i_ntrk;
@@ -122,7 +122,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const xAOD::TrackParti
               if( (*i_ntrk)->radiusOfFirstHit() < closestHitR ) closestHitR=(*i_ntrk)->radiusOfFirstHit();
               if(tmpInputC[tmpInputC.size()-1]==0){  //Extrapolation failure 
               if(msgLvl(MSG::WARNING))msg()<< "InDetExtrapolator can't etrapolate xAOD::TrackParticle Perigee "<<
-                                              "to FirstMeasuredPoint radius! Stop vertex fit!" << endreq;
+                                              "to FirstMeasuredPoint radius! Stop vertex fit!" << endmsg;
                 for(unsigned int i=0; i<tmpInputC.size()-1; i++) delete tmpInputC[i]; 
                 return StatusCode::FAILURE;
 	      }
@@ -156,7 +156,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const xAOD::TrackParti
        }
        //------------
        if(Vertex.perp()>cnstRefPoint.perp() && cnstRefPoint.perp()>0.){
-          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Vertex behind first measured point is detected. Constraint is applied!"<<endreq;
+          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Vertex behind first measured point is detected. Constraint is applied!"<<endmsg;
           m_planeCnstNDOF = 1;   // Additional NDOF due to plane constraint
           double pp[3]={Momentum.Px()/Momentum.Rho(),Momentum.Py()/Momentum.Rho(),Momentum.Pz()/Momentum.Rho()};
           double D= pp[0]*(cnstRefPoint.x()-m_refFrameX)
@@ -195,7 +195,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const TrackParticleBas
         std::vector< std::vector<double> >& TrkAtVrt,
 	double& Chi2 ) 
 {
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -236,7 +236,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const TrackParameters*
         std::vector< std::vector<double> >& TrkAtVrt,
 	double& Chi2 ) 
 {
-    if(!isFieldInitialized)setInitializedField();  //to allow callback for init
+    if(!m_isFieldInitialized)setInitializedField();  //to allow callback for init
     Trk::myMagFld.setMagHandler(m_fitField);             // needed for reenterability
     if(m_PropagatorType <=1 ){                           // needed for reenterability
        Trk::myPropagator.setTypeProp(m_PropagatorType);  // needed for reenterability
@@ -271,7 +271,7 @@ StatusCode TrkVKalVrtFitter::VKalVrtFit(const std::vector<const TrackParameters*
     m_planeCnstNDOF = 0;
     if(m_globalFirstHit && m_firstMeasuredPointLimit && !ierr){
        if(Vertex.perp()>m_globalFirstHit->position().perp()){
-          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Vertex behind first measured point is detected. Constraint is applied!"<<endreq;
+          if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG)<<"Vertex behind first measured point is detected. Constraint is applied!"<<endmsg;
           m_planeCnstNDOF = 1;   // Additional NDOF due to plane constraint
           double pp[3]={Momentum.Px()/Momentum.Rho(),Momentum.Py()/Momentum.Rho(),Momentum.Pz()/Momentum.Rho()};
           double D= pp[0]*(m_globalFirstHit->position().x()-m_refFrameX)
@@ -344,7 +344,8 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 //------  Fit itself
 //
     m_FitStatus=0;
-    if(m_ErrMtx)delete[] m_ErrMtx; m_ErrMtx=0;              //delete previous array is exist
+    if(m_ErrMtx)delete[] m_ErrMtx;              //delete previous array is exist
+    m_ErrMtx=0;
     if(m_ApproximateVertex.size()==3 && fabs(m_ApproximateVertex[2])<m_IDsizeZ &&
          sqrt(m_ApproximateVertex[0]*m_ApproximateVertex[0]+m_ApproximateVertex[1]*m_ApproximateVertex[1])<m_IDsizeR)
     {
@@ -365,7 +366,7 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
                     m_ich, xyz0, &m_par0[0][0], &m_apar[0][0], &m_awgt[0][0],
                     xyzfit, &m_parfs[0][0], ptot, covf, &chi2f, m_chi2tr); 
 
-    if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "VKalVrt fit status="<<ierr<<" Chi2="<<chi2f<<endreq;
+    if(msgLvl(MSG::DEBUG))msg(MSG::DEBUG) << "VKalVrt fit status="<<ierr<<" Chi2="<<chi2f<<endmsg;
 
     Chi2 = 100000000.;
     if(ierr){
@@ -406,16 +407,16 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 //
 // ------  Magnetic field in fitted vertex
 //
-    double fx,fy,fz,m_BMAG_CUR;
+    double fx,fy,fz,BMAG_CUR;
     m_fitField->getMagFld(xyzfit[0] ,xyzfit[1] ,xyzfit[2] ,fx,fy,fz); 
-    m_BMAG_CUR=fz;
-    if(m_useMagFieldRotation) m_BMAG_CUR=sqrt(fx*fx+fy*fy+fz*fz);
-    if(fabs(m_BMAG_CUR) < 0.01) m_BMAG_CUR=0.01;  // Safety
+    BMAG_CUR=fz;
+    if(m_useMagFieldRotation) BMAG_CUR=sqrt(fx*fx+fy*fy+fz*fz);
+    if(fabs(BMAG_CUR) < 0.01) BMAG_CUR=0.01;  // Safety
 
 
     double Px,Py,Pz,Ee,Pt; double pmom[4]; pmom[0]=pmom[1]=pmom[2]=pmom[3]=0;
     for ( i=0; i<ntrk; i++){
-      Pt = m_CNVMAG*m_BMAG_CUR/fabs( m_parfs[i][2]);
+      Pt = m_CNVMAG*BMAG_CUR/fabs( m_parfs[i][2]);
       Px = Pt*cos(m_parfs[i][1]);
       Py = Pt*sin(m_parfs[i][1]);
       Pz = Pt/tan(m_parfs[i][0]);
@@ -425,7 +426,7 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 	double npp=sqrt(Px*Px+Py*Py+Pz*Pz);
 	m_parfs[i][0]= acos( Pz/npp);
 	m_parfs[i][1]=atan2( Py, Px);
-	m_parfs[i][2]=m_CNVMAG*m_BMAG_CUR/npt;
+	m_parfs[i][2]=m_CNVMAG*BMAG_CUR/npt;
       }
       Ee = sqrt(Px*Px+Py*Py+Pz*Pz+m_wm[i]*m_wm[i]);
       pmom[0] += Px; pmom[1] += Py; pmom[2] += Pz; pmom[3] += Ee;
@@ -443,7 +444,7 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 //  std::cout<<" Pmom="<<pmom[0]<<", "<<pmom[1]<<", "<<pmom[2]<<", "<<pmom[3]<<'\n';
 //  std::cout<<" Ptot="<<ptot[0]<<", "<<ptot[1]<<", "<<ptot[2]<<", "<<ptot[3]<<'\n';
 //  std::cout<<" Vertex="<<Vertex.x()<<", "<<Vertex.y()<<", "<<Vertex.z()
-//           <<" LocalMag="<<m_BMAG_CUR<<" Chi2="<<Chi2<<" Mass="<<Momentum.m()<<'\n';
+//           <<" LocalMag="<<BMAG_CUR<<" Chi2="<<Chi2<<" Mass="<<Momentum.m()<<'\n';
 
 
     Chi2PerTrk.clear(); Chi2PerTrk.reserve(ntrk);
@@ -452,7 +453,7 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
     TrkAtVrt.clear(); TrkAtVrt.reserve(ntrk);
     for(i=0; i<ntrk; i++){
       std::vector<double> TrkPar(3);
-      VKalToTrkTrack(m_BMAG_CUR,(double)m_parfs[i][0],(double)m_parfs[i][1],(double) m_parfs[i][2],
+      VKalToTrkTrack(BMAG_CUR,(double)m_parfs[i][0],(double)m_parfs[i][1],(double) m_parfs[i][2],
                       TrkPar[0],TrkPar[1],TrkPar[2]);
       TrkPar[2] = -TrkPar[2];        // Change of sign needed
       TrkAtVrt.push_back( TrkPar );
@@ -544,9 +545,9 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 //
 // ------  Magnetic field access
 //
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(m_save_xyzfit[0],m_save_xyzfit[1],m_save_xyzfit[2],fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.01) m_BMAG_CUR=0.01;  // Safety
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(m_save_xyzfit[0],m_save_xyzfit[1],m_save_xyzfit[2],fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.01) BMAG_CUR=0.01;  // Safety
 //
 // ------- Base code
 //
@@ -597,7 +598,7 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
     double Theta=m_parfs[iTrk-1][0];
     double Phi  =m_parfs[iTrk-1][1];
     double invR =m_parfs[iTrk-1][2];
-    double pt=(m_CNVMAG*m_BMAG_CUR)/fabs(invR);
+    double pt=(m_CNVMAG*BMAG_CUR)/fabs(invR);
     double px=pt*cos(Phi);
     double py=pt*sin(Phi);
     double pz=pt/tan(Theta);
@@ -671,14 +672,14 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
   {
     if(!m_FitStatus)       return StatusCode::FAILURE;
     if(NTrk<1)             return StatusCode::FAILURE;
-    if(NTrk>m_NTrMaxVFit)  return StatusCode::FAILURE;
+    if(NTrk>NTrMaxVFit)    return StatusCode::FAILURE;
     if(!m_ErrMtx)    return StatusCode::FAILURE; //Now error matrix is taken from CORE in VKalVrtFit3.
 //
 // ------  Magnetic field access
 //
-    double fx,fy,m_BMAG_CUR;
-    m_fitField->getMagFld(m_save_xyzfit[0],m_save_xyzfit[1],m_save_xyzfit[2],fx,fy,m_BMAG_CUR);
-    if(fabs(m_BMAG_CUR) < 0.01) m_BMAG_CUR=0.01;  // Safety
+    double fx,fy,BMAG_CUR;
+    m_fitField->getMagFld(m_save_xyzfit[0],m_save_xyzfit[1],m_save_xyzfit[2],fx,fy,BMAG_CUR);
+    if(fabs(BMAG_CUR) < 0.01) BMAG_CUR=0.01;  // Safety
 //
 // ------ Base code
 //
@@ -736,10 +737,10 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
       if( useMom == 0 ){
         Deriv[iSt  ][iSt+1] =   1;                                             //    Phi <-> Theta
         Deriv[iSt+1][iSt  ] =   1;                                             //    Phi <-> Theta
-        Deriv[iSt+2][iSt  ] = -(cos(Theta)/(m_CNVMAG*m_BMAG_CUR)) * invR ;     //    d1/p  / dTheta
-        Deriv[iSt+2][iSt+2] = -(sin(Theta)/(m_CNVMAG*m_BMAG_CUR))  ;           //    d1/p  / d1/R
+        Deriv[iSt+2][iSt  ] = -(cos(Theta)/(m_CNVMAG*BMAG_CUR)) * invR ;     //    d1/p  / dTheta
+        Deriv[iSt+2][iSt+2] = -(sin(Theta)/(m_CNVMAG*BMAG_CUR))  ;           //    d1/p  / d1/R
       }else{
-        double pt=(m_CNVMAG*m_BMAG_CUR)/fabs(invR);
+        double pt=(m_CNVMAG*BMAG_CUR)/fabs(invR);
         double px=pt*cos(Phi);
         double py=pt*sin(Phi);
         double pz=pt/tan(Theta);
@@ -778,7 +779,8 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
 //                      CovVrtTrk[9] <<", "<<CovVrtTrk[14]<<", "<<CovVrtTrk[20]<<", "<<
 //                      CovVrtTrk[27]<<", "<<CovVrtTrk[35]<<", "<<CovVrtTrk[44]<<'\n';
 
-    for(i=0; i<DIM; i++) delete[]Deriv[i];     delete[]Deriv;
+    for(i=0; i<DIM; i++) delete[]Deriv[i];
+    delete[]Deriv;
     delete[]CovMtxOld;
     //m_timingProfile->chronoStop("Trk_CovMatrix");
     return StatusCode::SUCCESS;
@@ -794,8 +796,8 @@ long int TrkVKalVrtFitter::VKalVrtFit3( long int ntrk,
     if(!m_FitStatus) return StatusCode::FAILURE;
     if((int) ListOfTracks.size() != m_FitStatus) return StatusCode::FAILURE;
 
-    double Deriv[ 3*m_NTrMaxVFit+3 ] = {0.};
-    long int Tist[m_NTrMaxVFit+1] = {0};
+    double Deriv[ 3*NTrMaxVFit+3 ] = {0.};
+    long int Tist[NTrMaxVFit+1] = {0};
  
     for (int i=0; i<(int)ListOfTracks.size();i++){
        Tist[i]=0;
diff --git a/Trigger/TrigT1/TrigT1CaloUtils/src/components/TrigT1CaloUtils_load.cxx b/Trigger/TrigT1/TrigT1CaloUtils/src/components/TrigT1CaloUtils_load.cxx
old mode 100644
new mode 100755