diff --git a/LArCalorimeter/LArTrackingGeometry/src/LArVolumeBuilder.cxx b/LArCalorimeter/LArTrackingGeometry/src/LArVolumeBuilder.cxx
index dc65355f37ce18a9a262662a687529871a088e01..b452aca949de1d0fb438577d86ba0088fd4e8fdc 100755
--- a/LArCalorimeter/LArTrackingGeometry/src/LArVolumeBuilder.cxx
+++ b/LArCalorimeter/LArTrackingGeometry/src/LArVolumeBuilder.cxx
@@ -292,28 +292,28 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
     // layer entry/exit    
 
     // binned material for LAr : steering in binEta
-    std::vector<const Trk::IdentifiedMaterial*> matID;
+    std::vector<Trk::IdentifiedMaterial> matID;
     // layer material can be adjusted here
     int baseID = Trk::GeometrySignature(Trk::Calo)*1000;
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial,0));
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial,baseID+1));
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial,baseID+2));
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial,baseID+3));
+    matID.emplace_back(lArBarrelMaterial,0);
+    matID.emplace_back(lArBarrelMaterial,baseID+1);
+    matID.emplace_back(lArBarrelMaterial,baseID+2);
+    matID.emplace_back(lArBarrelMaterial,baseID+3);
     // scaling factors refer to avZ(avA) change
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(1.3),baseID+1));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(1.3),baseID+2));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(0.6),baseID+3));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(0.7),baseID+3));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(0.8),baseID+3));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(0.9),baseID+3));
-    throwIntoGarbage(matID.back()->first);
-    matID.push_back(new std::pair<const Trk::Material*,int>(lArBarrelMaterial->scale(1.1),baseID+3));
-    throwIntoGarbage(matID.back()->first);
+    matID.emplace_back(lArBarrelMaterial->scale(1.3),baseID+1);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(1.3),baseID+2);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(0.6),baseID+3);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(0.7),baseID+3);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(0.8),baseID+3);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(0.9),baseID+3);
+    throwIntoGarbage(matID.back().first);
+    matID.emplace_back(lArBarrelMaterial->scale(1.1),baseID+3);
+    throwIntoGarbage(matID.back().first);
 
     //std::cout <<"matID:"<< matID[3]->second<< std::endl;
     //
@@ -536,10 +536,10 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
 
     std::vector<size_t> dummylay (1,0);
     // binned material for Presampler : 
-    std::vector<const Trk::IdentifiedMaterial*> matBP;
+    std::vector<Trk::IdentifiedMaterial> matBP;
     // layer material can be adjusted here
     int baseID = Trk::GeometrySignature(Trk::Calo)*1000;
-    matBP.push_back(new Trk::IdentifiedMaterial(lArBarrelPresamplerMaterial,baseID));
+    matBP.emplace_back(lArBarrelPresamplerMaterial,baseID);
 
     const Trk::BinnedMaterial* lArBarrelPresamplerMaterialBinPos = new Trk::BinnedMaterial(lArBarrelPresamplerMaterial,rBU,dummylay,matBP);
     const Trk::BinnedMaterial* lArBarrelPresamplerMaterialBinNeg = new Trk::BinnedMaterial(lArBarrelPresamplerMaterial,rBUc,dummylay,matBP);
@@ -748,68 +748,68 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
     Trk::BinUtility* bun = new Trk::BinUtility(37,-3.2,-1.35,Trk::open,Trk::binEta);
 
     // binned material for LAr : steering in binEta
-    std::vector<const Trk::IdentifiedMaterial*> matEID;
+    std::vector<Trk::IdentifiedMaterial> matEID;
     // layer material can be adjusted here
     int baseID = Trk::GeometrySignature(Trk::Calo)*1000 + 4;
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial,0));
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial,baseID+1));
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial,baseID+2));
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial,baseID+3));
+    matEID.emplace_back(lArEndcapMaterial,0);
+    matEID.emplace_back(lArEndcapMaterial,baseID+1);
+    matEID.emplace_back(lArEndcapMaterial,baseID+2);
+    matEID.emplace_back(lArEndcapMaterial,baseID+3);
     // scaled
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.05),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.1),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.15),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.2),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.25),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.3),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.35),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.4),baseID+1));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.05),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.1),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.15),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.2),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.25),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.3),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.35),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.4),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.45),baseID+2));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.7),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.75),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.8),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.85),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.9),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(0.95),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.05),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.1),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.15),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
-    matEID.push_back(new std::pair<const Trk::Material*,int>(lArEndcapMaterial->scale(1.2),baseID+3));
-    throwIntoGarbage(matEID.back()->first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.05),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.1),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.15),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.2),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.25),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.3),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.35),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.4),baseID+1);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.05),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.1),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.15),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.2),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.25),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.3),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.35),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.4),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.45),baseID+2);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.7),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.75),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.8),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.85),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.9),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(0.95),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.05),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.1),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.15),baseID+3);
+    throwIntoGarbage(matEID.back().first);
+    matEID.emplace_back(lArEndcapMaterial->scale(1.2),baseID+3);
+    throwIntoGarbage(matEID.back().first);
 
     // binned material for LAr : layer depth per eta bin
     std::vector< Trk::BinUtility*> layEUP(bup->bins());
@@ -963,7 +963,7 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
   const GeoLogVol* lArECPresamplerLogVol = lArECPresamplerPhysVol ? lArECPresamplerPhysVol->getLogVol() : 0;
 
   // binned material for EC Presampler : layers only
-   std::vector<const Trk::IdentifiedMaterial*> matECP;
+   std::vector<Trk::IdentifiedMaterial> matECP;
    const Trk::Material* mAr = new Trk::Material(140., 1170./1.4, 40., 18., 0.0014);
    const Trk::Material* mAl = new Trk::Material(88.93, 388.8, 27., 13., 0.0027);
    throwIntoGarbage(mAr);
