diff --git a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakeShapeShift.cxx b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakeShapeShift.cxx index 137e2568fffb0b374d3bb469d4ae933284d7dc2a..e752b1c48d03581146b304a376928571d8a9fd9e 100644 --- a/GeoModelTools/GeoModelXML/GeoModelXml/src/MakeShapeShift.cxx +++ b/GeoModelTools/GeoModelXML/GeoModelXml/src/MakeShapeShift.cxx @@ -40,8 +40,8 @@ GeoIntrusivePtr<RCBase> MakeShapeShift::make(const xercesc::DOMElement *element, std::string nodeName{toRelease}; XMLString::release(&toRelease); const GeoTransform *geoXf = (nodeName == "transformation") - ? static_cast<const GeoTransform *>( gmxUtil.tagHandler.transformation.process(dynamic_cast<DOMElement *>(child), gmxUtil)) - : static_cast<const GeoTransform *>( gmxUtil.tagHandler.transformationref.process(dynamic_cast<DOMElement *>(child), gmxUtil)); + ? dynamic_pointer_cast<const GeoTransform>( gmxUtil.tagHandler.transformation.process(dynamic_cast<DOMElement *>(child), gmxUtil)) + : dynamic_pointer_cast<const GeoTransform>( gmxUtil.tagHandler.transformationref.process(dynamic_cast<DOMElement *>(child), gmxUtil)); hepXf = geoXf->getTransform(); break; } default: // More than 3 elements?