From 9e9f084fea025ee2bf7f0a3b3fdbd17fea217013 Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Thu, 17 Dec 2020 00:45:26 +0100 Subject: [PATCH] MuonGeoModel: Fix memory leaks. Fix a couple leaks of GeoModel objects. --- MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx b/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx index 514e8861de3..aac677b7584 100755 --- a/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx @@ -321,6 +321,7 @@ GeoFullPhysVol* MultiLayer::build() double tL = longWidth/2.0 - (tubePitch/2.)*TrdDwoverL; stube = new GeoTube(0.0, tubePitch/2., tL); stube = & ( (*stube) << GeoTrf::RotateX3D(90.*Gaudi::Units::deg) ); + stube->ref(); const GeoShape* stubewithcut = nullptr; if (cutoutNsteps > 1 && !m_nonCutoutXSteps.size()) { // adaption of tube cuts only needed for cutouts along amdb-y double toptubelength = cutoutTubeLength[cutoutNsteps-1]; @@ -331,8 +332,6 @@ GeoFullPhysVol* MultiLayer::build() GeoShape* sbox = new GeoTrd(mdtthickness, mdtthickness, longWidth, longWidth, tubePitch/2.); - GeoShape* sboxf = new GeoTrd(mdtthickness, mdtthickness, longWidth, - longWidth, tubePitch/4.+1*Gaudi::Units::mm); slay = &(slay->subtract( (*sbox)<<GeoTrf::Translate3D(0.,0.,length/2.))); for (int i = 0; i < nrOfLayers; i++) { @@ -371,6 +370,8 @@ GeoFullPhysVol* MultiLayer::build() } } // Loop over layers + stube->unref(); + const GeoMaterial* mlay = getMaterialManager()->getMaterial("std::Air"); GeoLogVol* llay = new GeoLogVol(logVolName, slay, mlay); GeoFullPhysVol* play = new GeoFullPhysVol(llay); @@ -389,6 +390,8 @@ GeoFullPhysVol* MultiLayer::build() sfoam = new GeoTrd(foamthicknesslow/2.-eps, foamthicknesslow/2.-eps, width/2.-eps, longWidth/2.-eps, length/2.); } + GeoShape* sboxf = new GeoTrd(mdtthickness, mdtthickness, longWidth, + longWidth, tubePitch/4.+1*Gaudi::Units::mm); sfoam = &(sfoam->subtract( (*sboxf)<<GeoTrf::Translate3D(0.,0.,length/2.-tubePitch/4.))); mfoam = getMaterialManager()->getMaterial("muo::Foam"); lfoam = new GeoLogVol("MultiLayerFoam", sfoam, mfoam); @@ -401,6 +404,8 @@ GeoFullPhysVol* MultiLayer::build() sfoam = new GeoTrd(foamthicknessup/2.-eps, foamthicknessup/2.-eps, width/2.-eps, longWidth/2.-eps, length/2.); } + GeoShape* sboxf = new GeoTrd(mdtthickness, mdtthickness, longWidth, + longWidth, tubePitch/4.+1*Gaudi::Units::mm); sfoam = &(sfoam->subtract( (*sboxf)<<GeoTrf::Translate3D(0.,0.,length/2.-tubePitch/4.))); mfoam = getMaterialManager()->getMaterial("muo::Foam"); lfoam = new GeoLogVol("MultiLayerFoam", sfoam, mfoam); -- GitLab