From 23ae07c911e0a3fdc0197d13edeb458b49804c8d Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Mon, 4 Dec 2017 19:53:33 +0100
Subject: [PATCH] Add GDML import and export functionality

---
 DDCore/src/gdml/GdmlPlugins.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/DDCore/src/gdml/GdmlPlugins.cpp b/DDCore/src/gdml/GdmlPlugins.cpp
index 00b719f0f..354236fb5 100644
--- a/DDCore/src/gdml/GdmlPlugins.cpp
+++ b/DDCore/src/gdml/GdmlPlugins.cpp
@@ -25,11 +25,12 @@
 #include "TGeoManager.h"
 #include "TGDMLParse.h"
 #include "TGDMLWrite.h"
+#include "TUri.h"
 
 using namespace std;
 using namespace dd4hep;
 
-#ifdef ROOT_VERSION_CODE >= ROOT_VERSION(6,13,1)
+#if ROOT_VERSION_CODE >= ROOT_VERSION(6,13,1)
 
 /// ROOT GDML reader plugin
 /**
@@ -77,6 +78,8 @@ static long gdml_parse(Detector& description, int argc, char** argv) {
         Volume mother = (parent==world) ? description.pickMotherVolume(child) : parent.volume();
         if ( i == elements.size()-1 )  {
           TGDMLParse parser;
+          TUri uri(input.c_str());
+          input = uri.GetRelativePart();
           Volume vol = parser.GDMLReadFile(input.c_str());
           if ( vol.isValid() )   {
             vol.import(); // We require the extensions in dd4hep.
@@ -137,8 +140,9 @@ static long gdml_extract(Detector& description, int argc, char** argv) {
     DetElement detector = detail::tools::findElement(description,path);
     if ( detector.isValid() )   {
       TGDMLWrite extract;
+      TUri uri(output.c_str());
       Volume volume = detector.volume();
-      extract.WriteGDMLfile(&description.manager(), volume.ptr(), output.c_str());
+      extract.WriteGDMLfile(&description.manager(), volume.ptr(), uri.GetRelativePart());
       return 1;
     }
     except("ROOTGDMLExtract","+++ Invalid DetElement path given: %s", path.c_str());
-- 
GitLab