@@ -971,8 +971,8 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
 
    // layer material can be adjusted here
    int baseID = Trk::GeometrySignature(Trk::Calo)*1000 + 4;
-   matECP.push_back(new std::pair<const Trk::Material*,int>(mAl,0));
-   matECP.push_back(new std::pair<const Trk::Material*,int>(mAr,baseID));
+   matECP.emplace_back(mAl,0);
+   matECP.emplace_back(mAr,baseID);
 
   if (  lArECPresamplerLogVol ) {
   
@@ -1441,7 +1441,7 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
    lArFcalZposition = hecFcalCoverZpos;
 
    // binned material for HEC : layers only
-   std::vector<const Trk::IdentifiedMaterial*> matHEC;
+   std::vector<Trk::IdentifiedMaterial> matHEC;
    //Trk::MaterialProperties lArHecFcalCoverMaterial = geoMaterialToMaterialProperties.convert(lArPositiveHec1Material);
    //Trk::MaterialProperties lArHecFcalCoverMaterial = Trk::MaterialProperties(1., 18.6, 0.00345, 27.);
    const Trk::Material* lArHecFcalCoverMaterial=new Trk::Material(18.4, 201.9, 57.2, 26.1, 0.0071);
@@ -1451,14 +1451,16 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
 
    // layer material can be adjusted here
    baseID = Trk::GeometrySignature(Trk::Calo)*1000 + 8;
-   matHEC.push_back(new std::pair<const Trk::Material*,int>(lArHecFcalCoverMaterial->scale(0.13*m_scale_HECmaterial),0));
-   matHEC.push_back(new std::pair<const Trk::Material*,int>(lArHecMaterial->scale(m_scale_HECmaterial),baseID));
-   matHEC.push_back(new std::pair<const Trk::Material*,int>(lArHecFcalCoverMaterial->scale(0.93*m_scale_HECmaterial),baseID+1));
-   throwIntoGarbage(matHEC.back()->first);
-   matHEC.push_back(new std::pair<const Trk::Material*,int>(lArHecFcalCoverMaterial->scale(1.09*m_scale_HECmaterial),baseID+2));
-   throwIntoGarbage(matHEC.back()->first);
-   matHEC.push_back(new std::pair<const Trk::Material*,int>(lArHecFcalCoverMaterial->scale(1.12*m_scale_HECmaterial),baseID+3));
-   throwIntoGarbage(matHEC.back()->first);
+   matHEC.emplace_back(lArHecFcalCoverMaterial->scale(0.13*m_scale_HECmaterial),0);
+   throwIntoGarbage(matHEC.back().first);
+   matHEC.emplace_back(lArHecMaterial->scale(m_scale_HECmaterial),baseID);
+   throwIntoGarbage(matHEC.back().first);
+   matHEC.emplace_back(lArHecFcalCoverMaterial->scale(0.93*m_scale_HECmaterial),baseID+1);
+   throwIntoGarbage(matHEC.back().first);
+   matHEC.emplace_back(lArHecFcalCoverMaterial->scale(1.09*m_scale_HECmaterial),baseID+2);
+   throwIntoGarbage(matHEC.back().first);
+   matHEC.emplace_back(lArHecFcalCoverMaterial->scale(1.12*m_scale_HECmaterial),baseID+3);
+   throwIntoGarbage(matHEC.back().first);
 
    // divide the HEC into two parts per EC :
    // -  fit one around the FCAL - and adopt to LAr Endcap outer radius
@@ -1600,7 +1602,7 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
    
    // Now the FCAL
    // binned material for FCAL : layers only
-   std::vector<const Trk::IdentifiedMaterial*> matFCAL;
+   std::vector<Trk::IdentifiedMaterial> matFCAL;
    // convert the Material 
    //Trk::MaterialProperties lArFcalMaterial = geoMaterialToMaterialProperties.convert(lArPositiveEndcapMaterial);
    const Trk::Material* lArFcalMaterial =new Trk::Material(8.4, 175.5, 100.8, 42.1, 0.0097);
@@ -1610,13 +1612,13 @@ const std::vector<const Trk::TrackingVolume*>* LAr::LArVolumeBuilder::trackingVo
 
    // layer material can be adjusted here
    baseID = Trk::GeometrySignature(Trk::Calo)*1000 + 20;
-   matFCAL.push_back(new std::pair<const Trk::Material*,int>(lArFcalMaterial0,0));
-   matFCAL.push_back(new std::pair<const Trk::Material*,int>(lArFcalMaterial->scale(0.5),baseID+1));
-   throwIntoGarbage(matFCAL.back()->first);
-   matFCAL.push_back(new std::pair<const Trk::Material*,int>(lArFcalMaterial->scale(1.5),baseID+2));
-   throwIntoGarbage(matFCAL.back()->first);
-   matFCAL.push_back(new std::pair<const Trk::Material*,int>(lArFcalMaterial->scale(1.4),baseID+3));
-   throwIntoGarbage(matFCAL.back()->first);
+   matFCAL.emplace_back(lArFcalMaterial0,0);
+   matFCAL.emplace_back(lArFcalMaterial->scale(0.5),baseID+1);
+   throwIntoGarbage(matFCAL.back().first);
+   matFCAL.emplace_back(lArFcalMaterial->scale(1.5),baseID+2);
+   throwIntoGarbage(matFCAL.back().first);
+   matFCAL.emplace_back(lArFcalMaterial->scale(1.4),baseID+3);
+   throwIntoGarbage(matFCAL.back().first);
 
    // smooth the FCal to Tube form
    if (lArPositiveFcal1Bounds && lArPositiveFcal2Bounds && lArPositiveFcal3Bounds &&