diff --git a/DDCore/include/DD4hep/Plugins.h b/DDCore/include/DD4hep/Plugins.h
index cd17f528a516524d1b18814a8af75590374044ac..918f27c92576e582ca2417536faf32237611b5a6 100644
--- a/DDCore/include/DD4hep/Plugins.h
+++ b/DDCore/include/DD4hep/Plugins.h
@@ -22,11 +22,21 @@
 #include <vector>
 #include <typeinfo>
 
+#ifdef DD4HEP_HAVE_PLUGINSVC_V2
+#if __cplusplus >= 201703
+#  include <any>
+#else
+#  include <boost/any.hpp>
+namespace std {
+  using boost::any;
+  using boost::any_cast;
+  using boost::bad_any_cast;
+} // namespace std
+#endif
+#endif
+
 #ifndef DD4HEP_PARSERS_NO_ROOT
 #include "RVersion.h"
-#if ROOT_VERSION_CODE < ROOT_VERSION(6,0,0)
-#define DD4HEP_ROOT_VERSION_5 1
-#endif
 #endif
 
 /// Namespace for the AIDA detector description toolkit
@@ -76,6 +86,24 @@ namespace dd4hep {
   class PluginService  {
   private:
   public:
+#ifdef DD4HEP_HAVE_PLUGINSVC_V2
+    typedef std::any stub_t;
+    template <typename R, typename... Args> static R Create(const std::string& id, Args... args)  {
+      typedef R(*func)(Args...);
+      std::any f;
+      try   {
+        f = getCreator(id,typeid(R(Args...)));
+        return std::any_cast<func>(f)(std::forward<Args>(args)...);
+      }
+      catch(const std::bad_any_cast& e)   {
+        print_bad_cast(id, f, typeid(R(Args...)), e.what());
+      }
+      return 0;
+    }
+    template <typename FUNCTION> static std::any function(FUNCTION func)  {
+      return std::any(func);
+    }
+#else
     typedef void* stub_t;
 
     template <typename FUNCTION> struct FuncPointer {
@@ -89,45 +117,25 @@ namespace dd4hep {
       FuncPointer& operator=(const FuncPointer& copy)  { 
         fptr.ptr = copy.fptr.ptr; return *this;
       }
+      FuncPointer(FuncPointer&& _c) = delete;
+      FuncPointer& operator=(FuncPointer&& copy) = delete;
     };
-    template <typename FUNCTION> static FuncPointer<FUNCTION> function(FUNCTION func)  {
-      return FuncPointer<FUNCTION>(func);
-    }
-
-    static bool debug();
-    static bool setDebug(bool new_value);
-
-    static void* getCreator(const std::string& id, const std::type_info& info);
-    static void  addFactory(const std::string& id, stub_t func,
-                            const std::type_info& signature_type,
-                            const std::type_info& return_type);
-
-#if defined(DD4HEP_ROOT_VERSION_5)
-    template <typename R> static R Create(const std::string& name);
-
-    template <typename R, typename A0>
-    static R Create(const std::string& name,A0 a0);
-
-    template <typename R, typename A0, typename A1>
-    static R Create(const std::string& name, A0 a0, A1 a1);
-
-    template <typename R, typename A0, typename A1, typename A2>
-    static R Create(const std::string& name, A0 a0, A1 a1, A2 a2);
-
-    template <typename R, typename A0, typename A1, typename A2, typename A3>
-    static R Create(const std::string& name, A0 a0, A1 a1, A2 a2, A3 a3);
-
-    template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4>
-    static R Create(const std::string& name, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4);
-
-    template <typename R, typename A0, typename A1, typename A2, typename A3, typename A4, typename A5>
-    static R Create(const std::string& name, A0 a0, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
-#else
     template <typename R, typename... Args> static R Create(const std::string& id, Args... args)  {
       FuncPointer<R(*)(Args...)> f(getCreator(id,typeid(R(Args...))));
       return f.fptr.ptr ? (*f.fptr.fcn)(std::forward<Args>(args)...) : 0;
     }
+    template <typename FUNCTION> static FuncPointer<FUNCTION> function(FUNCTION func)  {
+      return FuncPointer<FUNCTION>(func);
+    }
 #endif
+    static bool debug();
+    static bool setDebug(bool new_value);
+    static stub_t getCreator(const std::string& id, const std::type_info& info);
+    static void   addFactory(const std::string& id,
+                             stub_t&& func,
+                             const std::type_info& signature_type,
+                             const std::type_info& return_type);
+    static void print_bad_cast(const std::string& id, const stub_t& stub, const std::type_info& signature, const char* msg);
   };
 
   /// Factory template for the plugin mechanism
@@ -135,14 +143,9 @@ namespace dd4hep {
   public:
     typedef PluginService svc_t;
     typedef SIGNATURE signature_t;
-#if defined(DD4HEP_ROOT_VERSION_5)
-    typedef void (*stub_t)(void *retaddr, void*, const std::vector<void*>& arg, void*);
-    static void add(const char* name, stub_t stub);
-#else
     template <typename R, typename... Args>  static void add(const std::string& id, R(*func)(Args...))  {
-      svc_t::addFactory(id,svc_t::function(func).ptr(),typeid(R(Args...)),typeid(R));
+      svc_t::addFactory(id,svc_t::function(func),typeid(R(Args...)),typeid(R));
     }
-#endif
   };
 } /* End namespace dd4hep      */
 
@@ -151,16 +154,12 @@ namespace {
   template <typename P, typename S> class Factory {};
 }
 
-#if defined(DD4HEP_ROOT_VERSION_5)
-#define DD4HEP_FACTORY_CALL(type,name,signature) dd4hep::PluginRegistry<signature>::add(name,Factory<type,signature>::wrapper);
-#else
 namespace dd4hep {
   template <> inline long PluginFactoryBase::make_return(const long& value)
   { static long stored=value; return (long)&stored; }  
 }
 #define DD4HEP_FACTORY_CALL(type,name,signature) dd4hep::PluginRegistry<signature>::add(name,Factory<type,signature>::call)
 #define DD4HEP_IMPLEMENT_PLUGIN_REGISTRY(X,Y)
-#endif
 
 #define DD4HEP_OPEN_PLUGIN(ns,name)  namespace ns { namespace { struct name {}; } } namespace dd4hep
 #define DD4HEP_PLUGINSVC_CNAME(name, serial)  name##_dict_##serial
diff --git a/DDCore/include/DD4hep/VolumeManager.h b/DDCore/include/DD4hep/VolumeManager.h
index 3cb72178fe205304dc496acc0099baa51941bfbd..45777266c9edf5691eefd6714f74f8b3e8039064 100644
--- a/DDCore/include/DD4hep/VolumeManager.h
+++ b/DDCore/include/DD4hep/VolumeManager.h
@@ -77,7 +77,7 @@ namespace dd4hep {
     /// Access the transformation to the closest detector element
     const TGeoHMatrix& toElement()  const;
   };
-    
+
   /// Class to support the retrieval of detector elements and volumes given a valid identifier
   /**
    *
diff --git a/DDCore/include/DD4hep/config.h b/DDCore/include/DD4hep/config.h
index 549d80951620e05fb010f9758156900ceb0b9d60..90c077c7b2ca9fb2cb1aa2c819ef3129b5a56d02 100644
--- a/DDCore/include/DD4hep/config.h
+++ b/DDCore/include/DD4hep/config.h
@@ -18,7 +18,9 @@
 /// Enable this if you want to minimize the footprint of conditions
 //#define DD4HEP_MINIMAL_CONDITIONS 1
 
-#define DD4HEP_CONDITIONS_DEBUG 1
+#define DD4HEP_CONDITIONS_DEBUG  1
+#define DD4HEP_HAVE_PLUGINSVC_V2 1
+
 
 #ifdef DD4HEP_INSTANCE_COUNTS
 #define INCREMENT_COUNTER InstanceCount::increment(this)
diff --git a/DDCore/include/DD4hep/detail/VolumeManagerInterna.h b/DDCore/include/DD4hep/detail/VolumeManagerInterna.h
index 893243f5b95c7cea84b5cb81625db99e7cfb1b8c..52ab3e2534e477db35551ff30f5aeb2f87c214dc 100644
--- a/DDCore/include/DD4hep/detail/VolumeManagerInterna.h
+++ b/DDCore/include/DD4hep/detail/VolumeManagerInterna.h
@@ -36,6 +36,25 @@ namespace dd4hep {
   /// Namespace for implementation details of the AIDA detector description toolkit
   namespace detail {
 
+    /// Extended context. Needs to be public for persistency reasons
+    /**
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class VolumeManagerContextExtension : public VolumeManagerContext {
+    public:
+      /// The placement of the (sensitive) volume
+      PlacedVolume placement{0};
+      /// The transformation of space-points to the coordinate system of the closests detector element
+      TGeoHMatrix toElement;
+      /// Default constructor
+      VolumeManagerContextExtension() = default;
+      /// Default destructor
+      ~VolumeManagerContextExtension() = default;
+    };
+  
     /// This structure describes the internal data of the volume manager object
     /**
      *
diff --git a/DDCore/src/DD4hepRootPersistency.cpp b/DDCore/src/DD4hepRootPersistency.cpp
index 889eaa491786cb2d600330a0cd93d4a7c6f15525..7c8e70ceed5c65ce02ff9316c368700d40b350df 100644
--- a/DDCore/src/DD4hepRootPersistency.cpp
+++ b/DDCore/src/DD4hepRootPersistency.cpp
@@ -93,12 +93,12 @@ int DD4hepRootPersistency::save(Detector& description, const char* fname, const
 }
 
 int DD4hepRootPersistency::load(Detector& description, const char* fname, const char* instance)  {
+  DetectorData::patchRootStreamer(TGeoVolume::Class());
+  DetectorData::patchRootStreamer(TGeoNode::Class());
   TFile* f = TFile::Open(fname);
   if ( f && !f->IsZombie()) {
     try  {
       TTimeStamp start;
-      DetectorData::patchRootStreamer(TGeoVolume::Class());
-      DetectorData::patchRootStreamer(TGeoNode::Class());
       unique_ptr<DD4hepRootPersistency> persist((DD4hepRootPersistency*)f->Get(instance));
       if ( persist.get() )   {
         DetectorData* source = persist->m_data;
@@ -182,6 +182,8 @@ int DD4hepRootPersistency::load(Detector& description, const char* fname, const
     }
     return 0;
   }
+  DetectorData::unpatchRootStreamer(TGeoVolume::Class());
+  DetectorData::unpatchRootStreamer(TGeoNode::Class());
   printout(ERROR,"DD4hepRootPersistency","+++ Cannot open file '%s'.",fname);
   return 0;
 }
diff --git a/DDCore/src/Plugins.cpp b/DDCore/src/Plugins.cpp
index c0c80f7be55910052add8ab85093aa8feaf5b242..93b34bd4a2a39ad0b82b3a45e4ca3d03fd15e4a2 100644
--- a/DDCore/src/Plugins.cpp
+++ b/DDCore/src/Plugins.cpp
@@ -13,9 +13,6 @@
 
 // Framework include files
 #include "DD4hep/Plugins.h"
-#if defined(DD4HEP_ROOT_VERSION_5)
-#include "DD4hep/detail/Plugins.inl"
-#endif
 #include <cstdlib>
 
 using namespace std;
@@ -39,34 +36,6 @@ bool PluginService::setDebug(bool new_value)   {
   return old_value;
 }
 
-#if !defined(DD4HEP_PARSERS_NO_ROOT) && DD4HEP_ROOT_VERSION_5
-
-/// Default constructor
-PluginDebug::PluginDebug(int dbg)
-  : m_debug(0) {
-  m_debug = ROOT::Reflex::PluginService::Debug();
-  ROOT::Reflex::PluginService::SetDebug(dbg);
-}
-
-/// Default destructor
-PluginDebug::~PluginDebug() noexcept(false) {
-  ROOT::Reflex::PluginService::SetDebug (m_debug);
-}
-
-/// Helper to check factory existence
-string PluginDebug::missingFactory(const string& name) const {
-  ROOT::Reflex::Scope factories = ROOT::Reflex::Scope::ByName(PLUGINSVC_FACTORY_NS);
-  string factoryname = ROOT::Reflex::PluginService::FactoryName(name);
-  string msg = "\t\tNo factory for type " + name + " found.\n"
-    "\t\tPlease check library load path and/or plugin factory name.";
-  return msg;
-}
-
-/// Dummy functions of the plugin service
-void* PluginService::getCreator(const std::string&, const std::type_info&)  {  return 0;   }
-void  PluginService::addFactory(const std::string&, void*, const std::type_info&, const std::type_info&)  {}
-
-#else   // ROOT 6 or no ROOT at all
 #include "DD4hep/Printout.h"
 #if !defined(DD4HEP_PARSERS_NO_ROOT)
 #include "TSystem.h"
@@ -79,9 +48,9 @@ namespace   {
   struct PluginInterface  {
     int (*getDebug)();
     int (*setDebug)(int new_value);
-    void* (*create)(const char* identifier, const char* signature);
+    PluginService::stub_t (*create)(const char* identifier, const char* signature);
     void  (*add)(const char* identifier, 
-                 void* creator_stub, 
+                 PluginService::stub_t&& creator_stub, 
                  const char* signature, 
                  const char* return_type);
     PluginInterface() noexcept(false);
@@ -91,14 +60,20 @@ namespace   {
     }
   };
 
+  template <typename FUNCTION> struct _FP {
+    union { void* ptr; FUNCTION fcn; } fptr;
+    _FP(FUNCTION func)         {  fptr.fcn = func;        }
+    _FP(void* _p)              {  fptr.ptr = _p;          }
+  };
+
   template <typename T> 
   static inline T get_func(void* handle, const char* plugin, const char* entry)  {
 #if !defined(DD4HEP_PARSERS_NO_ROOT)
-    PluginService::FuncPointer<Func_t> fun(gSystem->DynFindSymbol(plugin,entry));
-    PluginService::FuncPointer<T> fp(fun.fptr.ptr);
+    _FP<Func_t> fun(gSystem->DynFindSymbol(plugin,entry));
+    _FP<T> fp(fun.fptr.ptr);
     if ( handle ) {}
 #else
-    PluginService::FuncPointer<T> fp(::dlsym(handle, entry));
+    _FP<T> fp(::dlsym(handle, entry));
     if ( !fp.fptr.ptr ) fp.fptr.ptr = ::dlsym(0, entry);
 #endif
     if ( 0 == fp.fptr.ptr )      {
@@ -111,7 +86,7 @@ namespace   {
   }
 
   PluginInterface::PluginInterface()  noexcept(false)
-    : getDebug(0), setDebug(0), create(0), add(0)
+    : getDebug(0), setDebug(0), create(nullptr), add(nullptr)
   {
     void* handle = 0;
     const char* plugin_name = ::getenv("DD4HEP_PLUGINMGR");
@@ -125,10 +100,10 @@ namespace   {
 #endif
     getDebug = get_func< int (*) ()>(handle, plugin_name,"dd4hep_pluginmgr_getdebug");
     setDebug = get_func< int (*) (int)>(handle, plugin_name,"dd4hep_pluginmgr_getdebug");
-    create   = get_func< void* (*) (const char*,
-                                    const char*)>(handle, plugin_name,"dd4hep_pluginmgr_create");
+    create   = get_func< PluginService::stub_t (*) (const char*,
+                                                const char*)>(handle, plugin_name,"dd4hep_pluginmgr_create");
     add      = get_func< void (*) (const char* identifier, 
-                                   void* creator_stub, 
+                                   PluginService::stub_t&& creator_stub, 
                                    const char* signature, 
                                    const char* return_type)>(handle, plugin_name,"dd4hep_pluginmgr_add_factory");
   }
@@ -152,11 +127,12 @@ string PluginDebug::missingFactory(const string& name) const {
   return msg;
 }
 
-void* PluginService::getCreator(const std::string& id, const std::type_info& info)  {
+PluginService::stub_t PluginService::getCreator(const std::string& id, const std::type_info& info)  {
   return PluginInterface::instance().create(id.c_str(), info.name());
 }
 
-void PluginService::addFactory(const std::string& id, stub_t stub,
+void PluginService::addFactory(const std::string& id,
+                               PluginService::stub_t&& stub,
                                const std::type_info&  signature_type,
                                const std::type_info&  return_type)
 {
@@ -164,9 +140,32 @@ void PluginService::addFactory(const std::string& id, stub_t stub,
     printout(INFO,"PluginService","+++ Declared factory[%s] with signature %s type:%s.",
              id.c_str(),signature_type.name(),return_type.name());
   }
-  PluginInterface::instance().add(id.c_str(),stub,signature_type.name(),return_type.name());
+  PluginInterface::instance().add(id.c_str(),std::move(stub),signature_type.name(),return_type.name());
 }
+
+void PluginService::print_bad_cast(const std::string& id,
+                                   const stub_t& stub,
+                                   const std::type_info& signature,
+                                   const char* msg)   {
+  bool dbg = PluginInterface::instance().getDebug();
+  if ( dbg )   {
+    stringstream str;
+    str << "Factory requested: " << id << " (" << typeid(signature).name() << ") :" << msg;
+    printout(ERROR,"PluginService","%s", str.str().c_str());
+    str.str("");
+#ifdef DD4HEP_HAVE_PLUGINSVC_V2
+    if ( !stub.has_value() )  {
+      str << "Stub is invalid!";
+      printout(ERROR,"PluginService","%s", str.str().c_str());
+    }
+#else
+    if ( !stub )  {
+      str << "Stub is invalid!";
+      printout(ERROR,"PluginService","%s", str.str().c_str());
+    }
 #endif
+  }
+}
 
 #if !defined(DD4HEP_PARSERS_NO_ROOT)
 #include "DD4hep/Detector.h"
diff --git a/DDCore/src/RootDictionary.h b/DDCore/src/RootDictionary.h
index de35dec0ee13a53c990a2a941275f1fecad98e6f..ab50397708cb78086c23d222de815127fb4b5afc 100644
--- a/DDCore/src/RootDictionary.h
+++ b/DDCore/src/RootDictionary.h
@@ -144,6 +144,7 @@ template class dd4hep::Handle<TNamed>;
 #pragma link C++ class dd4hep::VolumeManager+;
 #pragma link C++ class dd4hep::detail::VolumeManagerObject+;
 #pragma link C++ class dd4hep::VolumeManagerContext+;
+#pragma link C++ class dd4hep::detail::VolumeManagerContextExtension+;
 #pragma link C++ class dd4hep::Handle<dd4hep::detail::VolumeManagerObject>+;
 #pragma link C++ class map<dd4hep::DetElement,dd4hep::VolumeManager>+;
 #pragma link C++ class map<dd4hep::VolumeID,dd4hep::VolumeManager>+;
diff --git a/DDCore/src/VolumeManager.cpp b/DDCore/src/VolumeManager.cpp
index 19a5b510502a5d421d6a628feac11f93067bb005..4a7d7ee6440224a5e6966d8fbeabbbe57cfd10dd 100644
--- a/DDCore/src/VolumeManager.cpp
+++ b/DDCore/src/VolumeManager.cpp
@@ -32,21 +32,6 @@ using namespace dd4hep::detail;
 
 DD4HEP_INSTANTIATE_HANDLE_NAMED(VolumeManagerObject);
 
-
-namespace {
-  class ContextExtension : public VolumeManagerContext {
-  public:
-    /// The placement of the (sensitive) volume
-    PlacedVolume placement{0};
-    /// The transformation of space-points to the coordinate system of the closests detector element
-    TGeoHMatrix toElement;
-    /// Default constructor
-    ContextExtension() = default;
-    /// Default destructor
-    ~ContextExtension() = default;
-  };
-}
-
 /// Namespace for the AIDA detector description toolkit
 namespace dd4hep {
 
@@ -265,13 +250,13 @@ namespace dd4hep {
             // This is the block, we effectively have to save for each physical volume with a VolID
             VolumeManagerContext* context = nodes.empty()
               ? new VolumeManagerContext
-              : new ContextExtension;
+              : new detail::VolumeManagerContextExtension;
             context->identifier = code.first;
             context->mask       = code.second;
             context->element    = e;
             context->flag       = nodes.empty() ? 0 : 1;
             if ( context->flag )  {
-              ContextExtension* ext = (ContextExtension*)context;
+              detail::VolumeManagerContextExtension* ext = (detail::VolumeManagerContextExtension*)context;
               ext->placement  = PlacedVolume(n);
               for (size_t i = nodes.size(); i > 1; --i) {   // Omit the placement of the parent DetElement
                 TGeoMatrix* m = nodes[i-1]->GetMatrix();
@@ -330,7 +315,7 @@ PlacedVolume VolumeManagerContext::elementPlacement()  const   {
 PlacedVolume VolumeManagerContext::volumePlacement()  const   {
   if ( 0 == flag )
     return element.placement();
-  const ContextExtension* ext = (const ContextExtension*)this;
+  const detail::VolumeManagerContextExtension* ext = (const detail::VolumeManagerContextExtension*)this;
   return ext->placement;
 }
 
@@ -338,7 +323,7 @@ PlacedVolume VolumeManagerContext::volumePlacement()  const   {
 const TGeoHMatrix& VolumeManagerContext::toElement()  const   {
   static TGeoHMatrix identity;
   if ( 0 == flag ) return identity;
-  const ContextExtension* ext = (const ContextExtension*)this;
+  const detail::VolumeManagerContextExtension* ext = (const detail::VolumeManagerContextExtension*)this;
   return ext->toElement;
 }
 
diff --git a/DDCore/src/gdml/GdmlPlugins.cpp b/DDCore/src/gdml/GdmlPlugins.cpp
index 80cac0b42ff87c247f801062aacaef7834dd61ec..64609519def30301935f25f0db40a127f0ec02fa 100644
--- a/DDCore/src/gdml/GdmlPlugins.cpp
+++ b/DDCore/src/gdml/GdmlPlugins.cpp
@@ -18,6 +18,9 @@
 #include "DD4hep/Factories.h"
 #include "DD4hep/Printout.h"
 #include "DD4hep/DetectorTools.h"
+#include "DD4hep/DetFactoryHelper.h"
+#include "XML/DocumentHandler.h"
+#include "XML/Utilities.h"
 
 // ROOT includes
 #include "TInterpreter.h"
@@ -174,8 +177,11 @@ static long gdml_extract(Detector& description, int argc, char** argv) {
       if ( de.isValid() )   {
         TGDMLWrite extract;
         TUri uri(output.c_str());
-        Volume vol = de.volume();
-        extract.WriteGDMLfile(&description.manager(), vol.ptr(), uri.GetRelativePart());
+#if ROOT_VERSION_CODE >= ROOT_VERSION(7,19,0)
+        extract.WriteGDMLfile(&description.manager(), de.placement().ptr(), uri.GetRelativePart());
+#else
+        extract.WriteGDMLfile(&description.manager(), de.volume().ptr(), uri.GetRelativePart());
+#endif
         return 1;
       }
       except("ROOTGDMLExtract","+++ Invalid DetElement path given: %s", path.c_str());
@@ -184,41 +190,46 @@ static long gdml_extract(Detector& description, int argc, char** argv) {
       struct Actor {
         bool _volpath;
         const string& _path;
-        TGeoVolume*   _volume = 0;
+        TGeoNode*     _node = 0;
         Actor(const string& p, bool vp) : _volpath(vp), _path(p)  {}
         void scan(TGeoNode* n, const std::string& p="")  {
           string nam;
           if ( _volpath )  {
             nam = p + '/';
             nam += n->GetName();
-            if ( _volpath && nam.find(_path) == 0 )
-              _volume = n->GetVolume();
-            for (Int_t idau = 0, ndau = n->GetNdaughters(); _volume == 0 && idau < ndau; ++idau)
+            if ( _volpath && nam.find(_path) == 0 )   {
+              _node = n;
+            }
+            for (Int_t idau = 0, ndau = n->GetNdaughters(); _node == 0 && idau < ndau; ++idau)
               scan(n->GetDaughter(idau), p);
             return;
           }
           nam = n->GetName();
           if ( nam.find(_path) == 0 )   {
-            _volume = n->GetVolume();
+            _node = n;
             printout(ALWAYS,"Check","+++ Found required volume: %s",_path.c_str());
             printout(ALWAYS,"Check","+++                     -> %s",nam.c_str());
             return;
           }
-          for (Int_t idau = 0, ndau = n->GetNdaughters(); _volume == 0 && idau < ndau; ++idau)
+          for (Int_t idau = 0, ndau = n->GetNdaughters(); _node == 0 && idau < ndau; ++idau)
             scan(n->GetDaughter(idau),nam);
         }
       };
       Volume top = description.worldVolume();
       TObjArray* ents = top->GetNodes();
       Actor a(path, volpath ? true : false);
-      for (Int_t i = 0, n = ents->GetEntries(); i < n && a._volume == 0; ++i)  {
+      for (Int_t i = 0, n = ents->GetEntries(); i < n && a._node == 0; ++i)  {
         TGeoNode* node = (TGeoNode*)ents->At(i);
         a.scan(node, node->GetName());
       }
-      if ( a._volume )    {
+      if ( a._node )    {
         TGDMLWrite extract;
         TUri uri(output.c_str());
-        extract.WriteGDMLfile(&description.manager(), a._volume, uri.GetRelativePart());
+#if ROOT_VERSION_CODE >= ROOT_VERSION(7,19,0)
+        extract.WriteGDMLfile(&description.manager(), a._node, uri.GetRelativePart());
+#else
+        extract.WriteGDMLfile(&description.manager(), a._node->GetVolume(), uri.GetRelativePart());
+#endif
         return 1;
       }
       except("ROOTGDMLExtract","+++ Invalid volume path/name given: %s", path.c_str());
@@ -246,4 +257,69 @@ static long create_gdml_from_dd4hep(Detector& description, int argc, char** argv
 }
 DECLARE_APPLY(DD4hepGeometry2GDML, create_gdml_from_dd4hep)
 
+/// Factory to import subdetectors from GDML fragment
+static Ref_t create_detector(Detector& description, xml_h e, Ref_t /* sens_det */)  {
+  using namespace dd4hep::detail;
+  xml_det_t   x_det = e;
+  int         id    = x_det.hasAttr(_U(id)) ? x_det.id() : 0;
+  xml_dim_t   x_pos  (x_det.child(_U(position),false));
+  xml_dim_t   x_rot  (x_det.child(_U(rotation),false));
+  xml_dim_t   x_gdml (x_det.child(_U(gdmlFile)));
+  xml_dim_t   x_par  (x_det.child(_U(parent)));
+  string      name    = x_det.nameStr();
+  string      par_nam = x_par.nameStr();
+  string      gdml   = x_gdml.attr<string>(_U(ref));
+  DetElement  det_parent = description.detector(par_nam);
+  TGDMLParse parser;
+  if ( !gdml.empty() && gdml[0] == '/' )  {
+    TUri uri(gdml.c_str());
+    gdml = uri.GetRelativePart();
+  }
+  else {
+    string path = xml::DocumentHandler::system_path(e, gdml);
+    TUri uri(path.c_str());
+    gdml = uri.GetRelativePart();
+  }
+  if ( !det_parent.isValid() )  {
+    except(name,"+++ Cannot access detector parent: %s",par_nam.c_str());
+  }  
+  DetElement  sdet(name, id);
+  Volume volume = parser.GDMLReadFile(gdml.c_str());
+  if ( !volume.isValid() )   {
+    except("ROOTGDMLParse","+++ Failed to parse GDML file:%s",gdml.c_str());
+  }
+  volume.import(); // We require the extensions in dd4hep.
+  printout(INFO,"ROOTGDMLParse","+++ Attach GDML volume %s", volume.name());
+  Volume mother = det_parent.volume();
+  PlacedVolume pv;
+
+  if ( x_pos && x_rot )   {
+    Rotation3D rot(RotationZYX(x_rot.z(),x_rot.y(),x_rot.x()));
+    Transform3D transform(rot,Position(x_pos.x(),x_pos.y(),x_pos.z()));
+    pv = mother.placeVolume(volume,transform);
+  }
+  else if ( x_rot )  {
+    Rotation3D rot(RotationZYX(x_rot.z(),x_rot.y(),x_rot.x()));
+    Transform3D transform(rot,Position(0,0,0));
+    pv = mother.placeVolume(volume,transform);
+  }
+  else if ( x_pos )   {
+    pv = mother.placeVolume(volume,Position(x_pos.x(),x_pos.y(),x_pos.z()));
+  }
+  else  {
+    pv = mother.placeVolume(volume);
+  }
+  volume.setVisAttributes(description, x_det.visStr());
+  volume.setLimitSet(description, x_det.limitsStr());
+  volume.setRegion(description, x_det.regionStr());
+  if ( id != 0 )  {
+    pv.addPhysVolID("system", id);
+  }
+  sdet.setPlacement(pv);
+  return sdet;
+}
+
+// first argument is the type from the xml file
+DECLARE_DETELEMENT(DD4hep_GdmlDetector,create_detector)
+
 #endif
diff --git a/DDG4/plugins/Geant4FieldTrackingSetup.cpp b/DDG4/plugins/Geant4FieldTrackingSetup.cpp
index 26eabed83024ed9124f41e20753befbebcb40609..4f568335d581b4839b6d65cb811eff24a09fbbce 100644
--- a/DDG4/plugins/Geant4FieldTrackingSetup.cpp
+++ b/DDG4/plugins/Geant4FieldTrackingSetup.cpp
@@ -192,13 +192,24 @@ Geant4FieldTrackingSetup::~Geant4FieldTrackingSetup()   {
 /// Perform the setup of the magnetic field tracking in Geant4
 int Geant4FieldTrackingSetup::execute(Detector& description)   {
   OverlayedField fld  = description.field();
+  G4ChordFinder*           chordFinder;
+  G4TransportationManager* transportMgr;
+  G4PropagatorInField*     propagator;
+  G4FieldManager*          fieldManager;
   G4MagneticField*         mag_field    = new sim::Geant4Field(fld);
   G4Mag_EqRhs*             mag_equation = PluginService::Create<G4Mag_EqRhs*>(eq_typ,mag_field);
-  G4MagIntegratorStepper*  fld_stepper  = PluginService::Create<G4MagIntegratorStepper*>(stepper_typ,mag_equation);
-  G4ChordFinder*           chordFinder  = new G4ChordFinder(mag_field,min_chord_step,fld_stepper);
-  G4TransportationManager* transportMgr = G4TransportationManager::GetTransportationManager();
-  G4PropagatorInField*     propagator   = transportMgr->GetPropagatorInField();
-  G4FieldManager*          fieldManager = transportMgr->GetFieldManager();
+  G4EquationOfMotion*      mag_eq       = mag_equation;
+  G4MagIntegratorStepper*  fld_stepper  = PluginService::Create<G4MagIntegratorStepper*>(stepper_typ,mag_eq);
+  if ( nullptr == fld_stepper )   {
+    fld_stepper  = PluginService::Create<G4MagIntegratorStepper*>(stepper_typ,mag_equation);
+    if ( nullptr == fld_stepper )   {
+      printout(WARNING,"FieldSetup", "Cannot create stepper of type: %s. Taking Geant4 defaults.",stepper_typ.c_str());
+    }
+  }
+  chordFinder  = new G4ChordFinder(mag_field,min_chord_step,fld_stepper);
+  transportMgr = G4TransportationManager::GetTransportationManager();
+  propagator   = transportMgr->GetPropagatorInField();
+  fieldManager = transportMgr->GetFieldManager();
 
   fieldManager->SetFieldChangesEnergy(fld.changesEnergy());
   fieldManager->SetDetectorField(mag_field);
diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py
index 0c850fe3692dec1fd7df8fc6b1ce7e43b7dca0d3..59053cc9a2009be9ea261676ca71b0dff2f8586a 100644
--- a/DDG4/python/DDG4.py
+++ b/DDG4/python/DDG4.py
@@ -613,12 +613,12 @@ class Geant4:
       logging.info('+++++> %s %s %s %s ',field.name,'-> largest_step       = ',str(field.largest_step),'[mm]')
     return field
     
-  def setupTrackingFieldMT(self, name='MagFieldTrackingSetup', stepper='G4ClassicalRK4', equation='Mag_UsualEqRhs',prt=False):
+  def setupTrackingFieldMT(self, name='MagFieldTrackingSetup', stepper='ClassicalRK4', equation='Mag_UsualEqRhs',prt=False):
     seq,fld = self.addDetectorConstruction("Geant4FieldTrackingConstruction/"+name)
     self._private_setupField(fld, stepper, equation, prt)
     return (seq,fld)
 
-  def setupTrackingField(self, name='MagFieldTrackingSetup', stepper='G4ClassicalRK4', equation='Mag_UsualEqRhs',prt=False):
+  def setupTrackingField(self, name='MagFieldTrackingSetup', stepper='ClassicalRK4', equation='Mag_UsualEqRhs',prt=False):
     field = self.addConfig('Geant4FieldTrackingSetupAction/'+name)
     self._private_setupField(field, stepper, equation, prt)
     return field
diff --git a/DDG4/python/DDSim/Helper/MagneticField.py b/DDG4/python/DDSim/Helper/MagneticField.py
index 81e107a1b1092f5bcf27911e1fff8bc83b000a24..ebe5aeabe2f7aad121e9242c9891c4c544f31d00 100644
--- a/DDG4/python/DDSim/Helper/MagneticField.py
+++ b/DDG4/python/DDSim/Helper/MagneticField.py
@@ -6,7 +6,7 @@ class MagneticField( ConfigHelper ):
   """Configuration for the magnetic field (stepper)"""
   def __init__( self ):
     super(MagneticField, self).__init__()
-    self.stepper = "G4ClassicalRK4"
+    self.stepper = "ClassicalRK4"
     self.equation = "Mag_UsualEqRhs"
     self.eps_min = 5e-05*mm
     self.eps_max = 0.001*mm
diff --git a/GaudiPluginService/CMakeLists.txt b/GaudiPluginService/CMakeLists.txt
index 47a6049c55ee8e8f6c61d398fde0774e7a3b2abb..734db7975aef4523554b249b122a928db29cfa1c 100644
--- a/GaudiPluginService/CMakeLists.txt
+++ b/GaudiPluginService/CMakeLists.txt
@@ -1,19 +1,19 @@
 cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
 
 project(GaudiPluginService)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+find_package(Boost COMPONENTS filesystem REQUIRED)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${BOOST_INCLUDE_DIR})
 
-#add_library(DD4hepGaudiPluginMgr SHARED src/PluginService.cpp src/capi_pluginservice.cpp interface/DD4hep.cpp)
-add_library(DD4hepGaudiPluginMgr SHARED src/PluginService.cpp interface/DD4hep.cpp)
-add_definitions(-DGaudi=DD4hep_Flavor)
+add_library(DD4hepGaudiPluginMgr SHARED src/PluginServiceV1.cpp src/PluginServiceV2.cpp interface/DD4hep.cpp)
+add_definitions(-DGaudi=DD4hep_Flavor -DUSE_BOOST_FILESYSTEM)
 if( APPLE ) 
   add_definitions( -DAPPLE) 
 endif()
-target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-unused-function)
-target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-deprecated)
-target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-shadow)
+#target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-unused-function)
+#target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-deprecated)
+#target_compile_options(DD4hepGaudiPluginMgr PRIVATE -Wno-shadow)
 
-target_link_libraries(DD4hepGaudiPluginMgr ${CMAKE_DL_LIBS})
+target_link_libraries(DD4hepGaudiPluginMgr ${CMAKE_DL_LIBS} ${Boost_FILESYSTEM_LIBRARY} )
 SET_TARGET_PROPERTIES(DD4hepGaudiPluginMgr PROPERTIES VERSION ${DD4hep_VERSION} SOVERSION ${DD4hep_SOVERSION})
 
 if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) 
@@ -21,9 +21,9 @@ if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
   SET ( GaudiPluginService_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE )
 endif()
 
-add_executable(listcomponents src/listcomponents.cpp ) #src/PluginService.cpp)
-target_link_libraries(listcomponents DD4hepGaudiPluginMgr  ${CMAKE_DL_LIBS} )
-target_compile_options(listcomponents PRIVATE -Wno-deprecated)
+add_executable(listcomponents src/listcomponents.cpp )
+target_link_libraries(listcomponents DD4hepGaudiPluginMgr  ${CMAKE_DL_LIBS} ${Boost_FILESYSTEM_LIBRARY})
+#target_compile_options(listcomponents PRIVATE -Wno-deprecated)
 
 install(TARGETS listcomponents DD4hepGaudiPluginMgr
   RUNTIME DESTINATION bin
diff --git a/GaudiPluginService/Gaudi/Details/PluginServiceCommon.h b/GaudiPluginService/Gaudi/Details/PluginServiceCommon.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ae808c08a7293a503c48b3ce4d4a651d499b98f
--- /dev/null
+++ b/GaudiPluginService/Gaudi/Details/PluginServiceCommon.h
@@ -0,0 +1,47 @@
+#ifndef _GAUDI_PLUGIN_SERVICE_COMMON_H_
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+
+#  ifndef GAUDI_PLUGIN_SERVICE_USE_V2
+#    if defined( GAUDI_PLUGIN_SERVICE_V2 ) || !defined( GAUDI_PLUGIN_SERVICE_V1 )
+#      define GAUDI_PLUGIN_SERVICE_V2_INLINE inline
+#      define GAUDI_PLUGIN_SERVICE_V1_INLINE
+#      define GAUDI_PLUGIN_SERVICE_USE_V2 1
+#    else
+#      define GAUDI_PLUGIN_SERVICE_V2_INLINE
+#      define GAUDI_PLUGIN_SERVICE_V1_INLINE inline
+#      define GAUDI_PLUGIN_SERVICE_USE_V2 0
+#    endif
+#  endif
+
+#  if __GNUC__ >= 4
+#    define GAUDIPS_HASCLASSVISIBILITY
+#  endif
+
+#  if defined( GAUDIPS_HASCLASSVISIBILITY )
+#    define GAUDIPS_IMPORT __attribute__( ( visibility( "default" ) ) )
+#    define GAUDIPS_EXPORT __attribute__( ( visibility( "default" ) ) )
+#    define GAUDIPS_LOCAL __attribute__( ( visibility( "hidden" ) ) )
+#  else
+#    define GAUDIPS_IMPORT
+#    define GAUDIPS_EXPORT
+#    define GAUDIPS_LOCAL
+#  endif
+
+#  ifdef GaudiPluginService_EXPORTS
+#    define GAUDIPS_API GAUDIPS_EXPORT
+#  else
+#    define GAUDIPS_API GAUDIPS_IMPORT
+#  endif
+
+#endif
diff --git a/GaudiPluginService/Gaudi/Details/PluginServiceDetails.h b/GaudiPluginService/Gaudi/Details/PluginServiceDetails.h
deleted file mode 100644
index 67b6d0026097739ec9c18bf07a28c4bb56665788..0000000000000000000000000000000000000000
--- a/GaudiPluginService/Gaudi/Details/PluginServiceDetails.h
+++ /dev/null
@@ -1,259 +0,0 @@
-#ifndef _GAUDI_PLUGIN_SERVICE_DETAILS_H_
-#define _GAUDI_PLUGIN_SERVICE_DETAILS_H_
-/*****************************************************************************\
-* (c) Copyright 2013 CERN                                                     *
-*                                                                             *
-* This software is distributed under the terms of the GNU General Public      *
-* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
-*                                                                             *
-* In applying this licence, CERN does not waive the privileges and immunities *
-* granted to it by virtue of its status as an Intergovernmental Organization  *
-* or submit itself to any jurisdiction.                                       *
-\*****************************************************************************/
-
-/// @author Marco Clemencic <marco.clemencic@cern.ch>
-
-#include <string>
-#include <sstream>
-#include <map>
-#include <set>
-#include <typeinfo>
-#include <utility>
-
-#if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
-#include <mutex>
-#endif
-
-#if __GNUC__ >= 4
-#  define GAUDIPS_HASCLASSVISIBILITY
-#endif
-
-#if defined(GAUDIPS_HASCLASSVISIBILITY)
-#  define GAUDIPS_IMPORT __attribute__((visibility("default")))
-#  define GAUDIPS_EXPORT __attribute__((visibility("default")))
-#  define GAUDIPS_LOCAL  __attribute__((visibility("hidden")))
-#else
-#  define GAUDIPS_IMPORT
-#  define GAUDIPS_EXPORT
-#  define GAUDIPS_LOCAL
-#endif
-
-#ifdef GaudiPluginService_EXPORTS
-#define GAUDIPS_API GAUDIPS_EXPORT
-#else
-#define GAUDIPS_API GAUDIPS_IMPORT
-#endif
-
-namespace Gaudi { namespace PluginService {
-
-  namespace Details {
-    /// Class providing default factory functions.
-    ///
-    /// The template argument T is the class to be created, while the methods
-    /// template argument S is the specific factory signature.
-    template <class T>
-    class Factory {
-    public:
-#if !defined(__REFLEX__) || defined(ATLAS)
-      template <typename S, typename... Args>
-        static typename S::ReturnType create(Args&&... args) {
-        return new T(std::forward<Args>(args)...);
-      }
-#endif
-    };
-
-    /// Function used to load a specific factory function.
-    /// @return the pointer to the factory function.
-    GAUDIPS_API
-    void* getCreator(const std::string& id, const std::string& type);
-
-    /// Convoluted implementation of getCreator with an embedded
-    /// reinterpret_cast, used to avoid the warning
-    /// <pre>
-    /// warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
-    /// </pre>
-    /// It is an ugly trick but works.<br/>
-    /// See:
-    /// <ul>
-    ///  <li>http://www.trilithium.com/johan/2004/12/problem-with-dlsym/</li>
-    ///  <li>http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#573</li>
-    ///  <li>http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#195</li>
-    /// </ul>
-    template <typename F>
-    inline F getCreator(const std::string& id) {
-      union { void* src; F dst; } p2p;
-      p2p.src = getCreator(id, typeid(F).name());
-      return p2p.dst;
-    }
-
-    /// Return a canonical name for type_info object (implementation borrowed
-    ///  from GaudiKernel/System).
-    GAUDIPS_API
-    std::string demangle(const std::type_info& id);
-
-    /// Return a canonical name for the template argument.
-    template <typename T>
-    inline std::string demangle() { return demangle(typeid(T)); }
-
-    /// In-memory database of the loaded factories.
-    class GAUDIPS_API Registry {
-    public:
-      typedef std::string KeyType;
-
-      /// Type used for the properties implementation.
-      typedef std::map<KeyType, std::string> Properties;
-
-      struct FactoryInfo {
-        FactoryInfo(const std::string& lib, void* p=0,
-                    const std::string& t="",
-                    const std::string& rt="",
-                    const std::string& cn="",
-                    const Properties& props=Properties()):
-        library(lib), ptr(p), type(t), rtype(rt), className(cn), properties(props) {}
-
-        std::string library;
-        void* ptr;
-        std::string type;
-        std::string rtype;
-        std::string className;
-        Properties properties;
-
-        FactoryInfo& addProperty(const KeyType& k, const std::string& v) {
-          properties[k] = v;
-          return *this;
-        }
-      };
-
-      /// Type used for the database implementation.
-      typedef std::map<KeyType, FactoryInfo> FactoryMap;
-
-      /// Retrieve the singleton instance of Registry.
-      static Registry& instance();
-
-      /// Add a factory to the database.
-      template <typename F, typename T, typename I>
-      inline FactoryInfo& add(const I& id, typename F::FuncType ptr){
-        union { typename F::FuncType src; void* dst; } p2p;
-        p2p.src = ptr;
-        std::ostringstream o; o << id;
-        return add(o.str(), p2p.dst,
-            typeid(typename F::FuncType).name(),
-            typeid(typename F::ReturnType).name(),
-            demangle<T>());
-      }
-
-      /// Retrieve the factory for the given id.
-      void* get(const std::string& id, const std::string& type) const;
-
-      /// Retrieve the FactoryInfo object for an id.
-      const FactoryInfo& getInfo(const std::string& id) const;
-
-      /// Add a property to an already existing FactoryInfo object (via its id.)
-      Registry&
-      addProperty(const std::string& id,
-                  const std::string& k,
-                  const std::string& v);
-
-      /// Return a list of all the known and loaded factories
-      std::set<KeyType> loadedFactories() const;
-
-      /// Return the known factories (loading the list if not yet done).
-      inline const FactoryMap& factories() const {
-        if (!m_initialized) const_cast<Registry*>(this)->initialize();
-        return m_factories;
-      }
-
-    private:
-      /// Private constructor for the singleton pattern.
-      /// At construction time, the internal database of known factories is
-      /// filled with the name of the libraries containing them, using the
-      /// ".components" files in the LD_LIBRARY_PATH.
-      Registry();
-
-      /// Private copy constructor for the singleton pattern.
-      Registry(const Registry&): m_initialized(false) {}
-
-      /// Add a factory to the database.
-      FactoryInfo&
-      add(const std::string& id, void *factory,
-          const std::string& type, const std::string& rtype,
-          const std::string& className,
-          const Properties& props = Properties());
-
-      /// Return the known factories (loading the list if not yet done).
-      inline FactoryMap& factories() {
-        if (!m_initialized) initialize();
-        return m_factories;
-      }
-
-      /// Initialize the registry loading the list of factories from the
-      /// .component files in the library search path.
-      void initialize();
-
-      /// Flag recording if the registry has been initialized or not.
-      bool m_initialized;
-
-      /// Internal storage for factories.
-      FactoryMap m_factories;
-
-#if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
-      /// Mutex used to control concurrent access to the internal data.
-      mutable std::recursive_mutex m_mutex;
-#endif
-    };
-
-    /// Simple logging class, just to provide a default implementation.
-    class GAUDIPS_API Logger {
-    public:
-      enum Level { Debug=0, Info=1, Warning=2, Error=3 };
-      Logger(Level lvl = Warning): m_level(lvl) {}
-      virtual ~Logger() {}
-      inline Level level() const { return m_level; }
-      inline void setLevel(Level lvl) { m_level = lvl; }
-      inline void info(const std::string& msg) { report(Info, msg); }
-      inline void debug(const std::string& msg) { report(Debug, msg); }
-      inline void warning(const std::string& msg) { report(Warning, msg); }
-      inline void error(const std::string& msg) { report(Error, msg); }
-    private:
-      virtual void report(Level lvl, const std::string& msg);
-      Level m_level;
-    };
-
-    /// Return the current logger instance.
-    GAUDIPS_API Logger& logger();
-    /// Set the logger instance to use.
-    /// It must be a new instance and the ownership is passed to the function.
-    GAUDIPS_API void setLogger(Logger* logger);
-  }
-
-  /// Backward compatibility with Reflex.
-  GAUDIPS_API void SetDebug(int debugLevel);
-  /// Backward compatibility with Reflex.
-  GAUDIPS_API int Debug();
-
-}}
-
-#define _INTERNAL_FACTORY_REGISTER_CNAME(name, serial) \
-  _register_ ## _ ## serial
-
-#define _INTERNAL_DECLARE_FACTORY_WITH_CREATOR(type, typecreator, \
-                                               id, factory, serial) \
-  namespace { \
-    class _INTERNAL_FACTORY_REGISTER_CNAME(type, serial) { \
-    public: \
-      typedef factory s_t; \
-      typedef typecreator f_t; \
-      static s_t::FuncType creator() { return &f_t::create<s_t>; } \
-      _INTERNAL_FACTORY_REGISTER_CNAME(type, serial) () { \
-        using ::Gaudi::PluginService::Details::Registry; \
-        Registry::instance().add<s_t, type>(id, creator()); \
-      } \
-    } _INTERNAL_FACTORY_REGISTER_CNAME(s_ ## type, serial); \
-  }
-
-#define _INTERNAL_DECLARE_FACTORY(type, id, factory, serial) \
-  _INTERNAL_DECLARE_FACTORY_WITH_CREATOR(type, \
-    ::Gaudi::PluginService::Details::Factory<type>, \
-    id, factory, serial)
-
-#endif //_GAUDI_PLUGIN_SERVICE_DETAILS_H_
diff --git a/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV1.h b/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV1.h
new file mode 100644
index 0000000000000000000000000000000000000000..87108d2357c538462dcebadfcb940141308aedad
--- /dev/null
+++ b/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV1.h
@@ -0,0 +1,238 @@
+#ifndef _GAUDI_PLUGIN_SERVICE_DETAILS_V1_H_
+#define _GAUDI_PLUGIN_SERVICE_DETAILS_V1_H_
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+
+#include "Gaudi/Details/PluginServiceCommon.h"
+
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <typeinfo>
+#include <utility>
+
+#include <mutex>
+
+namespace Gaudi {
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V1_INLINE namespace v1 {
+      namespace Details {
+        /// Class providing default factory functions.
+        ///
+        /// The template argument T is the class to be created, while the methods
+        /// template argument S is the specific factory signature.
+        template <class T>
+        class Factory {
+        public:
+          template <typename S, typename... Args>
+          static typename S::ReturnType create( Args&&... args ) {
+            return new T( std::forward<Args>( args )... );
+          }
+        };
+
+        /// Function used to load a specific factory function.
+        /// @return the pointer to the factory function.
+        GAUDIPS_API
+        void* getCreator( const std::string& id, const std::string& type );
+
+        /// Convoluted implementation of getCreator with an embedded
+        /// reinterpret_cast, used to avoid the warning
+        /// <pre>
+        /// warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
+        /// </pre>
+        /// It is an ugly trick but works.<br/>
+        /// See:
+        /// <ul>
+        ///  <li>http://www.trilithium.com/johan/2004/12/problem-with-dlsym/</li>
+        ///  <li>http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#573</li>
+        ///  <li>http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#195</li>
+        /// </ul>
+        template <typename F>
+        inline F getCreator( const std::string& id ) {
+          union {
+            void* src;
+            F     dst;
+          } p2p;
+          p2p.src = getCreator( id, typeid( F ).name() );
+          return p2p.dst;
+        }
+
+        /// Return a canonical name for type_info object (implementation borrowed
+        ///  from GaudiKernel/System).
+        GAUDIPS_API
+        std::string demangle( const std::type_info& id );
+
+        /// Return a canonical name for the template argument.
+        template <typename T>
+        inline std::string demangle() {
+          return demangle( typeid( T ) );
+        }
+
+        /// In-memory database of the loaded factories.
+        class GAUDIPS_API Registry {
+        public:
+          typedef std::string KeyType;
+
+          /// Type used for the properties implementation.
+          typedef std::map<KeyType, std::string> Properties;
+
+          struct FactoryInfo {
+            FactoryInfo( std::string lib, void* p = nullptr, std::string t = "", std::string rt = "",
+                         std::string cn = "", Properties props = Properties() )
+                : library( std::move( lib ) )
+                , ptr( p )
+                , type( std::move( t ) )
+                , rtype( std::move( rt ) )
+                , className( std::move( cn ) )
+                , properties( std::move( props ) ) {}
+
+            std::string library;
+            void*       ptr;
+            std::string type;
+            std::string rtype;
+            std::string className;
+            Properties  properties;
+
+            FactoryInfo& addProperty( const KeyType& k, std::string v ) {
+              properties[k] = std::move( v );
+              return *this;
+            }
+          };
+
+          /// Type used for the database implementation.
+          typedef std::map<KeyType, FactoryInfo> FactoryMap;
+
+          /// Retrieve the singleton instance of Registry.
+          static Registry& instance();
+
+          /// Add a factory to the database.
+          template <typename F, typename T, typename I>
+          inline FactoryInfo& add( const I& id, typename F::FuncType ptr ) {
+            union {
+              typename F::FuncType src;
+              void*                dst;
+            } p2p;
+            p2p.src = ptr;
+            std::ostringstream o;
+            o << id;
+            return add( o.str(), p2p.dst, typeid( typename F::FuncType ).name(),
+                        typeid( typename F::ReturnType ).name(), demangle<T>() );
+          }
+
+          /// Retrieve the factory for the given id.
+          void* get( const std::string& id, const std::string& type ) const;
+
+          /// Retrieve the FactoryInfo object for an id.
+          const FactoryInfo& getInfo( const std::string& id ) const;
+
+          /// Add a property to an already existing FactoryInfo object (via its id.)
+          Registry& addProperty( const std::string& id, const std::string& k, const std::string& v );
+
+          /// Return a list of all the known and loaded factories
+          std::set<KeyType> loadedFactoryNames() const;
+
+          /// Return the known factories (loading the list if not yet done).
+          inline const FactoryMap& factories() const {
+            if ( !m_initialized ) const_cast<Registry*>( this )->initialize();
+            return m_factories;
+          }
+
+        private:
+          /// Private constructor for the singleton pattern.
+          /// At construction time, the internal database of known factories is
+          /// filled with the name of the libraries containing them, using the
+          /// ".components" files in the LD_LIBRARY_PATH.
+          Registry();
+
+          /// Private copy constructor for the singleton pattern.
+          Registry( const Registry& ) : m_initialized( false ) {}
+
+          /// Add a factory to the database.
+          FactoryInfo& add( const std::string& id, void* factory, const std::string& type, const std::string& rtype,
+                            const std::string& className, const Properties& props = Properties() );
+
+          /// Return the known factories (loading the list if not yet done).
+          inline FactoryMap& factories() {
+            if ( !m_initialized ) initialize();
+            return m_factories;
+          }
+
+          /// Initialize the registry loading the list of factories from the
+          /// .component files in the library search path.
+          void initialize();
+
+          /// Flag recording if the registry has been initialized or not.
+          bool m_initialized;
+
+          /// Internal storage for factories.
+          FactoryMap m_factories;
+
+          /// Mutex used to control concurrent access to the internal data.
+          mutable std::recursive_mutex m_mutex;
+        };
+
+        /// Simple logging class, just to provide a default implementation.
+        class GAUDIPS_API Logger {
+        public:
+          enum Level { Debug = 0, Info = 1, Warning = 2, Error = 3 };
+          Logger( Level level = Warning ) : m_level( level ) {}
+          virtual ~Logger() {}
+          inline Level level() const { return m_level; }
+          inline void  setLevel( Level level ) { m_level = level; }
+          inline void  info( const std::string& msg ) { report( Info, msg ); }
+          inline void  debug( const std::string& msg ) { report( Debug, msg ); }
+          inline void  warning( const std::string& msg ) { report( Warning, msg ); }
+          inline void  error( const std::string& msg ) { report( Error, msg ); }
+
+        private:
+          virtual void report( Level lvl, const std::string& msg );
+          Level        m_level;
+        };
+
+        /// Return the current logger instance.
+        GAUDIPS_API Logger& logger();
+        /// Set the logger instance to use.
+        /// It must be a new instance and the ownership is passed to the function.
+        GAUDIPS_API void setLogger( Logger* logger );
+      } // namespace Details
+
+      /// Backward compatibility with Reflex.
+      GAUDIPS_API void SetDebug( int debugLevel );
+      /// Backward compatibility with Reflex.
+      GAUDIPS_API int Debug();
+    }
+  } // namespace PluginService
+} // namespace Gaudi
+
+#define _PS_V1_INTERNAL_FACTORY_REGISTER_CNAME( name, serial ) _register_##_##serial
+
+#define _PS_V1_INTERNAL_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, id, factory, serial )                         \
+  namespace {                                                                                                          \
+    class _PS_V1_INTERNAL_FACTORY_REGISTER_CNAME( type, serial ) {                                                     \
+    public:                                                                                                            \
+      typedef factory      s_t;                                                                                        \
+      typedef typecreator  f_t;                                                                                        \
+      static s_t::FuncType creator() { return &f_t::create<s_t>; }                                                     \
+      _PS_V1_INTERNAL_FACTORY_REGISTER_CNAME( type, serial )() {                                                       \
+        using ::Gaudi::PluginService::v1::Details::Registry;                                                           \
+        Registry::instance().add<s_t, type>( id, creator() );                                                          \
+      }                                                                                                                \
+    } _PS_V1_INTERNAL_FACTORY_REGISTER_CNAME( s_##type, serial );                                                      \
+  }
+
+#define _PS_V1_INTERNAL_DECLARE_FACTORY( type, id, factory, serial )                                                   \
+  _PS_V1_INTERNAL_DECLARE_FACTORY_WITH_CREATOR( type, ::Gaudi::PluginService::v1::Details::Factory<type>, id, factory, \
+                                                serial )
+
+#endif //_GAUDI_PLUGIN_SERVICE_DETAILS_H_
diff --git a/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV2.h b/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV2.h
new file mode 100644
index 0000000000000000000000000000000000000000..4bf40493832c1c32df89bf25360a7b4227edd4f3
--- /dev/null
+++ b/GaudiPluginService/Gaudi/Details/PluginServiceDetailsV2.h
@@ -0,0 +1,227 @@
+#ifndef _GAUDI_PLUGIN_SERVICE_DETAILS_V2_H_
+#define _GAUDI_PLUGIN_SERVICE_DETAILS_V2_H_
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+
+#include "Gaudi/Details/PluginServiceCommon.h"
+
+#if __cplusplus >= 201703
+#  include <any>
+#else
+#  include <boost/any.hpp>
+namespace std {
+  using boost::any;
+  using boost::any_cast;
+  using boost::bad_any_cast;
+} // namespace std
+#endif
+
+#include <functional>
+#include <map>
+#include <memory>
+#include <mutex>
+#include <set>
+#include <sstream>
+#include <string>
+#include <typeinfo>
+#include <utility>
+
+namespace Gaudi {
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V2_INLINE namespace v2 {
+      /// \cond FWD_DECL
+      template <typename>
+      struct Factory;
+      /// \cond
+
+      /// Implementation details of Gaudi::PluginService
+      namespace Details {
+        template <typename>
+        struct Traits;
+
+        template <typename R, typename... Args>
+        struct Traits<R( Args... )> {
+          using ReturnType  = std::unique_ptr<std::remove_pointer_t<R>>;
+          using FactoryType = std::function<ReturnType( Args... )>;
+        };
+
+        /// Return a canonical name for type_info object (implementation borrowed
+        /// from GaudiKernel/System.h).
+        GAUDIPS_API
+        std::string demangle( const std::type_info& id );
+
+        /// Return a canonical name for the template argument.
+        template <typename T>
+        inline std::string demangle() {
+          return demangle( typeid( T ) );
+        }
+
+        /// Convert a generic `id` to `std::string` via `std::ostream::operator<<`.
+        template <typename ID>
+        inline std::string stringify_id( const ID& id ) {
+          std::ostringstream o;
+          o << id;
+          return o.str();
+        }
+        /// Specialized no-op conversion from `std::string` to `std::string`.
+        template <>
+        inline std::string stringify_id<std::string>( const std::string& id ) {
+          return id;
+        }
+
+        /// Helper to print debug output in case of mismatched FactoryType.
+        void reportBadAnyCast( const std::type_info& factory_type, const std::string& id );
+
+        /// Simple logging class, just to provide a default implementation.
+        class GAUDIPS_API Logger {
+        public:
+          enum Level { Debug = 0, Info = 1, Warning = 2, Error = 3 };
+          Logger( Level level = Warning ) : m_level( level ) {}
+          virtual ~Logger() {}
+          inline Level level() const { return m_level; }
+          inline void  setLevel( Level level ) { m_level = level; }
+          inline void  info( const std::string& msg ) { report( Info, msg ); }
+          inline void  debug( const std::string& msg ) { report( Debug, msg ); }
+          inline void  warning( const std::string& msg ) { report( Warning, msg ); }
+          inline void  error( const std::string& msg ) { report( Error, msg ); }
+
+        private:
+          virtual void report( Level lvl, const std::string& msg );
+          Level        m_level;
+        };
+
+        /// Return the current logger instance.
+        GAUDIPS_API Logger& logger();
+        /// Set the logger instance to use.
+        /// It must be a new instance and the ownership is passed to the function.
+        GAUDIPS_API void setLogger( Logger* logger );
+
+        /// In-memory database of the loaded factories.
+        class GAUDIPS_API Registry {
+        public:
+          using KeyType = std::string;
+
+          /// Type used for the properties implementation.
+          using Properties = std::map<KeyType, std::string>;
+
+          struct FactoryInfo {
+            std::string library;
+            std::any    factory{};
+            Properties  properties{};
+
+            inline bool is_set() const {
+#if __cplusplus >= 201703
+              return factory.has_value();
+#else
+              return !factory.empty();
+#endif
+            }
+            Properties::mapped_type getprop( const Properties::key_type& name ) const;
+          };
+
+          /// Type used for the database implementation.
+          using FactoryMap = std::map<KeyType, FactoryInfo>;
+
+          /// Get the factory function for a given `id` from the registry.
+          template <typename F>
+          F get( const KeyType& id ) {
+            const FactoryInfo& info = Registry::instance().getInfo( id, true );
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+            if ( !info.getprop( "ReflexName" ).empty() ) {
+              const std::string real_name = info.getprop( "ClassName" );
+              logger().warning( "requesting factory via old name '" + id + "' use '" +
+                                ( real_name.empty() ? "<undefined>" : real_name ) + "' instead" );
+            }
+#endif
+            return std::any_cast<F>( info.factory );
+          }
+
+          /// Retrieve the singleton instance of Registry.
+          static Registry& instance();
+
+          /// Add factory info to the registry (used internally by DeclareFactory).
+          FactoryInfo& add( const KeyType& id, FactoryInfo info );
+
+          /// Retrieve the FactoryInfo object for an `id`.
+          const FactoryInfo& getInfo( const KeyType& id, const bool load = false ) const;
+
+          /// Add a property to an already existing FactoryInfo object (via its `id`).
+          Registry& addProperty( const KeyType& id, const KeyType& k, const std::string& v );
+
+          /// Return a list of all the known and loaded factories
+          std::set<KeyType> loadedFactoryNames() const;
+
+          /// Return the known factories (loading the list if not yet done).
+          ///
+          /// At the first call, the internal database of known factories is
+          /// filled with the name of the libraries containing them, using the
+          /// ".components" files in the `LD_LIBRARY_PATH`.
+          const FactoryMap& factories() const;
+
+        private:
+          /// Private constructor for the singleton pattern.
+          Registry();
+
+          /// Private copy constructor for the singleton pattern.
+          Registry( const Registry& ) = delete;
+
+          /// Return the known factories (loading the list if not yet done).
+          FactoryMap& factories();
+
+          /// Initialize the registry loading the list of factories from the
+          /// .component files in the library search path.
+          void initialize();
+
+          /// Flag recording if the registry has been initialized or not.
+          mutable std::once_flag m_initialized;
+
+          /// Internal storage for factories.
+          FactoryMap m_factories;
+
+          /// Mutex used to control concurrent access to the internal data.
+          mutable std::recursive_mutex m_mutex;
+        };
+
+        /// Class providing default factory functions.
+        ///
+        /// The template argument T is the class to be created, while the methods
+        /// template argument S is the specific factory signature.
+        template <typename, typename>
+        struct DefaultFactory;
+        template <typename T, typename R, typename... Args>
+        struct DefaultFactory<T, Factory<R( Args... )>> {
+          inline typename Factory<R( Args... )>::ReturnType operator()( Args... args ) {
+            return std::make_unique<T>( std::move( args )... );
+          }
+        };
+
+        /// Helper to get the name of the library containing a given pointer to function.
+        ///
+        /// Implementation borrowed from `DsoUtils.h` (genconf).
+        std::string getDSONameFor( void* fptr );
+      } // namespace Details
+
+      /// Backward compatibility with Reflex.
+      GAUDIPS_API void SetDebug( int debugLevel );
+      /// Backward compatibility with Reflex.
+      GAUDIPS_API int Debug();
+    }
+  } // namespace PluginService
+} // namespace Gaudi
+
+#define _PS_V2_INTERNAL_FACTORY_MAKE_REGISTER_CNAME_TOKEN( serial ) _register_##serial
+#define _PS_V2_INTERNAL_FACTORY_MAKE_REGISTER_CNAME( serial )                                                          \
+  _PS_V2_INTERNAL_FACTORY_MAKE_REGISTER_CNAME_TOKEN( serial )
+#define _PS_V2_INTERNAL_FACTORY_REGISTER_CNAME _PS_V2_INTERNAL_FACTORY_MAKE_REGISTER_CNAME( __LINE__ )
+
+#endif //_GAUDI_PLUGIN_SERVICE_DETAILS_H_
diff --git a/GaudiPluginService/Gaudi/PluginService.h b/GaudiPluginService/Gaudi/PluginService.h
index 4b3ab6a72d5cbd5d222f5b8c91c32acdcce35fa5..7c6e04c10f425f22ce45ea50a4c28ada9059e706 100644
--- a/GaudiPluginService/Gaudi/PluginService.h
+++ b/GaudiPluginService/Gaudi/PluginService.h
@@ -12,64 +12,14 @@
 \*****************************************************************************/
 
 /// @author Marco Clemencic <marco.clemencic@cern.ch>
-/// @see @ref GaudiPluginService-readme
+/// See @ref GaudiPluginService-readme
 
-#include <string>
-#include <typeinfo>
-#include <utility>
-#include <Gaudi/Details/PluginServiceDetails.h>
+#include "Gaudi/Details/PluginServiceCommon.h"
 
-#define DECLARE_FACTORY_WITH_ID(type, id, factory) \
-  _INTERNAL_DECLARE_FACTORY(type, id, factory, __LINE__)
-
-#define DECLARE_FACTORY(type, factory) \
-  DECLARE_FACTORY_WITH_ID(type, \
-      ::Gaudi::PluginService::Details::demangle<type>(), factory)
-
-#define DECLARE_FACTORY_WITH_CREATOR_AND_ID(type, typecreator, id, factory) \
-  _INTERNAL_DECLARE_FACTORY_WITH_CREATOR(type, typecreator, id, factory, __LINE__)
-
-#define DECLARE_FACTORY_WITH_CREATOR(type, typecreator, factory) \
-  DECLARE_FACTORY_WITH_CREATOR_AND_ID(type, typecreator, \
-      ::Gaudi::PluginService::Details::demangle<type>(), factory)
-
-#define DECLARE_COMPONENT(type) \
-  DECLARE_FACTORY(type, type::Factory)
-
-#define DECLARE_COMPONENT_WITH_ID(type, id) \
-  DECLARE_FACTORY_WITH_ID(type, id, type::Factory)
-
-namespace Gaudi { namespace PluginService {
-
-#if !defined(__REFLEX__) || defined(ATLAS)
-  /// Class wrapping the signature for a factory with any number of arguments.
-  template <typename R, typename... Args>
-  class Factory {
-  public:
-    typedef R  ReturnType;
-    typedef R (*FuncType)(Args&&...);
-
-    static ReturnType create(const std::string& id, Args... args) {
-      const FuncType c = Details::getCreator<FuncType>(id);
-      return c ? (*c)(std::forward<Args>(args)...) : 0;
-    }
-
-    template <typename T>
-    static ReturnType create(const T& id, Args... args) {
-      std::ostringstream o; o << id;
-      return create(o.str(), std::forward<Args>(args)...);
-    }
-  };
+#if GAUDI_PLUGIN_SERVICE_USE_V2
+#  include "Gaudi/PluginServiceV2.h"
+#else
+#  include "Gaudi/PluginServiceV1.h"
 #endif
 
-  class GAUDIPS_EXPORT Exception: public std::exception {
-  public:
-    Exception(const std::string& msg);
-    virtual ~Exception() throw();
-    virtual const char* what() const throw();
-  private:
-    std::string m_msg;
-  };
-}}
-
-#endif //_GAUDI_PLUGIN_SERVICE_H_
+#endif
diff --git a/GaudiPluginService/Gaudi/PluginServiceV1.h b/GaudiPluginService/Gaudi/PluginServiceV1.h
new file mode 100644
index 0000000000000000000000000000000000000000..94dff3df26ab5185827485cbf6ba8e4efdf25380
--- /dev/null
+++ b/GaudiPluginService/Gaudi/PluginServiceV1.h
@@ -0,0 +1,86 @@
+#ifndef _GAUDI_PLUGIN_SERVICE_V1_H_
+#define _GAUDI_PLUGIN_SERVICE_V1_H_
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+/// @see @ref GaudiPluginService-readme
+
+#include <Gaudi/Details/PluginServiceDetailsV1.h>
+#include <string>
+#include <typeinfo>
+#include <utility>
+
+#define _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory )                                                            \
+  _PS_V1_INTERNAL_DECLARE_FACTORY( type, id, factory, __LINE__ )
+
+#define _PS_V1_DECLARE_FACTORY( type, factory )                                                                        \
+  _PS_V1_DECLARE_FACTORY_WITH_ID( type, ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
+
+#define _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory )                                   \
+  _PS_V1_INTERNAL_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, id, factory, __LINE__ )
+
+#define _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory )                                              \
+  _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator,                                                       \
+                                              ::Gaudi::PluginService::v1::Details::demangle<type>(), factory )
+
+#define _PS_V1_DECLARE_COMPONENT( type ) _PS_V1_DECLARE_FACTORY( type, type::Factory )
+
+#define _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, type::Factory )
+
+#if !GAUDI_PLUGIN_SERVICE_USE_V2
+#  define DECLARE_FACTORY_WITH_ID( type, id, factory ) _PS_V1_DECLARE_FACTORY_WITH_ID( type, id, factory )
+#  define DECLARE_FACTORY( type, factory ) _PS_V1_DECLARE_FACTORY( type, factory )
+#  define DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory )                                        \
+    _PS_V1_DECLARE_FACTORY_WITH_CREATOR_AND_ID( type, typecreator, id, factory )
+#  define DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory )                                                   \
+    _PS_V1_DECLARE_FACTORY_WITH_CREATOR( type, typecreator, factory )
+#  define DECLARE_COMPONENT( type ) _PS_V1_DECLARE_COMPONENT( type )
+#  define DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V1_DECLARE_COMPONENT_WITH_ID( type, id )
+#endif
+
+namespace Gaudi {
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V1_INLINE namespace v1 {
+      /// Class wrapping the signature for a factory with any number of arguments.
+      template <typename R, typename... Args>
+      class Factory {
+      public:
+        typedef R ReturnType;
+        typedef R ( *FuncType )( Args&&... );
+
+        static ReturnType create( const std::string& id, Args... args ) {
+          const FuncType c = Details::getCreator<FuncType>( id );
+          return c ? ( *c )( std::forward<Args>( args )... ) : 0;
+        }
+
+        template <typename T>
+        static ReturnType create( const T& id, Args... args ) {
+          std::ostringstream o;
+          o << id;
+          return create( o.str(), std::forward<Args>( args )... );
+        }
+      };
+
+      class GAUDIPS_EXPORT Exception : public std::exception {
+      public:
+        Exception( std::string msg );
+        ~Exception() throw() override;
+        const char* what() const throw() override;
+
+      private:
+        std::string m_msg;
+      };
+    }
+  } // namespace PluginService
+} // namespace Gaudi
+
+#endif //_GAUDI_PLUGIN_SERVICE_H_
diff --git a/GaudiPluginService/Gaudi/PluginServiceV2.h b/GaudiPluginService/Gaudi/PluginServiceV2.h
new file mode 100644
index 0000000000000000000000000000000000000000..c06d7adfaa3c4fffa47db7fb9f8e2972a55d075d
--- /dev/null
+++ b/GaudiPluginService/Gaudi/PluginServiceV2.h
@@ -0,0 +1,140 @@
+#ifndef _GAUDI_PLUGIN_SERVICE_V2_H_
+#define _GAUDI_PLUGIN_SERVICE_V2_H_
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+/// See @ref GaudiPluginService-readme
+
+#include <Gaudi/Details/PluginServiceDetailsV2.h>
+#include <functional>
+#include <memory>
+#include <string>
+#include <type_traits>
+#include <typeinfo>
+#include <utility>
+
+namespace Gaudi {
+  /// See @ref GaudiPluginService-readme
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V2_INLINE namespace v2 {
+      /// \cond FWD_DECL
+      template <typename>
+      struct Factory;
+      /// \endcond
+
+      /// Class wrapping the signature for a factory with any number of arguments.
+      template <typename R, typename... Args>
+      struct Factory<R( Args... )> {
+        using Traits          = Details::Traits<R( Args... )>;
+        using ReturnType      = typename Traits::ReturnType;
+        using FactoryType     = typename Traits::FactoryType;
+        using ReturnValueType = R;
+
+        /// Function to call to create an instance of type identified by `id` and that uses this factory signature.
+        template <typename T>
+        static ReturnType create( const T& id, Args... args ) {
+          try {
+            return Details::Registry::instance().get<FactoryType>( Details::stringify_id( id ) )(
+                std::forward<Args>( args )... );
+          } catch ( std::bad_any_cast& ) {
+            Details::reportBadAnyCast( typeid( FactoryType ), Details::stringify_id( id ) );
+            return nullptr;
+          }
+        }
+      };
+
+      /// Helper to declare the factory implementation for a user defined type `T`.
+      ///
+      /// The basic use is:
+      /// ```cpp
+      /// namespace {
+      ///   Gaudi::PluginService::DeclareFactory<MyComponent> __some_random_name;
+      /// }
+      /// ```
+      /// which is the equivalent of `DECLARE_COMPONENT( MyComponent )`.
+      ///
+      /// It's possible to specify a custom factory type (instead of the default type alias `MyComponent::Factory`):
+      /// ```cpp
+      /// namespace {
+      ///   using namespace Gaudi::PluginService;
+      ///   DeclareFactory<MyComponent, Factory<MyBase*( int, int )>> __some_random_name;
+      /// }
+      /// ```
+      ///
+      /// We can pass arguments to the constructor to use a custom factory function, or a special _id_, or properties:
+      /// ```cpp
+      /// namespace {
+      ///   using namespace Gaudi::PluginService;
+      ///   DeclareFactory<MyComponent> __some_random_name( "special-id",
+      ///                                                   []() -> MyComponent::Factory::ReturnType {
+      ///                                                     return std::make_unique<MyComponent>( "special-id" );
+      ///                                                   },
+      ///                                                   {{"MyProperty", "special"}} );
+      /// }
+      /// ```
+      template <typename T, typename F = typename T::Factory>
+      struct DeclareFactory {
+        using DefaultFactory = Details::DefaultFactory<T, F>;
+
+        DeclareFactory( typename F::FactoryType f = DefaultFactory{}, Details::Registry::Properties props = {} )
+            : DeclareFactory( Details::demangle<T>(), std::move( f ), std::move( props ) ) {}
+
+        DeclareFactory( const std::string& id, typename F::FactoryType f = DefaultFactory{},
+                        Details::Registry::Properties props = {} ) {
+          using Details::Registry;
+
+          if ( props.find( "ClassName" ) == end( props ) ) props.emplace( "ClassName", Details::demangle<T>() );
+
+          Registry::instance().add( id, {libraryName(), std::move( f ), std::move( props )} );
+        }
+
+        DeclareFactory( Details::Registry::Properties props )
+            : DeclareFactory( DefaultFactory{}, std::move( props ) ) {}
+
+      private:
+        /// Helper to record the name of the library that declare the factory.
+        static std::string libraryName() { return Details::getDSONameFor( reinterpret_cast<void*>( libraryName ) ); }
+      };
+    }
+  } // namespace PluginService
+} // namespace Gaudi
+
+#define _PS_V2_DECLARE_COMPONENT( type )                                                                               \
+  namespace {                                                                                                          \
+    ::Gaudi::PluginService::v2::DeclareFactory<type> _PS_V2_INTERNAL_FACTORY_REGISTER_CNAME{};                         \
+  }
+
+#define _PS_V2_DECLARE_COMPONENT_WITH_ID( type, id )                                                                   \
+  namespace {                                                                                                          \
+    ::Gaudi::PluginService::v2::DeclareFactory<type> _PS_V2_INTERNAL_FACTORY_REGISTER_CNAME{                           \
+        ::Gaudi::PluginService::v2::Details::stringify_id( id )};                                                      \
+  }
+
+#define _PS_V2_DECLARE_FACTORY( type, factory )                                                                        \
+  namespace {                                                                                                          \
+    ::Gaudi::PluginService::v2::DeclareFactory<type, factory> _PS_V2_INTERNAL_FACTORY_REGISTER_CNAME{};                \
+  }
+
+#define _PS_V2_DECLARE_FACTORY_WITH_ID( type, id, factory )                                                            \
+  namespace {                                                                                                          \
+    ::Gaudi::PluginService::v2::DeclareFactory<type, factory> _PS_V2_INTERNAL_FACTORY_REGISTER_CNAME{                  \
+        ::Gaudi::PluginService::v2::Details::stringify_id( id )};                                                      \
+  }
+
+#if GAUDI_PLUGIN_SERVICE_USE_V2
+#  define DECLARE_COMPONENT( type ) _PS_V2_DECLARE_COMPONENT( type )
+#  define DECLARE_COMPONENT_WITH_ID( type, id ) _PS_V2_DECLARE_COMPONENT_WITH_ID( type, id )
+#  define DECLARE_FACTORY( type, factory ) _PS_V2_DECLARE_FACTORY( type, factory )
+#  define DECLARE_FACTORY_WITH_ID( type, id, factory ) _PS_V2_DECLARE_FACTORY_WITH_ID( type, id, factory )
+#endif
+
+#endif //_GAUDI_PLUGIN_SERVICE_H_
diff --git a/GaudiPluginService/cmt/fragments/listcomponents b/GaudiPluginService/cmt/fragments/listcomponents
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/GaudiPluginService/cmt/fragments/listcomponents_header b/GaudiPluginService/cmt/fragments/listcomponents_header
deleted file mode 100644
index b2930c073f6d134caee2067d284f3feef2eca501..0000000000000000000000000000000000000000
--- a/GaudiPluginService/cmt/fragments/listcomponents_header
+++ /dev/null
@@ -1,22 +0,0 @@
-##
-componentslistfile = ${LIBNAME}.components
-COMPONENTSLIST_DIR = ../$(tag)
-fulllibname = lib${LIBNAME}.$(shlibsuffix)
-
-${CONSTITUENT} :: ${COMPONENTSLIST_DIR}/$(componentslistfile)
-	@:
-
-${COMPONENTSLIST_DIR}/$(componentslistfile) :: $(bin)$(fulllibname)
-	@echo 'Generating componentslist file for $(fulllibname)'
-	cd ../$(tag);$(listcomponents_cmd) --output ${COMPONENTSLIST_DIR}/$(componentslistfile) $(fulllibname)
-
-install :: ${CONSTITUENT}install
-${CONSTITUENT}install :: ${CONSTITUENT}
-
-uninstall :: ${CONSTITUENT}uninstall
-${CONSTITUENT}uninstall :: ${CONSTITUENT}clean
-
-${CONSTITUENT}clean ::
-	@echo 'Deleting $(componentslistfile)'
-	@rm -f ${COMPONENTSLIST_DIR}/$(componentslistfile)
-
diff --git a/GaudiPluginService/cmt/requirements b/GaudiPluginService/cmt/requirements
deleted file mode 100644
index 7ba1f67a6dd37373f079ed99e472c9117397d0c9..0000000000000000000000000000000000000000
--- a/GaudiPluginService/cmt/requirements
+++ /dev/null
@@ -1,36 +0,0 @@
-package GaudiPluginService
-version v2r2
-author "Marco Clemencic"
-
-private
-# genconfuser.py cannot be used in GaudiPluginService
-# Note: the tag must be set before including GaudiPolicy
-apply_tag skip_genconfuser
-end_private
-
-use GaudiPolicy *
-
-apply_pattern install_more_includes more=Gaudi
-
-library GaudiPluginService -no_static  PluginService.cpp capi_pluginservice.cpp
-apply_pattern linker_library library=GaudiPluginService
-
-apply_pattern install_python_modules
-
-application listcomponents listcomponents.cpp
-macro_append listcomponents_dependencies " GaudiPluginService "
-# This seems to be needed on Ubuntu, but not on SLC6.
-macro_append listcomponentslinkopts " -ldl "
-
-macro listcomponents_cmd listcomponents.exe
-make_fragment listcomponents -header=listcomponents_header
-
-# FIXME: we need to be able to determine if PluginSvc is available globally
-macro_append pp_cppflags " -DHAVE_GAUDI_PLUGINSVC "
-macro_append pp_cflags   " -DHAVE_GAUDI_PLUGINSVC "
-apply_tag HAVE_GAUDI_PLUGINSVC
-
-private
-macro_append pp_cppflags " -DGaudiPluginService_EXPORTS "
-macro_append pp_cppflags " -DGAUDI_REFLEX_COMPONENT_ALIASES "
-end_private
diff --git a/GaudiPluginService/doc/README.md b/GaudiPluginService/doc/README.md
index f8eab973b1924bb4a56930a1a6f5b3a22ee2fc5c..a8d84d04a315a8286d326d6efce7c50598206cec 100644
--- a/GaudiPluginService/doc/README.md
+++ b/GaudiPluginService/doc/README.md
@@ -1,8 +1,6 @@
-Gaudi Plugin Service Instructions              {#GaudiPluginService-readme}
-==================================
+# Gaudi::PluginService              {#GaudiPluginService-readme}
 
-Introduction
-------------
+## Introduction
 
 The Gaudi Plugin Service is a small tool to add to a C++ application the
 possibility of dynamically instantiate (via _factories_) objects from classes
@@ -11,118 +9,180 @@ defined in plug-in (or component) libraries.
 While being part of Gaudi, it only depends on a Posix system (support for other
 systems is possible, but very low priority).
 
-
-Usage
-------
+## Usage
 
 To be able to use plug-ins from an application you need:
-
--   a base class (abstract or not) from a library
--   a library that provides a class that inherits from the base class
+- a base class (abstract or not) from a library
+- a library that provides a class that inherits from the base class
 
 In the base class you should declare the signature of the the factory for your
 derived classes.  For example, if your base class is called `Foo` and you want
 to instantiate the derived classes with one `std::string` argument, you can
 write something like:
+```cpp
+#include <Gaudi/PluginService.h>
+#include <string>
+class Foo {
+public:
+  using Factory = Gaudi::PluginService::Factory<Foo*( const std::string& )>;
 
-    #include <Gaudi/PluginService.h>
-    #include <string>
-    class Foo {
-    public:
-      typedef Gaudi::PluginService::Factory1<Foo*, const std::string&> Factory;
-
-      /// Constructor
-      Foo(const std::string& name);
+  /// Constructor
+  Foo( const std::string& name );
 
-      // ...
-    };
+  // ...
+};
+```
 
-The templated class `Gaudi::PluginService::Factory1` takes as first template
-argument the return type of the factory and as second argument the type of the
-first argument of the factory function (with all the required qualifiers
-explicit).  There are several variants of the class for different number of
-arguments required by the constructor (`Factory0`, `Factory1`, `Factory2`, ...).
+The templated class `Gaudi::PluginService::Factory` takes as template
+argument the _ideal_ signature of the factory.  The in the above example, the
+actual signature of the factory is `std::unique_ptr<Foo>(const std::string&)`,
+but we declare is as returning `Foo*` for brevity.
 
 The plug-in class `Bar` defined in the dynamically loaded library will require
 a declaration to the Plugin Service to use it, so in the source file you have to
 have something like:
-
-    #include "Bar.h"
-    DECLARE_COMPONENT(Bar)
+```cpp
+#include "Bar.h"
+DECLARE_COMPONENT( Bar )
+```
 
 The library with `Foo` and the library with `Bar` will have to be linked against
 the library `libGaudiPluginService.so`.
 
 To enable the automatic discovery of plugins, the library with `Bar` must be
 processed by the program `listcomponents` and the output must be stored in a
-file with extension `.comonents` in a directory in the `LD_LIBRARY_PATH`.
+file with extension `.components` in a directory in the `LD_LIBRARY_PATH`.
 For example, if the `lib` directory contains `libBar.so` and it is specified in
 the `LD_LIBRARY_PATH`, you can call the commands:
-
-    listcomponents libBar.so >> lib/MyApp.components
+```sh
+listcomponents lib/libBar.so >> lib/MyApp.components
+```
 
 Note that the `.components` file does not need to be in the same directory as
 `libBar.so`.
 
 The application code, linked against the library providing `Foo` can now
 instantiate objects of class `Bar` like this:
+```cpp
+#include "Foo.h"
 
-    #include "Foo.h"
-
-    // ...
-    Foo* myBar = Foo::Factory::create("Bar", "myBar");
-    // ...
+// ...
+std::unique_ptr<Foo> myBar = Foo::Factory::create( "Bar", "myBar" );
+// ...
+```
 
 where the first argument to the function `create` is the name of the class you
 want to instantiate, and the other arguments are passed to the constructor of
 the class.
 
-
-Special cases
--------------
+## Special cases
 
 ### Factory aliases
 
 Together with the simple usage described above, the Gaudi Plugin Service allows
-you to give to use aliases to refer to the plug-in class.
+you to use aliases to refer to the plug-in class.
 For example, for a templated plug-in class you may have:
-
-    #include "TemplatedBar.h"
-    typedef TemplatedBar<int, std::vector<double> > MyBar;
-    DECLARE_COMPONENT(MyBar)
+```cpp
+#include "TemplatedBar.h"
+typedef TemplatedBar<int, std::vector<double>> MyBar;
+DECLARE_COMPONENT( MyBar )
+```
 
 but to instantiate it you must call
-
-    Foo* b = Foo::Factory::create("TemplatedBar<int, std::vector<double> >",
-                                  "MyTemplatedBar");
+```cpp
+auto b = Foo::Factory::create( "TemplatedBar<int, std::vector<double> >",
+                               "MyTemplatedBar" );
+```
 
 Which is error prone and unreadable, but you can declare the component class
 with and _id_ (an alias):
-
-    DECLARE_COMPONENT_WITH_ID(MyBar, "MyBar")
+```cpp
+DECLARE_COMPONENT_WITH_ID( MyBar, "MyBar" )
+```
 
 (note that the _id_ must support the `<<` operator of `std::ostream`).
 The call in the application becomes:
-
-    Foo* b = Foo::Factory::create("MyBar", "MyTemplatedBar");
-
+```cpp
+auto b = Foo::Factory::create( "MyBar", "MyTemplatedBar" );
+```
 
 ### Namespaces
 
-You cannot use namespace delimiters in the call to `DECLARE_COMPONENT`, but you
-can still use namespaces for you component classes. For example, if you have the
-class `Baz::Fun` you can declare it as a component class in any of the following
-ways:
+When dealing with components in namespaces, you have several ways to invoke
+`DECLARE_COMPONENT`. For example, if you have the class `Baz::Fun` you can
+declare it as a component class in any of the following ways:
+```cpp
+DECLARE_COMPONENT( Baz::Fun )
 
-    using Baz::Fun;
-    DECLARE_COMPONENT(Fun)
+using Baz::Fun;
+DECLARE_COMPONENT( Fun )
 
-    namespace Baz {
-      DECLARE_COMPONENT(Fun)
-    }
+namespace Baz {
+  DECLARE_COMPONENT( Fun )
+}
 
-    typedef Baz::Fun BF;
-    DECLARE_COMPONENT(BF)
+typedef Baz::Fun BF;
+DECLARE_COMPONENT( BF )
+```
 
 In all cases the name of the factory to be passed to the `create` function will
-be "Baz::Fun".
+be `Baz::Fun`.
+
+### Custom Factories
+
+When using `DECLARE_COMPONENT`, we register as factory for our class a function
+equivalent to
+```cpp
+std::unique_ptr<Foo> factory(Args... args) {
+  return std::make_unique<Bar>(args...);
+}
+```
+but it's possible to use custom factory functions. This is a rather convoluted
+example:
+```cpp
+// -- declaration --
+struct MyInterface {
+  virtual ~MyInterface() = default;
+
+  virtual const std::string& name() const = 0;
+};
+
+struct BaseSetupHelper;
+
+struct MyBase : MyInterface {
+  using Factory = Gaudi::PluginService::Factory<MyInterface*( const std::string& )>;
+
+  const std::string& name() const override { return m_name; }
+private:
+  friend BaseSetupHelper;
+  std::string m_name;
+};
+
+// -- implementation --
+struct MyComponent : MyBase {
+  MyComponent() {}
+};
+
+struct BaseSetupHelper {
+  static void setName( MyBase* base, const std::string& name ) { base->m_name = name; }
+};
+
+namespace
+{
+  std::unique_ptr<MyInterface> creator( const std::string& name )
+  {
+    auto p = std::make_unique<MyComponent>();
+    BaseSetupHelper::setName( p.get(), name );
+    return std::move( p );
+  }
+  Gaudi::PluginService::DeclareFactory<MyComponent> _{creator};
+}
+
+// -- use --
+void useComponent()
+{
+  auto c = MyBase::Factory::create( "MyComponent", "TheName" );
+  // ...
+}
+
+```
diff --git a/GaudiPluginService/doc/release.notes b/GaudiPluginService/doc/release.notes
index 312acb298d25a1fab5dd71f5de426463a1094d4e..5c9880e5c66e55a0940b1d8de48843020857de02 100644
--- a/GaudiPluginService/doc/release.notes
+++ b/GaudiPluginService/doc/release.notes
@@ -2,9 +2,109 @@
 ! Package     : GaudiPluginService
 ! Responsible : Marco Clemencic
 ! Purpose     : Provide a generic plugin service.
-! Commit Id   : 6d000098f7da11c89cbbbfa26aaa43c277f6d903
+! Commit Id   : f65d50dc9934d137aa95036285677d9fa8576b7d
 !-----------------------------------------------------------------------------
 
+================================ Gaudi v28r3 =================================
+
+
+================================ Gaudi v28r2 =================================
+
+
+================================ Gaudi v28r1 =================================
+
+
+================================ Gaudi v28r0 =================================
+
+! 2016-10-19 - Marco Clemencic (commit e2c1f4a)
+
+ - fixes and improvements for ROOT 6.08 and gcc 6.1
+
+   * added option to use or not GCC old C++11 ABI (off by default)
+   * added some missing #include for the usual headers clean up in gcc
+   * fixed a few places where old GCC behaviour was assumed
+   * fixed default C++ standard version for clang >= 3.7
+   * fixed GAUDI-1242
+
+    See merge request !187
+
+! 2016-10-12 - Marco Clemencic (commit b5e05a1)
+
+ - improved handling of package version in CMake configuration
+
+   use project version if a package version is not provided
+    See GAUDI-1215.
+    See merge request !175
+
+! 2016-10-01 - Marco Clemencic (commit 99b1001)
+
+ - enable missing override warnings (gcc >= 5.1)
+
+   Fixes GAUDI-1241
+    See merge request !192
+
+! 2016-08-19 - Marco Clemencic (commit f3050c3)
+
+ - Fix compile time warnings
+
+   fixed/hidden all warnings in GCC builds
+    See merge request !189
+
+! 2016-07-25 - Marco Clemencic (commit e3d4b07)
+
+ - remove CMT configuration and related files
+
+   * removed CMT configuration files
+   * adapted scripts not to use CMT
+    Fixes GAUDI-1216 Fixes GAUDI-979
+    See merge request !186
+
+! 2016-05-18 - Charles Leggett (commit 3f2b55e)
+
+ - Report underlying error when dlopen fails in listcomponents
+
+   When dlopen files in listcomponents.exe, listcomponents prints only that the
+   library didn't load, but doesn't include information on the underlying
+   error. This change adds the result of dlerror to the error message.
+    See merge request !159
+
+========================== GaudiPluginService v3r1 ===========================
+
+! 2015-10-26 - commit de80db5
+
+ - More modernization changes
+
+   Fix (almost) all warnings from clang 3.7, and use clang-modernize to further
+   modernize the code.
+
+   Fixes GAUDI-1118.
+
+   See merge request !49
+
+
+! 2015-10-16 - commit bf01805
+
+ - Merge branch 'GAUDI-1111' into 'master'
+
+   remove dependency on Boost from GaudiPluginService
+
+   Reverted the part of commit dddeca32 that introduce the dependency on Boost.
+
+   Fixes GAUDI-1111.
+
+   See merge request !53
+
+========================== GaudiPluginService v3r0 ===========================
+
+! 2015-09-11 - commit c062cbe
+
+ - C++11 modernization changes
+
+   Some trivial - and some not so trivial! - changes which take advantage of
+   C++11...
+
+   See merge request !7
+
 ========================== GaudiPluginService v2r2 ===========================
 ! 2014-07-04 - Marco Clemencic
  - Improved Doxygen documentation.
@@ -20,7 +120,7 @@
 
 ! 2014-05-07 - Sebastien Binet
  - leverage C++11 variadic templates for the factories.
- - internally, also use l-value references and std::forward
+ - internally, also use r-value references and std::forward
  - hide the C++11 constructs from Reflex as GCC-XML parser predates C++11
 
 ========================== GaudiPluginService v1r2 ===========================
diff --git a/GaudiPluginService/interface/DD4hep.cpp b/GaudiPluginService/interface/DD4hep.cpp
index f114463e559ad6e431086588d3fc5aaf5fe9c0d5..7660cbf6dfe3ed507041ef9220525cdae57a4a90 100644
--- a/GaudiPluginService/interface/DD4hep.cpp
+++ b/GaudiPluginService/interface/DD4hep.cpp
@@ -16,6 +16,16 @@
 #include <set>
 #include <typeinfo>
 #include <utility>
+#if __cplusplus >= 201703
+#  include <any>
+#else
+#  include <boost/any.hpp>
+namespace std {
+  using boost::any;
+  using boost::any_cast;
+  using boost::bad_any_cast;
+} // namespace std
+#endif
 
 #define Gaudi DD4hep_Flavor
 
@@ -24,17 +34,29 @@
 #pragma clang diagnostic ignored "-Wkeyword-macro"
 #endif
 
+
+#define GAUDI_PLUGIN_SERVICE_V2 1
+
+#ifndef GAUDI_PLUGIN_SERVICE_V2
 #define private public
+#endif
 // This define will give us a version of the gaudi plugin manager,
 // which will NOT clash with Gaudi! It of course has a correspondance in the
 // compiler options of the GaudiPluginService package.
-#include "Gaudi/PluginService.h"
+#include <Gaudi/PluginService.h>
+
+#ifndef GAUDI_PLUGIN_SERVICE_V2
 #undef private
+#endif
 
 #ifdef __clang__
 #pragma clang diagnostic pop
 #endif
 
+#ifdef GAUDI_PLUGIN_SERVICE_USE_V2
+using namespace Gaudi::PluginService::v2;
+#endif
+
 extern "C"  {
   /// Access debug level
   int dd4hep_pluginmgr_getdebug()   {
@@ -47,12 +69,26 @@ extern "C"  {
     return debug;
   }
   /// Access factory by name
-  void* dd4hep_pluginmgr_create(const char* id, const char* sig)   {
+  std::any dd4hep_pluginmgr_create(const char* id, const char* sig)   {
+#ifdef GAUDI_PLUGIN_SERVICE_USE_V2
+    const Details::Registry::FactoryInfo& info = Details::Registry::instance().getInfo(id, true);
+    return info.factory;
+#else
     return Gaudi::PluginService::Details::getCreator(id,sig);
+#endif
   }
+#ifdef GAUDI_PLUGIN_SERVICE_USE_V2
+  /// Add a new factory to the registry
+  void dd4hep_pluginmgr_add_factory(const char* id, std::any&& stub, const char* sig, const char* ret)   {
+    Details::Registry::Properties props = {};
+    std::string lib_name = "";
+    Details::Registry::instance().add( id, {lib_name, std::move( stub ), std::move( props )} );
+  }
+#else
   /// Add a new factory to the registry
   void dd4hep_pluginmgr_add_factory(const char* id, void* stub, const char* sig, const char* ret)   {
     Gaudi::PluginService::Details::Registry::instance().add(id,stub,sig,ret,id);
   }
+#endif
 }
 
diff --git a/GaudiPluginService/python/GaudiPluginService/cpluginsvc.py b/GaudiPluginService/python/GaudiPluginService/cpluginsvc.py
index 8af5cdb017331ce1bc4909e4f0f4d99c9239d5a4..3b838fe9c9f5f7cc0d879bff544d01bc6669641f 100644
--- a/GaudiPluginService/python/GaudiPluginService/cpluginsvc.py
+++ b/GaudiPluginService/python/GaudiPluginService/cpluginsvc.py
@@ -1,4 +1,4 @@
-## cpluginsvc is a ctypes-based wrapper for the C-exposed API of GaudiPluginService
+# cpluginsvc is a ctypes-based wrapper for the C-exposed API of GaudiPluginService
 __doc__ = '''
 cpluginsvc is a ctypes-based wrapper for the C-API of the GaudiPluginService.
 
@@ -25,9 +25,11 @@ __all__ = (
     "factories",
     "Factory",
     "Property",
-    )
+)
 
 _libname = None
+
+
 def _get_filename():
     if _libname:
         return _libname
@@ -35,14 +37,16 @@ def _get_filename():
     name = platform.system()
 
     fname = {
-        'Darwin':  "libGaudiPluginService.so", # or .dylib ? FIXME
+        'Darwin': "libGaudiPluginService.dylib",
         'Windows': "libGaudiPluginService.dll",
-        'Linux':   "libGaudiPluginService.so",
-        }[name]
+        'Linux': "libGaudiPluginService.so",
+    }[name]
     return fname
 
+
 _libname = _get_filename()
-_lib = ctypes.cdll.LoadLibrary(_libname)
+_lib = ctypes.CDLL(_libname, ctypes.RTLD_GLOBAL)
+
 
 class Registry(ctypes.Structure):
     '''Registry holds the list of factories known by the gaudi PluginService.
@@ -57,24 +61,30 @@ class Registry(ctypes.Structure):
             f = _lib.cgaudi_pluginsvc_get_factory_at(self, i)
             facts[f.name] = f
         return facts
+
     pass
 
+
 _instance = None
+
+
 def registry():
     '''registry returns the singleton-like instance of the plugin service.'''
-    
+
     global _instance
     if _instance:
         return _instance
     _instance = _lib.cgaudi_pluginsvc_instance()
     return _instance
 
+
 def factories():
     '''
     factories returns the list of components factory informations known to the plugin service
     '''
     return registry().factories
 
+
 class Factory(ctypes.Structure):
     """
     Factory holds informations about a component's factory:
@@ -88,7 +98,7 @@ class Factory(ctypes.Structure):
     _fields_ = [
         ("_registry", Registry),
         ("_id", ctypes.c_char_p),
-        ]
+    ]
 
     @property
     def name(self):
@@ -102,10 +112,6 @@ class Factory(ctypes.Structure):
     def type(self):
         return _lib.cgaudi_factory_get_type(self)
 
-    @property
-    def rtype(self):
-        return _lib.cgaudi_factory_get_rtype(self)
-
     @property
     def classname(self):
         return _lib.cgaudi_factory_get_classname(self)
@@ -122,19 +128,20 @@ class Factory(ctypes.Structure):
     def load(self):
         '''load the C++ library hosting this factory
         '''
-        return ctypes.cdll.LoadLibrary(self.library)
+        return ctypes.CDLL(self.library, ctypes.RTLD_GLOBAL)
 
     def __repr__(self):
-        return "<Factory id=%s library=%s type=%s rtype=%s class=%s props=%d>" % (
+        return "<Factory id=%s library=%s type=%s class=%s props=%d>" % (
             self._id,
             self.library,
             self.type,
-            self.rtype,
             self.classname,
             len(self.properties),
-            )
+        )
+
     pass
 
+
 class Property(ctypes.Structure):
     '''
     Property is a pair (key, value) optionally decorating a factory.
@@ -144,7 +151,7 @@ class Property(ctypes.Structure):
         ("_registry", Registry),
         ("_id", ctypes.c_char_p),
         ("_key", ctypes.c_char_p),
-        ]
+    ]
 
     @property
     def key(self):
@@ -156,83 +163,70 @@ class Property(ctypes.Structure):
 
     pass
 
-_functions_list = [
-    ("cgaudi_pluginsvc_instance",
-     [],
-     Registry,
-     ),
-
-    ("cgaudi_pluginsvc_get_factory_size",
-     [Registry],
-     ctypes.c_int,
-     ),
-
-    ("cgaudi_pluginsvc_get_factory_at",
-     [Registry, ctypes.c_int],
-     Factory,
-     ),
-
-    ("cgaudi_factory_get_library",
-     [Factory],
-     ctypes.c_char_p,
-     ),
-
-    ("cgaudi_factory_get_type",
-     [Factory],
-     ctypes.c_char_p,
-     ),
-
-    ("cgaudi_factory_get_rtype",
-     [Factory],
-     ctypes.c_char_p,
-     ),
-
-    ("cgaudi_factory_get_classname",
-     [Factory],
-     ctypes.c_char_p,
-     ),
-
-    ("cgaudi_factory_get_property_size",
-     [Factory],
-     ctypes.c_int,
-     ),
-
-    ("cgaudi_factory_get_property_at",
-     [Factory, ctypes.c_int],
-     Property,
-     ),
-
-    ("cgaudi_property_get_key",
-     [Property],
-     ctypes.c_char_p,
-     ),
-
-    ("cgaudi_property_get_value",
-     [Property],
-     ctypes.c_char_p,
-     )
-]
+
+_functions_list = [(
+    "cgaudi_pluginsvc_instance",
+    [],
+    Registry,
+), (
+    "cgaudi_pluginsvc_get_factory_size",
+    [Registry],
+    ctypes.c_int,
+), (
+    "cgaudi_pluginsvc_get_factory_at",
+    [Registry, ctypes.c_int],
+    Factory,
+), (
+    "cgaudi_factory_get_library",
+    [Factory],
+    ctypes.c_char_p,
+), (
+    "cgaudi_factory_get_type",
+    [Factory],
+    ctypes.c_char_p,
+), (
+    "cgaudi_factory_get_classname",
+    [Factory],
+    ctypes.c_char_p,
+), (
+    "cgaudi_factory_get_property_size",
+    [Factory],
+    ctypes.c_int,
+), (
+    "cgaudi_factory_get_property_at",
+    [Factory, ctypes.c_int],
+    Property,
+), (
+    "cgaudi_property_get_key",
+    [Property],
+    ctypes.c_char_p,
+), (
+    "cgaudi_property_get_value",
+    [Property],
+    ctypes.c_char_p,
+)]
 
 for f in _functions_list:
     n = f[0]
     func = getattr(_lib, n)
     func.argtypes = f[1]
     func.restype = f[2]
-    if len(f) == 4: func.errcheck = f[3]
+    if len(f) == 4:
+        func.errcheck = f[3]
     pass
 
-
 if __name__ == "__main__":
-    print ("instance: %s" % registry())
-    print ("factories: %d" % len(factories()))
-    for _,f in factories().items():
+    print("instance: %s" % registry())
+    print("factories: %d" % len(factories()))
+    for _, f in factories().items():
         try:
             f.load()
         except Exception:
-            print ("** could not load [%s] for factory [%s]" % (f.library, f.name))
+            print("** could not load [%s] for factory [%s]" % (f.library,
+                                                               f.name))
             continue
         print f
-        for k,v in f.properties.items():
-            print ("\t%s: %s" % (k,v))
+        for k, v in f.properties.items():
+            print("\t%s: %s" % (k, v))
 
-## EOF
+# EOF
diff --git a/GaudiPluginService/src/PluginService.cpp b/GaudiPluginService/src/PluginService.cpp
deleted file mode 100644
index 20effcd88bac8817ad199943c14b07355c812e8a..0000000000000000000000000000000000000000
--- a/GaudiPluginService/src/PluginService.cpp
+++ /dev/null
@@ -1,413 +0,0 @@
-/*****************************************************************************\
-* (c) Copyright 2013 CERN                                                     *
-*                                                                             *
-* This software is distributed under the terms of the GNU General Public      *
-* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
-*                                                                             *
-* In applying this licence, CERN does not waive the privileges and immunities *
-* granted to it by virtue of its status as an Intergovernmental Organization  *
-* or submit itself to any jurisdiction.                                       *
-\*****************************************************************************/
-
-/// @author Marco Clemencic <marco.clemencic@cern.ch>
-
-#include <Gaudi/PluginService.h>
-
-#include <dlfcn.h>
-#include <dirent.h>
-
-#include <cstdlib>
-#include <iostream>
-#include <fstream>
-#include <memory>
-
-#include <cxxabi.h>
-#include <sys/stat.h>
-
-#if  defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L 
-#define REG_SCOPE_LOCK \
-  std::lock_guard<std::recursive_mutex> _guard(m_mutex);
-
-
-//namespace Gaudi { namespace PluginService { namespace Details { class Registry ; } } }
-
-namespace {
-  std::mutex registrySingletonMutex;
-  //  Gaudi::PluginService::Details::Registry* _theRegistry ;
-}
-#define SINGLETON_LOCK \
-  std::lock_guard<std::mutex> _guard(::registrySingletonMutex);
-#else
-#define REG_SCOPE_LOCK
-#define SINGLETON_LOCK
-#endif
-
-// string trimming functions taken from
-// http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring
-#include <algorithm>
-// trim from start
-static inline std::string &ltrim(std::string &s) {
-        s.erase(s.begin(),
-                std::find_if(s.begin(), s.end(),
-                             [](int c) {return !std::isspace(c);}));
-        return s;
-}
-
-// trim from end
-static inline std::string &rtrim(std::string &s) {
-        s.erase(std::find_if(s.rbegin(), s.rend(),
-                             [](int c) {return !std::isspace(c);})
-                                       .base(),
-                s.end());
-        return s;
-}
-// trim from both ends
-static inline std::string &trim(std::string &s) {
-        return ltrim(rtrim(s));
-}
-
-namespace {
-  /// Helper function used to set values in FactoryInfo data members only
-  /// if the original value is empty and reporting warnings in case of
-  /// inconsistencies.
-  inline void factoryInfoSetHelper(std::string& dest, const std::string& value,
-                                   const std::string& desc,
-                                   const std::string& id) {
-    if (dest.empty()) {
-      dest = value;
-    } else if (dest != value) {
-      std::ostringstream o;
-      o << "new factory loaded for '" << id << "' with different "
-        << desc << ": " << dest << " != " << value;
-      Gaudi::PluginService::Details::logger().warning(o.str());
-    }
-  }
-
-  struct OldStyleCnv {
-    std::string name;
-    void operator() (const char c) {
-      switch(c) {
-      case '<':
-      case '>':
-      case ',':
-      case '(':
-      case ')':
-      case ':':
-      case '.':
-        name.push_back('_'); break;
-      case '&':
-        name.push_back('r'); break;
-      case '*':
-        name.push_back('p'); break;
-      case ' ': break;
-      default:
-        name.push_back(c); break;
-      }
-    }
-  };
-  /// Convert a class name in the string used with the Reflex plugin service
-  std::string old_style_name(const std::string& name) {
-    return std::for_each(name.begin(), name.end(), OldStyleCnv()).name;
-  }
-}
-
-namespace Gaudi { namespace PluginService {
-
-  Exception::Exception(const std::string& msg): m_msg(msg) {}
-  Exception::~Exception() throw() {}
-  const char*  Exception::what() const throw() {
-    return m_msg.c_str();
-  }
-
-  namespace Details {
-    void* getCreator(const std::string& id, const std::string& type) {
-      return Registry::instance().get(id, type);
-    }
-
-    std::string demangle(const std::string& id) {
-      int   status;
-      char* realname;
-      realname = abi::__cxa_demangle(id.c_str(), 0, 0, &status);
-      if (realname == 0) return id;
-      std::string result(realname);
-      free(realname);
-      return result;
-    }
-    std::string demangle(const std::type_info& id) {
-      return demangle(id.name());
-    }
-
-    // Registry& Registry::instance() {
-    //   SINGLETON_LOCK
-    // 	if( ::_theRegistry == 0 ){
-    // 	  ::_theRegistry = new Registry ;
-    // 	}
-    //   return * ::_theRegistry ;
-    // }
-
-    Registry& Registry::instance() {
-      SINGLETON_LOCK
-	static Registry r;
-      return r;
-    }
-
-    Registry::Registry(): m_initialized(false) {}
-
-    void Registry::initialize() {
-      REG_SCOPE_LOCK
-      if (m_initialized) return;
-      m_initialized = true;
-#ifdef WIN32
-      const char* envVar = "PATH";
-      const char sep = ';';
-#else
-#ifdef APPLE
-      //fg: on macos >10.11 we cannot rely on DYLD_LIBRARY_PATH any more
-      //    and therefore use consistently DD4HEP_LIBRARY_PATH instead
-      const char* envVar = "DD4HEP_LIBRARY_PATH";
-      const char sep = ':';
-#else
-      const char* envVar = "LD_LIBRARY_PATH";
-      const char sep = ':';
-#endif
-#endif
-      char *search_path = ::getenv(envVar);
-      if (search_path) {
-        logger().debug(std::string("searching factories in ") + envVar);
-        std::string path(search_path);
-        std::string::size_type pos = 0;
-        std::string::size_type newpos = 0;
-        while (pos != std::string::npos) {
-          std::string dirName;
-          // get the next entry in the path
-          newpos = path.find(sep, pos);
-          if (newpos != std::string::npos) {
-            dirName = path.substr(pos, newpos - pos);
-            pos = newpos+1;
-          } else {
-            dirName = path.substr(pos);
-            pos = newpos;
-          }
-          logger().debug(std::string(" looking into ") + dirName);
-          // look for files called "*.components" in the directory
-          DIR *dir = opendir(dirName.c_str());
-          if (dir) {
-            struct dirent * entry;
-            while ((entry = readdir(dir))) {
-              std::string name(entry->d_name);
-              // check if the file name ends with ".components"
-              std::string::size_type extpos = name.find(".components");
-              if ((extpos != std::string::npos) &&
-                  ((extpos+11) == name.size())) {
-                std::string fullPath = (dirName + '/' + name);
-                { // check if it is a regular file
-                  struct stat buf;
-                  stat(fullPath.c_str(), &buf);
-                  if (!S_ISREG(buf.st_mode)) continue;
-                }
-                // read the file
-                logger().debug(std::string("  reading ") + name);
-                std::ifstream facts(fullPath.c_str());
-                std::string line;
-                int factoriesCount = 0;
-                int lineCount = 0;
-                while (!facts.eof()) {
-                  ++lineCount;
-                  std::getline(facts, line);
-                  trim(line);
-                  // skip empty lines and lines starting with '#'
-                  if (line.empty() || line[0] == '#') continue;
-                  // look for the separator
-                  std::string::size_type other_pos = line.find(':');
-                  if (other_pos == std::string::npos) {
-                    std::ostringstream o;
-                    o << "failed to parse line " << fullPath
-                      << ':' << lineCount;
-                    logger().warning(o.str());
-                    continue;
-                  }
-
-                  const std::string lib(line, 0, other_pos);
-                  const std::string fact(line, other_pos+1);
-
-#ifdef APPLE
-		  //fg: on macos >10.11 we cannot rely on DYLD_LIBRARY_PATH any more
-		  //    and therefore store the complete path to the lib for the dlopen call
-                  m_factories.insert(std::make_pair(fact, FactoryInfo(  std::string(dirName + "/" + lib ) )));
-#else
-                  m_factories.insert(std::make_pair(fact, FactoryInfo(lib)));
-#endif
-
-#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
-                  // add an alias for the factory using the Reflex convention
-                  std::string old_name = old_style_name(fact);
-                  if (fact != old_name) {
-                    FactoryInfo old_info(lib);
-                    old_info.properties["ReflexName"] = "true";
-                    m_factories.insert(std::make_pair(old_name, old_info));
-                  }
-#endif
-                  ++factoriesCount;
-                }
-                if (logger().level() <= Logger::Debug) {
-                  std::ostringstream o;
-                  o << "  found " << factoriesCount << " factories";
-                  logger().debug(o.str());
-                }
-              }
-            }
-            closedir(dir);
-          }
-        }
-      }
-    }
-
-    Registry::FactoryInfo&
-    Registry::add(const std::string& id, void *factory,
-                  const std::string& type, const std::string& rtype,
-                  const std::string& className,
-                  const Properties& props){
-      REG_SCOPE_LOCK
-      FactoryMap &facts = factories();
-      FactoryMap::iterator entry = facts.find(id);
-      if (entry == facts.end())
-      {
-        // this factory was not known yet
-        entry = facts.insert(std::make_pair(id,
-                                            FactoryInfo("unknown", factory,
-                                                        type, rtype, className, props))).first;
-#if DEBUG_FOR_MAC
-	std::cout << " --  registering factory id: " << id << " class : " << className << " with registry " << this << std::endl ;
-#endif
-
-      } else {
-        // do not replace an existing factory with a new one
-        if (!entry->second.ptr) {
-          entry->second.ptr = factory;
-        }
-        factoryInfoSetHelper(entry->second.type, type, "type", id);
-        factoryInfoSetHelper(entry->second.rtype, rtype, "return type", id);
-        factoryInfoSetHelper(entry->second.className, className, "class", id);
-      }
-#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
-      // add an alias for the factory using the Reflex convention
-      std::string old_name = old_style_name(id);
-      if (id != old_name)
-        add(old_name, factory, type, rtype, className, props)
-          .properties["ReflexName"] = "true";
-#endif
-      return entry->second;
-    }
-
-    void* Registry::get(const std::string& id, const std::string& type) const {
-      REG_SCOPE_LOCK
-      const FactoryMap &facts = factories();
-      FactoryMap::const_iterator f = facts.find(id);
-      if (f != facts.end())
-      {
-#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
-        const Properties& props = f->second.properties;
-        if (props.find("ReflexName") != props.end())
-          logger().warning("requesting factory via old name '" + id + "'"
-                           "use '" + f->second.className + "' instead");
-#endif
-        if (!f->second.ptr) {
-          if (!dlopen(f->second.library.c_str(), RTLD_LAZY | RTLD_GLOBAL)) {
-            logger().warning("cannot load " + f->second.library +
-                             " for factory " + id);
-            char *dlmsg = dlerror();
-            if (dlmsg)
-              logger().warning(dlmsg);
-            return 0;
-          }
-          f = facts.find(id); // ensure that the iterator is valid
-        }
-        if (f->second.type == type) {
-          return f->second.ptr;
-        } else {
-          logger().warning("found factory " + id + ", but of wrong type: " +
-              demangle(f->second.type) + " instead of " + demangle(type));
-        }
-      }
-      return 0; // factory not found
-    }
-
-    const Registry::FactoryInfo& Registry::getInfo(const std::string& id) const {
-      REG_SCOPE_LOCK
-      static FactoryInfo unknown("unknown");
-      const FactoryMap &facts = factories();
-      FactoryMap::const_iterator f = facts.find(id);
-      if (f != facts.end())
-      {
-        return f->second;
-      }
-      return unknown; // factory not found
-    }
-
-    Registry&
-    Registry::addProperty(const std::string& id,
-                          const std::string& k,
-                          const std::string& v) {
-      REG_SCOPE_LOCK
-      FactoryMap &facts = factories();
-      FactoryMap::iterator f = facts.find(id);
-      if (f != facts.end())
-      {
-        f->second.properties[k] = v;
-      }
-      return *this;
-    }
-
-    std::set<Registry::KeyType> Registry::loadedFactories() const {
-      REG_SCOPE_LOCK
-      const FactoryMap &facts = factories();
-      std::set<KeyType> l;
-      for (FactoryMap::const_iterator f = facts.begin();
-           f != facts.end(); ++f)
-      {
-        if (f->second.ptr)
-          l.insert(f->first);
-      }
-      return l;
-    }
-
-    void Logger::report(Level lvl, const std::string& msg) {
-      if (lvl >= level()) {
-        static const char* levels[] = {"DEBUG  : ",
-                                       "INFO   : ",
-                                       "WARNING: ",
-                                       "ERROR  : "};
-        std::cerr << levels[lvl] << msg << std::endl;
-      }
-    }
-
-    static std::unique_ptr<Logger> s_logger(new Logger);
-    Logger& logger() {
-      return *s_logger;
-    }
-    void setLogger(Logger* logger) {
-      s_logger.reset(logger);
-    }
-
-  } // namespace Details
-
-  void SetDebug(int debugLevel) {
-    using namespace Details;
-    Logger& l = logger();
-    if (debugLevel > 1)
-      l.setLevel(Logger::Debug);
-    else if (debugLevel > 0)
-      l.setLevel(Logger::Info);
-    else l.setLevel(Logger::Warning);
-  }
-
-  int Debug() {
-    using namespace Details;
-    switch (logger().level()) {
-    case Logger::Debug: return 2; break;
-    case Logger::Info: return 1; break;
-    default: return 0;
-    }
-  }
-
-}} // namespace Gaudi::PluginService
diff --git a/GaudiPluginService/src/PluginServiceV1.cpp b/GaudiPluginService/src/PluginServiceV1.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c66e5a48f43980884364f187fa5faa3b55c90d4f
--- /dev/null
+++ b/GaudiPluginService/src/PluginServiceV1.cpp
@@ -0,0 +1,353 @@
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+
+#define GAUDI_PLUGIN_SERVICE_V1
+#include <Gaudi/PluginService.h>
+
+#include <dirent.h>
+#include <dlfcn.h>
+
+#include <cstdlib>
+#include <fstream>
+#include <iostream>
+#include <memory>
+#include <regex>
+
+#include <cxxabi.h>
+#include <sys/stat.h>
+
+#define REG_SCOPE_LOCK std::lock_guard<std::recursive_mutex> _guard( m_mutex );
+
+namespace {
+  std::mutex registrySingletonMutex;
+}
+#define SINGLETON_LOCK std::lock_guard<std::mutex> _guard( ::registrySingletonMutex );
+
+#include <algorithm>
+
+namespace {
+  // string trimming functions taken from
+  // http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring
+
+  constexpr struct is_space_t {
+    bool operator()( int i ) const { return std::isspace( i ); }
+  } is_space{};
+
+  // trim from start
+  static inline std::string& ltrim( std::string& s ) {
+    s.erase( s.begin(), std::find_if_not( s.begin(), s.end(), is_space ) );
+    return s;
+  }
+
+  // trim from end
+  static inline std::string& rtrim( std::string& s ) {
+    s.erase( std::find_if_not( s.rbegin(), s.rend(), is_space ).base(), s.end() );
+    return s;
+  }
+  // trim from both ends
+  static inline std::string& trim( std::string& s ) { return ltrim( rtrim( s ) ); }
+} // namespace
+
+namespace {
+  /// Helper function used to set values in FactoryInfo data members only
+  /// if the original value is empty and reporting warnings in case of
+  /// inconsistencies.
+  inline void factoryInfoSetHelper( std::string& dest, const std::string value, const std::string& desc,
+                                    const std::string& id ) {
+    if ( dest.empty() ) {
+      dest = value;
+    } else if ( dest != value ) {
+      Gaudi::PluginService::Details::logger().warning( "new factory loaded for '" + id + "' with different " + desc +
+                                                       ": " + dest + " != " + value );
+    }
+  }
+
+  struct OldStyleCnv {
+    std::string name;
+    void        operator()( const char c ) {
+      switch ( c ) {
+      case '<':
+      case '>':
+      case ',':
+      case '(':
+      case ')':
+      case ':':
+      case '.':
+        name.push_back( '_' );
+        break;
+      case '&':
+        name.push_back( 'r' );
+        break;
+      case '*':
+        name.push_back( 'p' );
+        break;
+      case ' ':
+        break;
+      default:
+        name.push_back( c );
+        break;
+      }
+    }
+  };
+  /// Convert a class name in the string used with the Reflex plugin service
+  std::string old_style_name( const std::string& name ) {
+    return std::for_each( name.begin(), name.end(), OldStyleCnv() ).name;
+  }
+} // namespace
+
+namespace Gaudi {
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V1_INLINE namespace v1 {
+      Exception::Exception( std::string msg ) : m_msg( std::move( msg ) ) {}
+      Exception::~Exception() throw() {}
+      const char* Exception::what() const throw() { return m_msg.c_str(); }
+
+      namespace Details {
+        void* getCreator( const std::string& id, const std::string& type ) {
+          return Registry::instance().get( id, type );
+        }
+
+        std::string demangle( const std::string& id ) {
+          int  status;
+          auto realname = std::unique_ptr<char, decltype( free )*>(
+              abi::__cxa_demangle( id.c_str(), nullptr, nullptr, &status ), free );
+          if ( !realname ) return id;
+#if _GLIBCXX_USE_CXX11_ABI
+          return std::regex_replace(
+              realname.get(),
+              std::regex{"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >( (?=>))?"},
+              "std::string" );
+#else
+          return std::string{realname.get()};
+#endif
+        }
+        std::string demangle( const std::type_info& id ) { return demangle( id.name() ); }
+
+        Registry& Registry::instance() {
+          SINGLETON_LOCK
+          static Registry r;
+          return r;
+        }
+
+        Registry::Registry() : m_initialized( false ) {}
+
+        void Registry::initialize() {
+          REG_SCOPE_LOCK
+          if ( m_initialized ) return;
+          m_initialized = true;
+#if defined( _WIN32 )
+          const char* envVar = "PATH";
+          const char  sep    = ';';
+#elif defined( __APPLE__ )
+          const char* envVar = "DYLD_LIBRARY_PATH";
+          const char  sep    = ':';
+#else
+          const char* envVar = "LD_LIBRARY_PATH";
+          const char  sep    = ':';
+#endif
+          char* search_path = ::getenv( envVar );
+          if ( search_path ) {
+            logger().debug( std::string( "searching factories in " ) + envVar );
+            std::string            path( search_path );
+            std::string::size_type pos    = 0;
+            std::string::size_type newpos = 0;
+            while ( pos != std::string::npos ) {
+              std::string dirName;
+              // get the next entry in the path
+              newpos = path.find( sep, pos );
+              if ( newpos != std::string::npos ) {
+                dirName = path.substr( pos, newpos - pos );
+                pos     = newpos + 1;
+              } else {
+                dirName = path.substr( pos );
+                pos     = newpos;
+              }
+              logger().debug( std::string( " looking into " ) + dirName );
+              // look for files called "*.components" in the directory
+              DIR* dir = opendir( dirName.c_str() );
+              if ( dir ) {
+                struct dirent* entry;
+                while ( ( entry = readdir( dir ) ) ) {
+                  std::string name( entry->d_name );
+                  // check if the file name ends with ".components"
+                  std::string::size_type extpos = name.find( ".components" );
+                  if ( ( extpos != std::string::npos ) && ( ( extpos + 11 ) == name.size() ) ) {
+                    std::string fullPath = ( dirName + '/' + name );
+                    { // check if it is a regular file
+                      struct stat buf;
+                      stat( fullPath.c_str(), &buf );
+                      if ( !S_ISREG( buf.st_mode ) ) continue;
+                    }
+                    // read the file
+                    logger().debug( std::string( "  reading " ) + name );
+                    std::ifstream factories{fullPath};
+                    std::string   line;
+                    int           factoriesCount = 0;
+                    int           lineCount      = 0;
+                    while ( !factories.eof() ) {
+                      ++lineCount;
+                      std::getline( factories, line );
+                      trim( line );
+                      // skip empty lines and lines starting with '#'
+                      if ( line.empty() || line[0] == '#' ) continue;
+                      // only accept "v1" factories
+                      if ( line.substr( 0, 4 ) == "v1::" )
+                        line = line.substr( 4 );
+                      else
+                        continue;
+                      // look for the separator
+                      auto pos = line.find( ':' );
+                      if ( pos == std::string::npos ) {
+                        logger().warning( "failed to parse line " + fullPath + ':' + std::to_string( lineCount ) );
+                        continue;
+                      }
+                      const std::string lib( line, 0, pos );
+                      const std::string fact( line, pos + 1 );
+                      m_factories.emplace( fact, FactoryInfo( lib ) );
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+                      // add an alias for the factory using the Reflex convention
+                      std::string old_name = old_style_name( fact );
+                      if ( fact != old_name ) {
+                        FactoryInfo old_info( lib );
+                        old_info.properties["ReflexName"] = "true";
+                        m_factories.emplace( old_name, old_info );
+                      }
+#endif
+                      ++factoriesCount;
+                    }
+                    if ( logger().level() <= Logger::Debug ) {
+                      logger().debug( "  found " + std::to_string( factoriesCount ) + " factories" );
+                    }
+                  }
+                }
+                closedir( dir );
+              }
+            }
+          }
+        }
+
+        Registry::FactoryInfo& Registry::add( const std::string& id, void* factory, const std::string& type,
+                                              const std::string& rtype, const std::string& className,
+                                              const Properties& props ) {
+          REG_SCOPE_LOCK
+          FactoryMap& facts = factories();
+          auto        entry = facts.find( id );
+          if ( entry == facts.end() ) {
+            // this factory was not known yet
+            entry = facts.emplace( id, FactoryInfo( "unknown", factory, type, rtype, className, props ) ).first;
+          } else {
+            // do not replace an existing factory with a new one
+            if ( !entry->second.ptr ) entry->second.ptr = factory;
+            factoryInfoSetHelper( entry->second.type, type, "type", id );
+            factoryInfoSetHelper( entry->second.rtype, rtype, "return type", id );
+            factoryInfoSetHelper( entry->second.className, className, "class", id );
+          }
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+          // add an alias for the factory using the Reflex convention
+          std::string old_name = old_style_name( id );
+          if ( id != old_name )
+            add( old_name, factory, type, rtype, className, props ).properties["ReflexName"] = "true";
+#endif
+          return entry->second;
+        }
+
+        void* Registry::get( const std::string& id, const std::string& type ) const {
+          REG_SCOPE_LOCK
+          const FactoryMap& facts = factories();
+          auto              f     = facts.find( id );
+          if ( f != facts.end() ) {
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+            const Properties& props = f->second.properties;
+            if ( props.find( "ReflexName" ) != props.end() )
+              logger().warning( "requesting factory via old name '" + id +
+                                "'"
+                                "use '" +
+                                f->second.className + "' instead" );
+#endif
+            if ( !f->second.ptr ) {
+              if ( !dlopen( f->second.library.c_str(), RTLD_LAZY | RTLD_GLOBAL ) ) {
+                logger().warning( "cannot load " + f->second.library + " for factory " + id );
+                char* dlmsg = dlerror();
+                if ( dlmsg ) logger().warning( dlmsg );
+                return nullptr;
+              }
+              f = facts.find( id ); // ensure that the iterator is valid
+            }
+            if ( f->second.type == type ) return f->second.ptr;
+            logger().warning( "found factory " + id + ", but of wrong type: " + demangle( f->second.type ) +
+                              " instead of " + demangle( type ) );
+          }
+          return nullptr; // factory not found
+        }
+
+        const Registry::FactoryInfo& Registry::getInfo( const std::string& id ) const {
+          REG_SCOPE_LOCK
+          static const FactoryInfo unknown( "unknown" );
+          const FactoryMap&        facts = factories();
+          auto                     f     = facts.find( id );
+          return ( f != facts.end() ) ? f->second : unknown;
+        }
+
+        Registry& Registry::addProperty( const std::string& id, const std::string& k, const std::string& v ) {
+          REG_SCOPE_LOCK
+          FactoryMap& facts = factories();
+          auto        f     = facts.find( id );
+          if ( f != facts.end() ) f->second.properties[k] = v;
+          return *this;
+        }
+
+        std::set<Registry::KeyType> Registry::loadedFactoryNames() const {
+          REG_SCOPE_LOCK
+          std::set<KeyType> l;
+          for ( const auto& f : factories() ) {
+            if ( f.second.ptr ) l.insert( f.first );
+          }
+          return l;
+        }
+
+        void Logger::report( Level lvl, const std::string& msg ) {
+          static const char* levels[] = {"DEBUG  : ", "INFO   : ", "WARNING: ", "ERROR  : "};
+          if ( lvl >= level() ) { std::cerr << levels[lvl] << msg << std::endl; }
+        }
+
+        static auto s_logger = std::make_unique<Logger>();
+        Logger&     logger() { return *s_logger; }
+        void        setLogger( Logger* logger ) { s_logger.reset( logger ); }
+
+      } // namespace Details
+
+      void SetDebug( int debugLevel ) {
+        using namespace Details;
+        Logger& l = logger();
+        if ( debugLevel > 1 )
+          l.setLevel( Logger::Debug );
+        else if ( debugLevel > 0 )
+          l.setLevel( Logger::Info );
+        else
+          l.setLevel( Logger::Warning );
+      }
+
+      int Debug() {
+        using namespace Details;
+        switch ( logger().level() ) {
+        case Logger::Debug:
+          return 2;
+        case Logger::Info:
+          return 1;
+        default:
+          return 0;
+        }
+      }
+    }
+  } // namespace PluginService
+} // namespace Gaudi
diff --git a/GaudiPluginService/src/PluginServiceV2.cpp b/GaudiPluginService/src/PluginServiceV2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4c8d4dc2b607387a4051730af5fb3df61b2c894f
--- /dev/null
+++ b/GaudiPluginService/src/PluginServiceV2.cpp
@@ -0,0 +1,347 @@
+/*****************************************************************************\
+* (c) Copyright 2013 CERN                                                     *
+*                                                                             *
+* This software is distributed under the terms of the GNU General Public      *
+* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
+*                                                                             *
+* In applying this licence, CERN does not waive the privileges and immunities *
+* granted to it by virtue of its status as an Intergovernmental Organization  *
+* or submit itself to any jurisdiction.                                       *
+\*****************************************************************************/
+
+/// @author Marco Clemencic <marco.clemencic@cern.ch>
+
+#define GAUDI_PLUGIN_SERVICE_V2
+#include <Gaudi/PluginService.h>
+
+#include <dirent.h>
+#include <dlfcn.h>
+
+#include <cstdlib>
+#include <fstream>
+#include <iostream>
+#include <memory>
+#include <regex>
+
+#include <cxxabi.h>
+#include <sys/stat.h>
+
+#ifdef _GNU_SOURCE
+#  include <cstring>
+#  include <dlfcn.h>
+#endif
+
+#ifdef USE_BOOST_FILESYSTEM
+#  include <boost/filesystem.hpp>
+namespace fs = boost::filesystem;
+#else
+#  include <filesystem>
+namespace fs = std::filesystem;
+#endif // USE_BOOST_FILESYSTEM
+
+#if __cplusplus >= 201703
+#  include <string_view>
+#else
+#  include <experimental/string_view>
+namespace std {
+  using experimental::string_view;
+}
+#endif
+
+#define REG_SCOPE_LOCK std::lock_guard<std::recursive_mutex> _guard( m_mutex );
+
+namespace {
+  std::mutex registrySingletonMutex;
+}
+#define SINGLETON_LOCK std::lock_guard<std::mutex> _guard( ::registrySingletonMutex );
+
+#include <algorithm>
+
+namespace {
+  struct OldStyleCnv {
+    std::string name;
+    void        operator()( const char c ) {
+      switch ( c ) {
+      case '<':
+      case '>':
+      case ',':
+      case '(':
+      case ')':
+      case ':':
+      case '.':
+        name.push_back( '_' );
+        break;
+      case '&':
+        name.push_back( 'r' );
+        break;
+      case '*':
+        name.push_back( 'p' );
+        break;
+      case ' ':
+        break;
+      default:
+        name.push_back( c );
+        break;
+      }
+    }
+  };
+  /// Convert a class name in the string used with the Reflex plugin service
+  std::string old_style_name( const std::string& name ) {
+    return std::for_each( name.begin(), name.end(), OldStyleCnv() ).name;
+  }
+} // namespace
+
+namespace Gaudi {
+  namespace PluginService {
+    GAUDI_PLUGIN_SERVICE_V2_INLINE namespace v2 {
+      namespace Details {
+        std::string demangle( const std::string& id ) {
+          int  status;
+          auto realname = std::unique_ptr<char, decltype( free )*>(
+              abi::__cxa_demangle( id.c_str(), nullptr, nullptr, &status ), free );
+          if ( !realname ) return id;
+#if _GLIBCXX_USE_CXX11_ABI
+          return std::regex_replace(
+              realname.get(),
+              std::regex{"std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >( (?=>))?"},
+              "std::string" );
+#else
+          return std::string{realname.get()};
+#endif
+        }
+        std::string demangle( const std::type_info& id ) { return demangle( id.name() ); }
+
+        Registry& Registry::instance() {
+          SINGLETON_LOCK
+          static Registry r;
+          return r;
+        }
+
+        void reportBadAnyCast( const std::type_info& factory_type, const std::string& id ) {
+          if ( logger().level() <= Logger::Debug ) {
+            std::stringstream msg;
+            const auto&       info = Registry::instance().getInfo( id );
+            msg << "bad any_cast: requested factory " << id << " of type " << demangle( factory_type ) << ", got ";
+            if ( info.is_set() )
+              msg << demangle( info.factory.type() ) << " from " << info.library;
+            else
+              msg << "nothing";
+            logger().debug( msg.str() );
+          }
+        }
+
+        Registry::Properties::mapped_type Registry::FactoryInfo::getprop( const Properties::key_type& name ) const {
+          auto p = properties.find( name );
+          return ( p != end( properties ) ) ? p->second : Properties::mapped_type{};
+        }
+
+        Registry::Registry() {}
+
+        void Registry::initialize() {
+          REG_SCOPE_LOCK
+#if defined( _WIN32 )
+          const char* envVar = "PATH";
+          const char  sep    = ';';
+#elif defined( __APPLE__ )
+          const char* envVar = "DYLD_LIBRARY_PATH";
+          const char  sep    = ':';
+#else
+          const char* envVar = "LD_LIBRARY_PATH";
+          const char  sep    = ':';
+#endif
+
+          std::regex  line_format{"^(?:[[:space:]]*(?:(v[0-9]+)::)?([^:]+):(.*[^[:space:]]))?[[:space:]]*(?:#.*)?$"};
+          std::smatch m;
+
+          std::string_view search_path = std::getenv( envVar );
+          if ( !search_path.empty() ) {
+            logger().debug( std::string( "searching factories in " ) + envVar );
+
+            std::string_view::size_type start_pos = 0, end_pos = 0;
+            while ( start_pos != std::string_view::npos ) {
+              // correctly handle begin of string or path separator
+              if ( start_pos ) ++start_pos;
+
+              end_pos = search_path.find( sep, start_pos );
+              fs::path dirName =
+#ifdef USE_BOOST_FILESYSTEM
+                  std::string{search_path.substr( start_pos, end_pos - start_pos )};
+#else
+                  search_path.substr( start_pos, end_pos - start_pos );
+#endif
+              start_pos = end_pos;
+
+              logger().debug( " looking into " + dirName.string() );
+              // look for files called "*.components" in the directory
+              if ( is_directory( dirName ) ) {
+                for ( auto& p : fs::directory_iterator( dirName ) ) {
+                  if ( p.path().extension() == ".components" && is_regular_file( p.path() ) ) {
+                    // read the file
+                    const auto& fullPath = p.path().string();
+                    logger().debug( "  reading " + p.path().filename().string() );
+                    std::ifstream factories{fullPath};
+                    std::string   line;
+                    int           factoriesCount = 0;
+                    int           lineCount      = 0;
+                    while ( !factories.eof() ) {
+                      ++lineCount;
+                      std::getline( factories, line );
+                      if ( regex_match( line, m, line_format ) ) {
+                        if ( m[1] == "v2" ) { // ignore non "v2" and "empty" lines
+                          const std::string lib{m[2]};
+                          const std::string fact{m[3]};
+                          m_factories.emplace( fact, FactoryInfo{lib, {}, {{"ClassName", fact}}} );
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+                          // add an alias for the factory using the Reflex convention
+                          std::string old_name = old_style_name( fact );
+                          if ( fact != old_name ) {
+                            m_factories.emplace( old_name,
+                                                 FactoryInfo{lib, {}, {{"ReflexName", "true"}, {"ClassName", fact}}} );
+                          }
+#endif
+                          ++factoriesCount;
+                        }
+                      } else {
+                        logger().warning( "failed to parse line " + fullPath + ':' + std::to_string( lineCount ) );
+                      }
+                    }
+                    if ( logger().level() <= Logger::Debug ) {
+                      logger().debug( "  found " + std::to_string( factoriesCount ) + " factories" );
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+
+        const Registry::FactoryMap& Registry::factories() const {
+          std::call_once( m_initialized, &Registry::initialize, const_cast<Registry*>( this ) );
+          return m_factories;
+        }
+
+        Registry::FactoryMap& Registry::factories() {
+          std::call_once( m_initialized, &Registry::initialize, this );
+          return m_factories;
+        }
+
+        Registry::FactoryInfo& Registry::add( const KeyType& id, FactoryInfo info ) {
+          REG_SCOPE_LOCK
+          FactoryMap& facts = factories();
+
+#ifdef GAUDI_REFLEX_COMPONENT_ALIASES
+          // add an alias for the factory using the Reflex convention
+          const auto old_name = old_style_name( id );
+          if ( id != old_name ) {
+            auto new_info = info;
+
+            new_info.properties["ReflexName"] = "true";
+
+            add( old_name, new_info );
+          }
+#endif
+
+          auto entry = facts.find( id );
+          if ( entry == facts.end() ) {
+            // this factory was not known yet
+            entry = facts.emplace( id, std::move( info ) ).first;
+          } else {
+            // do not replace an existing factory with a new one
+            if ( !entry->second.is_set() ) entry->second = std::move( info );
+          }
+          return entry->second;
+        }
+
+        const Registry::FactoryInfo& Registry::getInfo( const KeyType& id, const bool load ) const {
+          REG_SCOPE_LOCK
+          static const FactoryInfo unknown = {"unknown"};
+          const FactoryMap&        facts   = factories();
+          auto                     f       = facts.find( id );
+
+          if ( f != facts.end() ) {
+            if ( load && !f->second.is_set() ) {
+              const std::string library = f->second.library;
+              if ( !dlopen( library.c_str(), RTLD_LAZY | RTLD_GLOBAL ) ) {
+                logger().warning( "cannot load " + library + " for factory " + id );
+                char* dlmsg = dlerror();
+                if ( dlmsg ) logger().warning( dlmsg );
+                return unknown;
+              }
+              f = facts.find( id ); // ensure that the iterator is valid
+            }
+            return f->second;
+          } else {
+            return unknown;
+          }
+        }
+
+        Registry& Registry::addProperty( const KeyType& id, const KeyType& k, const std::string& v ) {
+          REG_SCOPE_LOCK
+          FactoryMap& facts = factories();
+          auto        f     = facts.find( id );
+
+          if ( f != facts.end() ) f->second.properties[k] = v;
+          return *this;
+        }
+
+        std::set<Registry::KeyType> Registry::loadedFactoryNames() const {
+          REG_SCOPE_LOCK
+          std::set<KeyType> l;
+          for ( const auto& f : factories() ) {
+            if ( f.second.is_set() ) l.insert( f.first );
+          }
+          return l;
+        }
+
+        void Logger::report( Level lvl, const std::string& msg ) {
+          static const char* levels[] = {"DEBUG  : ", "INFO   : ", "WARNING: ", "ERROR  : "};
+          if ( lvl >= level() ) { std::cerr << levels[lvl] << msg << std::endl; }
+        }
+
+        static auto s_logger = std::make_unique<Logger>();
+        Logger&     logger() { return *s_logger; }
+        void        setLogger( Logger* logger ) { s_logger.reset( logger ); }
+
+        // This chunk of code was taken from GaudiKernel (genconf) DsoUtils.h
+        std::string getDSONameFor( void* fptr ) {
+#ifdef _GNU_SOURCE
+          Dl_info info;
+          if ( dladdr( fptr, &info ) == 0 ) return "";
+
+          auto pos = std::strrchr( info.dli_fname, '/' );
+          if ( pos )
+            ++pos;
+          else
+            return info.dli_fname;
+          return pos;
+#else
+          return "";
+#endif
+        }
+      } // namespace Details
+
+      void SetDebug( int debugLevel ) {
+        using namespace Details;
+        Logger& l = logger();
+        if ( debugLevel > 1 )
+          l.setLevel( Logger::Debug );
+        else if ( debugLevel > 0 )
+          l.setLevel( Logger::Info );
+        else
+          l.setLevel( Logger::Warning );
+      }
+
+      int Debug() {
+        using namespace Details;
+        switch ( logger().level() ) {
+        case Logger::Debug:
+          return 2;
+        case Logger::Info:
+          return 1;
+        default:
+          return 0;
+        }
+      }
+    }
+  } // namespace PluginService
+} // namespace Gaudi
diff --git a/GaudiPluginService/src/capi_pluginservice.cpp b/GaudiPluginService/src/capi_pluginservice.cpp
index 1380fd2837fe8e50b346ce270d075c3fe201eb2c..c64c32d65ad11d33ccac6ed390793e66b30877eb 100644
--- a/GaudiPluginService/src/capi_pluginservice.cpp
+++ b/GaudiPluginService/src/capi_pluginservice.cpp
@@ -1,133 +1,70 @@
-#include <vector>
 #include "capi_pluginservice.h"
+
+#define GAUDI_PLUGIN_SERVICE_V2
 #include <Gaudi/PluginService.h>
 
+#include <algorithm>
+#include <vector>
+
 #include <iostream>
-using namespace Gaudi::PluginService::Details;
 
-cgaudi_pluginsvc_t
-cgaudi_pluginsvc_instance()
-{
-  static Registry& cxxreg = Registry::instance();
-  cgaudi_pluginsvc_t reg;
-  reg.registry = (void*)(&cxxreg);
-  return reg;
-}
+using namespace Gaudi::PluginService::v2::Details;
 
-int
-cgaudi_pluginsvc_get_factory_size(cgaudi_pluginsvc_t self)
-{
-  const Registry::FactoryMap &fmap = ((const Registry*)self.registry)->factories();
-  return int(fmap.size());
+cgaudi_pluginsvc_t cgaudi_pluginsvc_instance() {
+  static Registry& cxxreg = Registry::instance();
+  return {&cxxreg};
 }
 
-
-cgaudi_factory_t
-cgaudi_pluginsvc_get_factory_at(cgaudi_pluginsvc_t self, int n)
-{
-  const Registry *reg = ((const Registry*)self.registry);
-  std::vector<Registry::KeyType> keys;
-  keys.reserve(reg->factories().size());
-  for (Registry::FactoryMap::const_iterator
-         itr = reg->factories().begin(),
-         iend= reg->factories().end();
-       itr != iend;
-       ++itr) {
-    keys.push_back(itr->first);
-  }
-  const char *key = keys[n].c_str();
-  cgaudi_factory_t fac;
-  fac.registry = self;
-  fac.id = key;
-  return fac;
+int cgaudi_pluginsvc_get_factory_size( cgaudi_pluginsvc_t self ) {
+  const Registry::FactoryMap& fmap = static_cast<const Registry*>( self.registry )->factories();
+  return int( fmap.size() );
 }
 
-const char*
-cgaudi_factory_get_library(cgaudi_factory_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  return fi.library.c_str();
+cgaudi_factory_t cgaudi_pluginsvc_get_factory_at( cgaudi_pluginsvc_t self, int n ) {
+  const Registry* reg       = static_cast<const Registry*>( self.registry );
+  const auto&     factories = reg->factories();
+  if ( n >= static_cast<int>( factories.size() ) ) return {self, nullptr};
+  return {self, next( begin( factories ), n )->first.c_str()};
 }
 
-const char*
-cgaudi_factory_get_type(cgaudi_factory_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  return fi.type.c_str();
+const char* cgaudi_factory_get_library( cgaudi_factory_t self ) {
+  Registry& reg = Registry::instance();
+  return reg.getInfo( self.id ).library.c_str();
 }
 
-const char*
-cgaudi_factory_get_rtype(cgaudi_factory_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  return fi.rtype.c_str();
+const char* cgaudi_factory_get_type( cgaudi_factory_t self ) {
+  Registry&          reg = Registry::instance();
+  static std::string cache;
+  cache = demangle( reg.getInfo( self.id ).factory.type() );
+  return cache.c_str();
 }
 
-const char*
-cgaudi_factory_get_classname(cgaudi_factory_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  return fi.className.c_str();
+const char* cgaudi_factory_get_classname( cgaudi_factory_t self ) {
+  Registry&          reg = Registry::instance();
+  static std::string cache;
+  cache = reg.getInfo( self.id ).getprop( "ClassName" );
+  return cache.c_str();
 }
 
-int
-cgaudi_factory_get_property_size(cgaudi_factory_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  return int(fi.properties.size());
+int cgaudi_factory_get_property_size( cgaudi_factory_t self ) {
+  Registry&                    reg = Registry::instance();
+  const Registry::FactoryInfo& fi  = reg.getInfo( self.id );
+  return int( fi.properties.size() );
 }
 
-
-cgaudi_property_t
-cgaudi_factory_get_property_at(cgaudi_factory_t self, int n)
-{
-  cgaudi_property_t cprop;
-  cprop.registry = self.registry;
-  cprop.id = self.id;
-  cprop.key = NULL;
-  Registry &reg = Registry::instance();
-  std::string id = cprop.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  int i = 0;
-  for (Registry::Properties::const_iterator
-         itr = fi.properties.begin(),
-         iend = fi.properties.end();
-       itr != iend;
-       ++itr, ++i) {
-    if (i == n) {
-      cprop.key = itr->first.c_str();
-      return cprop;
-    }
-  }
+cgaudi_property_t cgaudi_factory_get_property_at( cgaudi_factory_t self, int n ) {
+  cgaudi_property_t            cprop{self.registry, self.id, nullptr};
+  Registry&                    reg = Registry::instance();
+  const Registry::FactoryInfo& fi  = reg.getInfo( cprop.id );
+  if ( n < static_cast<int>( fi.properties.size() ) ) cprop.key = next( begin( fi.properties ), n )->first.c_str();
   return cprop;
 }
 
-const char*
-cgaudi_property_get_key(cgaudi_property_t self)
-{
-  return self.key;
-}
+const char* cgaudi_property_get_key( cgaudi_property_t self ) { return self.key; }
 
-const char*
-cgaudi_property_get_value(cgaudi_property_t self)
-{
-  Registry &reg = Registry::instance();
-  std::string id = self.id;
-  const Registry::FactoryInfo& fi = reg.getInfo(id);
-  Registry::KeyType key = self.key;
-  Registry::Properties::const_iterator prop = fi.properties.find(key);
-  if (prop == fi.properties.end()) {
-    return NULL;
-  }
-  return prop->second.c_str();
+const char* cgaudi_property_get_value( cgaudi_property_t self ) {
+  Registry&                    reg  = Registry::instance();
+  const Registry::FactoryInfo& fi   = reg.getInfo( self.id );
+  auto                         prop = fi.properties.find( self.key );
+  return prop != fi.properties.end() ? prop->second.c_str() : nullptr;
 }
diff --git a/GaudiPluginService/src/capi_pluginservice.h b/GaudiPluginService/src/capi_pluginservice.h
index 71cb17aa977477d8d8e4155fa0064ac37acf628d..b1754b19dc1174a55039384494c797a8b2b51806 100644
--- a/GaudiPluginService/src/capi_pluginservice.h
+++ b/GaudiPluginService/src/capi_pluginservice.h
@@ -23,10 +23,10 @@ extern "C" {
 #  define CGAUDI_HASCLASSVISIBILITY
 #endif
 
-#if defined(CGAUDI_HASCLASSVISIBILITY)
-#  define CGAUDI_IMPORT __attribute__((visibility("default")))
-#  define CGAUDI_EXPORT __attribute__((visibility("default")))
-#  define CGAUDI_LOCAL  __attribute__((visibility("hidden")))
+#if defined( CGAUDI_HASCLASSVISIBILITY )
+#  define CGAUDI_IMPORT __attribute__( ( visibility( "default" ) ) )
+#  define CGAUDI_EXPORT __attribute__( ( visibility( "default" ) ) )
+#  define CGAUDI_LOCAL __attribute__( ( visibility( "hidden" ) ) )
 #else
 #  define CGAUDI_IMPORT
 #  define CGAUDI_EXPORT
@@ -35,69 +35,53 @@ extern "C" {
 
 #define CGAUDI_API CGAUDI_EXPORT
 
-  typedef struct {
-    void *registry;
-  } cgaudi_pluginsvc_t;
+typedef struct {
+  void* registry;
+} cgaudi_pluginsvc_t;
 
-  typedef struct { 
-    cgaudi_pluginsvc_t registry;
-    const char *id;
-  } cgaudi_factory_t;
+typedef struct {
+  cgaudi_pluginsvc_t registry;
+  const char*        id;
+} cgaudi_factory_t;
 
-  typedef struct {
-    cgaudi_pluginsvc_t registry;
-    const char *id;
-    const char *key;
-  } cgaudi_property_t;
+typedef struct {
+  cgaudi_pluginsvc_t registry;
+  const char*        id;
+  const char*        key;
+} cgaudi_property_t;
 
-  CGAUDI_API
-  cgaudi_pluginsvc_t
-  cgaudi_pluginsvc_instance(void);
+CGAUDI_API
+cgaudi_pluginsvc_t cgaudi_pluginsvc_instance( void );
 
-  CGAUDI_API
-  int
-  cgaudi_pluginsvc_get_factory_size(cgaudi_pluginsvc_t self);
+CGAUDI_API
+int cgaudi_pluginsvc_get_factory_size( cgaudi_pluginsvc_t self );
 
-  CGAUDI_API
-  cgaudi_factory_t
-  cgaudi_pluginsvc_get_factory_at(cgaudi_pluginsvc_t self, int n);
+CGAUDI_API
+cgaudi_factory_t cgaudi_pluginsvc_get_factory_at( cgaudi_pluginsvc_t self, int n );
 
-  CGAUDI_API
-  const char*
-  cgaudi_factory_get_library(cgaudi_factory_t self);
+CGAUDI_API
+const char* cgaudi_factory_get_library( cgaudi_factory_t self );
 
-  CGAUDI_API
-  const char*
-  cgaudi_factory_get_type(cgaudi_factory_t self);
+CGAUDI_API
+const char* cgaudi_factory_get_type( cgaudi_factory_t self );
 
-  CGAUDI_API
-  const char*
-  cgaudi_factory_get_rtype(cgaudi_factory_t self);
+CGAUDI_API
+const char* cgaudi_factory_get_classname( cgaudi_factory_t self );
 
-  CGAUDI_API
-  const char*
-  cgaudi_factory_get_classname(cgaudi_factory_t self);
+CGAUDI_API
+int cgaudi_factory_get_property_size( cgaudi_factory_t self );
 
-  CGAUDI_API
-  int
-  cgaudi_factory_get_property_size(cgaudi_factory_t self);
+CGAUDI_API
+cgaudi_property_t cgaudi_factory_get_property_at( cgaudi_factory_t self, int n );
 
-  CGAUDI_API
-  cgaudi_property_t
-  cgaudi_factory_get_property_at(cgaudi_factory_t self, int n);
+CGAUDI_API
+const char* cgaudi_property_get_key( cgaudi_property_t self );
 
-  CGAUDI_API
-  const char*
-  cgaudi_property_get_key(cgaudi_property_t self);
+CGAUDI_API
+const char* cgaudi_property_get_value( cgaudi_property_t self );
 
-  CGAUDI_API
-  const char*
-  cgaudi_property_get_value(cgaudi_property_t self);
-
-  
 #ifdef __cplusplus
 } /* extern "C" */
 #endif
 
 #endif /* !_GAUDI_C_PLUGIN_SERVICE_H_ */
-
diff --git a/GaudiPluginService/src/listcomponents.cpp b/GaudiPluginService/src/listcomponents.cpp
index f8db28cac3192067b9aad22751e202174c9ff65e..63c1352613f0938e888aa48cb5335e5e4f537ee6 100644
--- a/GaudiPluginService/src/listcomponents.cpp
+++ b/GaudiPluginService/src/listcomponents.cpp
@@ -11,130 +11,113 @@
 
 /// @author Marco Clemencic <marco.clemencic@cern.ch>
 
-#include <iostream>
+#include <cstdlib>
 #include <fstream>
-#include <string>
-#include <set>
+#include <iostream>
 #include <list>
 #include <memory>
-#include <cstdlib>
+#include <set>
+#include <string>
 
-#include <getopt.h>
 #include <dlfcn.h>
+#include <getopt.h>
 
+#define GAUDI_PLUGIN_SERVICE_V2
 #include <Gaudi/PluginService.h>
-
-void help(std::string argv0) {
-  std::cout << "Usage: " << argv0 << " [option] library1 [library2 ...]\n"
-      "\n list the component factories present in the given libraries\n\n"
-      "Options:\n\n"
-      "  -h, --help       show this help message and exit\n"
-      "  -o OUTPUT, --output OUTPUT\n"
-      "                   write the list of factories on the file OUTPUT, use - for\n"
-      "                   standard output (default)\n"
-      << std::endl;
+#include <Gaudi/PluginServiceV1.h>
+
+void help( std::string argv0 ) {
+  std::cout << "Usage: " << argv0
+            << " [option] library1 [library2 ...]\n"
+               "\n list the component factories present in the given libraries\n\n"
+               "Options:\n\n"
+               "  -h, --help       show this help message and exit\n"
+               "  -o OUTPUT, --output OUTPUT\n"
+               "                   write the list of factories on the file OUTPUT, use - for\n"
+               "                   standard output (default)\n"
+            << std::endl;
 }
 
-void usage(std::string argv0) {
-  std::cout << "Usage: " << argv0 << " [option] library1 [library2 ...]\n"
-      "Try `" << argv0 << " -h' for more information.\n"
-      << std::endl;
+void usage( std::string argv0 ) {
+  std::cout << "Usage: " << argv0
+            << " [option] library1 [library2 ...]\n"
+               "Try `"
+            << argv0 << " -h' for more information.\n"
+            << std::endl;
 }
 
-int main(int argc, char* argv[]) {
-  Gaudi::PluginService::Details::Registry &reg =
-      Gaudi::PluginService::Details::Registry::instance();
-  typedef Gaudi::PluginService::Details::Registry::KeyType key_type;
+int main( int argc, char* argv[] ) {
+  auto& reg2 = Gaudi::PluginService::v2::Details::Registry::instance();
+  auto& reg1 = Gaudi::PluginService::v1::Details::Registry::instance();
+
+  using key_type = Gaudi::PluginService::v2::Details::Registry::KeyType;
 
   // cache to keep track of the loaded factories
   std::map<key_type, std::string> loaded;
-  {
-    // initialize the local cache
-    std::set<key_type> base = reg.loadedFactories();
-    for (std::set<key_type>::const_iterator f = base.begin(); f != base.end(); ++f)
-    {
-      loaded.insert(std::make_pair(*f, std::string("<preloaded>")));
-    }
-  }
-
-#if DEBUG_FOR_MAC
-  std::cout << " --- using registry : " << &reg  << "  --- with " << loaded.size() << " pre-loeaded libraries " << std::endl ;
-#endif
-
+  // initialize the local cache
+  for ( const auto& name : reg2.loadedFactoryNames() ) loaded.emplace( name, "<preloaded>" );
+  for ( const auto& name : reg1.loadedFactoryNames() ) loaded.emplace( name, "<preloaded>" );
 
   // Parse command line
   std::list<char*> libs;
-  std::string output_opt("-");
+  std::string      output_opt( "-" );
   {
-    std::string argv0(argv[0]);
+    std::string argv0( argv[0] );
     {
-      auto i = argv0.rfind('/');
-      if (i != std::string::npos)
-        argv0 = argv0.substr(i+1);
+      auto i = argv0.rfind( '/' );
+      if ( i != std::string::npos ) argv0 = argv0.substr( i + 1 );
     }
 
     int i = 1;
-    while (i < argc) {
-      const std::string arg(argv[i]);
-      if (arg == "-o" || arg == "--output") {
-        if (++i < argc) {
+    while ( i < argc ) {
+      const std::string arg( argv[i] );
+      if ( arg == "-o" || arg == "--output" ) {
+        if ( ++i < argc ) {
           output_opt = argv[i];
         } else {
           std::cerr << "ERROR: missing argument for option " << arg << std::endl;
           std::cerr << "See `" << argv0 << " -h' for more details." << std::endl;
           return EXIT_FAILURE;
         }
-      } else if (arg == "-h" || arg == "--help") {
-        help(argv0);
+      } else if ( arg == "-h" || arg == "--help" ) {
+        help( argv0 );
         return EXIT_SUCCESS;
       } else {
-        libs.push_back(argv[i]);
+        libs.push_back( argv[i] );
       }
       ++i;
     }
-    if (libs.empty()) {
-      usage(argv0);
+    if ( libs.empty() ) {
+      usage( argv0 );
       return EXIT_FAILURE;
     }
   }
 
   // handle output option
   std::unique_ptr<std::ostream> output_file;
-  if (output_opt != "-") {
-    output_file = std::unique_ptr<std::ostream>(new std::ofstream(output_opt.c_str()));
-  }
-  std::ostream &output = (output_file ? *output_file : std::cout);
+  if ( output_opt != "-" ) { output_file.reset( new std::ofstream{output_opt} ); }
+  std::ostream& output = ( output_file ? *output_file : std::cout );
+
+  auto dump_from = [&output, &loaded]( auto& reg, const char* lib, const char* prefix ) {
+    for ( const auto& factoryName : reg.loadedFactoryNames() ) {
+      auto f = loaded.find( factoryName );
+      if ( f == loaded.end() ) {
+        output << prefix << "::" << lib << ":" << factoryName << std::endl;
+        loaded.emplace( factoryName, lib );
+      } else
+        std::cerr << "WARNING: factory '" << factoryName << "' already found in " << f->second << std::endl;
+    }
+  };
 
   // loop over the list of libraries passed on the command line
-  for (char* lib: libs) {
-
-    if (dlopen(lib, RTLD_LAZY | RTLD_GLOBAL)) {
-
-      std::set<key_type> factories = reg.loadedFactories();
-      std::set<key_type>::const_iterator f;
-
-#if DEBUG_FOR_MAC
-      std::cout << " --- registry : " << &reg  << "  --- has " << factories.size() << " factories " << std::endl ;
-#endif
-
-      for (f = factories.begin(); f != factories.end(); ++f) {
-        if (loaded.find(*f) == loaded.end())
-        {
-          output << lib << ":" << *f << std::endl;
-          loaded[*f] = lib;
-        }
-        else
-          std::cerr << "WARNING: factory '" << *f
-                    << "' already found in " << loaded[*f]
-                    << std::endl;
-      }
-
+  for ( const char* lib : libs ) {
+    if ( dlopen( lib, RTLD_LAZY | RTLD_LOCAL ) ) {
+      dump_from( reg2, lib, "v2" );
+      dump_from( reg1, lib, "v1" );
     } else {
-      std::cerr << "ERROR: failed to load " << lib << std::endl;
-      std::cerr << dlerror() <<std::endl;
+      std::cerr << "ERROR: failed to load " << lib << ": " << dlerror() << std::endl;
       return EXIT_FAILURE;
     }
   }
-
   return EXIT_SUCCESS;
 }
diff --git a/GaudiPluginService/tests/src/UseCases.cpp b/GaudiPluginService/tests/src/UseCases.cpp
deleted file mode 100644
index bf76eac9e379954e0ff8cdd9e2aaee5c399e4043..0000000000000000000000000000000000000000
--- a/GaudiPluginService/tests/src/UseCases.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*****************************************************************************\
-* (c) Copyright 2013 CERN                                                     *
-*                                                                             *
-* This software is distributed under the terms of the GNU General Public      *
-* Licence version 3 (GPL Version 3), copied verbatim in the file "LICENCE".   *
-*                                                                             *
-* In applying this licence, CERN does not waive the privileges and immunities *
-* granted to it by virtue of its status as an Intergovernmental Organization  *
-* or submit itself to any jurisdiction.                                       *
-\*****************************************************************************/
-/**
- * Compile-time test for all known PluginService use-cases
- *
- * @author Marco Clemencic <marco.clemencic@cern.ch>
- */
-
-#include <Gaudi/PluginService.h>
-
-// standard use, 0 arguments
-class Base {
-public:
-  typedef Gaudi::PluginService::Factory<Base*> Factory;
-  virtual ~Base() {}
-};
-class Component0: public Base { };
-DECLARE_COMPONENT(Component0)
-
-class Component1: public Base { };
-#define DECLARE_COMPONENT_WITH_PROPS(type)                \
-  DECLARE_FACTORY_WITH_PROPS(type, type::Factory)
-#define DECLARE_FACTORY_WITH_PROPS(type, factory)         \
-  DECLARE_FACTORY_WITH_ID_AND_PROPS(type, \
-                          ::Gaudi::PluginService::Details::demangle<type>(), \
-                          factory)
-#define DECLARE_FACTORY_WITH_ID_AND_PROPS(type, id, factory)         \
-  _INTERNAL_DECLARE_FACTORY_WITH_PROPS(type, id, factory, __LINE__)
-#define _INTERNAL_DECLARE_FACTORY_WITH_PROPS(type, id, factory, serial)            \
-  _INTERNAL_DECLARE_FACTORY_WITH_CREATOR_AND_PROPS \
-  (type,                                                                \
-   ::Gaudi::PluginService::Details::Factory<type>,                      \
-   id, factory, serial)
-#define _INTERNAL_DECLARE_FACTORY_WITH_CREATOR_AND_PROPS(type, typecreator,       \
-                                               id, factory, serial)     \
-  namespace {                                                           \
-    class _INTERNAL_FACTORY_REGISTER_CNAME(type, serial) {              \
-    public:                                                             \
-      typedef factory s_t;                                              \
-      typedef typecreator f_t;                                          \
-      static s_t::FuncType creator() { return &f_t::create<s_t>; }      \
-      _INTERNAL_FACTORY_REGISTER_CNAME(type, serial) () {               \
-        using ::Gaudi::PluginService::Details::Registry;                \
-        Registry::instance().add<s_t, type>(id, creator())              \
-          .addProperty("name", #type);                                  \
-      }                                                                 \
-    } _INTERNAL_FACTORY_REGISTER_CNAME(s_ ## type, serial);             \
-  }
-
-DECLARE_COMPONENT_WITH_PROPS(Component1)
-
-// standard use, 2 arguments
-class Base2 {
-public:
-  typedef Gaudi::PluginService::Factory<Base2*, const std::string&, int> Factory;
-  virtual ~Base2() {}
-};
-class Component2: public Base2 {
-public:
-  Component2(const std::string& _s, int _i): i(_i), s(_s) {}
-  int i;
-  std::string s;
-};
-DECLARE_COMPONENT(Component2)
-
-// namespaces
-namespace Test {
-  class ComponentA: public Base {};
-  class ComponentB: public Base {};
-  class ComponentC: public Base {};
-}
-
-namespace {
-  using Test::ComponentA;
-  DECLARE_COMPONENT(ComponentA)
-}
-
-DECLARE_COMPONENT(Test::ComponentB)
-
-namespace Test {
-  DECLARE_COMPONENT(ComponentC)
-}
-
-// using ids
-DECLARE_COMPONENT_WITH_ID(Component2, "Id2")
-DECLARE_COMPONENT_WITH_ID(Test::ComponentB, "B")
-
-// explicit factory
-DECLARE_FACTORY_WITH_ID(Test::ComponentA, "A", Base::Factory)
-
-
-// Tests
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MAIN
-#include <boost/test/unit_test.hpp>
-
-BOOST_AUTO_TEST_CASE( basic )
-{
-  BOOST_CHECK(Base::Factory::create("Component0") != 0);
-}
-
-BOOST_AUTO_TEST_CASE( basic_with_args )
-{
-  Base2* instance = Base2::Factory::create("Component2", "hello", 2);
-  BOOST_CHECK(instance != 0);
-
-  Component2* c2 = dynamic_cast<Component2*>(instance);
-  BOOST_REQUIRE(c2 != 0);
-  BOOST_CHECK(c2->i == 2);
-  BOOST_CHECK(c2->s == "hello");
-}
-
-BOOST_AUTO_TEST_CASE( namespaces )
-{
-  BOOST_CHECK(Base::Factory::create("Test::ComponentA") != 0);
-  BOOST_CHECK(Base::Factory::create("Test::ComponentB") != 0);
-  BOOST_CHECK(Base::Factory::create("Test::ComponentC") != 0);
-}
-
-BOOST_AUTO_TEST_CASE( ids )
-{
-  BOOST_CHECK(Base2::Factory::create("Id2", "id", -2) != 0);
-  BOOST_CHECK(Base::Factory::create("A") != 0);
-  BOOST_CHECK(Base::Factory::create("B") != 0);
-}
-
-BOOST_AUTO_TEST_CASE( properties )
-{
-  using Gaudi::PluginService::Details::Registry;
-  Registry &reg = Registry::instance();
-  Registry::Properties props = reg.getInfo("Component1").properties;
-  
-  BOOST_CHECK(props["name"] == "Component1");
-}
diff --git a/examples/AlignDet/CMakeLists.txt b/examples/AlignDet/CMakeLists.txt
index c921e924ab2fd55ae6c185177dde08310b1d18e4..4886c38d811bfc084cc8c717830eb0fe96e42856 100644
--- a/examples/AlignDet/CMakeLists.txt
+++ b/examples/AlignDet/CMakeLists.txt
@@ -118,8 +118,8 @@ dd4hep_add_test_reg( AlignDet_Telescope_readback_xml
 dd4hep_add_test_reg( AlignDet_CLICSiD_stress_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_AlignDet.sh"
   EXEC_ARGS  geoPluginRun  -volmgr -destroy -plugin DD4hep_AlignmentExample_stress 
-      -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 10 -runs 100
-  REGEX_PASS "Summary: Total 7352100 conditions used \\(S:7352100,L:0,C:0,M:0\\) \\(A:350100,M:0\\)"
+      -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 10 -runs 100
+  REGEX_PASS "Summary: Total 7372260 conditions used \\(S:7372260,L:0,C:0,M:0\\) \\(A:351060,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -127,8 +127,8 @@ dd4hep_add_test_reg( AlignDet_CLICSiD_stress_LONGTEST
 dd4hep_add_test_reg( AlignDet_CLICSiD_align_nominal_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_AlignDet.sh"
   EXEC_ARGS  geoPluginRun -volmgr -destroy -plugin DD4hep_AlignmentExample_nominal
-     -input  file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml
-  REGEX_PASS "Printed 35011, scanned 35011 and computed a total of 35011 alignments \\(C:35011,M:0\\)"
+     -input  file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
+  REGEX_PASS "Printed 35107, scanned 35107 and computed a total of 35107 alignments \\(C:35107,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
diff --git a/examples/CLICSiD/CMakeLists.txt b/examples/CLICSiD/CMakeLists.txt
index 7295666b2a89b0bf2250dbd1067e00495b5bd9c0..76d38ea9c1b89637fea5986512f8d1fa92e5fede 100644
--- a/examples/CLICSiD/CMakeLists.txt
+++ b/examples/CLICSiD/CMakeLists.txt
@@ -18,7 +18,7 @@ dd4hep_package ( CLICSiD MAJOR 0 MINOR 0 PATCH 1
         [DD4hep REQUIRED COMPONENTS DDCore]
 )
 set(CLICSiDEx_INSTALL         ${CMAKE_INSTALL_PREFIX}/examples/CLICSiD)
-dd4hep_install_dir( compact scripts sim DESTINATION ${CLICSiDEx_INSTALL} )
+dd4hep_install_dir( scripts sim DESTINATION ${CLICSiDEx_INSTALL} )
 #--------------------------------------------------------------------------
 if (DD4HEP_USE_GEANT4)
   find_package(Geant4 REQUIRED)
@@ -37,14 +37,14 @@ dd4hep_configure_scripts ( CLICSiD DEFAULT_SETUP WITH_TESTS )
 ##dd4hep_add_test_reg ( "CLICSiD_converter_gdml_LONGTEST" 
 ##  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
 ##  EXEC_ARGS  geoConverter -compact2gdml 
-##                          -input file:${CLICSiDEx_INSTALL}/compact/compact.xml
+##                          -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
 ##                          -output file:CLICSiD.gdml
 ##  REGEX_PASS " Successfully extracted GDML to" )
 foreach ( typ description vis )
   dd4hep_add_test_reg ( "CLICSiD_converter_${typ}_LONGTEST" 
     COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
     EXEC_ARGS  geoConverter -compact2${typ} 
-                            -input file:${CLICSiDEx_INSTALL}/compact/compact.xml
+                            -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
                             -output file:CLICSiD.${typ}
     REGEX_PASS " Handled [1-9][0-9][0-9]+ volumes" )
 endforeach()
@@ -53,7 +53,7 @@ endforeach()
 dd4hep_add_test_reg( CLICSiD_check_geometry_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
   EXEC_ARGS  python ${DD4hep_DIR}/python/checkGeometry.py
-                    --compact=file:${CLICSiDEx_INSTALL}/compact/compact.xml
+                    --compact=file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
   # This takes too long                  --full=true --ntracks=10 --option=o --vx=0 --vy=0 --vz=0
   REGEX_PASS " Execution finished..." )
 #
@@ -61,7 +61,7 @@ dd4hep_add_test_reg( CLICSiD_check_geometry_LONGTEST
 dd4hep_add_test_reg( CLICSiD_check_overlaps_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
   EXEC_ARGS  python ${DD4hep_DIR}/python/checkOverlaps.py 
-                    --compact=file:${CLICSiDEx_INSTALL}/compact/compact.xml
+                    --compact=file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
                     --tolerance=0.1
   REGEX_PASS " Execution finished..." )
 #
@@ -72,7 +72,7 @@ if( "${ROOT_FIND_VERSION}" VERSION_GREATER "6.13.0" )
 # ROOT Geometry export to GDML
 dd4hep_add_test_reg( CLICSiD_GDML_export_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
-  EXEC_ARGS  geoPluginRun -input file:${CLICSiDEx_INSTALL}/compact/compact.xml -print WARNING -destroy -volmgr
+  EXEC_ARGS  geoPluginRun -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -print WARNING -destroy -volmgr
              -plugin DD4hep_ROOTGDMLExtract -output EcalBarrel.gdml            -path /world/EcalBarrel
              -plugin DD4hep_ROOTGDMLExtract -output EcalEndcap.gdml            -path /world/EcalEndcap
              -plugin DD4hep_ROOTGDMLExtract -output HcalBarrel.gdml            -path /world/HcalBarrel 
@@ -91,7 +91,7 @@ dd4hep_add_test_reg( CLICSiD_GDML_export_LONGTEST
 # ROOT Geometry export to GDML
 dd4hep_add_test_reg( CLICSiD_GDML_import_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
-  EXEC_ARGS  geoPluginRun -input file:${CLICSiDEx_INSTALL}/compact/compact_nocalo.xml -print WARNING -destroy -volmgr
+  EXEC_ARGS  geoPluginRun -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -print WARNING -destroy -volmgr
              -plugin DD4hep_ROOTGDMLParse    -input EcalBarrel.gdml            -path /world/EcalBarrel
              -plugin DD4hep_ROOTGDMLParse    -input EcalEndcap.gdml            -path /world/EcalEndcap
              -plugin DD4hep_ROOTGDMLParse    -input HcalBarrel.gdml            -path /world/HcalBarrel
@@ -136,7 +136,7 @@ if (DD4HEP_USE_GEANT4)
   dd4hep_add_test_reg( CLICSiD_DDG4_g4material_scan_LONGTEST
     COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
     EXEC_ARGS  python ${DD4hep_DIR}/python/g4MaterialScan.py
-                      --compact=file:${CLICSiDEx_INSTALL}/compact/compact.xml 
+                      --compact=$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
                       "--position=0,0,0" "--direction=0,1,0"
     REQUIRES   DDG4 Geant4
     REGEX_PASS " Terminate Geant4 and delete associated actions." )
diff --git a/examples/CLICSiD/compact/compact.xml b/examples/CLICSiD/compact/compact.xml
deleted file mode 100644
index 9395db50dd064b5d1b1bb3e057125f60ab9f0ed9..0000000000000000000000000000000000000000
--- a/examples/CLICSiD/compact/compact.xml
+++ /dev/null
@@ -1,1589 +0,0 @@
-<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" 
-       xmlns:xs="http://www.w3.org/2001/XMLSchema" 
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
-
-  <info name="clic_sid_cdr"
-        title="CLIC Silicon Detector CDR"
-        author="Christian Grefe"
-        url="https://twiki.cern.ch/twiki/bin/view/CLIC/ClicSidCdr"
-        status="development"
-        version="$Id$">
-    <comment>The compact format for the CLIC Silicon Detector used for the conceptual design report</comment>        
-  </info>
-
-  <includes>
-    <gdmlFile  ref="./elements.xml"/>
-    <gdmlFile  ref="./materials.xml"/>
-  </includes>
-  
-  <define>
-    <constant name="world_side" value="30000*mm"/>
-    <constant name="world_x" value="world_side"/>
-    <constant name="world_y" value="world_side"/>
-    <constant name="world_z" value="world_side"/>
-    
-    <constant name="CrossingAngle" value="0.020*rad"/>
-    
-    <constant name="CaloSides" value="12"/>
-    <constant name="MuonSides" value="8"/>
-    
-    <constant name="EcalBarrel_rmin" value="126.50*cm"/>
-    <constant name="EcalBarrel_zmax" value="176.50*cm"/>
-    <constant name="EcalEndcap_rmin" value="21.0*cm"/>
-    <constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="EcalEndcap_zmin" value="165.70*cm"/>
-    
-    <constant name="HcalBarrel_rmin" value="141.90*cm"/>
-    <constant name="HcalBarrel_layers" value="(int) 75"/>
-    <constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/>
-    <constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables -->
-    <constant name="HcalEndcap_rmin" value="50.0*cm"/>
-    <constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="HcalEndcap_layers" value="60"/>
-    <constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/>
-    <constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/>
-    
-    <constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0*mm"/>
-    <constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0*mm"/>
-    <constant name="VXD_CF_sensor" value="0.026*cm"/>
-    <constant name="VXD_CF_support" value="0.05*cm"/>
-    
-    <constant name="SolenoidBarrelInnerRadius" value="HcalEndcap_rmax + 2.0*cm"/>
-    <constant name="SolenoidCoilOuterZ" value="HcalEndcap_zmax"/> <!-- Aligned with HCAL endcap -->
-    <constant name="SolenoidBarrelInnerCryostatThickness" value="3.0*cm"/>
-    <constant name="SolenoidBarrelInnerAirgapThickness" value="11.0*cm"/>
-    <constant name="SolenoidBarrelAlConductorThickness" value="38.4*cm"/>
-    <constant name="SolenoidBarrelQuenchbackThickness" value="5.0*cm"/>
-    <constant name="SolenoidBarrelOuterAirgapThickness" value="18.7*cm"/>
-    <constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/>
-    <constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/>
-    <constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/>
-    <constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/>
-    <constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/>
-    <constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
-    <constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/>
-    <constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/>
-    
-    <constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/>
-    <constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/>
-    <constant name="MuonBarrel_layers" value="15"/>
-    <constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/>
-    <constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. -->
-    <constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid-->
-    <constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers * MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="MuonEndcap_layers" value="18"/>
-    <constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/>
-    <constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/>
-    
-    <constant name="LumiCal_rmin" value="6.4*cm"/>
-    <constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/>
-    <constant name="LumiCal_zmin" value="HcalEndcap_zmin"/>
-    <constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/>
-    <constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/>
-    <constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/>
-    
-    <constant name="SupportTube_thickness" value="1.0*cm"/>
-    <constant name="ForwardVacuumValve_thickness" value="36.0*cm"/>
-    <constant name="ForwardShielding_thickness" value="5.0*cm"/>
-    <constant name="ForwardMask_thickness" value="10.0*cm"/>
-    <constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/>
-    <constant name="BeamCal_rmax" value="13.0*cm"/>
-    <constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/>
-    
-    <constant name="VertexSupport_r1" value="16.87*cm"/>
-    <constant name="VertexSupport_r2" value="18.42*cm"/>
-    <constant name="VertexSupport_zmax" value="89.48*cm"/>
-    
-    <constant name="VertexBarrel_zmax" value="10.0*cm"/>
-    <constant name="VertexBarrel_r1" value="2.7*cm"/>
-    <constant name="VertexBarrel_r2" value="3.8*cm"/>
-    <constant name="VertexBarrel_r3" value="5.1*cm"/>
-    <constant name="VertexBarrel_r4" value="6.4*cm"/>
-    <constant name="VertexBarrel_r5" value="7.7*cm"/>
-    
-    <constant name="CentralBeamPipe_zmax" value="23.0*cm"/>
-    <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
-    <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter -->
-    <constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/>
-    <constant name="BeamPipe_thickness" value="0.4*cm"/>
-    <constant name="BeamPipe_endThickness" value="0.1*cm"/>
-    <constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/>
-    <constant name="BeamPipe_rmax" value="19.0*cm"/>
-    <constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/>
-    <constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/>
-    <constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/>
-    <constant name="BeamPipeLiner_thickness" value="0.0*cm"/>
-    
-    <constant name="VertexEndcap_rmax" value="11.5*cm"/>
-    <constant name="VertexEndcap_z1" value="12.0*cm"/>
-    <constant name="VertexEndcap_z2" value="16.0*cm"/>
-    <constant name="VertexEndcap_z3" value="20.0*cm"/>
-    <constant name="VertexEndcap_z4" value="24.0*cm"/>
-    <constant name="VertexEndcap_offset" value="0.2*cm"/>
-    <constant name="VertexEndcapModules" value="16"/>
-    <constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    
-    <constant name="ForwardTracker_rmax" value="16.87*cm"/>
-    <constant name="ForwardTracker_z1" value="28.0*cm"/>
-    <constant name="ForwardTracker_z2" value="50.0*cm"/>
-    <constant name="ForwardTracker_z3" value="83.0*cm"/>
-    <constant name="ForwardTracker_offset" value="0.2*cm"/>
-    <constant name="ForwardTrackerModules" value="16"/>
-    <constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    <constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    <constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    
-    <constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/>
-    <constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/>
-    <constant name="VertexServiceThickness" value="0.3*cm"/>
-    <constant name="VertexCableThickness" value="0.005*cm"/>
-    
-    <constant name="IncomingBP_radius" value="0.25*cm"/>
-    <constant name="IncomingBP_thickness" value="0.05*cm"/>
-    <constant name="OutgoingBP_radius" value="tan(CrossingAngle/2/rad)*BeamCal_zmin"/>
-    <constant name="OutgoingBP_thickness" value="0.1*cm"/>
-    
-  </define>
-  <materials>
-    <material name="TungstenDens23">
-      <D value="17.7" unit="g/cm3"/>
-      <fraction n="0.925" ref="W"/>
-      <fraction n="0.066" ref="Ni"/>
-      <fraction n="0.009" ref="Fe"/>
-    </material>
-    <material name="TungstenDens24">
-      <D value="17.8" unit="g/cm3"/>
-      <fraction n="0.93" ref="W"/>
-      <fraction n="0.061" ref="Ni"/>
-      <fraction n="0.009" ref="Fe"/>
-    </material>
-    <material name="TungstenDens25">
-      <D value="18.2" unit="g/cm3"/>
-      <fraction n="0.950" ref="W"/>
-      <fraction n="0.044" ref="Ni"/>
-      <fraction n="0.006" ref="Fe"/>
-    </material>
-    <material name="CarbonFiber_25percent">
-      <D type="density" value="0.375" unit="g/cm3"/>
-      <fraction n="1.0" ref="CarbonFiber"/>
-    </material>
-    <material name="CarbonFiber_15percent">
-      <D type="density" value="0.225" unit="g/cm3"/>
-      <fraction n="1.0" ref="CarbonFiber"/>
-    </material>
-    <material name="Rohacell31_50percent">
-      <D type="density" value="0.016" unit="g/cm3"/>
-      <fraction n="1.0" ref="Rohacell31"/>
-    </material>
-    <material name="Rohacell31_15percent">
-      <D type="density" value="0.0048" unit="g/cm3"/>
-      <fraction n="1.0" ref="Rohacell31"/>
-    </material>
-    <material name="BoratedPolyethylene5">
-      <D value="0.93" unit="g/cm3"/>
-      <fraction n="0.612" ref="C"/>
-      <fraction n="0.222" ref="O"/>
-      <fraction n="0.116" ref="H"/>
-      <fraction n="0.050" ref="B"/>
-    </material>
-    <material name="SiliconCarbide">
-      <D value="3.1" unit="g/cm3"/>
-      <composite n="1" ref="Si"/>
-      <composite n="1" ref="C"/>
-    </material> 
-    <material name="SiliconCarbide_6percent">
-      <D value="0.186" unit="g/cm3"/>
-      <fraction n="1.0" ref="SiliconCarbide"/>
-    </material>
-    <material name="Graphite">
-      <D value="1.7" unit="g/cm3"/>
-      <composite n="1" ref="C"/>
-    </material>      
-  </materials>
-  <limits>
-    <limitset name="cal_limits">
-      <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
-    </limitset>
-  </limits>
-
-  <display>
-    <vis name="InvisibleNoDaughters"      showDaughters="false" visible="false"/>
-    <vis name="InvisibleWithDaughters"    showDaughters="true" visible="false"/>
-    <vis name="SiVertexBarrelModuleVis"   alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="true" visible="true"/>
-    <vis name="SiVertexSensitiveVis"      alpha="1.0" r="1" g="0.2" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/>
-    <vis name="SiVertexPassiveVis"        alpha="1.0" r="0" g="0.2" b="1" drawingStyle="solid" showDaughters="true" visible="true"/>
-    <vis name="SiVertexBarrelLayerVis"    alpha="0.1" r="1" g="1" b="0.6" showDaughters="true" visible="false"/>
-    
-    <vis name="SiVertexEndcapLayerVis"    alpha="0.1" r="1" g="0.75" b="0" showDaughters="false" visible="true"/>
-
-    <vis name="SiTrackerBarrelModuleVis"  alpha="0.5" r="0" g="1" b="0.6" drawingStyle="wireframe" showDaughters="false" visible="true"/>
-    <vis name="SiTrackerBarrelLayerVis"   alpha="0.1" r="1" g="1" b="0.6" showDaughters="true" visible="true"/>
-    
-    <vis name="SiTrackerEndcapModuleVis" alpha="0.5" r="0.8" g="1.0" b="0.1" drawingStyle="wireframe" showDaughters="false" visible="true"/>        
-    
-    <vis name="SiTrackerForwardVis" alpha="1.0" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true"/>
-    
-    <vis name="EcalBarrelVis" alpha="1.0" r="0" g="0" b="0.3" showDaughters="true" visible="true"/>
-    <vis name="EcalBarrelStaveVis" alpha="1.0" r="1" g="0.9" b="0.5" showDaughters="false" visible="true"/>
-
-    <vis name="EcalEndcapVis"       alpha="1" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/>
-
-    <vis name="HcalBarrelVis"          alpha="0.1" r="1"    g="1"    b="0.1" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelStavesVis"    alpha="0.1" r="1"    g="0"    b="0.3" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelLayerVis"     alpha="0.5" r="1"    g="0"    b="0.5" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelSensorVis"    alpha="1"   r="1"    g="1"    b="0.7" showDaughters="true" visible="true"/>
-
-    <vis name="HcalEndcapVis"          alpha="0.1" r="1"    g="1"    b="0.1" showDaughters="false" visible="true"/>
-    <vis name="HcalEndcapLayerVis"     alpha="1"   r="1"    g="0"    b="0.5" showDaughters="false" visible="true"/>
-    
-    <vis name="SolenoidBarrelLayerVis" alpha="1" r="0"    g="0.3"  b="0.3" showDaughters="false" visible="true"/>
-    <vis name="SolenoidCoilEndsVis"    alpha="1" r="0"    g="0.9"  b="0.9" showDaughters="false" visible="true"/>
-    <vis name="AntiSolenoidVis"        alpha="1" r="0.3"  g="1"    b="1"   showDaughters="false" visible="true"/>
-
-    <vis name="MuonBarrelVis"          alpha="0.1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelStavesVis"    alpha="0.3" r="0"    g="0.7"  b="0.3" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelLayerVis"     alpha="0.5" r="0"    g="1"    b="0.3" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-    <vis name="MuonBarrelAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-
-    <vis name="MuonEndcapVis"          alpha="0.1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-    <vis name="MuonEndcapLayerVis"     alpha="1" r="0"    g="1"    b="0.3"  showDaughters="true" visible="true"/>
-    <vis name="MuonEndcapSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-    <vis name="MuonEndcapAbsorberVis"  alpha="0.3" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-    
-    
-    <vis name="BeamPipeVis" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true"/>
-    <vis name="CableVis" showDaughters="false" visible="true"/>
-    
-    <vis name="SupportTubeVis" r="0.1" g="0.1" b="0.99" showDaughters="false" visible="true"/>
-    <vis name="TungstenShieldingVis" r="0.99" g="0.1" b="0.2" showDaughters="false" visible="true"/>
-    
-    <vis name="SupportVis" r="0.8" g="0.8" b="0" showDaughters="false" visible="true"/>
-    <vis name="LumiCalVis" showDaughters="false" visible="true"/>
-    <vis name="GreenVis" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
-    <vis name="RedVis" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
-    <vis name="BlueVis" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
-  </display>
-
-
-
-  <detectors>
-
-    <comment>Trackers</comment> 
-    <detector id="1" name="SiVertexBarrel" type="DD4hep_SiTrackerBarrel" readout="SiVertexBarrelHits" insideTrackingVolume="true">
-      <comment>Vertex Detector Barrel</comment>
-      <module name="VtxBarrelModuleInner" vis="SiVertexBarrelModuleVis">
-	<module_envelope width="10.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
-	<module_component width="7.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
-	  <position z="-0.12*mm"/>
-	</module_component>
-	<module_component width="9.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
-	  <position z="0.225*mm"/>
-	</module_component>
-      </module>
-      <module name="VtxBarrelModuleOuter" vis="SiVertexBarrelModuleVis">
-	<module_envelope width="14.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
-	<module_component width="11.6*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
-	  <position z="-0.12*mm"/>
-	</module_component>
-	<module_component width="13.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
-	  <position z="0.210*mm"/>
-	</module_component>
-      </module>
-      <layer module="VtxBarrelModuleInner" id="1" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r1 - 0.2*cm" outer_r="VertexBarrel_r1 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r1" dr="-1.15*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="2" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r2 - 0.2*cm" outer_r="VertexBarrel_r2 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r2" dr="-1.13*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="3" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r3 - 0.2*cm" outer_r="VertexBarrel_r3 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="24" phi0="0.0*rad" rc="VertexBarrel_r3" dr="-0.89*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="4" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r4 - 0.2*cm" outer_r="VertexBarrel_r4 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="30" phi0="0.1309*rad" rc="VertexBarrel_r4" dr="0.81*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="5" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r5 - 0.2*cm" outer_r="VertexBarrel_r5 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="36" phi0="0.0*rad" rc="VertexBarrel_r5" dr="0.77*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-    </detector>
-
-    <comment>Vertex Detector Endcaps</comment>
-    <detector id="2" name="SiVertexEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiVertexEndcapHits" reflect="true">    
-      <module name="SiVertexEndcapModule1">
-	<trd x1="VertexEndcap_rmin1 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin1) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule2">
-	<trd x1="VertexEndcap_rmin2 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin2) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule3">
-	<trd x1="VertexEndcap_rmin3 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin3) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule4">
-	<trd x1="VertexEndcap_rmin4 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin4) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon"  vis="SiVertexPassiveVis"/>
-      </module>
-      <layer id="1"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin1) / 2" zstart="VertexEndcap_z1" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule1"/>
-      </layer>
-      <layer id="2"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin2) / 2" zstart="VertexEndcap_z2" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule2"/>
-      </layer>
-      <layer id="3"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin3) / 2" zstart="VertexEndcap_z3" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule3"/>
-      </layer>
-      <layer id="4"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin4) / 2" zstart="VertexEndcap_z4" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule4"/>
-      </layer>
-    </detector> 
-
-    <detector id="3" name="SiTrackerBarrel" type="DD4hep_SiTrackerBarrel" readout="SiTrackerBarrelHits">
-      <comment>Outer Tracker Barrel</comment>
-      <module name="SiTrackerModule_Layer1" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0038*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00038*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer2" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0051*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00052*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer3" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0064*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00065*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer4" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>               
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0078*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00079*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer5" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0091*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00093*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <layer module="SiTrackerModule_Layer1" id="1" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="215.075*mm" outer_r="245.0*mm" z_length="578 * 2*mm"/>
-	<rphi_layout phi_tilt="0.17506*rad" nphi="20" phi0="0." rc="(216.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="512.128*mm" nz="13"/>
-      </layer>                
-      <layer module="SiTrackerModule_Layer2" id="2" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="465.075*mm" outer_r="501.0*mm" z_length="749.8 * 2*mm"/>
-	<rphi_layout phi_tilt="0.12217*rad" nphi="38" phi0="0.087*rad" rc="(466.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="690.605*mm" nz="17"/>
-      </layer>
-      <layer module="SiTrackerModule_Layer3" id="3" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="715.075*mm" outer_r="756.0*mm" z_length="1013.9 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11493*rad" nphi="58" phi0="0.058*rad" rc="(716.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="954.625*mm" nz="23"/>
-      </layer>            
-      <layer module="SiTrackerModule_Layer4" id="4" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="965.075*mm" outer_r="1012.0*mm" z_length="1272.3 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11502*rad" nphi="80" phi0="0.0436*rad" rc="(966.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="1213.073*mm" nz="29"/>
-      </layer>                        
-      <layer module="SiTrackerModule_Layer5" id="5" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="1215.075*mm" outer_r="1263.0*mm" z_length="1535.7 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11467*rad" nphi="102" phi0="0.01745*rad" rc="(1216.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="1476.497*mm" nz="35"/>
-      </layer>
-    </detector>
-
-    <detector id="4" name="SiTrackerEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerEndcapHits" reflect="true">
-      <comment>Outer Tracker Endcaps</comment>
-      <module name="Module1" vis="SiTrackerEndcapModuleVis">
-	<trd x1="36.112*mm" x2="46.635*mm" z="100.114/2*mm" />
-	<module_component thickness="0.00052*cm"   material="Copper" />
-	<module_component thickness="0.0051*cm"   material="Kapton" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.18*cm" material="Rohacell31_50D" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.0175*cm" material="Epoxy" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.0051*cm"   material="Kapton" />
-	<module_component thickness="0.00052*cm"   material="Copper" />
-      </module> 
-      <module name="Module2" vis="SiTrackerEndcapModuleVis">
-	<trd x1="45.245*mm" x2="54.680*mm" z="89.773/2*mm" />
-	<module_component thickness="0.00079*cm"   material="Copper" />
-	<module_component thickness="0.0078*cm"   material="Kapton" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.18*cm" material="Rohacell31_50D" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.0175*cm" material="Epoxy" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.0078*cm"   material="Kapton" />
-	<module_component thickness="0.00079*cm"   material="Copper" />
-      </module>
-      <layer id="1">
-	<ring r="256.716*mm" zstart="(787.105+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(778.776+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(770.544+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-      </layer>
-      <layer id="2">
-	<ring r="256.716*mm" zstart="(1073.293+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1064.966+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1056.734+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1048.466+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1041.067+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1033.725+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-      </layer>
-      <layer id="3">
-	<ring r="256.716*mm" zstart="(1353.786+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1345.457+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1337.225+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1328.957+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1321.558+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1314.217+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-	<ring r="793.448*mm" zstart="(1306.828+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
-	<ring r="874.239*mm" zstart="(1299.486+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
-	<ring r="958.364*mm" zstart="(1292.189+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
-      </layer>
-      <layer id="4">
-	<ring r="256.716*mm" zstart="(1639.164+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1630.835+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1622.603+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1614.335+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1606.936+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1599.595+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-	<ring r="793.448*mm" zstart="(1592.206+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
-	<ring r="874.239*mm" zstart="(1584.864+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
-	<ring r="958.364*mm" zstart="(1577.567+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
-	<ring r="1040.970*mm" zstart="(1570.222+1.75)*mm" nmodules="72" dz="1.75*mm" module="Module2"/>
-	<ring r="1124.167*mm" zstart="(1562.916+1.75)*mm" nmodules="78" dz="1.75*mm" module="Module2" phi0="pi/78"/>
-	<ring r="1206.937*mm" zstart="(1555.647+1.75)*mm" nmodules="84" dz="1.75*mm" module="Module2"/>
-      </layer>
-    </detector>
-    
-    <detector id="5" name="SiTrackerForward" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerForwardHits">    
-      <comment>Forward Tracker inside Vertex Support Barrel</comment>
-      <module name="SiTrackerForwardModule1">
-	<trd x1="ForwardTracker_rmin1 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin1) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <module name="SiTrackerForwardModule2">
-	<trd x1="ForwardTracker_rmin2 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin2) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <module name="SiTrackerForwardModule3">
-	<trd x1="ForwardTracker_rmin3 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin3) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <layer id="1">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin1) / 2" zstart="ForwardTracker_z1" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule1"/>
-      </layer>
-      <layer id="2">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin2) / 2" zstart="ForwardTracker_z2" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule2"/>
-      </layer>
-      <layer id="3">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin3) / 2" zstart="ForwardTracker_z3" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule3"/>
-      </layer>
-    </detector>
-
-    <comment>Calorimeters</comment>
-    <detector id="6" name="EcalBarrel" type="DD4hep_EcalBarrel" readout="EcalBarrelHits" vis="EcalBarrelVis" calorimeterType="EM_BARREL">
-      <comment>EM Calorimeter Barrel</comment>
-      <dimensions numsides="(int) CaloSides" rmin="EcalBarrel_rmin" z="EcalBarrel_zmax*2" />
-      <staves vis="EcalBarrelStaveVis"/>
-      <layer repeat="1">
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>      
-      <layer repeat="20">
-	<slice material = "TungstenDens24" thickness = "0.25*cm" />
-	<slice material = "Air"     thickness = "0.025*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-      <layer repeat="10">
-	<slice material = "TungstenDens24" thickness = "0.5*cm" />
-	<slice material = "Air"     thickness = "0.025*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-    </detector>
-
-    <detector id="7" name="EcalEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" reflect="true" readout="EcalEndcapHits" vis="EcalEndcapVis" calorimeterType="EM_ENDCAP">
-      <comment>EM Calorimeter Endcaps</comment>
-      <dimensions numsides="(int) CaloSides" zmin="EcalEndcap_zmin" rmin="EcalEndcap_rmin" rmax="EcalEndcap_rmax" />
-      <layer repeat="1">
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>       
-      <layer repeat="20">
-	<slice material = "TungstenDens24" thickness = "0.25*cm" />
-	<slice material = "Air"     thickness = "0.025*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-      <layer repeat="10">
-	<slice material = "TungstenDens24" thickness = "0.5*cm" />
-	<slice material = "Air"     thickness = "0.025*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-    </detector>
-
-    <detector id="8" name="HcalBarrel" type="DD4hep_PolyhedraBarrelCalorimeter2" readout="HcalBarrelHits" vis="HcalBarrelVis" calorimeterType="HAD_BARREL" gap="0.*cm" material="Steel235">
-      <comment>Hadron Calorimeter Barrel</comment>
-      <dimensions numsides="(int) CaloSides" rmin="HcalBarrel_rmin" z="EcalBarrel_zmax*2"/>
-      <staves vis="HcalBarrelStavesVis"/>
-      <layer repeat="(int) HcalBarrel_layers">
-	<slice material = "TungstenDens24" thickness = "1.00*cm" />
-	<slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" vis="HcalBarrelSensorVis"/>       
-	<slice material = "Air" thickness = "0.15*cm" />
-      </layer>
-    </detector>
-
-
-    <detector id="9" name="HcalEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="HcalEndcapHits" vis="HcalEndcapVis" calorimeterType="HAD_ENDCAP">
-      <comment>Hadron Calorimeter Endcaps</comment>
-      <dimensions numsides="(int) CaloSides" zmin="HcalEndcap_zmin" rmin="HcalEndcap_rmin" rmax="HcalEndcap_rmax" />
-      <layer repeat="(int) HcalEndcap_layers">
-	<slice material = "Steel235" thickness = "2.0*cm" />
-	<slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" />        
-	<slice material = "Air" thickness = "0.15*cm" />
-      </layer>
-    </detector>
-
-    <detector id="10" name="HcalPlug" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="HcalPlugHits" vis="MuonEndcapVis">
-      <comment>Hadron Calorimeter Plug</comment>
-      <dimensions numsides="(int) CaloSides" zmin="SolenoidCoilOuterZ" rmin="MuonEndcap_rmin" rmax="HcalEndcap_rmax" />
-      <layer repeat="1" vis="MuonEndcapLayerVis">
-	<slice material="Iron" thickness="15.0*cm"  vis="MuonEndcapAbsorberVis"/>
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-	<slice material="Iron" thickness="9.0*cm"  vis="MuonEndcapAbsorberVis"/>
-      </layer>
-    </detector>
-
-
-    <detector id="11" name="MuonBarrel" type="DD4hep_PolyhedraBarrelCalorimeter2" readout="MuonBarrelHits" vis="MuonBarrelVis" calorimeterType="MUON_BARREL" gap="0.*cm" material="Steel235">
-      <comment>Muon Calorimeter Barrel</comment>
-      <dimensions numsides="(int) MuonSides" rmin="MuonBarrel_rmin" z="MuonBarrel_zmax * 2"/>
-      <staves vis="MuonBarrelStavesVis"/>
-
-      <layer repeat="1" vis="MuonBarrelLayerVis">
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-	<slice material="Iron" thickness="5.0*cm" vis="MuonBarrelAbsorberVis"/>
-      </layer>
-      <layer repeat="1" vis="MuonBarrelLayerVis">
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-	<slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/>
-      </layer>
-      <layer repeat="(int) MuonBarrel_layers" vis="MuonBarrelLayerVis">
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-	<slice material="Iron" thickness="10.0*cm" vis="MuonBarrelAbsorberVis"/>
-      </layer>
-
-      <layer repeat="1" vis="MuonBarrelLayerVis">
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-	<slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/>
-      </layer>
-    </detector>
-
-    <detector id="12" name="MuonEndcap" type="DD4hep_PolyhedraEndcapCalorimeter2" readout="MuonEndcapHits" reflect="true" vis="MuonEndcapVis" calorimeterType="MUON_ENDCAP">
-      <comment>Muon Calorimeter Endcaps</comment>
-      <dimensions numsides="(int) MuonSides" zmin="MuonEndcap_zmin" rmin="MuonEndcap_rmin" rmax="MuonEndcap_rmax" />
-      <layer repeat="(int) MuonEndcap_layers" vis="MuonEndcapLayerVis">
-	<slice material="Iron" thickness="10.0*cm"  vis="MuonEndcapAbsorberVis"/>
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes"  vis="MuonEndcapSensorVis"/>
-	<slice material="PyrexGlass" thickness="0.2*cm" />
-	<slice material="Air" thickness="0.35*cm" />
-	<slice material="Aluminum" thickness="0.1*cm" />
-	<slice material="Air" thickness="1.0*cm" />
-      </layer>
-    </detector>
-
-    <detector id="13" name="LumiCal" reflect="true" type="DD4hep_CylindricalEndcapCalorimeter" readout="LumiCalHits" vis="LumiCalVis" calorimeterType="LUMI">
-      <comment>Luminosity Calorimeter</comment>
-      <dimensions inner_r = "LumiCal_rmin" inner_z = "LumiCal_zmin" outer_r = "LumiCal_rmax" />
-      <layer repeat="20" >
-	<slice material = "TungstenDens24" thickness = "0.271*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-      <layer repeat="15" >
-	<slice material = "TungstenDens24" thickness = "0.543*cm" />
-	<slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" />
-	<slice material = "Copper"  thickness = "0.005*cm" />
-	<slice material = "Kapton"  thickness = "0.030*cm" />
-	<slice material = "Air"     thickness = "0.033*cm" />
-      </layer>
-    </detector>
-
-    <detector name="LumiReadout_Forward" type="DD4hep_PolyconeSupport" vis="LumiCalVis">
-      <comment>Readout for Luminosity Calorimeter</comment>
-      <material name="G10"/>
-      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin"/>
-      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin+LumiCal_thickness"/>
-    </detector>
-    
-    <detector name="LumiReadout_Backward" type="DD4hep_PolyconeSupport" vis="LumiCalVis">
-      <comment>Readout for Luminosity Calorimeter</comment>
-      <material name="G10"/>
-      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmin"/>
-      <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmin+LumiCal_thickness)"/>
-    </detector>
-    
-    <detector id="14" name="BeamCal" reflect="true" type="DD4hep_ForwardDetector" readout="BeamCalHits" vis="LumiCalVis" calorimeterType="BEAM">
-      <comment>Beam Calorimeter</comment>
-      <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="BeamCal_zmin" />
-      <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" />
-      <layer repeat="50">
-	<slice material="TungstenDens24" thickness="0.271*cm" />
-	<slice material="Silicon" thickness="0.032*cm" sensitive="yes" />
-	<slice material="Copper" thickness="0.005*cm" />
-	<slice material="Kapton" thickness="0.030*cm" />
-	<slice material="Air" thickness="0.033*cm" />
-      </layer>
-    </detector>
-
-    <comment>Dead material and supports</comment>
-    <comment>Beampipe</comment> 
-    <detector name="Beampipe" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <comment>Central Be Beampipe</comment>
-      <material name="Beryllium"/>
-      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="-CentralBeamPipe_zmax"/>
-      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="CentralBeamPipe_zmax" />
-    </detector>
-    <detector name="SteelConeZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="-tracking_region_zmax" /> 
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      z="-BeamPipe_zmin" />
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="CentralBeamPipe_rmax"
-	      z="-CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="SteelConeZbackward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="-(tracking_region_zmax + 0.01*cm)" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="- BeamPipe_zmax" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="BeamPipe_rmax"
-	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-    </detector>
-    <detector name="SteelConeZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <material name="Iron"/>
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="CentralBeamPipe_rmax"
-	      z="CentralBeamPipe_zmax"/>            
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      z="BeamPipe_zmin" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="tracking_region_zmax" />
-    </detector>
-    <detector name="SteelConeZforward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="tracking_region_zmax + 0.01*cm" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="BeamPipe_zmax" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="BeamPipe_rmax"
-	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="LumiCal_zmin - BeamPipe_endThickness" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="ForwardMask_zmin - BeamPipe_endThickness" />
-    </detector>
-
-    <detector name="NorthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-
-    <detector name="SouthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <detector name="NorthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <detector name="SouthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <!-- Beam pipe liner is not needed, use thicker conical steel pipe instead
-	 <detector name="BeamPipeLiner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-	 <comment>BeamPipe Liner to shield bremsstrahlung photons</comment>
-	 <material name="Titanium"/>
-	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="-tracking_region_zmax" />
-	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness"  z="-(CentralBeamPipe_zmax + 0.01*cm)"/>
-	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="-CentralBeamPipe_zmax"  />
-	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="CentralBeamPipe_zmax" />
-	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="CentralBeamPipe_zmax + 0.01*cm" />
-	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="tracking_region_zmax" />
-	 </detector>
-    -->
-
-    <detector name="BeamPipeVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-      <comment>Vacuum inside beampipe</comment>
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-	      z="-tracking_region_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-	      z="-BeamPipe_zmin"  />
-      <zplane rmin="0.*cm"
-	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-	      z="BeamPipe_zmin" />
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-	      z="tracking_region_zmax" />
-    </detector>
-    <detector name="ForwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="tracking_region_zmax + 0.01*cm" /> 
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="BeamPipe_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="LumiCal_zmin - BeamPipe_endThickness" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="ForwardMask_zmin - BeamPipe_endThickness" />
-    </detector> 
-    <detector name="BackwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="- (tracking_region_zmax + 0.01*cm)" /> 
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="- BeamPipe_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-    </detector>
-    <comment>Vertex Detector Supports and Readout</comment>
-    <detector name="VertexBarrelSupports" type="DD4hep_MultiLayerTracker" vis="SupportVis" reflect="true">
-      <comment>Double-walled Carbon Fiber support tube</comment>
-      <layer id="6" inner_r = "16.87*cm" outer_z = "89.48*cm">
-	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
-      </layer>
-      <layer id="7" inner_r = "18.42*cm" outer_z = "89.48*cm">
-	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
-      </layer>
-    </detector>
-    <detector name="VertexEndSupports" type="DD4hep_DiskTracker" reflect="true" vis="SupportVis">    
-      <layer id="7" inner_r = "(86.88*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "86.88*cm" outer_r = "16.87*cm">
-	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
-      </layer>
-      <layer id="8" inner_r = "(89.43*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "89.43*cm" outer_r = "16.87*cm">
-	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
-      </layer>
-    </detector>
-    <detector name="VertexReadout" type="DD4hep_DiskTracker" reflect="true" vis="CableVis">
-      <comment>Readout and Cabling</comment>
-      <layer id="1" inner_r = "VertexBarrel_r1" outer_r="VertexBarrel_r1 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm" vis="GreenVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="2" inner_r = "VertexBarrel_r2" outer_r="VertexBarrel_r2 + 0.02*cm" inner_z="VertexBarrel_zmax + 0.1*cm" vis = "BlueVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="3" inner_r = "VertexBarrel_r3" outer_r="VertexBarrel_r3 + 0.02*cm"  inner_z="VertexBarrel_zmax + 0.1*cm" vis="RedVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="4" inner_r = "VertexBarrel_r4" outer_r = "VertexBarrel_r4 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="5" inner_r = "VertexBarrel_r5" outer_r = "VertexBarrel_r5 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="6" inner_r = "VertexBarrel_r1 - 0.1*cm" outer_r = "VertexBarrel_r2"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0057*cm"/>
-      </layer>
-      <layer id="7" inner_r = "VertexBarrel_r2 - 0.01*cm" outer_r = "VertexBarrel_r3"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0031*cm"/>
-      </layer>
-      <layer id="8" inner_r = "VertexBarrel_r3 - 0.01*cm" outer_r = "VertexBarrel_r4"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0016*cm"/>
-      </layer>
-      <layer id="9" inner_r = "VertexBarrel_r4 - 0.01*cm" outer_r = "VertexBarrel_r5"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0007*cm"/>
-      </layer>
-      <layer id="10" inner_r = "VertexEndcap_rmin1 - 0.1*cm"  outer_r = "VertexEndcap_rmin1 - 0.01*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="11" inner_r = "VertexEndcap_rmin2 - 0.1*cm"  outer_r = "VertexEndcap_rmin2 - 0.01*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="12" inner_r = "VertexEndcap_rmin3 - 0.1*cm"  outer_r = "VertexEndcap_rmin3 - 0.01*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="13" inner_r = "VertexEndcap_rmin4 - 0.1*cm"  outer_r = "VertexEndcap_rmin4 - 0.01*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="14" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="15" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="16" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="17" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-    </detector>
-    <detector name="VXDcableZforwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="VertexBarrel_zmax + 0.61*cm"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="VXDcableZbackwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="-(VertexBarrel_zmax + 0.61*cm)"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="-CentralBeamPipe_zmax"/>
-    </detector> 
-    <detector name="VXDcableZbackwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-	      z="-tracking_region_zmax" />
-      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-	      z="-(VertexService_zmax + 0.01*cm)"/>
-    </detector>
-    <detector name="VXDcableZbackwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin="CentralBeamPipe_rmax"
-	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
-	      z="-(CentralBeamPipe_zmax)"/>
-      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-	      z="-(VertexService_zmin - 0.01*cm)"/>
-    </detector>
-    <detector name="VXDcableZforwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-	      z="tracking_region_zmax" />
-      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-	      z="VertexService_zmax + 0.01*cm"/>
-    </detector>
-    <detector name="VXDcableZforwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-	      z="VertexService_zmin - 0.01*cm"/>
-      <zplane rmin="CentralBeamPipe_rmax"
-	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
-	      z="CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="VXDserviceZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="G10"/>
-      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="-VertexService_zmax"/>
-      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="-VertexService_zmin"/>
-    </detector>
-    <detector name="VXDserviceZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="G10"/>
-      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="VertexService_zmin"/>
-      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="VertexService_zmax"/>
-    </detector>
-
-    <comment>Outer Tracker Supports and Readout</comment>
-    <detector name="TrackerBarrelSupports" type="DD4hep_MultiLayerTracker" reflect="true">
-      <comment>Barrels</comment>
-      <layer id="1" inner_r="206.0*mm" outer_z="577.328*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="2" inner_r="456.0*mm" outer_z="749.781*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="3" inner_r="706.0*mm" outer_z="1013.802*mm">
-	<slice material= "CarbonFiber" thickness = "0.05*cm" />
-	<slice material= "Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material= "CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="4" inner_r="956.0*mm" outer_z="1272.251*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="5" inner_r="1206.0*mm" outer_z="1535.676*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-    </detector>
-
-    <comment>Dished endcap disks</comment>
-    <detector name="SiTrackerEndcapSupport1" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(750.417-0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(750.919-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(777.034-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(777.535-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport2" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="750.919*mm" />
-      <zplane rmin="438.449*mm" rmax="510.448*mm" z="757.218*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="777.535*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="783.834*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport3" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(757.218+0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(757.720+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(783.834+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(784.336+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport4" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1014.437-0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1014.939-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1063.219-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1063.721-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport5" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="1014.939*mm" />
-      <zplane rmin="691.797*mm" rmax="763.796*mm" z="1021.238*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1063.721*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1070.020*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport6" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1021.238+0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1021.740+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1070.020+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1070.522+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport7" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1272.885-0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1273.387-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1343.711-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1344.213-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport8" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="1273.387*mm" />
-      <zplane rmin="943.753*mm" rmax="1015.748*mm" z="1279.686*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1344.213*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1350.512*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport9" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1279.686+0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1280.188+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1350.512+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1351.014+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport10" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1536.560-0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1537.062-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1629.089-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1629.591-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport11" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="1537.062*mm" />
-      <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="1543.361*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1629.591*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1635.890*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport12" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1543.361+0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1543.863+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1635.890+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1636.392+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport1Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-750.417+0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-750.919+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-777.034+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-777.535+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport2Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="-750.919*mm" />
-      <zplane rmin="438.449*mm" rmax="510.448*mm" z="-757.218*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-777.535*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-783.834*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport3Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-757.218-0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-757.720-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-783.834-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-784.336-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport4Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1014.437+0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1014.939+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1063.219+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1063.721+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport5Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="-1014.939*mm" />
-      <zplane rmin="691.797*mm" rmax="763.796*mm" z="-1021.238*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1063.721*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1070.020*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport6Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1021.238-0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1021.740-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1070.020-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1070.522-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport7Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1272.885+0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1273.387+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1343.711+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1344.213+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport8Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="-1273.387*mm" />
-      <zplane rmin="943.753*mm" rmax="1015.748*mm" z="-1279.686*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1344.213*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1350.512*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport9Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1279.686-0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1280.188-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1350.512-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1351.014-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport10Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1536.560+0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1537.062+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1629.089+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1629.591+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport11Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="-1537.062*mm" />
-      <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="-1543.361*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1629.591*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1635.890*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport12Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1543.361-0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1543.863-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1635.890-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1636.392-0.001)*mm" />
-    </detector>        
-    <detector name="TrackerReadout" type="DD4hep_DiskTracker" reflect="true" vis="GreenVis">
-      <comment>Readouts</comment>
-      <layer id="1" inner_r="25.7*cm" inner_z="590.402*mm" outer_r="45.6*cm">
-	<slice material="G10" thickness="0.057*cm" />
-	<slice material="Copper" thickness="0.0038*cm" />
-      </layer>
-      <layer id="2" inner_r="51.0*cm" inner_z="762.854*mm" outer_r="70.6*cm">
-	<slice material = "G10" thickness="0.102*cm" />
-	<slice material = "Copper" thickness="0.0068*cm" />
-      </layer>
-      <layer id="3" inner_r="76.3*cm" inner_z="1026.874*mm" outer_r="95.6*cm">
-	<slice material="G10" thickness="0.108*cm" />
-	<slice material="Copper" thickness="0.0072*cm" />
-      </layer>
-      <layer id="4" inner_r="101.3*cm" inner_z="1285.322*mm" outer_r="120.6*cm">
-	<slice material="G10" thickness="0.186*cm" />
-	<slice material="Copper" thickness="0.0124*cm" />
-      </layer>
-      <layer id="5" inner_r= "101.3*cm" inner_z="1610.0*mm" outer_r="120.6*cm">
-	<slice material="G10" thickness="0.246*cm" />
-	<slice material="Copper" thickness="0.0164*cm" />
-      </layer>
-    </detector>
-    <comment>Masks and Shielding</comment>
-    <detector name="LumiShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax"/>
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax+ForwardShielding_thickness"/>
-    </detector>
-    <detector name="LumiShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmax"/>
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmax+ForwardShielding_thickness)"/>
-    </detector>
-    <detector name="ECalShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin"/>
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin+ForwardShielding_thickness"/>
-    </detector>
-    <detector name="ECalShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-HcalEndcap_zmin"/>
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-(HcalEndcap_zmin+ForwardShielding_thickness)"/>
-    </detector>
-    <detector name="ShieldingTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="HcalEndcap_zmin + ForwardShielding_thickness"/>
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="HcalEndcap_zmax"/>
-    </detector>
-    <detector name="ShieldingTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="-(HcalEndcap_zmin + ForwardShielding_thickness)"/>
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="-HcalEndcap_zmax"/>
-    </detector>
-    <detector name="SupportTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="HcalEndcap_zmin"/>
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="MuonEndcap_zmax"/>
-    </detector>
-    <detector name="SupportTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="-HcalEndcap_zmin"/>
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="-MuonEndcap_zmax"/>
-    </detector>
-    <detector name="AntiSolenoid_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="HcalEndcap_zmax + 1.0*cm"/>
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="MuonEndcap_zmax"/>
-    </detector>
-    <detector name="AntiSolenoid_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="-(HcalEndcap_zmax + 1.0*cm)"/>
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="-MuonEndcap_zmax"/>
-    </detector>
-
-    <detector name="ForwardLowZ" type="DD4hep_ForwardDetector" vis="TungstenShieldingVis" reflect="true">
-      <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="ForwardMask_zmin" />
-      <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" />
-      <layer repeat="1">
-	<slice material = "Graphite" thickness = "ForwardMask_thickness" sensitive = "no" />
-      </layer>
-    </detector>
-    
-    <comment>Solenoid</comment>
-    <detector name="SolenoidCoilBarrel" type="DD4hep_MultiLayerTracker" insideTrackingVolume="false" reflect="true">
-      <layer id="1" inner_r="SolenoidBarrelInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Steel235" thickness="SolenoidBarrelInnerCryostatThickness" />
-	<slice material="Vacuum"   thickness="SolenoidBarrelInnerAirgapThickness" />
-      </layer>
-      <layer id="2" inner_r="SolenoidBarrelConductorInnerRadius" outer_z="SolenoidCoilOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Aluminum" thickness="SolenoidBarrelAlConductorThickness" />
-	<slice material="Aluminum" thickness="SolenoidBarrelQuenchbackThickness" />
-      </layer>
-      <layer id="3" inner_r="SolenoidBarrelOuterCryostatInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Vacuum"   thickness="SolenoidBarrelOuterAirgapThickness" />
-	<slice material="Steel235" thickness="SolenoidBarrelOuterCryostatThickness" />
-      </layer>
-    </detector>
-
-    <detector name="SolenoidCoilEnds" type="DD4hep_DiskTracker" reflect="true" insideTrackingVolume="false">
-      <layer id="1" inner_r="SolenoidBarrelInnerRadius" inner_z="SolenoidBarrelOuterZ" outer_r="SolenoidBarrelOuterRadius" vis="SolenoidCoilEndsVis">
-	<slice material="Steel235" thickness="SolenoidEndcapCryostatThickness" />
-      </layer>
-    </detector>
-
-  </detectors>
-
-  <readouts>
-    <readout name="SiTrackerEndcapHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
-    </readout>        
-    <readout name="SiTrackerBarrelHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
-    </readout>
-    <readout name="SiVertexBarrelHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
-    </readout>
-    <readout name="SiVertexEndcapHits">
-      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id>
-    </readout>
-    <readout name="EcalBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
-      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-    </readout>        
-    <readout name="EcalEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
-      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:6,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalPlugHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="MuonBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="MuonEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="SiTrackerForwardHits">
-      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:28</id>
-    </readout>
-    <readout name="LumiCalHits">
-      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
-      <id>system:8,barrel:3,layer:8,slice:8,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="BeamCalHits">
-      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
-      <id>system:8,layer:8,barrel:3,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-  </readouts>
-  <fields>
-    <field name="GlobalSolenoid" type="solenoid" 
-	   inner_field="5.0*tesla"
-	   outer_field="-1.5*tesla" 
-	   zmax="SolenoidCoilOuterZ"
-	   outer_radius="SolenoidalFieldRadius">
-    </field>
-  </fields>
-</lccdd>
diff --git a/examples/CLICSiD/compact/compact_nocalo.xml b/examples/CLICSiD/compact/compact_nocalo.xml
deleted file mode 100644
index e19052741263d47c83f2071d3877e739304988d4..0000000000000000000000000000000000000000
--- a/examples/CLICSiD/compact/compact_nocalo.xml
+++ /dev/null
@@ -1,1339 +0,0 @@
-<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" 
-       xmlns:xs="http://www.w3.org/2001/XMLSchema" 
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
-
-  <info name="clic_sid_cdr"
-        title="CLIC Silicon Detector CDR"
-        author="Christian Grefe"
-        url="https://twiki.cern.ch/twiki/bin/view/CLIC/ClicSidCdr"
-        status="development"
-        version="$Id$">
-    <comment>The compact format for the CLIC Silicon Detector used for the conceptual design report</comment>        
-  </info>
-
-  <includes>
-    <gdmlFile  ref="./elements.xml"/>
-    <gdmlFile  ref="./materials.xml"/>
-  </includes>
-  
-  <define>
-    <constant name="world_side" value="30000*mm"/>
-    <constant name="world_x" value="world_side"/>
-    <constant name="world_y" value="world_side"/>
-    <constant name="world_z" value="world_side"/>
-    
-    <constant name="CrossingAngle" value="0.020*rad"/>
-    
-    <constant name="CaloSides" value="12"/>
-    <constant name="MuonSides" value="8"/>
-    
-    <constant name="EcalBarrel_rmin" value="126.50*cm"/>
-    <constant name="EcalBarrel_zmax" value="176.50*cm"/>
-    <constant name="EcalEndcap_rmin" value="21.0*cm"/>
-    <constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="EcalEndcap_zmin" value="165.70*cm"/>
-    
-    <constant name="HcalBarrel_rmin" value="141.90*cm"/>
-    <constant name="HcalBarrel_layers" value="(int) 75"/>
-    <constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/>
-    <constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables -->
-    <constant name="HcalEndcap_rmin" value="50.0*cm"/>
-    <constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="HcalEndcap_layers" value="60"/>
-    <constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/>
-    <constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/>
-    
-    <constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0*mm"/>
-    <constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0*mm"/>
-    <constant name="VXD_CF_sensor" value="0.026*cm"/>
-    <constant name="VXD_CF_support" value="0.05*cm"/>
-    
-    <constant name="SolenoidBarrelInnerRadius" value="HcalEndcap_rmax + 2.0*cm"/>
-    <constant name="SolenoidCoilOuterZ" value="HcalEndcap_zmax"/> <!-- Aligned with HCAL endcap -->
-    <constant name="SolenoidBarrelInnerCryostatThickness" value="3.0*cm"/>
-    <constant name="SolenoidBarrelInnerAirgapThickness" value="11.0*cm"/>
-    <constant name="SolenoidBarrelAlConductorThickness" value="38.4*cm"/>
-    <constant name="SolenoidBarrelQuenchbackThickness" value="5.0*cm"/>
-    <constant name="SolenoidBarrelOuterAirgapThickness" value="18.7*cm"/>
-    <constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/>
-    <constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/>
-    <constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/>
-    <constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/>
-    <constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/>
-    <constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
-    <constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/>
-    <constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/>
-    
-    <constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/>
-    <constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/>
-    <constant name="MuonBarrel_layers" value="15"/>
-    <constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/>
-    <constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. -->
-    <constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid-->
-    <constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers * MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/> <!-- Correction from going from inner circle to outer circle -->
-    <constant name="MuonEndcap_layers" value="18"/>
-    <constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/>
-    <constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/>
-    
-    <constant name="LumiCal_rmin" value="6.4*cm"/>
-    <constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/>
-    <constant name="LumiCal_zmin" value="HcalEndcap_zmin"/>
-    <constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/>
-    <constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/>
-    <constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/>
-    
-    <constant name="SupportTube_thickness" value="1.0*cm"/>
-    <constant name="ForwardVacuumValve_thickness" value="36.0*cm"/>
-    <constant name="ForwardShielding_thickness" value="5.0*cm"/>
-    <constant name="ForwardMask_thickness" value="10.0*cm"/>
-    <constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/>
-    <constant name="BeamCal_rmax" value="13.0*cm"/>
-    <constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/>
-    
-    <constant name="VertexSupport_r1" value="16.87*cm"/>
-    <constant name="VertexSupport_r2" value="18.42*cm"/>
-    <constant name="VertexSupport_zmax" value="89.48*cm"/>
-    
-    <constant name="VertexBarrel_zmax" value="10.0*cm"/>
-    <constant name="VertexBarrel_r1" value="2.7*cm"/>
-    <constant name="VertexBarrel_r2" value="3.8*cm"/>
-    <constant name="VertexBarrel_r3" value="5.1*cm"/>
-    <constant name="VertexBarrel_r4" value="6.4*cm"/>
-    <constant name="VertexBarrel_r5" value="7.7*cm"/>
-    
-    <constant name="CentralBeamPipe_zmax" value="23.0*cm"/>
-    <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
-    <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter -->
-    <constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/>
-    <constant name="BeamPipe_thickness" value="0.4*cm"/>
-    <constant name="BeamPipe_endThickness" value="0.1*cm"/>
-    <constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/>
-    <constant name="BeamPipe_rmax" value="19.0*cm"/>
-    <constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/>
-    <constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/>
-    <constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/>
-    <constant name="BeamPipeLiner_thickness" value="0.0*cm"/>
-    
-    <constant name="VertexEndcap_rmax" value="11.5*cm"/>
-    <constant name="VertexEndcap_z1" value="12.0*cm"/>
-    <constant name="VertexEndcap_z2" value="16.0*cm"/>
-    <constant name="VertexEndcap_z3" value="20.0*cm"/>
-    <constant name="VertexEndcap_z4" value="24.0*cm"/>
-    <constant name="VertexEndcap_offset" value="0.2*cm"/>
-    <constant name="VertexEndcapModules" value="16"/>
-    <constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    <constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/>
-    
-    <constant name="ForwardTracker_rmax" value="16.87*cm"/>
-    <constant name="ForwardTracker_z1" value="28.0*cm"/>
-    <constant name="ForwardTracker_z2" value="50.0*cm"/>
-    <constant name="ForwardTracker_z3" value="83.0*cm"/>
-    <constant name="ForwardTracker_offset" value="0.2*cm"/>
-    <constant name="ForwardTrackerModules" value="16"/>
-    <constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    <constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    <constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-    
-    <constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/>
-    <constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/>
-    <constant name="VertexServiceThickness" value="0.3*cm"/>
-    <constant name="VertexCableThickness" value="0.005*cm"/>
-    
-    <constant name="IncomingBP_radius" value="0.25*cm"/>
-    <constant name="IncomingBP_thickness" value="0.05*cm"/>
-    <constant name="OutgoingBP_radius" value="tan(CrossingAngle/2/rad)*BeamCal_zmin"/>
-    <constant name="OutgoingBP_thickness" value="0.1*cm"/>
-    
-  </define>
-  <materials>
-    <material name="TungstenDens23">
-      <D value="17.7" unit="g/cm3"/>
-      <fraction n="0.925" ref="W"/>
-      <fraction n="0.066" ref="Ni"/>
-      <fraction n="0.009" ref="Fe"/>
-    </material>
-    <material name="TungstenDens24">
-      <D value="17.8" unit="g/cm3"/>
-      <fraction n="0.93" ref="W"/>
-      <fraction n="0.061" ref="Ni"/>
-      <fraction n="0.009" ref="Fe"/>
-    </material>
-    <material name="TungstenDens25">
-      <D value="18.2" unit="g/cm3"/>
-      <fraction n="0.950" ref="W"/>
-      <fraction n="0.044" ref="Ni"/>
-      <fraction n="0.006" ref="Fe"/>
-    </material>
-    <material name="CarbonFiber_25percent">
-      <D type="density" value="0.375" unit="g/cm3"/>
-      <fraction n="1.0" ref="CarbonFiber"/>
-    </material>
-    <material name="CarbonFiber_15percent">
-      <D type="density" value="0.225" unit="g/cm3"/>
-      <fraction n="1.0" ref="CarbonFiber"/>
-    </material>
-    <material name="Rohacell31_50percent">
-      <D type="density" value="0.016" unit="g/cm3"/>
-      <fraction n="1.0" ref="Rohacell31"/>
-    </material>
-    <material name="Rohacell31_15percent">
-      <D type="density" value="0.0048" unit="g/cm3"/>
-      <fraction n="1.0" ref="Rohacell31"/>
-    </material>
-    <material name="BoratedPolyethylene5">
-      <D value="0.93" unit="g/cm3"/>
-      <fraction n="0.612" ref="C"/>
-      <fraction n="0.222" ref="O"/>
-      <fraction n="0.116" ref="H"/>
-      <fraction n="0.050" ref="B"/>
-    </material>
-    <material name="SiliconCarbide">
-      <D value="3.1" unit="g/cm3"/>
-      <composite n="1" ref="Si"/>
-      <composite n="1" ref="C"/>
-    </material> 
-    <material name="SiliconCarbide_6percent">
-      <D value="0.186" unit="g/cm3"/>
-      <fraction n="1.0" ref="SiliconCarbide"/>
-    </material>
-    <material name="Graphite">
-      <D value="1.7" unit="g/cm3"/>
-      <composite n="1" ref="C"/>
-    </material>      
-  </materials>
-  <limits>
-    <limitset name="cal_limits">
-      <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
-    </limitset>
-  </limits>
-
-  <display>
-    <vis name="InvisibleNoDaughters"      showDaughters="false" visible="false"/>
-    <vis name="InvisibleWithDaughters"    showDaughters="true" visible="false"/>
-    <vis name="SiVertexBarrelModuleVis"   alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="true" visible="true"/>
-    <vis name="SiVertexSensitiveVis"      alpha="1.0" r="1" g="0.2" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/>
-    <vis name="SiVertexPassiveVis"        alpha="1.0" r="0" g="0.2" b="1" drawingStyle="solid" showDaughters="true" visible="true"/>
-    <vis name="SiVertexBarrelLayerVis"    alpha="0.1" r="1" g="1" b="0.6" showDaughters="true" visible="false"/>
-    
-    <vis name="SiVertexEndcapLayerVis"    alpha="0.1" r="1" g="0.75" b="0" showDaughters="false" visible="true"/>
-
-    <vis name="SiTrackerBarrelModuleVis"  alpha="0.5" r="0" g="1" b="0.6" drawingStyle="wireframe" showDaughters="false" visible="true"/>
-    <vis name="SiTrackerBarrelLayerVis"   alpha="0.1" r="1" g="1" b="0.6" showDaughters="true" visible="true"/>
-    
-    <vis name="SiTrackerEndcapModuleVis" alpha="0.5" r="0.8" g="1.0" b="0.1" drawingStyle="wireframe" showDaughters="false" visible="true"/>        
-    
-    <vis name="SiTrackerForwardVis" alpha="1.0" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true"/>
-    
-    <vis name="EcalBarrelVis" alpha="1.0" r="0" g="0" b="0.3" showDaughters="true" visible="true"/>
-    <vis name="EcalBarrelStaveVis" alpha="1.0" r="1" g="0.9" b="0.5" showDaughters="false" visible="true"/>
-
-    <vis name="EcalEndcapVis"       alpha="1" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/>
-
-    <vis name="HcalBarrelVis"          alpha="0.1" r="1"    g="1"    b="0.1" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelStavesVis"    alpha="0.1" r="1"    g="0"    b="0.3" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelLayerVis"     alpha="0.5" r="1"    g="0"    b="0.5" showDaughters="true" visible="true"/>
-    <vis name="HcalBarrelSensorVis"    alpha="1"   r="1"    g="1"    b="0.7" showDaughters="true" visible="true"/>
-
-    <vis name="HcalEndcapVis"          alpha="0.1" r="1"    g="1"    b="0.1" showDaughters="false" visible="true"/>
-    <vis name="HcalEndcapLayerVis"     alpha="1"   r="1"    g="0"    b="0.5" showDaughters="false" visible="true"/>
-    
-    <vis name="SolenoidBarrelLayerVis" alpha="1" r="0"    g="0.3"  b="0.3" showDaughters="false" visible="true"/>
-    <vis name="SolenoidCoilEndsVis"    alpha="1" r="0"    g="0.9"  b="0.9" showDaughters="false" visible="true"/>
-    <vis name="AntiSolenoidVis"        alpha="1" r="0.3"  g="1"    b="1"   showDaughters="false" visible="true"/>
-
-    <vis name="MuonBarrelVis"          alpha="0.1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelStavesVis"    alpha="0.3" r="0"    g="0.7"  b="0.3" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelLayerVis"     alpha="0.5" r="0"    g="1"    b="0.3" showDaughters="true" visible="true"/>
-    <vis name="MuonBarrelSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-    <vis name="MuonBarrelAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-
-    <vis name="MuonEndcapVis"          alpha="0.1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-    <vis name="MuonEndcapLayerVis"     alpha="1" r="0"    g="1"    b="0.3"  showDaughters="true" visible="true"/>
-    <vis name="MuonEndcapSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-    <vis name="MuonEndcapAbsorberVis"  alpha="0.3" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-    
-    
-    <vis name="BeamPipeVis" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true"/>
-    <vis name="CableVis" showDaughters="false" visible="true"/>
-    
-    <vis name="SupportTubeVis" r="0.1" g="0.1" b="0.99" showDaughters="false" visible="true"/>
-    <vis name="TungstenShieldingVis" r="0.99" g="0.1" b="0.2" showDaughters="false" visible="true"/>
-    
-    <vis name="SupportVis" r="0.8" g="0.8" b="0" showDaughters="false" visible="true"/>
-    <vis name="LumiCalVis" showDaughters="false" visible="true"/>
-    <vis name="GreenVis" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
-    <vis name="RedVis" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
-    <vis name="BlueVis" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
-  </display>
-
-
-
-  <detectors>
-
-    <comment>Trackers</comment> 
-    <detector id="1" name="SiVertexBarrel" type="DD4hep_SiTrackerBarrel" readout="SiVertexBarrelHits" insideTrackingVolume="true">
-      <comment>Vertex Detector Barrel</comment>
-      <module name="VtxBarrelModuleInner" vis="SiVertexBarrelModuleVis">
-	<module_envelope width="10.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
-	<module_component width="7.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
-	  <position z="-0.12*mm"/>
-	</module_component>
-	<module_component width="9.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
-	  <position z="0.225*mm"/>
-	</module_component>
-      </module>
-      <module name="VtxBarrelModuleOuter" vis="SiVertexBarrelModuleVis">
-	<module_envelope width="14.0*mm" length="(VertexBarrel_zmax - 0.1*cm) * 2" thickness="0.6*mm"/>
-	<module_component width="11.6*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.0130*cm" material="Carbon" sensitive="false" vis="SiVertexPassiveVis">
-	  <position z="-0.12*mm"/>
-	</module_component>
-	<module_component width="13.8*mm" length="(VertexBarrel_zmax - 0.15*cm) * 2" thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis">
-	  <position z="0.210*mm"/>
-	</module_component>
-      </module>
-      <layer module="VtxBarrelModuleInner" id="1" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r1 - 0.2*cm" outer_r="VertexBarrel_r1 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r1" dr="-1.15*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="2" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r2 - 0.2*cm" outer_r="VertexBarrel_r2 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="18" phi0="0.2618*rad" rc="VertexBarrel_r2" dr="-1.13*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="3" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r3 - 0.2*cm" outer_r="VertexBarrel_r3 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="24" phi0="0.0*rad" rc="VertexBarrel_r3" dr="-0.89*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="4" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r4 - 0.2*cm" outer_r="VertexBarrel_r4 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="30" phi0="0.1309*rad" rc="VertexBarrel_r4" dr="0.81*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-      <layer module="VtxBarrelModuleOuter" id="5" vis="SiVertexBarrelLayerVis">
-	<barrel_envelope inner_r="VertexBarrel_r5 - 0.2*cm" outer_r="VertexBarrel_r5 + 0.2*cm" z_length="VertexBarrel_zmax * 2"/>
-	<rphi_layout phi_tilt="0.0*rad" nphi="36" phi0="0.0*rad" rc="VertexBarrel_r5" dr="0.77*mm"/>
-	<z_layout dr="0.0*mm" z0="0.0*mm" nz="1"/>
-      </layer>
-    </detector>
-
-    <comment>Vertex Detector Endcaps</comment>
-    <detector id="2" name="SiVertexEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiVertexEndcapHits" reflect="true">    
-      <module name="SiVertexEndcapModule1">
-	<trd x1="VertexEndcap_rmin1 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin1) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule2">
-	<trd x1="VertexEndcap_rmin2 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin2) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule3">
-	<trd x1="VertexEndcap_rmin3 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin3) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon" vis="SiVertexPassiveVis" />
-      </module>
-      <module name="SiVertexEndcapModule4">
-	<trd x1="VertexEndcap_rmin4 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin4) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true"  vis="SiVertexSensitiveVis"/>
-	<module_component thickness="0.013*cm"   material="Carbon"  vis="SiVertexPassiveVis"/>
-      </module>
-      <layer id="1"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin1) / 2" zstart="VertexEndcap_z1" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule1"/>
-      </layer>
-      <layer id="2"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin2) / 2" zstart="VertexEndcap_z2" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule2"/>
-      </layer>
-      <layer id="3"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin3) / 2" zstart="VertexEndcap_z3" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule3"/>
-      </layer>
-      <layer id="4"  vis="SiVertexEndcapLayerVis">
-	<ring r="(VertexEndcap_rmax + VertexEndcap_rmin4) / 2" zstart="VertexEndcap_z4" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule4"/>
-      </layer>
-    </detector> 
-
-    <detector id="3" name="SiTrackerBarrel" type="DD4hep_SiTrackerBarrel" readout="SiTrackerBarrelHits">
-      <comment>Outer Tracker Barrel</comment>
-      <module name="SiTrackerModule_Layer1" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0038*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00038*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer2" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0051*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00052*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer3" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0064*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00065*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer4" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>               
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0078*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00079*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <module name="SiTrackerModule_Layer5" vis="SiTrackerBarrelModuleVis">                
-	<module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false">
-	  <position z="-0.14*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="-0.122*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false">
-	  <position z="-0.024*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false">
-	  <position z="0.07475*cm" />
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false">
-	  <position z="0.0915*cm" />
-	</module_component>                
-	<module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true">
-	  <position z="0.1145*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false">
-	  <position z="0.12974*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.0091*cm" material="Kapton" sensitive="false">
-	  <position z="0.1375*cm"/>
-	</module_component>                
-	<module_component width="97.79*mm" length="97.79*mm" thickness="0.00093*cm" material="Copper" sensitive="false">
-	  <position z="0.146*cm"/>
-	</module_component>                
-      </module>
-      <layer module="SiTrackerModule_Layer1" id="1" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="215.075*mm" outer_r="245.0*mm" z_length="578 * 2*mm"/>
-	<rphi_layout phi_tilt="0.17506*rad" nphi="20" phi0="0." rc="(216.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="512.128*mm" nz="13"/>
-      </layer>                
-      <layer module="SiTrackerModule_Layer2" id="2" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="465.075*mm" outer_r="501.0*mm" z_length="749.8 * 2*mm"/>
-	<rphi_layout phi_tilt="0.12217*rad" nphi="38" phi0="0.087*rad" rc="(466.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="690.605*mm" nz="17"/>
-      </layer>
-      <layer module="SiTrackerModule_Layer3" id="3" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="715.075*mm" outer_r="756.0*mm" z_length="1013.9 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11493*rad" nphi="58" phi0="0.058*rad" rc="(716.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="954.625*mm" nz="23"/>
-      </layer>            
-      <layer module="SiTrackerModule_Layer4" id="4" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="965.075*mm" outer_r="1012.0*mm" z_length="1272.3 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11502*rad" nphi="80" phi0="0.0436*rad" rc="(966.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="1213.073*mm" nz="29"/>
-      </layer>                        
-      <layer module="SiTrackerModule_Layer5" id="5" vis="SiTrackerBarrelLayerVis">
-	<barrel_envelope inner_r="1215.075*mm" outer_r="1263.0*mm" z_length="1535.7 * 2*mm"/>
-	<rphi_layout phi_tilt="0.11467*rad" nphi="102" phi0="0.01745*rad" rc="(1216.355 + 5.0)*mm" dr="0.0"/>
-	<z_layout dr="4.0*mm" z0="1476.497*mm" nz="35"/>
-      </layer>
-    </detector>
-
-    <detector id="4" name="SiTrackerEndcap" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerEndcapHits" reflect="true">
-      <comment>Outer Tracker Endcaps</comment>
-      <module name="Module1" vis="SiTrackerEndcapModuleVis">
-	<trd x1="36.112*mm" x2="46.635*mm" z="100.114/2*mm" />
-	<module_component thickness="0.00052*cm"   material="Copper" />
-	<module_component thickness="0.0051*cm"   material="Kapton" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.18*cm" material="Rohacell31_50D" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.0175*cm" material="Epoxy" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.0051*cm"   material="Kapton" />
-	<module_component thickness="0.00052*cm"   material="Copper" />
-      </module> 
-      <module name="Module2" vis="SiTrackerEndcapModuleVis">
-	<trd x1="45.245*mm" x2="54.680*mm" z="89.773/2*mm" />
-	<module_component thickness="0.00079*cm"   material="Copper" />
-	<module_component thickness="0.0078*cm"   material="Kapton" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.18*cm" material="Rohacell31_50D" />
-	<module_component thickness="0.016*cm" material="CarbonFiber_50D" />
-	<module_component thickness="0.0175*cm" material="Epoxy" />
-	<module_component thickness="0.03*cm"   material="Silicon" sensitive="true" />
-	<module_component thickness="0.00048*cm" material="Silicon" />
-	<module_component thickness="0.0078*cm"   material="Kapton" />
-	<module_component thickness="0.00079*cm"   material="Copper" />
-      </module>
-      <layer id="1">
-	<ring r="256.716*mm" zstart="(787.105+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(778.776+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(770.544+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-      </layer>
-      <layer id="2">
-	<ring r="256.716*mm" zstart="(1073.293+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1064.966+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1056.734+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1048.466+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1041.067+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1033.725+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-      </layer>
-      <layer id="3">
-	<ring r="256.716*mm" zstart="(1353.786+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1345.457+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1337.225+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1328.957+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1321.558+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1314.217+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-	<ring r="793.448*mm" zstart="(1306.828+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
-	<ring r="874.239*mm" zstart="(1299.486+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
-	<ring r="958.364*mm" zstart="(1292.189+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
-      </layer>
-      <layer id="4">
-	<ring r="256.716*mm" zstart="(1639.164+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/>
-	<ring r="353.991*mm" zstart="(1630.835+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/>
-	<ring r="449.180*mm" zstart="(1622.603+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/>
-	<ring r="538.520*mm" zstart="(1614.335+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/>
-	<ring r="625.654*mm" zstart="(1606.936+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/>
-	<ring r="703.666*mm" zstart="(1599.595+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/>
-	<ring r="793.448*mm" zstart="(1592.206+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/>
-	<ring r="874.239*mm" zstart="(1584.864+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/>
-	<ring r="958.364*mm" zstart="(1577.567+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/>
-	<ring r="1040.970*mm" zstart="(1570.222+1.75)*mm" nmodules="72" dz="1.75*mm" module="Module2"/>
-	<ring r="1124.167*mm" zstart="(1562.916+1.75)*mm" nmodules="78" dz="1.75*mm" module="Module2" phi0="pi/78"/>
-	<ring r="1206.937*mm" zstart="(1555.647+1.75)*mm" nmodules="84" dz="1.75*mm" module="Module2"/>
-      </layer>
-    </detector>
-    
-    <detector id="5" name="SiTrackerForward" type="DD4hep_SiTrackerEndcap2" readout="SiTrackerForwardHits">    
-      <comment>Forward Tracker inside Vertex Support Barrel</comment>
-      <module name="SiTrackerForwardModule1">
-	<trd x1="ForwardTracker_rmin1 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin1) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <module name="SiTrackerForwardModule2">
-	<trd x1="ForwardTracker_rmin2 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin2) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <module name="SiTrackerForwardModule3">
-	<trd x1="ForwardTracker_rmin3 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin3) / 2" />
-	<module_component thickness="0.005*cm" material="Silicon" sensitive="true" />
-	<module_component thickness="0.013*cm"   material="Carbon" />
-      </module>
-      <layer id="1">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin1) / 2" zstart="ForwardTracker_z1" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule1"/>
-      </layer>
-      <layer id="2">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin2) / 2" zstart="ForwardTracker_z2" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule2"/>
-      </layer>
-      <layer id="3">
-	<ring r="(ForwardTracker_rmax + ForwardTracker_rmin3) / 2" zstart="ForwardTracker_z3" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule3"/>
-      </layer>
-    </detector>
-
-    <comment>Calorimeters</comment>
-
-    <comment>Dead material and supports</comment>
-    <comment>Beampipe</comment> 
-    <detector name="Beampipe" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <comment>Central Be Beampipe</comment>
-      <material name="Beryllium"/>
-      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="-CentralBeamPipe_zmax"/>
-      <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="CentralBeamPipe_zmax" />
-    </detector>
-    <detector name="SteelConeZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="-tracking_region_zmax" /> 
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      z="-BeamPipe_zmin" />
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="CentralBeamPipe_rmax"
-	      z="-CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="SteelConeZbackward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="-(tracking_region_zmax + 0.01*cm)" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="- BeamPipe_zmax" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="BeamPipe_rmax"
-	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-    </detector>
-    <detector name="SteelConeZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      <material name="Iron"/>
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="CentralBeamPipe_rmax"
-	      z="CentralBeamPipe_zmax"/>            
-      <zplane rmin="CentralBeamPipe_rmin"
-	      rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      z="BeamPipe_zmin" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="tracking_region_zmax" />
-    </detector>
-    <detector name="SteelConeZforward2" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      <material name="Iron"/>            
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="tracking_region_zmax + 0.01*cm" /> 
-      <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-	      rmax="BeamPipe_rmax"
-	      z="BeamPipe_zmax" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="BeamPipe_rmax"
-	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="LumiCal_zmin - BeamPipe_endThickness" />
-      <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      rmax="LumiCal_rmin - BeamPipe_endThickness"
-	      z="ForwardMask_zmin - BeamPipe_endThickness" />
-    </detector>
-
-    <detector name="NorthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-
-    <detector name="SouthIncomingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <detector name="NorthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <detector name="SouthOutgoingBeampipe" type="DD4hep_TubeSegment" vis="BeamPipeVis">
-      <material name="Iron" />
-      <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-      <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-      <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" />
-    </detector>
-
-    <!-- Beam pipe liner is not needed, use thicker conical steel pipe instead
-	 <detector name="BeamPipeLiner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-	 <comment>BeamPipe Liner to shield bremsstrahlung photons</comment>
-	 <material name="Titanium"/>
-	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="-tracking_region_zmax" />
-	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness"  z="-(CentralBeamPipe_zmax + 0.01*cm)"/>
-	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="-CentralBeamPipe_zmax"  />
-	 <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="CentralBeamPipe_zmax" />
-	 <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="CentralBeamPipe_zmax + 0.01*cm" />
-	 <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="tracking_region_zmax" />
-	 </detector>
-    -->
-
-    <detector name="BeamPipeVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-      <comment>Vacuum inside beampipe</comment>
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-	      z="-tracking_region_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-	      z="-BeamPipe_zmin"  />
-      <zplane rmin="0.*cm"
-	      rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-	      z="BeamPipe_zmin" />
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-	      z="tracking_region_zmax" />
-    </detector>
-    <detector name="ForwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="tracking_region_zmax + 0.01*cm" /> 
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="BeamPipe_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="LumiCal_zmin - BeamPipe_endThickness" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="ForwardMask_zmin - BeamPipe_endThickness" />
-    </detector> 
-    <detector name="BackwardVacuum" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-      <material name="Vacuum"/>
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="- (tracking_region_zmax + 0.01*cm)" /> 
-      <zplane rmin="0.*cm"
-	      rmax="BeamPipe_rmax - BeamPipe_thickness"
-	      z="- BeamPipe_zmax" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-      <zplane rmin="0.*cm"
-	      rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-	      z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-    </detector>
-    <comment>Vertex Detector Supports and Readout</comment>
-    <detector name="VertexBarrelSupports" type="DD4hep_MultiLayerTracker" vis="SupportVis" reflect="true">
-      <comment>Double-walled Carbon Fiber support tube</comment>
-      <layer id="6" inner_r = "16.87*cm" outer_z = "89.48*cm">
-	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
-      </layer>
-      <layer id="7" inner_r = "18.42*cm" outer_z = "89.48*cm">
-	<slice material = "CarbonFiber" thickness ="VXD_CF_support"/>
-      </layer>
-    </detector>
-    <detector name="VertexEndSupports" type="DD4hep_DiskTracker" reflect="true" vis="SupportVis">    
-      <layer id="7" inner_r = "(86.88*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "86.88*cm" outer_r = "16.87*cm">
-	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
-      </layer>
-      <layer id="8" inner_r = "(89.43*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "89.43*cm" outer_r = "16.87*cm">
-	<slice material = "CarbonFiber" thickness = "VXD_CF_support" />
-      </layer>
-    </detector>
-    <detector name="VertexReadout" type="DD4hep_DiskTracker" reflect="true" vis="CableVis">
-      <comment>Readout and Cabling</comment>
-      <layer id="1" inner_r = "VertexBarrel_r1" outer_r="VertexBarrel_r1 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm" vis="GreenVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="2" inner_r = "VertexBarrel_r2" outer_r="VertexBarrel_r2 + 0.02*cm" inner_z="VertexBarrel_zmax + 0.1*cm" vis = "BlueVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="3" inner_r = "VertexBarrel_r3" outer_r="VertexBarrel_r3 + 0.02*cm"  inner_z="VertexBarrel_zmax + 0.1*cm" vis="RedVis">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="4" inner_r = "VertexBarrel_r4" outer_r = "VertexBarrel_r4 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="5" inner_r = "VertexBarrel_r5" outer_r = "VertexBarrel_r5 + 0.02*cm"  inner_z= "VertexBarrel_zmax + 0.1*cm">
-	<slice material = "G10" thickness ="0.5*cm"/>
-      </layer>
-      <layer id="6" inner_r = "VertexBarrel_r1 - 0.1*cm" outer_r = "VertexBarrel_r2"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0057*cm"/>
-      </layer>
-      <layer id="7" inner_r = "VertexBarrel_r2 - 0.01*cm" outer_r = "VertexBarrel_r3"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0031*cm"/>
-      </layer>
-      <layer id="8" inner_r = "VertexBarrel_r3 - 0.01*cm" outer_r = "VertexBarrel_r4"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0016*cm"/>
-      </layer>
-      <layer id="9" inner_r = "VertexBarrel_r4 - 0.01*cm" outer_r = "VertexBarrel_r5"  inner_z= "VertexBarrel_zmax + 0.6*cm">
-	<slice material = "Copper" thickness ="0.0007*cm"/>
-      </layer>
-      <layer id="10" inner_r = "VertexEndcap_rmin1 - 0.1*cm"  outer_r = "VertexEndcap_rmin1 - 0.01*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="11" inner_r = "VertexEndcap_rmin2 - 0.1*cm"  outer_r = "VertexEndcap_rmin2 - 0.01*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="12" inner_r = "VertexEndcap_rmin3 - 0.1*cm"  outer_r = "VertexEndcap_rmin3 - 0.01*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="13" inner_r = "VertexEndcap_rmin4 - 0.1*cm"  outer_r = "VertexEndcap_rmin4 - 0.01*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="14" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z1 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="15" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z2 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="16" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z3 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-      <layer id="17" inner_r = "VertexEndcap_rmax + 0.01*cm"  outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z4 - 0.1*cm">
-	<slice material = "G10" thickness = "0.02*cm" />
-      </layer>
-    </detector>
-    <detector name="VXDcableZforwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="VertexBarrel_zmax + 0.61*cm"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="VXDcableZbackwardBarrel" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="-(VertexBarrel_zmax + 0.61*cm)"/>
-      <zplane rmin = "(CentralBeamPipe_rmax)"
-	      rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-	      z="-CentralBeamPipe_zmax"/>
-    </detector> 
-    <detector name="VXDcableZbackwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-	      z="-tracking_region_zmax" />
-      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-	      z="-(VertexService_zmax + 0.01*cm)"/>
-    </detector>
-    <detector name="VXDcableZbackwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin="CentralBeamPipe_rmax"
-	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
-	      z="-(CentralBeamPipe_zmax)"/>
-      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-	      z="-(VertexService_zmin - 0.01*cm)"/>
-    </detector>
-    <detector name="VXDcableZforwardOuter" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-	      rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-	      z="tracking_region_zmax" />
-      <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-	      z="VertexService_zmax + 0.01*cm"/>
-    </detector>
-    <detector name="VXDcableZforwardInner" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="Copper"/>
-      <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-	      z="VertexService_zmin - 0.01*cm"/>
-      <zplane rmin="CentralBeamPipe_rmax"
-	      rmax="CentralBeamPipe_rmax + VertexCableThickness"
-	      z="CentralBeamPipe_zmax"/>
-    </detector>
-    <detector name="VXDserviceZbackward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="G10"/>
-      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="-VertexService_zmax"/>
-      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="-VertexService_zmin"/>
-    </detector>
-    <detector name="VXDserviceZforward" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-      <material name="G10"/>
-      <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="VertexService_zmin"/>
-      <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-	      rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-	      z="VertexService_zmax"/>
-    </detector>
-
-    <comment>Outer Tracker Supports and Readout</comment>
-    <detector name="TrackerBarrelSupports" type="DD4hep_MultiLayerTracker" reflect="true">
-      <comment>Barrels</comment>
-      <layer id="1" inner_r="206.0*mm" outer_z="577.328*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="2" inner_r="456.0*mm" outer_z="749.781*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="3" inner_r="706.0*mm" outer_z="1013.802*mm">
-	<slice material= "CarbonFiber" thickness = "0.05*cm" />
-	<slice material= "Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material= "CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="4" inner_r="956.0*mm" outer_z="1272.251*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-      <layer id="5" inner_r="1206.0*mm" outer_z="1535.676*mm">
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-	<slice material="Rohacell31_15percent" thickness="0.8075*cm" />
-	<slice material="CarbonFiber" thickness="0.05*cm" />
-      </layer>
-    </detector>
-
-    <comment>Dished endcap disks</comment>
-    <detector name="SiTrackerEndcapSupport1" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(750.417-0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(750.919-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(777.034-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(777.535-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport2" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="750.919*mm" />
-      <zplane rmin="438.449*mm" rmax="510.448*mm" z="757.218*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="777.535*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="783.834*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport3" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(757.218+0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(757.720+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(783.834+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(784.336+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport4" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1014.437-0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1014.939-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1063.219-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1063.721-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport5" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="1014.939*mm" />
-      <zplane rmin="691.797*mm" rmax="763.796*mm" z="1021.238*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1063.721*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1070.020*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport6" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1021.238+0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1021.740+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1070.020+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1070.522+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport7" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1272.885-0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1273.387-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1343.711-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1344.213-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport8" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="1273.387*mm" />
-      <zplane rmin="943.753*mm" rmax="1015.748*mm" z="1279.686*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1344.213*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1350.512*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport9" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1279.686+0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1280.188+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1350.512+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1351.014+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport10" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1536.560-0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1537.062-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1629.089-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1629.591-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport11" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="1537.062*mm" />
-      <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="1543.361*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="1629.591*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="1635.890*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport12" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1543.361+0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1543.863+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1635.890+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1636.392+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport1Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-750.417+0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-750.919+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-777.034+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-777.535+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport2Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="-750.919*mm" />
-      <zplane rmin="438.449*mm" rmax="510.448*mm" z="-757.218*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-777.535*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-783.834*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport3Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-757.218-0.001)*mm" />
-      <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-757.720-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-783.834-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-784.336-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport4Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1014.437+0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1014.939+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1063.219+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1063.721+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport5Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="-1014.939*mm" />
-      <zplane rmin="691.797*mm" rmax="763.796*mm" z="-1021.238*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1063.721*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1070.020*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport6Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1021.238-0.001)*mm" />
-      <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1021.740-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1070.020-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1070.522-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport7Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1272.885+0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1273.387+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1343.711+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1344.213+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport8Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="-1273.387*mm" />
-      <zplane rmin="943.753*mm" rmax="1015.748*mm" z="-1279.686*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1344.213*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1350.512*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport9Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1279.686-0.001)*mm" />
-      <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1280.188-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1350.512-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1351.014-0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport10Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1536.560+0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1537.062+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1629.089+0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1629.591+0.001)*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport11Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="Rohacell31"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="-1537.062*mm" />
-      <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="-1543.361*mm" />
-      <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1629.591*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1635.890*mm" />
-    </detector>
-    <detector name="SiTrackerEndcapSupport12Reflect" type="DD4hep_PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-      <material name="CarbonFiber"/>
-      <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1543.361-0.001)*mm" />
-      <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1543.863-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1635.890-0.001)*mm" />
-      <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1636.392-0.001)*mm" />
-    </detector>        
-    <detector name="TrackerReadout" type="DD4hep_DiskTracker" reflect="true" vis="GreenVis">
-      <comment>Readouts</comment>
-      <layer id="1" inner_r="25.7*cm" inner_z="590.402*mm" outer_r="45.6*cm">
-	<slice material="G10" thickness="0.057*cm" />
-	<slice material="Copper" thickness="0.0038*cm" />
-      </layer>
-      <layer id="2" inner_r="51.0*cm" inner_z="762.854*mm" outer_r="70.6*cm">
-	<slice material = "G10" thickness="0.102*cm" />
-	<slice material = "Copper" thickness="0.0068*cm" />
-      </layer>
-      <layer id="3" inner_r="76.3*cm" inner_z="1026.874*mm" outer_r="95.6*cm">
-	<slice material="G10" thickness="0.108*cm" />
-	<slice material="Copper" thickness="0.0072*cm" />
-      </layer>
-      <layer id="4" inner_r="101.3*cm" inner_z="1285.322*mm" outer_r="120.6*cm">
-	<slice material="G10" thickness="0.186*cm" />
-	<slice material="Copper" thickness="0.0124*cm" />
-      </layer>
-      <layer id="5" inner_r= "101.3*cm" inner_z="1610.0*mm" outer_r="120.6*cm">
-	<slice material="G10" thickness="0.246*cm" />
-	<slice material="Copper" thickness="0.0164*cm" />
-      </layer>
-    </detector>
-    <comment>Masks and Shielding</comment>
-    <detector name="LumiShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax"/>
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax+ForwardShielding_thickness"/>
-    </detector>
-    <detector name="LumiShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmax"/>
-      <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmax+ForwardShielding_thickness)"/>
-    </detector>
-    <detector name="ECalShielding_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin"/>
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin+ForwardShielding_thickness"/>
-    </detector>
-    <detector name="ECalShielding_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-HcalEndcap_zmin"/>
-      <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-(HcalEndcap_zmin+ForwardShielding_thickness)"/>
-    </detector>
-    <detector name="ShieldingTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="HcalEndcap_zmin + ForwardShielding_thickness"/>
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="HcalEndcap_zmax"/>
-    </detector>
-    <detector name="ShieldingTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-      <material name="TungstenDens24" />
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="-(HcalEndcap_zmin + ForwardShielding_thickness)"/>
-      <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-	      z="-HcalEndcap_zmax"/>
-    </detector>
-    <detector name="SupportTube_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="HcalEndcap_zmin"/>
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="MuonEndcap_zmax"/>
-    </detector>
-    <detector name="SupportTube_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="-HcalEndcap_zmin"/>
-      <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-	      rmax="HcalEndcap_rmin - SupportTube_thickness"
-	      z="-MuonEndcap_zmax"/>
-    </detector>
-    <detector name="AntiSolenoid_Forward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="HcalEndcap_zmax + 1.0*cm"/>
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="MuonEndcap_zmax"/>
-    </detector>
-    <detector name="AntiSolenoid_Backward" type="DD4hep_PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-      <material name="Steel235" />
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="-(HcalEndcap_zmax + 1.0*cm)"/>
-      <zplane rmin="HcalEndcap_rmin + 1.0*cm"
-	      rmax="MuonEndcap_rmin - 1.0*cm"
-	      z="-MuonEndcap_zmax"/>
-    </detector>
-
-    <detector name="ForwardLowZ" type="DD4hep_ForwardDetector" vis="TungstenShieldingVis" reflect="true">
-      <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="ForwardMask_zmin" />
-      <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" />
-      <layer repeat="1">
-	<slice material = "Graphite" thickness = "ForwardMask_thickness" sensitive = "no" />
-      </layer>
-    </detector>
-    
-    <comment>Solenoid</comment>
-    <detector name="SolenoidCoilBarrel" type="DD4hep_MultiLayerTracker" insideTrackingVolume="false" reflect="true">
-      <layer id="1" inner_r="SolenoidBarrelInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Steel235" thickness="SolenoidBarrelInnerCryostatThickness" />
-	<slice material="Vacuum"   thickness="SolenoidBarrelInnerAirgapThickness" />
-      </layer>
-      <layer id="2" inner_r="SolenoidBarrelConductorInnerRadius" outer_z="SolenoidCoilOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Aluminum" thickness="SolenoidBarrelAlConductorThickness" />
-	<slice material="Aluminum" thickness="SolenoidBarrelQuenchbackThickness" />
-      </layer>
-      <layer id="3" inner_r="SolenoidBarrelOuterCryostatInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
-	<slice material="Vacuum"   thickness="SolenoidBarrelOuterAirgapThickness" />
-	<slice material="Steel235" thickness="SolenoidBarrelOuterCryostatThickness" />
-      </layer>
-    </detector>
-
-    <detector name="SolenoidCoilEnds" type="DD4hep_DiskTracker" reflect="true" insideTrackingVolume="false">
-      <layer id="1" inner_r="SolenoidBarrelInnerRadius" inner_z="SolenoidBarrelOuterZ" outer_r="SolenoidBarrelOuterRadius" vis="SolenoidCoilEndsVis">
-	<slice material="Steel235" thickness="SolenoidEndcapCryostatThickness" />
-      </layer>
-    </detector>
-
-  </detectors>
-
-  <readouts>
-    <readout name="SiTrackerEndcapHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
-    </readout>        
-    <readout name="SiTrackerBarrelHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id>
-    </readout>
-    <readout name="SiVertexBarrelHits">
-      <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
-    </readout>
-    <readout name="SiVertexEndcapHits">
-      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id>
-    </readout>
-    <readout name="EcalBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
-      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-    </readout>        
-    <readout name="EcalEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
-      <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:6,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="HcalPlugHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="MuonBarrelHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="MuonEndcapHits">
-      <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" />
-      <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="SiTrackerForwardHits">
-      <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:28</id>
-    </readout>
-    <readout name="LumiCalHits">
-      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
-      <id>system:8,barrel:3,layer:8,slice:8,x:32:-16,y:-16</id>
-    </readout>
-    <readout name="BeamCalHits">
-      <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" />
-      <id>system:8,layer:8,barrel:3,layer:8,slice:5,x:32:-16,y:-16</id>
-    </readout>
-  </readouts>
-  <fields>
-    <field name="GlobalSolenoid" type="solenoid" 
-	   inner_field="5.0*tesla"
-	   outer_field="-1.5*tesla" 
-	   zmax="SolenoidCoilOuterZ"
-	   outer_radius="SolenoidalFieldRadius">
-    </field>
-  </fields>
-</lccdd>
diff --git a/examples/CLICSiD/compact/compact_polycones.xml b/examples/CLICSiD/compact/compact_polycones.xml
deleted file mode 100644
index b2ad34bf7a52635c51a990faa422d25a101fddea..0000000000000000000000000000000000000000
--- a/examples/CLICSiD/compact/compact_polycones.xml
+++ /dev/null
@@ -1,844 +0,0 @@
-<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" 
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
-    xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
-
-    <info name="clic_sid_cdr"
-        title="CLIC Silicon Detector CDR"
-        author="Christian Grefe"
-        url="https://twiki.cern.ch/twiki/bin/view/CLIC/ClicSidCdr"
-        status="development"
-        version="$Id$">
-        <comment>The compact format for the CLIC Silicon Detector used for the conceptual design report</comment>        
-    </info>
-
-    <includes>
-        <gdmlFile  ref="../../../DDDetectors/compact/elements.xml"/>
-        <gdmlFile  ref="../../../DDDetectors/compact/materials.xml"/>
-    </includes>
-    
-    <define>
-        <constant name="world_side" value="30000"/>
-        <constant name="world_x" value="world_side"/>
-        <constant name="world_y" value="world_side"/>
-        <constant name="world_z" value="world_side"/>
-        
-        <constant name="CrossingAngle" value="0.020"/>
-        
-        <constant name="CaloSides" value="12"/>
-        <constant name="MuonSides" value="8"/>
-        
-        <constant name="EcalBarrel_rmin" value="126.50*cm"/>
-        <constant name="EcalBarrel_zmax" value="176.50*cm"/>
-        <constant name="EcalEndcap_rmin" value="21.0*cm"/>
-        <constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-        <constant name="EcalEndcap_zmin" value="165.70*cm"/>
-        
-        <constant name="HcalBarrel_rmin" value="141.90*cm"/>
-        <constant name="HcalBarrel_layers" value="(int) 75"/>
-        <constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/>
-        <constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables -->
-        <constant name="HcalEndcap_rmin" value="50.0*cm"/>
-        <constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/> <!-- Correction from going from inner circle to outer circle -->
-        <constant name="HcalEndcap_layers" value="60"/>
-        <constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/>
-        <constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/>
-        
-        <constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0"/>
-        <constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0"/>
-        <constant name="VXD_CF_sensor" value="0.026*cm"/>
-        <constant name="VXD_CF_support" value="0.05*cm"/>
-        
-        <constant name="SolenoidBarrelInnerRadius" value="HcalEndcap_rmax + 2.0*cm"/>
-        <constant name="SolenoidCoilOuterZ" value="HcalEndcap_zmax"/> <!-- Aligned with HCAL endcap -->
-        <constant name="SolenoidBarrelInnerCryostatThickness" value="3.0*cm"/>
-        <constant name="SolenoidBarrelInnerAirgapThickness" value="11.0*cm"/>
-        <constant name="SolenoidBarrelAlConductorThickness" value="38.4*cm"/>
-        <constant name="SolenoidBarrelQuenchbackThickness" value="5.0*cm"/>
-        <constant name="SolenoidBarrelOuterAirgapThickness" value="18.7*cm"/>
-        <constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/>
-        <constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/>
-        <constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/>
-        <constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/>
-        <constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/>
-        <constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
-        <constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/>
-        <constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/>
-        
-        <constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/>
-        <constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/>
-        <constant name="MuonBarrel_layers" value="15"/>
-        <constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/>
-        <constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. -->
-        <constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid-->
-        <constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers * MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/> <!-- Correction from going from inner circle to outer circle -->
-        <constant name="MuonEndcap_layers" value="18"/>
-        <constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/>
-        <constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/>
-        
-        <constant name="LumiCal_rmin" value="6.4*cm"/>
-        <constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/>
-        <constant name="LumiCal_zmin" value="HcalEndcap_zmin"/>
-        <constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/>
-        <constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/>
-        <constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/>
-        
-        <constant name="SupportTube_thickness" value="1.0*cm"/>
-        <constant name="ForwardVacuumValve_thickness" value="36.0*cm"/>
-        <constant name="ForwardShielding_thickness" value="5.0*cm"/>
-        <constant name="ForwardMask_thickness" value="10.0*cm"/>
-        <constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/>
-        <constant name="BeamCal_rmax" value="13.0*cm"/>
-        <constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/>
-        
-        <constant name="VertexSupport_r1" value="16.87*cm"/>
-        <constant name="VertexSupport_r2" value="18.42*cm"/>
-        <constant name="VertexSupport_zmax" value="89.48*cm"/>
-        
-        <constant name="VertexBarrel_zmax" value="10.0*cm"/>
-        <constant name="VertexBarrel_r1" value="2.7*cm"/>
-        <constant name="VertexBarrel_r2" value="3.8*cm"/>
-        <constant name="VertexBarrel_r3" value="5.1*cm"/>
-        <constant name="VertexBarrel_r4" value="6.4*cm"/>
-        <constant name="VertexBarrel_r5" value="7.7*cm"/>
-        
-        <constant name="CentralBeamPipe_zmax" value="23.0*cm"/>
-        <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
-        <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter -->
-        <constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/>
-        <constant name="BeamPipe_thickness" value="0.4*cm"/>
-        <constant name="BeamPipe_endThickness" value="0.1*cm"/>
-        <constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/>
-        <constant name="BeamPipe_rmax" value="19.0*cm"/>
-        <constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/>
-        <constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/>
-        <constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/>
-        <constant name="BeamPipeLiner_thickness" value="0.0*cm"/>
-        
-        <constant name="VertexEndcap_rmax" value="11.5*cm"/>
-        <constant name="VertexEndcap_z1" value="12.0*cm"/>
-        <constant name="VertexEndcap_z2" value="16.0*cm"/>
-        <constant name="VertexEndcap_z3" value="20.0*cm"/>
-        <constant name="VertexEndcap_z4" value="24.0*cm"/>
-        <constant name="VertexEndcap_offset" value="0.2*cm"/>
-        <constant name="VertexEndcapModules" value="16"/>
-        <constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-        <constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-        <constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
-        <constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/>
-        
-        <constant name="ForwardTracker_rmax" value="16.87*cm"/>
-        <constant name="ForwardTracker_z1" value="28.0*cm"/>
-        <constant name="ForwardTracker_z2" value="50.0*cm"/>
-        <constant name="ForwardTracker_z3" value="83.0*cm"/>
-        <constant name="ForwardTracker_offset" value="0.2*cm"/>
-        <constant name="ForwardTrackerModules" value="16"/>
-        <constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-        <constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-        <constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
-        
-        <constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/>
-        <constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/>
-        <constant name="VertexServiceThickness" value="0.3*cm"/>
-        <constant name="VertexCableThickness" value="0.005*cm"/>
-        
-        <constant name="IncomingBP_radius" value="0.25*cm"/>
-        <constant name="IncomingBP_thickness" value="0.05*cm"/>
-        <constant name="OutgoingBP_radius" value="tan(CrossingAngle/2)*BeamCal_zmin"/>
-        <constant name="OutgoingBP_thickness" value="0.1*cm"/>
-        
-    </define>
-    <materials>
-        <material name="TungstenDens23">
-            <D value="17.7" unit="g/cm3"/>
-            <fraction n="0.925" ref="W"/>
-            <fraction n="0.066" ref="Ni"/>
-            <fraction n="0.009" ref="Fe"/>
-        </material>
-        <material name="TungstenDens24">
-            <D value="17.8" unit="g/cm3"/>
-            <fraction n="0.93" ref="W"/>
-            <fraction n="0.061" ref="Ni"/>
-            <fraction n="0.009" ref="Fe"/>
-        </material>
-        <material name="TungstenDens25">
-            <D value="18.2" unit="g/cm3"/>
-            <fraction n="0.950" ref="W"/>
-            <fraction n="0.044" ref="Ni"/>
-            <fraction n="0.006" ref="Fe"/>
-        </material>
-        <material name="CarbonFiber_25percent">
-            <D type="density" value="0.375" unit="g/cm3"/>
-            <fraction n="1.0" ref="CarbonFiber"/>
-        </material>
-        <material name="CarbonFiber_15percent">
-            <D type="density" value="0.225" unit="g/cm3"/>
-            <fraction n="1.0" ref="CarbonFiber"/>
-        </material>
-        <material name="Rohacell31_50percent">
-            <D type="density" value="0.016" unit="g/cm3"/>
-            <fraction n="1.0" ref="Rohacell31"/>
-        </material>
-        <material name="Rohacell31_15percent">
-            <D type="density" value="0.0048" unit="g/cm3"/>
-            <fraction n="1.0" ref="Rohacell31"/>
-        </material>
-        <material name="BoratedPolyethylene5">
-            <D value="0.93" unit="g/cm3"/>
-            <fraction n="0.612" ref="C"/>
-            <fraction n="0.222" ref="O"/>
-            <fraction n="0.116" ref="H"/>
-            <fraction n="0.050" ref="B"/>
-        </material>
-        <material name="SiliconCarbide">
-            <D value="3.1" unit="g/cm3"/>
-            <composite n="1" ref="Si"/>
-            <composite n="1" ref="C"/>
-        </material> 
-        <material name="SiliconCarbide_6percent">
-            <D value="0.186" unit="g/cm3"/>
-            <fraction n="1.0" ref="SiliconCarbide"/>
-        </material>
-        <material name="Graphite">
-        	<D value="1.7" unit="g/cm3"/>
-        	<composite n="1" ref="C"/>
-        </material>      
-    </materials>
-    <limits>
-        <limitset name="cal_limits">
-            <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
-        </limitset>
-    </limits>
-
-    <display>
-        <vis name="InvisibleNoDaughters"      showDaughters="false" visible="false"/>
-        <vis name="InvisibleWithDaughters"    showDaughters="true" visible="false"/>
-        <vis name="SiVertexBarrelModuleVis" alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="false" visible="true"/>
-        <vis name="SiVertexBarrelLayerVis" alpha="1.0" r="1" g="1" b="0.6" showDaughters="true" visible="true"/>
-        
-        <vis name="SiVertexEndcapLayerVis" alpha="1.0" r="1" g="0.75" b="0" showDaughters="false" visible="true"/>
-
-        <vis name="SiTrackerBarrelModuleVis" alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="false" visible="true"/>
-        <vis name="SiTrackerBarrelLayerVis" alpha="1.0" r="1" g="1" b="0.6" showDaughters="true" visible="true"/>
-        
-        <vis name="SiTrackerEndcapModuleVis" alpha="0.1" r="0.8" g="1.0" b="0.1" drawingStyle="wireframe" showDaughters="false" visible="true"/>        
-            
-        <vis name="SiTrackerForwardVis" alpha="1.0" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true"/>
-            
-        <vis name="EcalBarrelVis" alpha="1.0" r="0" g="0" b="0.3" showDaughters="true" visible="true"/>
-        <vis name="EcalBarrelStaveVis" alpha="1.0" r="1" g="0.9" b="0.5" showDaughters="false" visible="true"/>
-
-        <vis name="EcalEndcapVis"       alpha="1" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/>
-
-        <vis name="HcalBarrelVis"          alpha="1" r="1"    g="1"    b="0.1" showDaughters="true" visible="true"/>
-        <vis name="HcalBarrelStavesVis"    alpha="1" r="1"    g="0"    b="0.3" showDaughters="true" visible="true"/>
-        <vis name="HcalBarrelLayerVis"     alpha="1" r="1"    g="0"    b="0.5" showDaughters="true" visible="true"/>
-        <vis name="HcalBarrelSensorVis"    alpha="1" r="1"    g="1"    b="0.7" showDaughters="true" visible="true"/>
-
-        <vis name="HcalEndcapVis"          alpha="1" r="1"    g="1"    b="0.1" showDaughters="false" visible="true"/>
-        <vis name="HcalEndcapLayerVis"     alpha="1" r="1"    g="0"    b="0.5" showDaughters="false" visible="true"/>
-        
-        <vis name="SolenoidBarrelLayerVis" alpha="1" r="0"    g="0.3"  b="0.3" showDaughters="false" visible="true"/>
-        <vis name="SolenoidCoilEndsVis"    alpha="1" r="0"    g="0.9"  b="0.9" showDaughters="false" visible="true"/>
-        <vis name="AntiSolenoidVis"        alpha="1" r="0.3"  g="1"    b="1"   showDaughters="false" visible="true"/>
-
-        <vis name="MuonBarrelVis"          alpha="1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-        <vis name="MuonBarrelStavesVis"    alpha="1" r="0"    g="0.7"  b="0.3" showDaughters="true" visible="true"/>
-        <vis name="MuonBarrelLayerVis"     alpha="1" r="0"    g="1"    b="0.3" showDaughters="true" visible="true"/>
-        <vis name="MuonBarrelSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-        <vis name="MuonBarrelAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-
-        <vis name="MuonEndcapVis"          alpha="1" r="1"    g="0.4"  b="0.62" showDaughters="true" visible="true"/>
-        <vis name="MuonEndcapLayerVis"     alpha="1" r="0"    g="1"    b="0.3"  showDaughters="true" visible="true"/>
-        <vis name="MuonEndcapSensorVis"    alpha="1" r="0.54" g="0.4"  b="0.41" visible="true"/>
-        <vis name="MuonEndcapAbsorberVis"  alpha="1" r="0.28" g="0.4"  b="0.62" visible="true"/>        
-                       
-        
-        <vis name="BeamPipeVis" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true"/>
-        <vis name="CableVis" showDaughters="false" visible="true"/>
-        
-        <vis name="SupportTubeVis" r="0.1" g="0.1" b="0.99" showDaughters="false" visible="true"/>
-        <vis name="TungstenShieldingVis" r="0.99" g="0.1" b="0.2" showDaughters="false" visible="true"/>
-        
-        <vis name="SupportVis" r="0.8" g="0.8" b="0" showDaughters="false" visible="true"/>
-        <vis name="LumiCalVis" showDaughters="false" visible="true"/>
-        <vis name="GreenVis" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
-        <vis name="RedVis" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
-        <vis name="BlueVis" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
-    </display>
-    <detectors>
-        <comment>Trackers</comment> 
-        
-        <detector name="LumiReadout_Forward" type="PolyconeSupport" vis="LumiCalVis">
-        	<comment>Readout for Luminosity Calorimeter</comment>
-        	<material name="G10"/>
-        	<zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin"/>
-        	<zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin+LumiCal_thickness"/>
-        </detector>
-        
-      	<detector name="LumiReadout_Backward" type="PolyconeSupport" vis="LumiCalVis">
-        	<comment>Readout for Luminosity Calorimeter</comment>
-        	<material name="G10"/>
-        	<zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmin"/>
-        	<zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmin+LumiCal_thickness)"/>
-        </detector>
-        
-        <comment>Dead material and supports</comment>
-        <comment>Beampipe</comment> 
-        <detector name="Beampipe" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-            <comment>Central Be Beampipe</comment>
-            <material name="Beryllium"/>
-            <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="-CentralBeamPipe_zmax"/>
-            <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="CentralBeamPipe_zmax" />
-        </detector>
-        <detector name="SteelConeZbackward" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      		<material name="Iron"/>            
-      		<zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="-tracking_region_zmax" /> 
-      		<zplane rmin="CentralBeamPipe_rmin"
-            		rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		z="-BeamPipe_zmin" />
-           	<zplane rmin="CentralBeamPipe_rmin"
-           			rmax="CentralBeamPipe_rmax"
-           			z="-CentralBeamPipe_zmax"/>
-    	</detector>
-    	<detector name="SteelConeZbackward2" type="PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      		<material name="Iron"/>            
-            <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="-(tracking_region_zmax + 0.01*cm)" /> 
-            <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="- BeamPipe_zmax" />
-            <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="BeamPipe_rmax"
-            		z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-            <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="LumiCal_rmin - BeamPipe_endThickness"
-            		z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-			<zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="LumiCal_rmin - BeamPipe_endThickness"
-            		z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-    	</detector>
-		<detector name="SteelConeZforward" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis">
-      		<material name="Iron"/>
-      		<zplane rmin="CentralBeamPipe_rmin"
-           			rmax="CentralBeamPipe_rmax"
-           			z="CentralBeamPipe_zmax"/>            
-      		<zplane rmin="CentralBeamPipe_rmin"
-            		rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		z="BeamPipe_zmin" /> 
-      		<zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="tracking_region_zmax" />
-    	</detector>
-    	<detector name="SteelConeZforward2" type="PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis">
-      		<material name="Iron"/>            
-            <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="tracking_region_zmax + 0.01*cm" /> 
-            <zplane rmin="BeamPipe_rmax - BeamPipe_thickness"
-            		rmax="BeamPipe_rmax"
-            		z="BeamPipe_zmax" />
-            <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="BeamPipe_rmax"
-            		z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-            <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="LumiCal_rmin - BeamPipe_endThickness"
-            		z="LumiCal_zmin - BeamPipe_endThickness" />
-			<zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		rmax="LumiCal_rmin - BeamPipe_endThickness"
-            		z="ForwardMask_zmin - BeamPipe_endThickness" />
-    	</detector>
-        <detector name="NorthIncomingBeampipe" type="TubeSegment" vis="BeamPipeVis">
-            <material name="Iron" />
-            <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-            <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-            <rotation x="0.0" y="CrossingAngle/2.0" z="0.0" />
-        </detector>
-        <detector name="SouthIncomingBeampipe" type="TubeSegment" vis="BeamPipeVis">
-            <material name="Iron" />
-            <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-            <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-            <rotation x="0.0" y="- CrossingAngle/2.0" z="0.0" />
-        </detector>
-        <detector name="NorthOutgoingBeampipe" type="TubeSegment" vis="BeamPipeVis">
-            <material name="Iron" />
-            <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-            <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-            <rotation x="0.0" y="- CrossingAngle/2.0" z="0.0" />
-        </detector>
-        <detector name="SouthOutgoingBeampipe" type="TubeSegment" vis="BeamPipeVis">
-            <material name="Iron" />
-            <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" />
-            <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" />
-            <rotation x="0.0" y="CrossingAngle/2.0" z="0.0" />
-        </detector>
-        <!-- Beam pipe liner is not needed, use thicker conical steel pipe instead
-        <detector name="BeamPipeLiner" type="PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-            <comment>BeamPipe Liner to shield bremsstrahlung photons</comment>
-            <material name="Titanium"/>
-            <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="-tracking_region_zmax" />
-            <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness"  z="-(CentralBeamPipe_zmax + 0.01*cm)"/>
-            <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="-CentralBeamPipe_zmax"  />
-            <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="CentralBeamPipe_zmax" />
-            <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="CentralBeamPipe_zmax + 0.01*cm" />
-            <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="tracking_region_zmax" />
-        </detector>
-        -->
-        <detector name="BeamPipeVacuum" type="PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters">
-            <comment>Vacuum inside beampipe</comment>
-            <material name="Vacuum"/>
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-            		z="-tracking_region_zmax" />
-            <zplane rmin="0.*cm"
-            		rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-            		z="-BeamPipe_zmin"  />
-            <zplane rmin="0.*cm"
-            		rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness"
-            		z="BeamPipe_zmin" />
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness"
-            		z="tracking_region_zmax" />
-        </detector>
-        <detector name="ForwardVacuum" type="PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-            <material name="Vacuum"/>
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness"
-            		z="tracking_region_zmax + 0.01*cm" /> 
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness"
-            		z="BeamPipe_zmax" />
-            <zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="LumiCal_zmin - 2*BeamPipe_endThickness" />
-            <zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="LumiCal_zmin - BeamPipe_endThickness" />
-	    <zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="ForwardMask_zmin - BeamPipe_endThickness" />
-        </detector> 
-        <detector name="BackwardVacuum" type="PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters">
-            <material name="Vacuum"/>
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness"
-            		z="- (tracking_region_zmax + 0.01*cm)" /> 
-            <zplane rmin="0.*cm"
-            		rmax="BeamPipe_rmax - BeamPipe_thickness"
-            		z="- BeamPipe_zmax" />
-            <zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" />
-            <zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="- (LumiCal_zmin - BeamPipe_endThickness)" />
-			<zplane rmin="0.*cm"
-            		rmax="LumiCal_rmin - 2*BeamPipe_endThickness"
-            		z="- (ForwardMask_zmin - BeamPipe_endThickness)" />
-        </detector>
-
-        <detector name="VXDcableZforwardBarrel" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-        	<material name="Copper"/>
-        	<zplane rmin = "(CentralBeamPipe_rmax)"
-        			rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-        			z="VertexBarrel_zmax + 0.61*cm"/>
-        	<zplane rmin = "(CentralBeamPipe_rmax)"
-        			rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-        			z="CentralBeamPipe_zmax"/>
-        </detector>
-        <detector name="VXDcableZbackwardBarrel" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-        	<material name="Copper"/>
-        	<zplane rmin = "(CentralBeamPipe_rmax)"
-        			rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-        			z="-(VertexBarrel_zmax + 0.61*cm)"/>
-        	<zplane rmin = "(CentralBeamPipe_rmax)"
-        			rmax = "(CentralBeamPipe_rmax + VertexCableThickness)"
-        			z="-CentralBeamPipe_zmax"/>
-        </detector> 
-        <detector name="VXDcableZbackwardOuter" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="Copper"/>
-            <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-            		rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-            		z="-tracking_region_zmax" />
-            <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-            		z="-(VertexService_zmax + 0.01*cm)"/>
-        </detector>
-        <detector name="VXDcableZbackwardInner" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="Copper"/>
-            <zplane rmin="CentralBeamPipe_rmax"
-            		rmax="CentralBeamPipe_rmax + VertexCableThickness"
-            		z="-(CentralBeamPipe_zmax)"/>
-            <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-            		z="-(VertexService_zmin - 0.01*cm)"/>
-        </detector>
-        <detector name="VXDcableZforwardOuter" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="Copper"/>
-            <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" 
-            		rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" 
-            		z="tracking_region_zmax" />
-            <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm"
-            		z="VertexService_zmax + 0.01*cm"/>
-        </detector>
-        <detector name="VXDcableZforwardInner" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="Copper"/>
-            <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness"
-            		z="VertexService_zmin - 0.01*cm"/>
-            <zplane rmin="CentralBeamPipe_rmax"
-            		rmax="CentralBeamPipe_rmax + VertexCableThickness"
-            		z="CentralBeamPipe_zmax"/>
-        </detector>
-        <detector name="VXDserviceZbackward" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="G10"/>
-            <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-            		z="-VertexService_zmax"/>
-            <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-            		z="-VertexService_zmin"/>
-        </detector>
-        <detector name="VXDserviceZforward" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis">
-            <material name="G10"/>
-           	<zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-           			rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-           			z="VertexService_zmin"/>
-            <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax"
-            		rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness"
-            		z="VertexService_zmax"/>
-        </detector>
-        <comment>Dished endcap disks</comment>
-        <detector name="SiTrackerEndcapSupport1" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="510.448" rmax="510.448" z="750.417-0.001" />
-            <zplane rmin="504.711" rmax="510.448" z="750.919-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="777.034-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="777.535-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport2" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="510.448" rmax="510.448" z="750.919" />
-            <zplane rmin="438.449" rmax="510.448" z="757.218" />
-            <zplane rmin="206.234" rmax="278.187" z="777.535" />
-            <zplane rmin="206.234" rmax="206.234" z="783.834" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport3" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="510.448" rmax="510.448" z="757.218+0.001" />
-            <zplane rmin="504.711" rmax="510.448" z="757.720+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="783.834+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="784.336+0.001 " />
-        </detector>
-        <detector name="SiTrackerEndcapSupport4" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="763.796" rmax="763.796" z="1014.437-0.001" />
-            <zplane rmin="758.059" rmax="763.796" z="1014.939-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1063.219-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1063.721-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport5" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="763.796" rmax="763.796" z="1014.939" />
-            <zplane rmin="691.797" rmax="763.796" z="1021.238" />
-            <zplane rmin="206.234" rmax="278.187" z="1063.721" />
-            <zplane rmin="206.234" rmax="206.234" z="1070.020" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport6" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="763.796" rmax="763.796" z="1021.238+0.001" />
-            <zplane rmin="758.059" rmax="763.796" z="1021.740+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1070.020+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1070.522+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport7" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="1272.885-0.001" />
-            <zplane rmin="1010.011" rmax="1015.748" z="1273.387-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1343.711-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1344.213-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport8" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="1273.387" />
-            <zplane rmin="943.753" rmax="1015.748" z="1279.686" />
-            <zplane rmin="206.234" rmax="278.187" z="1344.213" />
-            <zplane rmin="206.234" rmax="206.234" z="1350.512" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport9" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="1279.686+0.001" />
-            <zplane rmin="1010.011" rmax="1015.748" z="1280.188+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1350.512+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1351.014+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport10" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="1536.560-0.001" />
-            <zplane rmin="1258.071" rmax="1263.808" z="1537.062-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1629.089-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1629.591-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport11" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="1537.062" />
-            <zplane rmin="1191.810" rmax="1263.808" z="1543.361" />
-            <zplane rmin="206.234" rmax="278.187" z="1629.591" />
-            <zplane rmin="206.234" rmax="206.234" z="1635.890" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport12" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="1543.361+0.001" />
-            <zplane rmin="1258.071" rmax="1263.808" z="1543.863+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="1635.890+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="1636.392+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport1Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="510.448" rmax="510.448" z="-750.417+0.001" />
-            <zplane rmin="504.711" rmax="510.448" z="-750.919+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-777.034+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-777.535+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport2Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="510.448" rmax="510.448" z="-750.919" />
-            <zplane rmin="438.449" rmax="510.448" z="-757.218" />
-            <zplane rmin="206.234" rmax="278.187" z="-777.535" />
-            <zplane rmin="206.234" rmax="206.234" z="-783.834" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport3Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="510.448" rmax="510.448" z="-757.218-0.001" />
-            <zplane rmin="504.711" rmax="510.448" z="-757.720-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-783.834-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-784.336-0.001 " />
-        </detector>
-        <detector name="SiTrackerEndcapSupport4Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="763.796" rmax="763.796" z="-1014.437+0.001" />
-            <zplane rmin="758.059" rmax="763.796" z="-1014.939+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1063.219+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1063.721+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport5Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="763.796" rmax="763.796" z="-1014.939" />
-            <zplane rmin="691.797" rmax="763.796" z="-1021.238" />
-            <zplane rmin="206.234" rmax="278.187" z="-1063.721" />
-            <zplane rmin="206.234" rmax="206.234" z="-1070.020" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport6Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="763.796" rmax="763.796" z="-1021.238-0.001" />
-            <zplane rmin="758.059" rmax="763.796" z="-1021.740-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1070.020-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1070.522-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport7Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="-1272.885+0.001" />
-            <zplane rmin="1010.011" rmax="1015.748" z="-1273.387+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1343.711+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1344.213+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport8Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="-1273.387" />
-            <zplane rmin="943.753" rmax="1015.748" z="-1279.686" />
-            <zplane rmin="206.234" rmax="278.187" z="-1344.213" />
-            <zplane rmin="206.234" rmax="206.234" z="-1350.512" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport9Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1015.748" rmax="1015.748" z="-1279.686-0.001" />
-            <zplane rmin="1010.011" rmax="1015.748" z="-1280.188-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1350.512-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1351.014-0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport10Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="-1536.560+0.001" />
-            <zplane rmin="1258.071" rmax="1263.808" z="-1537.062+0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1629.089+0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1629.591+0.001" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport11Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="Rohacell31"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="-1537.062" />
-            <zplane rmin="1191.810" rmax="1263.808" z="-1543.361" />
-            <zplane rmin="206.234" rmax="278.187" z="-1629.591" />
-            <zplane rmin="206.234" rmax="206.234" z="-1635.890" />
-        </detector>
-        <detector name="SiTrackerEndcapSupport12Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis">
-            <material name="CarbonFiber"/>
-            <zplane rmin="1263.808" rmax="1263.808" z="-1543.361-0.001" />
-            <zplane rmin="1258.071" rmax="1263.808" z="-1543.863-0.001" />
-            <zplane rmin="206.234" rmax="211.970" z="-1635.890-0.001" />
-            <zplane rmin="206.234" rmax="206.234" z="-1636.392-0.001" />
-        </detector>        
-        <detector name="TrackerReadout" type="DiskTracker" reflect="true" vis="GreenVis">
-            <comment>Readouts</comment>
-            <layer id="1" inner_r="25.7*cm" inner_z="590.402" outer_r="45.6*cm">
-                <slice material="G10" thickness="0.057*cm" />
-                <slice material="Copper" thickness="0.0038*cm" />
-            </layer>
-            <layer id="2" inner_r="51.0*cm" inner_z="762.854" outer_r="70.6*cm">
-                <slice material = "G10" thickness="0.102*cm" />
-                <slice material = "Copper" thickness="0.0068*cm" />
-            </layer>
-            <layer id="3" inner_r="76.3*cm" inner_z="1026.874" outer_r="95.6*cm">
-                <slice material="G10" thickness="0.108*cm" />
-                <slice material="Copper" thickness="0.0072*cm" />
-            </layer>
-            <layer id="4" inner_r="101.3*cm" inner_z="1285.322" outer_r="120.6*cm">
-                <slice material="G10" thickness="0.186*cm" />
-                <slice material="Copper" thickness="0.0124*cm" />
-            </layer>
-            <layer id="5" inner_r= "101.3*cm" inner_z="1610.0" outer_r="120.6*cm">
-                <slice material="G10" thickness="0.246*cm" />
-                <slice material="Copper" thickness="0.0164*cm" />
-            </layer>
-        </detector>
-        <comment>Masks and Shielding</comment>
-        <detector name="LumiShielding_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax"/>
-        	<zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax+ForwardShielding_thickness"/>
-        </detector>
-        <detector name="LumiShielding_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmax"/>
-        	<zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmax+ForwardShielding_thickness)"/>
-        </detector>
-        <detector name="ECalShielding_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin"/>
-        	<zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin+ForwardShielding_thickness"/>
-        </detector>
-        <detector name="ECalShielding_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-HcalEndcap_zmin"/>
-        	<zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-(HcalEndcap_zmin+ForwardShielding_thickness)"/>
-        </detector>
-        <detector name="ShieldingTube_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-        			z="HcalEndcap_zmin + ForwardShielding_thickness"/>
-        	<zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-        			z="HcalEndcap_zmax"/>
-		</detector>
-		<detector name="ShieldingTube_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis">
-        	<material name="TungstenDens24" />
-        	<zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-        			z="-(HcalEndcap_zmin + ForwardShielding_thickness)"/>
-        	<zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm"
-        			z="-HcalEndcap_zmax"/>
-		</detector>
-		<detector name="SupportTube_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-        	<material name="Steel235" />
-        	<zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness"
-        			z="HcalEndcap_zmin"/>
-        	<zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness"
-        			z="MuonEndcap_zmax"/>
-		</detector>
-		<detector name="SupportTube_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis">
-        	<material name="Steel235" />
-        	<zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness"
-        			z="-HcalEndcap_zmin"/>
-        	<zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness"
-        			rmax="HcalEndcap_rmin - SupportTube_thickness"
-        			z="-MuonEndcap_zmax"/>
-		</detector>
-		<detector name="AntiSolenoid_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-			<material name="Steel235" />
-        	<zplane rmin="HcalEndcap_rmin + 1.0*cm"
-        			rmax="MuonEndcap_rmin - 1.0*cm"
-        			z="HcalEndcap_zmax + 1.0*cm"/>
-        	<zplane rmin="HcalEndcap_rmin + 1.0*cm"
-        			rmax="MuonEndcap_rmin - 1.0*cm"
-        			z="MuonEndcap_zmax"/>
-        </detector>
-        <detector name="AntiSolenoid_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis">
-			<material name="Steel235" />
-        	<zplane rmin="HcalEndcap_rmin + 1.0*cm"
-        			rmax="MuonEndcap_rmin - 1.0*cm"
-        			z="-(HcalEndcap_zmax + 1.0*cm)"/>
-        	<zplane rmin="HcalEndcap_rmin + 1.0*cm"
-        			rmax="MuonEndcap_rmin - 1.0*cm"
-        			z="-MuonEndcap_zmax"/>
-        </detector>
-    </detectors>
-
-    <readouts>
-        <readout name="SiTrackerEndcapHits">
-            <id>system:6,barrel:3,layer:4,module:16,sensor:1,side:32:-2,strip:20</id>
-        </readout>        
-        <readout name="SiTrackerBarrelHits">
-            <id>system:6,barrel:3,layer:4,module:12,sensor:1,side:v32:-2,strip:20</id>
-        </readout>
-        <readout name="SiVertexBarrelHits">
-            <id>system:6,barrel:3,layer:4,module:12,sensor:1,side:32:-2,strip:24</id>
-        </readout>
-        <readout name="SiVertexEndcapHits">
-            <id>system:6,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id>
-        </readout>
-        <readout name="EcalBarrelHits">
-            <segmentation type="EcalBarrelCartesianGridXY" gridSizeX="3.5" gridSizeY="3.5" />
-            <id>system:6,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-        </readout>        
-        <readout name="EcalEndcapHits">
-            <segmentation type="GlobalGridXY" gridSizeX="3.5" gridSizeY="3.5" />
-            <id>system:6,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="HcalBarrelHits">
-            <segmentation type="RegularNgonCartesianGridXY" gridSizeX="3.0*cm" gridSizeY="3.0*cm" />
-            <id>system:6,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="HcalEndcapHits">
-            <segmentation type="GlobalGridXY" gridSizeX="3.0*cm" gridSizeY="3.0*cm" />
-            <id>system:6,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="HcalPlugHits">
-            <segmentation type="GlobalGridXY" gridSizeX="3.0*cm" gridSizeY="3.0*cm" />
-            <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="MuonBarrelHits">
-            <segmentation type="RegularNgonCartesianGridXY" gridSizeX="3.0*cm" gridSizeY="3.0*cm" />
-            <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="MuonEndcapHits">
-            <segmentation type="GlobalGridXY" gridSizeX="3.0*cm" gridSizeY="3.0*cm" />
-            <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="SiTrackerForwardHits">
-            <id>system:6,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:28</id>
-        </readout>
-        <readout name="LumiCalHits">
-            <segmentation type="GridXYZ" gridSizeX="0.35*cm" gridSizeY="0.35*cm" />
-            <id>system:8,layer:8,barrel:3,x:32:-16,y:-16</id>
-        </readout>
-        <readout name="BeamCalHits">
-            <segmentation type="GridXYZ" gridSizeX="0.35*cm" gridSizeY="0.35*cm" />
-            <id>system:8,layer:8,barrel:3,x:32:-16,y:-16</id>
-        </readout>
-    </readouts>
-    <fields>
-        <field name="GlobalSolenoid" type="solenoid" 
-          inner_field="5.0*tesla"
-          outer_field="-1.5*tesla" 
-          zmax="SolenoidCoilOuterZ"
-          outer_radius="SolenoidalFieldRadius">
-        </field>
-    </fields>
-</lccdd>
diff --git a/examples/CLICSiD/compact/elements.xml b/examples/CLICSiD/compact/elements.xml
deleted file mode 100644
index e714c3a5cd544e748dd2941967cff515c0b77efc..0000000000000000000000000000000000000000
--- a/examples/CLICSiD/compact/elements.xml
+++ /dev/null
@@ -1,884 +0,0 @@
-<materials>
- <element Z="89" formula="Ac" name="Ac" >
-  <atom type="A" unit="g/mol" value="227.028" />
- </element>
- <material formula="Ac" name="Actinium" state="solid" >
-  <RL type="X0" unit="cm" value="0.601558" />
-  <NIL type="lambda" unit="cm" value="21.2048" />
-  <D type="density" unit="g/cm3" value="10.07" />
-  <composite n="1" ref="Ac" />
- </material>
- <element Z="47" formula="Ag" name="Ag" >
-  <atom type="A" unit="g/mol" value="107.868" />
- </element>
- <material formula="Ag" name="Silver" state="solid" >
-  <RL type="X0" unit="cm" value="0.854292" />
-  <NIL type="lambda" unit="cm" value="15.8546" />
-  <D type="density" unit="g/cm3" value="10.5" />
-  <composite n="1" ref="Ag" />
- </material>
- <element Z="13" formula="Al" name="Al" >
-  <atom type="A" unit="g/mol" value="26.9815" />
- </element>
- <material formula="Al" name="Aluminum" state="solid" >
-  <RL type="X0" unit="cm" value="8.89632" />
-  <NIL type="lambda" unit="cm" value="38.8766" />
-  <D type="density" unit="g/cm3" value="2.699" />
-  <composite n="1" ref="Al" />
- </material>
- <element Z="95" formula="Am" name="Am" >
-  <atom type="A" unit="g/mol" value="243.061" />
- </element>
- <material formula="Am" name="Americium" state="solid" >
-  <RL type="X0" unit="cm" value="0.42431" />
-  <NIL type="lambda" unit="cm" value="15.9812" />
-  <D type="density" unit="g/cm3" value="13.67" />
-  <composite n="1" ref="Am" />
- </material>
- <element Z="18" formula="Ar" name="Ar" >
-  <atom type="A" unit="g/mol" value="39.9477" />
- </element>
- <material formula="Ar" name="Argon" state="gas" >
-  <RL type="X0" unit="cm" value="11762.1" />
-  <NIL type="lambda" unit="cm" value="71926" />
-  <D type="density" unit="g/cm3" value="0.00166201" />
-  <composite n="1" ref="Ar" />
- </material>
- <element Z="33" formula="As" name="As" >
-  <atom type="A" unit="g/mol" value="74.9216" />
- </element>
- <material formula="As" name="Arsenic" state="solid" >
-  <RL type="X0" unit="cm" value="2.0838" />
-  <NIL type="lambda" unit="cm" value="25.7324" />
-  <D type="density" unit="g/cm3" value="5.73" />
-  <composite n="1" ref="As" />
- </material>
- <element Z="85" formula="At" name="At" >
-  <atom type="A" unit="g/mol" value="209.987" />
- </element>
- <material formula="At" name="Astatine" state="solid" >
-  <RL type="X0" unit="cm" value="0.650799" />
-  <NIL type="lambda" unit="cm" value="22.3202" />
-  <D type="density" unit="g/cm3" value="9.32" />
-  <composite n="1" ref="At" />
- </material>
- <element Z="79" formula="Au" name="Au" >
-  <atom type="A" unit="g/mol" value="196.967" />
- </element>
- <material formula="Au" name="Gold" state="solid" >
-  <RL type="X0" unit="cm" value="0.334436" />
-  <NIL type="lambda" unit="cm" value="10.5393" />
-  <D type="density" unit="g/cm3" value="19.32" />
-  <composite n="1" ref="Au" />
- </material>
- <element Z="5" formula="B" name="B" >
-  <atom type="A" unit="g/mol" value="10.811" />
- </element>
- <material formula="B" name="Boron" state="solid" >
-  <RL type="X0" unit="cm" value="22.2307" />
-  <NIL type="lambda" unit="cm" value="32.2793" />
-  <D type="density" unit="g/cm3" value="2.37" />
-  <composite n="1" ref="B" />
- </material>
- <element Z="56" formula="Ba" name="Ba" >
-  <atom type="A" unit="g/mol" value="137.327" />
- </element>
- <material formula="Ba" name="Barium" state="solid" >
-  <RL type="X0" unit="cm" value="2.37332" />
-  <NIL type="lambda" unit="cm" value="51.6743" />
-  <D type="density" unit="g/cm3" value="3.5" />
-  <composite n="1" ref="Ba" />
- </material>
- <element Z="4" formula="Be" name="Be" >
-  <atom type="A" unit="g/mol" value="9.01218" />
- </element>
- <material formula="Be" name="Beryllium" state="solid" >
-  <RL type="X0" unit="cm" value="35.276" />
-  <NIL type="lambda" unit="cm" value="39.4488" />
-  <D type="density" unit="g/cm3" value="1.848" />
-  <composite n="1" ref="Be" />
- </material>
- <element Z="83" formula="Bi" name="Bi" >
-  <atom type="A" unit="g/mol" value="208.98" />
- </element>
- <material formula="Bi" name="Bismuth" state="solid" >
-  <RL type="X0" unit="cm" value="0.645388" />
-  <NIL type="lambda" unit="cm" value="21.3078" />
-  <D type="density" unit="g/cm3" value="9.747" />
-  <composite n="1" ref="Bi" />
- </material>
- <element Z="97" formula="Bk" name="Bk" >
-  <atom type="A" unit="g/mol" value="247.07" />
- </element>
- <material formula="Bk" name="Berkelium" state="solid" >
-  <RL type="X0" unit="cm" value="0.406479" />
-  <NIL type="lambda" unit="cm" value="15.6902" />
-  <D type="density" unit="g/cm3" value="14" />
-  <composite n="1" ref="Bk" />
- </material>
- <element Z="35" formula="Br" name="Br" >
-  <atom type="A" unit="g/mol" value="79.9035" />
- </element>
- <material formula="Br" name="Bromine" state="gas" >
-  <RL type="X0" unit="cm" value="1615.12" />
-  <NIL type="lambda" unit="cm" value="21299" />
-  <D type="density" unit="g/cm3" value="0.0070721" />
-  <composite n="1" ref="Br" />
- </material>
- <element Z="6" formula="C" name="C" >
-  <atom type="A" unit="g/mol" value="12.0107" />
- </element>
- <material formula="C" name="Carbon" state="solid" >
-  <RL type="X0" unit="cm" value="21.3485" />
-  <NIL type="lambda" unit="cm" value="40.1008" />
-  <D type="density" unit="g/cm3" value="2" />
-  <composite n="1" ref="C" />
- </material>
- <element Z="20" formula="Ca" name="Ca" >
-  <atom type="A" unit="g/mol" value="40.078" />
- </element>
- <material formula="Ca" name="Calcium" state="solid" >
-  <RL type="X0" unit="cm" value="10.4151" />
-  <NIL type="lambda" unit="cm" value="77.3754" />
-  <D type="density" unit="g/cm3" value="1.55" />
-  <composite n="1" ref="Ca" />
- </material>
- <element Z="48" formula="Cd" name="Cd" >
-  <atom type="A" unit="g/mol" value="112.411" />
- </element>
- <material formula="Cd" name="Cadmium" state="solid" >
-  <RL type="X0" unit="cm" value="1.03994" />
-  <NIL type="lambda" unit="cm" value="19.46" />
-  <D type="density" unit="g/cm3" value="8.65" />
-  <composite n="1" ref="Cd" />
- </material>
- <element Z="58" formula="Ce" name="Ce" >
-  <atom type="A" unit="g/mol" value="140.115" />
- </element>
- <material formula="Ce" name="Cerium" state="solid" >
-  <RL type="X0" unit="cm" value="1.19506" />
-  <NIL type="lambda" unit="cm" value="27.3227" />
-  <D type="density" unit="g/cm3" value="6.657" />
-  <composite n="1" ref="Ce" />
- </material>
- <element Z="98" formula="Cf" name="Cf" >
-  <atom type="A" unit="g/mol" value="251.08" />
- </element>
- <material formula="Cf" name="Californium" state="solid" >
-  <RL type="X0" unit="cm" value="0.568328" />
-  <NIL type="lambda" unit="cm" value="22.085" />
-  <D type="density" unit="g/cm3" value="10" />
-  <composite n="1" ref="Cf" />
- </material>
- <element Z="17" formula="Cl" name="Cl" >
-  <atom type="A" unit="g/mol" value="35.4526" />
- </element>
- <material formula="Cl" name="Chlorine" state="gas" >
-  <RL type="X0" unit="cm" value="6437.34" />
-  <NIL type="lambda" unit="cm" value="38723.9" />
-  <D type="density" unit="g/cm3" value="0.00299473" />
-  <composite n="1" ref="Cl" />
- </material>
- <element Z="96" formula="Cm" name="Cm" >
-  <atom type="A" unit="g/mol" value="247.07" />
- </element>
- <material formula="Cm" name="Curium" state="solid" >
-  <RL type="X0" unit="cm" value="0.428706" />
-  <NIL type="lambda" unit="cm" value="16.2593" />
-  <D type="density" unit="g/cm3" value="13.51" />
-  <composite n="1" ref="Cm" />
- </material>
- <element Z="27" formula="Co" name="Co" >
-  <atom type="A" unit="g/mol" value="58.9332" />
- </element>
- <material formula="Co" name="Cobalt" state="solid" >
-  <RL type="X0" unit="cm" value="1.53005" />
-  <NIL type="lambda" unit="cm" value="15.2922" />
-  <D type="density" unit="g/cm3" value="8.9" />
-  <composite n="1" ref="Co" />
- </material>
- <element Z="24" formula="Cr" name="Cr" >
-  <atom type="A" unit="g/mol" value="51.9961" />
- </element>
- <material formula="Cr" name="Chromium" state="solid" >
-  <RL type="X0" unit="cm" value="2.0814" />
-  <NIL type="lambda" unit="cm" value="18.1933" />
-  <D type="density" unit="g/cm3" value="7.18" />
-  <composite n="1" ref="Cr" />
- </material>
- <element Z="55" formula="Cs" name="Cs" >
-  <atom type="A" unit="g/mol" value="132.905" />
- </element>
- <material formula="Cs" name="Cesium" state="solid" >
-  <RL type="X0" unit="cm" value="4.4342" />
-  <NIL type="lambda" unit="cm" value="95.317" />
-  <D type="density" unit="g/cm3" value="1.873" />
-  <composite n="1" ref="Cs" />
- </material>
- <element Z="29" formula="Cu" name="Cu" >
-  <atom type="A" unit="g/mol" value="63.5456" />
- </element>
- <material formula="Cu" name="Copper" state="solid" >
-  <RL type="X0" unit="cm" value="1.43558" />
-  <NIL type="lambda" unit="cm" value="15.5141" />
-  <D type="density" unit="g/cm3" value="8.96" />
-  <composite n="1" ref="Cu" />
- </material>
- <element Z="66" formula="Dy" name="Dy" >
-  <atom type="A" unit="g/mol" value="162.497" />
- </element>
- <material formula="Dy" name="Dysprosium" state="solid" >
-  <RL type="X0" unit="cm" value="0.85614" />
-  <NIL type="lambda" unit="cm" value="22.2923" />
-  <D type="density" unit="g/cm3" value="8.55" />
-  <composite n="1" ref="Dy" />
- </material>
- <element Z="68" formula="Er" name="Er" >
-  <atom type="A" unit="g/mol" value="167.256" />
- </element>
- <material formula="Er" name="Erbium" state="solid" >
-  <RL type="X0" unit="cm" value="0.788094" />
-  <NIL type="lambda" unit="cm" value="21.2923" />
-  <D type="density" unit="g/cm3" value="9.066" />
-  <composite n="1" ref="Er" />
- </material>
- <element Z="63" formula="Eu" name="Eu" >
-  <atom type="A" unit="g/mol" value="151.964" />
- </element>
- <material formula="Eu" name="Europium" state="solid" >
-  <RL type="X0" unit="cm" value="1.41868" />
-  <NIL type="lambda" unit="cm" value="35.6178" />
-  <D type="density" unit="g/cm3" value="5.243" />
-  <composite n="1" ref="Eu" />
- </material>
- <element Z="9" formula="F" name="F" >
-  <atom type="A" unit="g/mol" value="18.9984" />
- </element>
- <material formula="F" name="Fluorine" state="gas" >
-  <RL type="X0" unit="cm" value="20838.2" />
-  <NIL type="lambda" unit="cm" value="59094.3" />
-  <D type="density" unit="g/cm3" value="0.00158029" />
-  <composite n="1" ref="F" />
- </material>
- <element Z="26" formula="Fe" name="Fe" >
-  <atom type="A" unit="g/mol" value="55.8451" />
- </element>
- <material formula="Fe" name="Iron" state="solid" >
-  <RL type="X0" unit="cm" value="1.75749" />
-  <NIL type="lambda" unit="cm" value="16.959" />
-  <D type="density" unit="g/cm3" value="7.874" />
-  <composite n="1" ref="Fe" />
- </material>
- <element Z="87" formula="Fr" name="Fr" >
-  <atom type="A" unit="g/mol" value="223.02" />
- </element>
- <material formula="Fr" name="Francium" state="solid" >
-  <RL type="X0" unit="cm" value="6.18826" />
-  <NIL type="lambda" unit="cm" value="212.263" />
-  <D type="density" unit="g/cm3" value="1" />
-  <composite n="1" ref="Fr" />
- </material>
- <element Z="31" formula="Ga" name="Ga" >
-  <atom type="A" unit="g/mol" value="69.7231" />
- </element>
- <material formula="Ga" name="Gallium" state="solid" >
-  <RL type="X0" unit="cm" value="2.1128" />
-  <NIL type="lambda" unit="cm" value="24.3351" />
-  <D type="density" unit="g/cm3" value="5.904" />
-  <composite n="1" ref="Ga" />
- </material>
- <element Z="64" formula="Gd" name="Gd" >
-  <atom type="A" unit="g/mol" value="157.252" />
- </element>
- <material formula="Gd" name="Gadolinium" state="solid" >
-  <RL type="X0" unit="cm" value="0.947208" />
-  <NIL type="lambda" unit="cm" value="23.9377" />
-  <D type="density" unit="g/cm3" value="7.9004" />
-  <composite n="1" ref="Gd" />
- </material>
- <element Z="32" formula="Ge" name="Ge" >
-  <atom type="A" unit="g/mol" value="72.6128" />
- </element>
- <material formula="Ge" name="Germanium" state="solid" >
-  <RL type="X0" unit="cm" value="2.3013" />
-  <NIL type="lambda" unit="cm" value="27.3344" />
-  <D type="density" unit="g/cm3" value="5.323" />
-  <composite n="1" ref="Ge" />
- </material>
- <element Z="1" formula="H" name="H" >
-  <atom type="A" unit="g/mol" value="1.00794" />
- </element>
- <material formula="H" name="Hydrogen" state="gas" >
-  <RL type="X0" unit="cm" value="752776" />
-  <NIL type="lambda" unit="cm" value="421239" />
-  <D type="density" unit="g/cm3" value="8.3748e-05" />
-  <composite n="1" ref="H" />
- </material>
- <element Z="2" formula="He" name="He" >
-  <atom type="A" unit="g/mol" value="4.00264" />
- </element>
- <material formula="He" name="Helium" state="gas" >
-  <RL type="X0" unit="cm" value="567113" />
-  <NIL type="lambda" unit="cm" value="334266" />
-  <D type="density" unit="g/cm3" value="0.000166322" />
-  <composite n="1" ref="He" />
- </material>
- <element Z="72" formula="Hf" name="Hf" >
-  <atom type="A" unit="g/mol" value="178.485" />
- </element>
- <material formula="Hf" name="Hafnium" state="solid" >
-  <RL type="X0" unit="cm" value="0.517717" />
-  <NIL type="lambda" unit="cm" value="14.7771" />
-  <D type="density" unit="g/cm3" value="13.31" />
-  <composite n="1" ref="Hf" />
- </material>
- <element Z="80" formula="Hg" name="Hg" >
-  <atom type="A" unit="g/mol" value="200.599" />
- </element>
- <material formula="Hg" name="Mercury" state="solid" >
-  <RL type="X0" unit="cm" value="0.475241" />
-  <NIL type="lambda" unit="cm" value="15.105" />
-  <D type="density" unit="g/cm3" value="13.546" />
-  <composite n="1" ref="Hg" />
- </material>
- <element Z="67" formula="Ho" name="Ho" >
-  <atom type="A" unit="g/mol" value="164.93" />
- </element>
- <material formula="Ho" name="Holmium" state="solid" >
-  <RL type="X0" unit="cm" value="0.822447" />
-  <NIL type="lambda" unit="cm" value="21.8177" />
-  <D type="density" unit="g/cm3" value="8.795" />
-  <composite n="1" ref="Ho" />
- </material>
- <element Z="53" formula="I" name="I" >
-  <atom type="A" unit="g/mol" value="126.904" />
- </element>
- <material formula="I" name="Iodine" state="solid" >
-  <RL type="X0" unit="cm" value="1.72016" />
-  <NIL type="lambda" unit="cm" value="35.6583" />
-  <D type="density" unit="g/cm3" value="4.93" />
-  <composite n="1" ref="I" />
- </material>
- <element Z="49" formula="In" name="In" >
-  <atom type="A" unit="g/mol" value="114.818" />
- </element>
- <material formula="In" name="Indium" state="solid" >
-  <RL type="X0" unit="cm" value="1.21055" />
-  <NIL type="lambda" unit="cm" value="23.2468" />
-  <D type="density" unit="g/cm3" value="7.31" />
-  <composite n="1" ref="In" />
- </material>
- <element Z="77" formula="Ir" name="Ir" >
-  <atom type="A" unit="g/mol" value="192.216" />
- </element>
- <material formula="Ir" name="Iridium" state="solid" >
-  <RL type="X0" unit="cm" value="0.294142" />
-  <NIL type="lambda" unit="cm" value="9.01616" />
-  <D type="density" unit="g/cm3" value="22.42" />
-  <composite n="1" ref="Ir" />
- </material>
- <element Z="19" formula="K" name="K" >
-  <atom type="A" unit="g/mol" value="39.0983" />
- </element>
- <material formula="K" name="Potassium" state="solid" >
-  <RL type="X0" unit="cm" value="20.0871" />
-  <NIL type="lambda" unit="cm" value="138.041" />
-  <D type="density" unit="g/cm3" value="0.862" />
-  <composite n="1" ref="K" />
- </material>
- <element Z="36" formula="Kr" name="Kr" >
-  <atom type="A" unit="g/mol" value="83.7993" />
- </element>
- <material formula="Kr" name="Krypton" state="gas" >
-  <RL type="X0" unit="cm" value="3269.44" />
-  <NIL type="lambda" unit="cm" value="43962.9" />
-  <D type="density" unit="g/cm3" value="0.00347832" />
-  <composite n="1" ref="Kr" />
- </material>
- <element Z="57" formula="La" name="La" >
-  <atom type="A" unit="g/mol" value="138.905" />
- </element>
- <material formula="La" name="Lanthanum" state="solid" >
-  <RL type="X0" unit="cm" value="1.32238" />
-  <NIL type="lambda" unit="cm" value="29.441" />
-  <D type="density" unit="g/cm3" value="6.154" />
-  <composite n="1" ref="La" />
- </material>
- <element Z="3" formula="Li" name="Li" >
-  <atom type="A" unit="g/mol" value="6.94003" />
- </element>
- <material formula="Li" name="Lithium" state="solid" >
-  <RL type="X0" unit="cm" value="154.997" />
-  <NIL type="lambda" unit="cm" value="124.305" />
-  <D type="density" unit="g/cm3" value="0.534" />
-  <composite n="1" ref="Li" />
- </material>
- <element Z="71" formula="Lu" name="Lu" >
-  <atom type="A" unit="g/mol" value="174.967" />
- </element>
- <material formula="Lu" name="Lutetium" state="solid" >
-  <RL type="X0" unit="cm" value="0.703651" />
-  <NIL type="lambda" unit="cm" value="19.8916" />
-  <D type="density" unit="g/cm3" value="9.84" />
-  <composite n="1" ref="Lu" />
- </material>
- <element Z="12" formula="Mg" name="Mg" >
-  <atom type="A" unit="g/mol" value="24.305" />
- </element>
- <material formula="Mg" name="Magnesium" state="solid" >
-  <RL type="X0" unit="cm" value="14.3859" />
-  <NIL type="lambda" unit="cm" value="58.7589" />
-  <D type="density" unit="g/cm3" value="1.74" />
-  <composite n="1" ref="Mg" />
- </material>
- <element Z="25" formula="Mn" name="Mn" >
-  <atom type="A" unit="g/mol" value="54.938" />
- </element>
- <material formula="Mn" name="Manganese" state="solid" >
-  <RL type="X0" unit="cm" value="1.96772" />
-  <NIL type="lambda" unit="cm" value="17.8701" />
-  <D type="density" unit="g/cm3" value="7.44" />
-  <composite n="1" ref="Mn" />
- </material>
- <element Z="42" formula="Mo" name="Mo" >
-  <atom type="A" unit="g/mol" value="95.9313" />
- </element>
- <material formula="Mo" name="Molybdenum" state="solid" >
-  <RL type="X0" unit="cm" value="0.959107" />
-  <NIL type="lambda" unit="cm" value="15.6698" />
-  <D type="density" unit="g/cm3" value="10.22" />
-  <composite n="1" ref="Mo" />
- </material>
- <element Z="7" formula="N" name="N" >
-  <atom type="A" unit="g/mol" value="14.0068" />
- </element>
- <material formula="N" name="Nitrogen" state="gas" >
-  <RL type="X0" unit="cm" value="32602.2" />
-  <NIL type="lambda" unit="cm" value="72430.3" />
-  <D type="density" unit="g/cm3" value="0.0011652" />
-  <composite n="1" ref="N" />
- </material>
- <element Z="11" formula="Na" name="Na" >
-  <atom type="A" unit="g/mol" value="22.9898" />
- </element>
- <material formula="Na" name="Sodium" state="solid" >
-  <RL type="X0" unit="cm" value="28.5646" />
-  <NIL type="lambda" unit="cm" value="102.463" />
-  <D type="density" unit="g/cm3" value="0.971" />
-  <composite n="1" ref="Na" />
- </material>
- <element Z="41" formula="Nb" name="Nb" >
-  <atom type="A" unit="g/mol" value="92.9064" />
- </element>
- <material formula="Nb" name="Niobium" state="solid" >
-  <RL type="X0" unit="cm" value="1.15783" />
-  <NIL type="lambda" unit="cm" value="18.4846" />
-  <D type="density" unit="g/cm3" value="8.57" />
-  <composite n="1" ref="Nb" />
- </material>
- <element Z="60" formula="Nd" name="Nd" >
-  <atom type="A" unit="g/mol" value="144.236" />
- </element>
- <material formula="Nd" name="Neodymium" state="solid" >
-  <RL type="X0" unit="cm" value="1.11667" />
-  <NIL type="lambda" unit="cm" value="26.6308" />
-  <D type="density" unit="g/cm3" value="6.9" />
-  <composite n="1" ref="Nd" />
- </material>
- <element Z="10" formula="Ne" name="Ne" >
-  <atom type="A" unit="g/mol" value="20.18" />
- </element>
- <material formula="Ne" name="Neon" state="gas" >
-  <RL type="X0" unit="cm" value="34504.8" />
-  <NIL type="lambda" unit="cm" value="114322" />
-  <D type="density" unit="g/cm3" value="0.000838505" />
-  <composite n="1" ref="Ne" />
- </material>
- <element Z="28" formula="Ni" name="Ni" >
-  <atom type="A" unit="g/mol" value="58.6933" />
- </element>
- <material formula="Ni" name="Nickel" state="solid" >
-  <RL type="X0" unit="cm" value="1.42422" />
-  <NIL type="lambda" unit="cm" value="15.2265" />
-  <D type="density" unit="g/cm3" value="8.902" />
-  <composite n="1" ref="Ni" />
- </material>
- <element Z="93" formula="Np" name="Np" >
-  <atom type="A" unit="g/mol" value="237.048" />
- </element>
- <material formula="Np" name="Neptunium" state="solid" >
-  <RL type="X0" unit="cm" value="0.289676" />
-  <NIL type="lambda" unit="cm" value="10.6983" />
-  <D type="density" unit="g/cm3" value="20.25" />
-  <composite n="1" ref="Np" />
- </material>
- <element Z="8" formula="O" name="O" >
-  <atom type="A" unit="g/mol" value="15.9994" />
- </element>
- <material formula="O" name="Oxygen" state="gas" >
-  <RL type="X0" unit="cm" value="25713.8" />
-  <NIL type="lambda" unit="cm" value="66233.9" />
-  <D type="density" unit="g/cm3" value="0.00133151" />
-  <composite n="1" ref="O" />
- </material>
- <element Z="76" formula="Os" name="Os" >
-  <atom type="A" unit="g/mol" value="190.225" />
- </element>
- <material formula="Os" name="Osmium" state="solid" >
-  <RL type="X0" unit="cm" value="0.295861" />
-  <NIL type="lambda" unit="cm" value="8.92553" />
-  <D type="density" unit="g/cm3" value="22.57" />
-  <composite n="1" ref="Os" />
- </material>
- <element Z="15" formula="P" name="P" >
-  <atom type="A" unit="g/mol" value="30.9738" />
- </element>
- <material formula="P" name="Phosphorus" state="solid" >
-  <RL type="X0" unit="cm" value="9.63879" />
-  <NIL type="lambda" unit="cm" value="49.9343" />
-  <D type="density" unit="g/cm3" value="2.2" />
-  <composite n="1" ref="P" />
- </material>
- <element Z="91" formula="Pa" name="Pa" >
-  <atom type="A" unit="g/mol" value="231.036" />
- </element>
- <material formula="Pa" name="Protactinium" state="solid" >
-  <RL type="X0" unit="cm" value="0.38607" />
-  <NIL type="lambda" unit="cm" value="13.9744" />
-  <D type="density" unit="g/cm3" value="15.37" />
-  <composite n="1" ref="Pa" />
- </material>
- <element Z="82" formula="Pb" name="Pb" >
-  <atom type="A" unit="g/mol" value="207.217" />
- </element>
- <material formula="Pb" name="Lead" state="solid" >
-  <RL type="X0" unit="cm" value="0.561253" />
-  <NIL type="lambda" unit="cm" value="18.2607" />
-  <D type="density" unit="g/cm3" value="11.35" />
-  <composite n="1" ref="Pb" />
- </material>
- <element Z="46" formula="Pd" name="Pd" >
-  <atom type="A" unit="g/mol" value="106.415" />
- </element>
- <material formula="Pd" name="Palladium" state="solid" >
-  <RL type="X0" unit="cm" value="0.765717" />
-  <NIL type="lambda" unit="cm" value="13.7482" />
-  <D type="density" unit="g/cm3" value="12.02" />
-  <composite n="1" ref="Pd" />
- </material>
- <element Z="61" formula="Pm" name="Pm" >
-  <atom type="A" unit="g/mol" value="144.913" />
- </element>
- <material formula="Pm" name="Promethium" state="solid" >
-  <RL type="X0" unit="cm" value="1.04085" />
-  <NIL type="lambda" unit="cm" value="25.4523" />
-  <D type="density" unit="g/cm3" value="7.22" />
-  <composite n="1" ref="Pm" />
- </material>
- <element Z="84" formula="Po" name="Po" >
-  <atom type="A" unit="g/mol" value="208.982" />
- </element>
- <material formula="Po" name="Polonium" state="solid" >
-  <RL type="X0" unit="cm" value="0.661092" />
-  <NIL type="lambda" unit="cm" value="22.2842" />
-  <D type="density" unit="g/cm3" value="9.32" />
-  <composite n="1" ref="Po" />
- </material>
- <element Z="59" formula="Pr" name="Pr" >
-  <atom type="A" unit="g/mol" value="140.908" />
- </element>
- <material formula="Pr" name="Praseodymium" state="solid" >
-  <RL type="X0" unit="cm" value="1.1562" />
-  <NIL type="lambda" unit="cm" value="27.1312" />
-  <D type="density" unit="g/cm3" value="6.71" />
-  <composite n="1" ref="Pr" />
- </material>
- <element Z="78" formula="Pt" name="Pt" >
-  <atom type="A" unit="g/mol" value="195.078" />
- </element>
- <material formula="Pt" name="Platinum" state="solid" >
-  <RL type="X0" unit="cm" value="0.305053" />
-  <NIL type="lambda" unit="cm" value="9.46584" />
-  <D type="density" unit="g/cm3" value="21.45" />
-  <composite n="1" ref="Pt" />
- </material>
- <element Z="94" formula="Pu" name="Pu" >
-  <atom type="A" unit="g/mol" value="244.064" />
- </element>
- <material formula="Pu" name="Plutonium" state="solid" >
-  <RL type="X0" unit="cm" value="0.298905" />
-  <NIL type="lambda" unit="cm" value="11.0265" />
-  <D type="density" unit="g/cm3" value="19.84" />
-  <composite n="1" ref="Pu" />
- </material>
- <element Z="88" formula="Ra" name="Ra" >
-  <atom type="A" unit="g/mol" value="226.025" />
- </element>
- <material formula="Ra" name="Radium" state="solid" >
-  <RL type="X0" unit="cm" value="1.22987" />
-  <NIL type="lambda" unit="cm" value="42.6431" />
-  <D type="density" unit="g/cm3" value="5" />
-  <composite n="1" ref="Ra" />
- </material>
- <element Z="37" formula="Rb" name="Rb" >
-  <atom type="A" unit="g/mol" value="85.4677" />
- </element>
- <material formula="Rb" name="Rubidium" state="solid" >
-  <RL type="X0" unit="cm" value="7.19774" />
-  <NIL type="lambda" unit="cm" value="100.218" />
-  <D type="density" unit="g/cm3" value="1.532" />
-  <composite n="1" ref="Rb" />
- </material>
- <element Z="75" formula="Re" name="Re" >
-  <atom type="A" unit="g/mol" value="186.207" />
- </element>
- <material formula="Re" name="Rhenium" state="solid" >
-  <RL type="X0" unit="cm" value="0.318283" />
-  <NIL type="lambda" unit="cm" value="9.5153" />
-  <D type="density" unit="g/cm3" value="21.02" />
-  <composite n="1" ref="Re" />
- </material>
- <element Z="45" formula="Rh" name="Rh" >
-  <atom type="A" unit="g/mol" value="102.906" />
- </element>
- <material formula="Rh" name="Rhodium" state="solid" >
-  <RL type="X0" unit="cm" value="0.746619" />
-  <NIL type="lambda" unit="cm" value="13.2083" />
-  <D type="density" unit="g/cm3" value="12.41" />
-  <composite n="1" ref="Rh" />
- </material>
- <element Z="86" formula="Rn" name="Rn" >
-  <atom type="A" unit="g/mol" value="222.018" />
- </element>
- <material formula="Rn" name="Radon" state="gas" >
-  <RL type="X0" unit="cm" value="697.777" />
-  <NIL type="lambda" unit="cm" value="23532" />
-  <D type="density" unit="g/cm3" value="0.00900662" />
-  <composite n="1" ref="Rn" />
- </material>
- <element Z="44" formula="Ru" name="Ru" >
-  <atom type="A" unit="g/mol" value="101.065" />
- </element>
- <material formula="Ru" name="Ruthenium" state="solid" >
-  <RL type="X0" unit="cm" value="0.764067" />
-  <NIL type="lambda" unit="cm" value="13.1426" />
-  <D type="density" unit="g/cm3" value="12.41" />
-  <composite n="1" ref="Ru" />
- </material>
- <element Z="16" formula="S" name="S" >
-  <atom type="A" unit="g/mol" value="32.0661" />
- </element>
- <material formula="S" name="Sulfur" state="solid" >
-  <RL type="X0" unit="cm" value="9.74829" />
-  <NIL type="lambda" unit="cm" value="55.6738" />
-  <D type="density" unit="g/cm3" value="2" />
-  <composite n="1" ref="S" />
- </material>
- <element Z="51" formula="Sb" name="Sb" >
-  <atom type="A" unit="g/mol" value="121.76" />
- </element>
- <material formula="Sb" name="Antimony" state="solid" >
-  <RL type="X0" unit="cm" value="1.30401" />
-  <NIL type="lambda" unit="cm" value="25.8925" />
-  <D type="density" unit="g/cm3" value="6.691" />
-  <composite n="1" ref="Sb" />
- </material>
- <element Z="21" formula="Sc" name="Sc" >
-  <atom type="A" unit="g/mol" value="44.9559" />
- </element>
- <material formula="Sc" name="Scandium" state="solid" >
-  <RL type="X0" unit="cm" value="5.53545" />
-  <NIL type="lambda" unit="cm" value="41.609" />
-  <D type="density" unit="g/cm3" value="2.989" />
-  <composite n="1" ref="Sc" />
- </material>
- <element Z="34" formula="Se" name="Se" >
-  <atom type="A" unit="g/mol" value="78.9594" />
- </element>
- <material formula="Se" name="Selenium" state="solid" >
-  <RL type="X0" unit="cm" value="2.64625" />
-  <NIL type="lambda" unit="cm" value="33.356" />
-  <D type="density" unit="g/cm3" value="4.5" />
-  <composite n="1" ref="Se" />
- </material>
- <element Z="14" formula="Si" name="Si" >
-  <atom type="A" unit="g/mol" value="28.0854" />
- </element>
- <material formula="Si" name="Silicon" state="solid" >
-  <RL type="X0" unit="cm" value="9.36607" />
-  <NIL type="lambda" unit="cm" value="45.7531" />
-  <D type="density" unit="g/cm3" value="2.33" />
-  <composite n="1" ref="Si" />
- </material>
- <element Z="62" formula="Sm" name="Sm" >
-  <atom type="A" unit="g/mol" value="150.366" />
- </element>
- <material formula="Sm" name="Samarium" state="solid" >
-  <RL type="X0" unit="cm" value="1.01524" />
-  <NIL type="lambda" unit="cm" value="24.9892" />
-  <D type="density" unit="g/cm3" value="7.46" />
-  <composite n="1" ref="Sm" />
- </material>
- <element Z="50" formula="Sn" name="Sn" >
-  <atom type="A" unit="g/mol" value="118.71" />
- </element>
- <material formula="Sn" name="Tin" state="solid" >
-  <RL type="X0" unit="cm" value="1.20637" />
-  <NIL type="lambda" unit="cm" value="23.4931" />
-  <D type="density" unit="g/cm3" value="7.31" />
-  <composite n="1" ref="Sn" />
- </material>
- <element Z="38" formula="Sr" name="Sr" >
-  <atom type="A" unit="g/mol" value="87.6166" />
- </element>
- <material formula="Sr" name="Strontium" state="solid" >
-  <RL type="X0" unit="cm" value="4.237" />
-  <NIL type="lambda" unit="cm" value="61.0238" />
-  <D type="density" unit="g/cm3" value="2.54" />
-  <composite n="1" ref="Sr" />
- </material>
- <element Z="73" formula="Ta" name="Ta" >
-  <atom type="A" unit="g/mol" value="180.948" />
- </element>
- <material formula="Ta" name="Tantalum" state="solid" >
-  <RL type="X0" unit="cm" value="0.409392" />
-  <NIL type="lambda" unit="cm" value="11.8846" />
-  <D type="density" unit="g/cm3" value="16.654" />
-  <composite n="1" ref="Ta" />
- </material>
- <element Z="65" formula="Tb" name="Tb" >
-  <atom type="A" unit="g/mol" value="158.925" />
- </element>
- <material formula="Tb" name="Terbium" state="solid" >
-  <RL type="X0" unit="cm" value="0.893977" />
-  <NIL type="lambda" unit="cm" value="23.0311" />
-  <D type="density" unit="g/cm3" value="8.229" />
-  <composite n="1" ref="Tb" />
- </material>
- <element Z="43" formula="Tc" name="Tc" >
-  <atom type="A" unit="g/mol" value="97.9072" />
- </element>
- <material formula="Tc" name="Technetium" state="solid" >
-  <RL type="X0" unit="cm" value="0.833149" />
-  <NIL type="lambda" unit="cm" value="14.0185" />
-  <D type="density" unit="g/cm3" value="11.5" />
-  <composite n="1" ref="Tc" />
- </material>
- <element Z="52" formula="Te" name="Te" >
-  <atom type="A" unit="g/mol" value="127.603" />
- </element>
- <material formula="Te" name="Tellurium" state="solid" >
-  <RL type="X0" unit="cm" value="1.41457" />
-  <NIL type="lambda" unit="cm" value="28.1797" />
-  <D type="density" unit="g/cm3" value="6.24" />
-  <composite n="1" ref="Te" />
- </material>
- <element Z="90" formula="Th" name="Th" >
-  <atom type="A" unit="g/mol" value="232.038" />
- </element>
- <material formula="Th" name="Thorium" state="solid" >
-  <RL type="X0" unit="cm" value="0.51823" />
-  <NIL type="lambda" unit="cm" value="18.353" />
-  <D type="density" unit="g/cm3" value="11.72" />
-  <composite n="1" ref="Th" />
- </material>
- <element Z="22" formula="Ti" name="Ti" >
-  <atom type="A" unit="g/mol" value="47.8667" />
- </element>
- <material formula="Ti" name="Titanium" state="solid" >
-  <RL type="X0" unit="cm" value="3.5602" />
-  <NIL type="lambda" unit="cm" value="27.9395" />
-  <D type="density" unit="g/cm3" value="4.54" />
-  <composite n="1" ref="Ti" />
- </material>
- <element Z="81" formula="Tl" name="Tl" >
-  <atom type="A" unit="g/mol" value="204.383" />
- </element>
- <material formula="Tl" name="Thallium" state="solid" >
-  <RL type="X0" unit="cm" value="0.547665" />
-  <NIL type="lambda" unit="cm" value="17.6129" />
-  <D type="density" unit="g/cm3" value="11.72" />
-  <composite n="1" ref="Tl" />
- </material>
- <element Z="69" formula="Tm" name="Tm" >
-  <atom type="A" unit="g/mol" value="168.934" />
- </element>
- <material formula="Tm" name="Thulium" state="solid" >
-  <RL type="X0" unit="cm" value="0.754428" />
-  <NIL type="lambda" unit="cm" value="20.7522" />
-  <D type="density" unit="g/cm3" value="9.321" />
-  <composite n="1" ref="Tm" />
- </material>
- <element Z="92" formula="U" name="U" >
-  <atom type="A" unit="g/mol" value="238.029" />
- </element>
- <material formula="U" name="Uranium" state="solid" >
-  <RL type="X0" unit="cm" value="0.31663" />
-  <NIL type="lambda" unit="cm" value="11.4473" />
-  <D type="density" unit="g/cm3" value="18.95" />
-  <composite n="1" ref="U" />
- </material>
- <element Z="23" formula="V" name="V" >
-  <atom type="A" unit="g/mol" value="50.9415" />
- </element>
- <material formula="V" name="Vanadium" state="solid" >
-  <RL type="X0" unit="cm" value="2.59285" />
-  <NIL type="lambda" unit="cm" value="21.2187" />
-  <D type="density" unit="g/cm3" value="6.11" />
-  <composite n="1" ref="V" />
- </material>
- <element Z="74" formula="W" name="W" >
-  <atom type="A" unit="g/mol" value="183.842" />
- </element>
- <material formula="W" name="Tungsten" state="solid" >
-  <RL type="X0" unit="cm" value="0.350418" />
-  <NIL type="lambda" unit="cm" value="10.3057" />
-  <D type="density" unit="g/cm3" value="19.3" />
-  <composite n="1" ref="W" />
- </material>
- <element Z="54" formula="Xe" name="Xe" >
-  <atom type="A" unit="g/mol" value="131.292" />
- </element>
- <material formula="Xe" name="Xenon" state="gas" >
-  <RL type="X0" unit="cm" value="1546.2" />
-  <NIL type="lambda" unit="cm" value="32477.9" />
-  <D type="density" unit="g/cm3" value="0.00548536" />
-  <composite n="1" ref="Xe" />
- </material>
- <element Z="39" formula="Y" name="Y" >
-  <atom type="A" unit="g/mol" value="88.9058" />
- </element>
- <material formula="Y" name="Yttrium" state="solid" >
-  <RL type="X0" unit="cm" value="2.32943" />
-  <NIL type="lambda" unit="cm" value="34.9297" />
-  <D type="density" unit="g/cm3" value="4.469" />
-  <composite n="1" ref="Y" />
- </material>
- <element Z="70" formula="Yb" name="Yb" >
-  <atom type="A" unit="g/mol" value="173.038" />
- </element>
- <material formula="Yb" name="Ytterbium" state="solid" >
-  <RL type="X0" unit="cm" value="1.04332" />
-  <NIL type="lambda" unit="cm" value="28.9843" />
-  <D type="density" unit="g/cm3" value="6.73" />
-  <composite n="1" ref="Yb" />
- </material>
- <element Z="30" formula="Zn" name="Zn" >
-  <atom type="A" unit="g/mol" value="65.3955" />
- </element>
- <material formula="Zn" name="Zinc" state="solid" >
-  <RL type="X0" unit="cm" value="1.74286" />
-  <NIL type="lambda" unit="cm" value="19.8488" />
-  <D type="density" unit="g/cm3" value="7.133" />
-  <composite n="1" ref="Zn" />
- </material>
- <element Z="40" formula="Zr" name="Zr" >
-  <atom type="A" unit="g/mol" value="91.2236" />
- </element>
- <material formula="Zr" name="Zirconium" state="solid" >
-  <RL type="X0" unit="cm" value="1.56707" />
-  <NIL type="lambda" unit="cm" value="24.2568" />
-  <D type="density" unit="g/cm3" value="6.506" />
-  <composite n="1" ref="Zr" />
- </material>
-</materials>
\ No newline at end of file
diff --git a/examples/CLICSiD/compact/materials.xml b/examples/CLICSiD/compact/materials.xml
deleted file mode 100644
index cb555a1860b8add9657234aa211d99cdaf3e5768..0000000000000000000000000000000000000000
--- a/examples/CLICSiD/compact/materials.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<materials>
-
-  <!--
-       Air by weight from
-
-       http://www.engineeringtoolbox.com/air-composition-24_212.html
-  -->
-  <material name="Air">
-    <D type="density" unit="g/cm3" value="0.0012"/>
-    <fraction n="0.754" ref="N"/>
-    <fraction n="0.234" ref="O"/>
-    <fraction n="0.012" ref="Ar"/>
-  </material>
-  
-  <!-- We model vakuum just as very thin air -->
-  <material name="Vacuum">  
-    <D type="density" unit="g/cm3" value="0.0000000001" />
-    <fraction n="0.754" ref="N"/>
-    <fraction n="0.234" ref="O"/>
-    <fraction n="0.012" ref="Ar"/>
-  </material>
-
-  <material name="Epoxy">
-    <D type="density" value="1.3" unit="g/cm3"/>
-    <composite n="44" ref="H"/>
-    <composite n="15" ref="C"/>
-    <composite n="7" ref="O"/>
-  </material>
-
-  <material name="Quartz">
-    <D type="density" value="2.2" unit="g/cm3"/>
-    <composite n="1" ref="Si"/>
-    <composite n="2" ref="O"/>
-  </material>
-
-  <material name="G10">
-    <D type="density" value="1.7" unit="g/cm3"/>
-    <fraction n="0.08" ref="Cl"/>
-    <fraction n="0.773" ref="Quartz"/>
-    <fraction n="0.147" ref="Epoxy"/>
-  </material>
-
-  <material name="Polystyrene">
-    <D value="1.032" unit="g/cm3"/>
-    <composite n="19" ref="C"/>
-    <composite n="21" ref="H"/>
-  </material>
-
-  <material name="Steel235">
-    <D value="7.85" unit="g/cm3"/>
-    <fraction n="0.998" ref="Fe"/>
-    <fraction n=".002" ref="C"/>
-  </material>
-
-  <material name="SiliconOxide">
-    <D type="density" value="2.65" unit="g/cm3"/>
-    <composite n="1" ref="Si"/>
-    <composite n="2" ref="O"/>
-  </material>
-
-  <material name="BoronOxide">
-    <D type="density" value="2.46" unit="g/cm3"/>
-    <composite n="2" ref="B"/>
-    <composite n="3" ref="O"/>
-  </material>
-
-  <material name="SodiumOxide">
-    <D type="density" value="2.65" unit="g/cm3"/>
-    <composite n="2" ref="Na"/>
-    <composite n="1" ref="O"/>
-  </material>
-
-  <material name="AluminumOxide">
-    <D type="density" value="3.89" unit="g/cm3"/>
-    <composite n="2" ref="Al"/>
-    <composite n="3" ref="O"/>
-  </material>
-
-  <material name="PyrexGlass">
-    <D type="density" value="2.23" unit="g/cm3"/>
-    <fraction n="0.806" ref="SiliconOxide"/>
-    <fraction n="0.130" ref="BoronOxide"/>
-    <fraction n="0.040" ref="SodiumOxide"/>
-    <fraction n="0.023" ref="AluminumOxide"/>
-  </material>
-
-  <material name="CarbonFiber">
-    <D type="density" value="1.5" unit="g/cm3"/>
-    <fraction n="0.65" ref="C"/>
-    <fraction n="0.35" ref="Epoxy"/>
-  </material>
-  
-  <material name="CarbonFiber_50D">
-    <D type="density" value="0.75" unit="g/cm3"/>
-    <fraction n="0.65" ref="C"/>
-    <fraction n="0.35" ref="Epoxy"/>
-  </material>  
-
-  <material name="Rohacell31">
-    <D type="density" value="0.032" unit="g/cm3"/>
-    <composite n="9" ref="C"/>
-    <composite n="13" ref="H"/>
-    <composite n="2" ref="O"/>
-    <composite n="1" ref="N"/>
-  </material>
-  
-  <material name="Rohacell31_50D">
-    <D type="density" value="0.016" unit="g/cm3"/>
-    <composite n="9" ref="C"/>
-    <composite n="13" ref="H"/>
-    <composite n="2" ref="O"/>
-    <composite n="1" ref="N"/>
-  </material>  
-
-  <material name="RPCGasDefault" state="gas">
-    <D type="density" value="0.0037" unit="g/cm3"/>
-    <composite n="209" ref="C"/>
-    <composite n="239" ref="H"/>
-    <composite n="381" ref="F"/>
-  </material>
-
-  <material name="PolystyreneFoam">
-    <D type="density" value="0.0056" unit="g/cm3"/>
-    <fraction n="1.0" ref="Polystyrene"/>
-  </material>
-
-  <material name="Kapton">
-    <D value="1.43" unit="g/cm3" />
-    <composite n="22" ref="C"/>
-    <composite n="10" ref="H" />
-    <composite n="2" ref="N" />
-    <composite n="5" ref="O" />
-  </material>
-
-  <material name="PEEK">
-    <D value="1.37" unit="g/cm3" />
-    <composite n="19" ref="C"/>
-    <composite n="12" ref="H" />
-    <composite n="3" ref="O" />
-  </material>
-
-</materials>
diff --git a/examples/CLICSiD/eve/DDEve.xml b/examples/CLICSiD/eve/DDEve.xml
index 3e49137ce839063084eb3e788704b9308a9e5b19..3592044e4c182e1c2ee4f7af39c676c6d3167fb4 100644
--- a/examples/CLICSiD/eve/DDEve.xml
+++ b/examples/CLICSiD/eve/DDEve.xml
@@ -128,5 +128,5 @@
     <panel name="Silicon Deposits" use="Calo3DProjection"/>
     <panel name="Calo 2D"          use="Calo2DProjection"/>
   </view>
-  <include ref="../compact/compact.xml"/>
+  <include ref="${DD4hepINSTALL}/DDDetectors/compact/SiD.xml"/>
 </ddeve>
diff --git a/examples/CLICSiD/scripts/CLICSiDAClick.C b/examples/CLICSiD/scripts/CLICSiDAClick.C
index e0c40866e97d1e865e25d1581af67459a12442db..8a8c085ffe5d6ab70e7f509d13530d69d6cd33d1 100644
--- a/examples/CLICSiD/scripts/CLICSiDAClick.C
+++ b/examples/CLICSiD/scripts/CLICSiDAClick.C
@@ -1,6 +1,13 @@
-//====================================================================
+//==========================================================================
 //  AIDA Detector description implementation
-//--------------------------------------------------------------------
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+//--------------------------------------------------------------------------
 //
 //  Run Geant4 using DDG4 from root prompt with test objects for
 //  Run/Event/Sensitive actions.
@@ -16,7 +23,7 @@
 //
 //  Author     : M.Frank
 //
-//====================================================================
+//==========================================================================
 
 #include "DDG4/Geant4Config.h"
 #include "DDG4/Geant4TestActions.h"
@@ -42,10 +49,11 @@ Geant4SensDetActionSequence* setupDetector(Geant4Kernel& kernel, const std::stri
 
 int setupG4_CINT(bool interactive)  {
   Geant4Kernel& kernel = Geant4Kernel::instance(Detector::getInstance());
+  string det_dir     = getenv("DD4hepINSTALL");
   string install_dir = getenv("DD4hepExamplesINSTALL");
   Phase p;
 
-  kernel.loadGeometry(("file:"+install_dir+"/examples/CLICSiD/compact/compact.xml").c_str());
+  kernel.loadGeometry(("file:"+install_dir+"/DDDetectors/compact/SiD.xml").c_str());
   kernel.loadXML(("file:"+install_dir+"/examples/CLICSiD/sim/field.xml").c_str());
 
   if ( interactive )   {
diff --git a/examples/CLICSiD/scripts/CLICSiDScan.py b/examples/CLICSiD/scripts/CLICSiDScan.py
index a279537127abc6a99ee53f46f727a9f3dc9f6f83..c19bb384b12d93ac4a6bf4baad9bdd0c75ca9052 100644
--- a/examples/CLICSiD/scripts/CLICSiDScan.py
+++ b/examples/CLICSiD/scripts/CLICSiDScan.py
@@ -7,41 +7,39 @@
 
 """
 def run():
-  import os, sys, logging, DDG4, SystemOfUnits
+  import os, sys, logging, DDG4, CLICSid, g4units
 
   logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG)
-  kernel = DDG4.Kernel()
-  install_dir = os.environ['DD4hepINSTALL']
-  kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD.xml")
+  sid = CLICSid.CLICSid()
+  sid.loadGeometry()
   DDG4.Core.setPrintFormat("%-32s %6s %s")
-  geant4 = DDG4.Geant4(kernel)
+  geant4 = sid.geant4
   # Configure UI
-  geant4.setupCshUI(ui=None)
-  gun = geant4.setupGun("Gun",
+  sid.geant4.setupCshUI(ui=None)
+  gun = sid.geant4.setupGun("Gun",
                         Standalone=True,
                         particle='geantino',
-                        energy=20*SystemOfUnits.GeV,
+                        energy=20*g4units.GeV,
                         position=(0,0,0),
                         multiplicity=1,
                         isotrop=False )
-  scan = DDG4.SteppingAction(kernel,'Geant4MaterialScanner/MaterialScan')
-  kernel.steppingAction().adopt(scan)
+  scan = DDG4.SteppingAction(sid.kernel,'Geant4MaterialScanner/MaterialScan')
+  sid.kernel.steppingAction().adopt(scan)
 
   # Now build the physics list:
-  phys = geant4.setupPhysics('QGSP_BERT')
-  kernel.configure()
-  kernel.initialize()
-  kernel.NumEvents = 1
+  phys = sid.setupPhysics('QGSP_BERT')
+  sid.test_config()
+  sid.kernel.NumEvents = 1
 
   # 3 shots in different directions:
   gun.direction = (0,1,0)
-  kernel.run()
+  sid.kernel.run()
   gun.direction = (1,0,0)
-  kernel.run()
+  sid.kernel.run()
   gun.direction = (1,1,1)
-  kernel.run()
+  sid.kernel.run()
 
-  kernel.terminate()
+  sid.kernel.terminate()
   logging.info('End of run. Terminating .......')
   logging.info('TEST_PASSED')
 
diff --git a/examples/CLICSiD/scripts/CLICSiDXML.C b/examples/CLICSiD/scripts/CLICSiDXML.C
index 11b0ce5e54be730b42274de1f0f008d8fb8b8cb3..39522c94603ec5ce3678304f5cb0ed6e962cbe9c 100644
--- a/examples/CLICSiD/scripts/CLICSiDXML.C
+++ b/examples/CLICSiD/scripts/CLICSiDXML.C
@@ -1,7 +1,13 @@
-// $Id$
-//====================================================================
+//==========================================================================
 //  AIDA Detector description implementation
-//--------------------------------------------------------------------
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+//--------------------------------------------------------------------------
 //
 //  Run Geant4 using DDG4 from root prompt with test objects for
 //  Run/Event/Sensitive actions.
@@ -18,7 +24,7 @@
 //
 //  Author     : M.Frank
 //
-//====================================================================
+//=====================================================------===============
 #include "DDG4/Geant4Config.h"
 #include <iostream>
 
@@ -27,9 +33,10 @@ using namespace dd4hep::sim::Setup;
 
 int setupG4_XML(bool interactive)  {
   string install_dir = getenv("DD4hepExamplesINSTALL");
+  string det_dir     = getenv("DD4hepINSTALL");
   string prefix = "file:"+install_dir+"/examples/";
   Kernel& kernel = Kernel::instance(dd4hep::Detector::getInstance());
-  kernel.loadGeometry((prefix+"CLICSiD/compact/compact.xml").c_str());
+  kernel.loadGeometry((det_dir+"/DDDetectors/compact/SiD.xml").c_str());
   kernel.loadXML((prefix+"CLICSiD/sim/field.xml").c_str());
   kernel.loadXML((prefix+"CLICSiD/sim/sequences.xml").c_str());
   kernel.loadXML((prefix+"CLICSiD/sim/physics.xml").c_str());
diff --git a/examples/CLICSiD/scripts/CLICSid.py b/examples/CLICSiD/scripts/CLICSid.py
index eae570acc42bfc29a8978b2ce032fab790744a30..9c4de587afc4c6380de1812f2b51502ce7d60c70 100644
--- a/examples/CLICSiD/scripts/CLICSid.py
+++ b/examples/CLICSiD/scripts/CLICSid.py
@@ -1,5 +1,5 @@
 import sys, logging, DDG4
-from SystemOfUnits import *
+from g4units import *
 
 class CLICSid:
   def __init__(self,tracker='Geant4TrackerCombineAction'):
@@ -13,7 +13,10 @@ class CLICSid:
     import os
     if file is None:
       install_dir = os.environ['DD4hepINSTALL']
+      level = DDG4.printLevel()
+      DDG4.setPrintLevel(DDG4.OutputLevel.WARNING)
       self.kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD.xml")
+      DDG4.setPrintLevel(level)
     else:
       ui = DDG4.DD4hepUI(self.description)
       ui.importROOT(file)
diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt
index 8542e417ab99255177ef9a8be91519c7b22e7912..350d7f7b0bb5a390d76a52c1b3b0b36c2194d27f 100644
--- a/examples/ClientTests/CMakeLists.txt
+++ b/examples/ClientTests/CMakeLists.txt
@@ -91,7 +91,7 @@ dd4hep_add_test_reg( ClientTests_DumpMaterials
 dd4hep_add_test_reg( ClientTests_MultipleGeometries
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh"
   EXEC_ARGS   multipleGeo
-  -compact file:${ClientTestsEx_INSTALL}/../CLICSiD/compact/compact.xml
+  -compact file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml
   -compact file:${ClientTestsEx_INSTALL}/compact/MiniTel.xml
   -compact file:${ClientTestsEx_INSTALL}/compact/NestedDetectors.xml
   -no-interp
diff --git a/examples/ClientTests/scripts/DDG4TestSetup.py b/examples/ClientTests/scripts/DDG4TestSetup.py
index 0ef81767dd33c18860d755c25abd195cc4e0aad9..0efbc62d4ca3f2460731295a5d75b05472151973 100644
--- a/examples/ClientTests/scripts/DDG4TestSetup.py
+++ b/examples/ClientTests/scripts/DDG4TestSetup.py
@@ -35,8 +35,7 @@ class Setup:
 
   def setupGun(self, name="Gun",particle='pi-',energy=100*GeV,multiplicity=1):
     # Setup particle gun
-    self.geant4.setupGun(name,particle=particle,energy=energy,multiplicity=multiplicity)
-    return self
+    return self.geant4.setupGun(name,particle=particle,energy=energy,multiplicity=multiplicity)
 
   def setupGenerator(self):
     # And handle the simulation particles.
@@ -46,7 +45,7 @@ class Setup:
     part.MinimalKineticEnergy = 1*MeV
     part.OutputLevel = 5 # generator_output_level
     part.enableUI()
-    return self
+    return part
 
   def setupPhysics(self):
     # Now build the physics list:
diff --git a/examples/ClientTests/scripts/MiniTel.py b/examples/ClientTests/scripts/MiniTel.py
index dd43b0781f3f22321095b382253a41459c853d4d..9a5ee8261e62921b1c12e46588f2688616934c72 100644
--- a/examples/ClientTests/scripts/MiniTel.py
+++ b/examples/ClientTests/scripts/MiniTel.py
@@ -1,4 +1,4 @@
-import os, sys
+import os, sys, DDG4
 #
 """
 
@@ -12,6 +12,7 @@ def run():
   from MiniTelSetup import Setup
   m = Setup()
   if len(sys.argv) >= 2 and sys.argv[1] =="batch":
+    DDG4.setPrintLevel(DDG4.OutputLevel.WARNING)
     m.kernel.UI = ''
   m.configure()
   m.defineOutput()
diff --git a/examples/ClientTests/scripts/MiniTelEnergyDeposits.py b/examples/ClientTests/scripts/MiniTelEnergyDeposits.py
index 6227ba5a9cc172566fc04b7472cbf6f4ec99b39b..b1fea411925e7bb38e8ce365f2ec61ee2a210471 100644
--- a/examples/ClientTests/scripts/MiniTelEnergyDeposits.py
+++ b/examples/ClientTests/scripts/MiniTelEnergyDeposits.py
@@ -1,4 +1,5 @@
 import sys, time, DDG4, MiniTelSetup
+from DDG4 import OutputLevel as Output
 #
 #
 """
@@ -14,9 +15,12 @@ def run():
   if len(sys.argv) >= 2 and sys.argv[1] =="batch":
     m.kernel.NumEvents = 200
     m.kernel.UI = ''
+    DDG4.setPrintLevel(Output.WARNING)
+
   m.configure()
-  m.setupGun()
-  m.setupGenerator()
+  gun = m.setupGun()
+  part = m.setupGenerator()
+  part.OutputLevel = Output.DEBUG
   # This is the actual test:
   hit_tuple = DDG4.EventAction(m.kernel,'HitTupleAction/MiniTelTuple',True)
   hit_tuple.OutputFile = 'MiniTel_EnergyDeposits_'+time.strftime('%Y-%m-%d_%H-%M')+'.root'
diff --git a/examples/ClientTests/scripts/MiniTelSetup.py b/examples/ClientTests/scripts/MiniTelSetup.py
index 5957fea1a379f9fd78da8448dccc68d41d9f97ac..c78613e2b1da33b0382c10ea4b10542bec6fd513 100644
--- a/examples/ClientTests/scripts/MiniTelSetup.py
+++ b/examples/ClientTests/scripts/MiniTelSetup.py
@@ -12,20 +12,30 @@ class Setup(DDG4TestSetup.Setup):
     install_dir = os.environ['DD4hepExamplesINSTALL']
     DDG4TestSetup.Setup.__init__(self, "file:"+install_dir+"/examples/ClientTests/compact/MiniTel.xml")
 
-  def configure(self):
+  def configure(self,output_level=None):
     DDG4TestSetup.Setup.configure(self)
     # Now the calorimeters
     seq,act = self.geant4.setupTracker('MyLHCBdetector1')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector2')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector3')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector4')
-    act.OutputLevel = 4
+    if output_level:  act.OutputLevel = output_level
+    #act.OutputLevel = 4
     seq,act = self.geant4.setupTracker('MyLHCBdetector5')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector6')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector7')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector8')
+    if output_level:  act.OutputLevel = output_level
     seq,act = self.geant4.setupTracker('MyLHCBdetector9')
-    seq,act = self.geant4.setupTracker('MyLHCBdetector10')
+    if output_level:  act.OutputLevel = output_level
+    seq,act = self.geant4.setupTracker('MyLHCBdetector10') 
+    if output_level:  act.OutputLevel = output_level
     return self
 
   def defineOutput(self,output='MiniTel_'+time.strftime('%Y-%m-%d_%H-%M')):
diff --git a/examples/Conditions/CMakeLists.txt b/examples/Conditions/CMakeLists.txt
index 9bd9ff7711eb55e59522959922276ad05d315de2..532eaf685aa59f7537e4512e94bb8a3c72dcdda0 100644
--- a/examples/Conditions/CMakeLists.txt
+++ b/examples/Conditions/CMakeLists.txt
@@ -130,8 +130,8 @@ dd4hep_add_test_reg( Conditions_Telescope_root_load_pool
 dd4hep_add_test_reg( Conditions_CLICSiD_stress_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun  -destroy -plugin DD4hep_ConditionExample_stress 
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 10 -runs 100
-  REGEX_PASS "\\+  Accessed a total of 28008800 conditions \\(S:26958470,L:     0,C:1050330,M:0\\)"
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 10 -runs 100
+  REGEX_PASS "\\+  Accessed a total of 28085600 conditions \\(S:27032390,L:     0,C:1053210,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -139,8 +139,8 @@ dd4hep_add_test_reg( Conditions_CLICSiD_stress_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_stress2_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun  -destroy -plugin DD4hep_ConditionExample_stress2 
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 20
-  REGEX_PASS "\\+  Accessed a total of 5601760 conditions \\(S:3501100,L:     0,C:2100660,M:0\\)"
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 20
+  REGEX_PASS "\\+  Accessed a total of 5617120 conditions \\(S:3510700,L:     0,C:2106420,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -148,8 +148,8 @@ dd4hep_add_test_reg( Conditions_CLICSiD_stress2_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_MT_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun  -destroy -plugin DD4hep_ConditionExample_MT 
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 3 -runs 2 -threads 1
-  REGEX_PASS "\\+  Accessed a total of 9522992 conditions \\(S:8892794,L:     0,C:630198,M:0\\)"
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 3 -runs 2 -threads 1
+  REGEX_PASS "\\+  Accessed a total of 9549104 conditions \\(S:8917178,L:     0,C:631926,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -157,9 +157,9 @@ dd4hep_add_test_reg( Conditions_CLICSiD_MT_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_root_save_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun -print WARNING -destroy -plugin DD4hep_ConditionExample_save
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 3
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 3
     -conditions CLICSiDConditions.root
-  REGEX_PASS "\\+ Successfully saved 2520792 condition to file."
+  REGEX_PASS "\\+ Successfully saved 2527704 condition to file."
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -167,10 +167,10 @@ dd4hep_add_test_reg( Conditions_CLICSiD_root_save_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_root_load_iov_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun -print WARNING -destroy -plugin DD4hep_ConditionExample_load
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 3 -restore iovpool
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 3 -restore iovpool
     -conditions CLICSiDConditions.root
   DEPENDS Conditions_CLICSiD_root_save_LONGTEST
-  REGEX_PASS "\\+  Accessed a total of 840264 conditions \\(S:840264,L:     0,C:     0,M:0\\)"
+  REGEX_PASS "\\+  Accessed a total of 842568 conditions \\(S:842568,L:     0,C:     0,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -178,10 +178,10 @@ dd4hep_add_test_reg( Conditions_CLICSiD_root_load_iov_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_root_load_usr_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun -print WARNING -destroy -plugin DD4hep_ConditionExample_load
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 3 -restore userpool
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 3 -restore userpool
     -conditions CLICSiDConditions.root
   DEPENDS Conditions_CLICSiD_root_save_LONGTEST
-  REGEX_PASS "\\+  Accessed a total of 840264 conditions \\(S:840264,L:     0,C:     0,M:0\\)"
+  REGEX_PASS "\\+  Accessed a total of 842568 conditions \\(S:842568,L:     0,C:     0,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
@@ -189,9 +189,9 @@ dd4hep_add_test_reg( Conditions_CLICSiD_root_load_usr_LONGTEST
 dd4hep_add_test_reg( Conditions_CLICSiD_root_load_cond_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Conditions.sh"
   EXEC_ARGS  geoPluginRun -print WARNING -destroy -plugin DD4hep_ConditionExample_load
-    -input file:${CMAKE_INSTALL_PREFIX}/examples/CLICSiD/compact/compact.xml -iovs 3 -restore condpool
+    -input file:$ENV{DD4hepINSTALL}/DDDetectors/compact/SiD.xml -iovs 3 -restore condpool
     -conditions CLICSiDConditions.root
   DEPENDS Conditions_CLICSiD_root_save_LONGTEST
-  REGEX_PASS "\\+  Accessed a total of 840264 conditions \\(S:840264,L:     0,C:     0,M:0\\)"
+  REGEX_PASS "\\+  Accessed a total of 842568 conditions \\(S:842568,L:     0,C:     0,M:0\\)"
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
diff --git a/examples/DDCMS/CMakeLists.txt b/examples/DDCMS/CMakeLists.txt
index 138581dc3b0d031bd5f4a4b76e8a8e84ea31c4d3..3059c11de4cd498fc03a49f7fdcd0bcb0f36c332 100644
--- a/examples/DDCMS/CMakeLists.txt
+++ b/examples/DDCMS/CMakeLists.txt
@@ -170,7 +170,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Save_LONGTEST
   -destroy -print WARNING
   -plugin    DD4hep_Geometry2ROOT -output DDCMS_geometry.root
   REGEX_PASS "\\+\\+\\+ Successfully saved geometry data to file."
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;WriteObjectAny"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager
@@ -180,7 +180,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_LONGTEST
   -plugin    DD4hep_RootLoader DDCMS_geometry.root
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ Successfully loaded detector description from file"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager loading+nominals
@@ -191,7 +191,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr1_LONGTEST
   -plugin    DD4hep_CheckVolumeManager
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 36096 VolumeManager contexts. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Test Volume Manager results
@@ -202,7 +202,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr2_LONGTEST
   -plugin    DD4hep_VolumeMgrTest PixelBarrel_1
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED: Checked 10981 objects. Num.Errors:0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: DetElement nominal alignments
@@ -214,6 +214,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_Nominal_LONGTEST
   -plugin    DD4hep_CheckNominals
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 25776 DetElements. Num.Errors: 0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Sensitive detectors
@@ -224,7 +225,7 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_Sensitives_LONGTEST
   -plugin    DD4hep_CheckSensitives
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 5 SensitiveDetector objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Readout structures
@@ -235,5 +236,5 @@ dd4hep_add_test_reg( DDCMS_Persist_Restore_Readouts_LONGTEST
   -plugin    DD4hep_CheckReadouts
   DEPENDS    DDCMS_Persist_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 5 readout objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
diff --git a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
index 22da4a4aeb9fbea576d2480a7c61cc45791cf579..366a622793ad4052c22b5c10401398c9d528ca81 100644
--- a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
+++ b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
@@ -39,8 +39,10 @@ def run():
   evt_root = geant4.setupROOTOutput('RootOutput','MySD_'+time.strftime('%Y-%m-%d_%H-%M'),mc_truth=False)
   # Setup particle gun
   gun = geant4.setupGun("Gun",particle='mu-',energy=5*GeV,multiplicity=1,Standalone=True,position=(0,0,0))
-  geant4.setupTracker('SiliconBlockUpper')
-  geant4.setupTracker('SiliconBlockDown')
+  seq,act = geant4.setupTracker('SiliconBlockUpper')
+  act.OutputLevel = Output.INFO
+  seq,act = geant4.setupTracker('SiliconBlockDown')
+  act.OutputLevel = Output.INFO
   # Now build the physics list:
   phys = kernel.physicsList()
   phys.extends = 'QGSP_BERT'
diff --git a/examples/LHeD/scripts/LHeD.py b/examples/LHeD/scripts/LHeD.py
index 9873f57b19b67355031654e677838bbc3141f9c9..d2bd658ed20df5fb0db192f8df353cb98e10b016 100644
--- a/examples/LHeD/scripts/LHeD.py
+++ b/examples/LHeD/scripts/LHeD.py
@@ -33,9 +33,9 @@ class LHeD:
     phys = self.geant4.setupPhysics(model)
     ph = DDG4.PhysicsList(self.kernel,'Geant4PhysicsList/Myphysics')
     # Add bosons to the model (redundant if already implemented by the model)
-    ph.addParticleConstructor('G4BosonConstructor')
+    ph.addParticleGroup('G4BosonConstructor')
     # Add leptons to the model (redundant if already implemented by the model)
-    ph.addParticleConstructor('G4LeptonConstructor')
+    ph.addParticleGroup('G4LeptonConstructor')
     # Add multiple scattering in the material
     ph.addParticleProcess('e[+-]','G4eMultipleScattering',-1,1,1)
     # Add optical physics (RICH dets etc)
diff --git a/examples/OpticalSurfaces/CMakeLists.txt b/examples/OpticalSurfaces/CMakeLists.txt
index 1f51c691069a26d3b851ac2a821691baba9a6c0f..c8ac2be725fe960398fdf8a1105713fa9bec55eb 100644
--- a/examples/OpticalSurfaces/CMakeLists.txt
+++ b/examples/OpticalSurfaces/CMakeLists.txt
@@ -59,3 +59,25 @@ dd4hep_add_test_reg( Surfaces_read_MaterialProperties
   REGEX_FAIL " ERROR ;EXCEPTION;Exception"
   )
 #
+#---Testing: Load OpNovice and dump it to GDML
+dd4hep_add_test_reg( Surfaces_OpNovice_write_gdml
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_OpticalSurfaces.sh"
+  EXEC_ARGS  geoPluginRun -volmgr -destroy 
+  -compact file:${OpticalSurfaces_INSTALL}/compact/OpNovice.xml
+  -plugin DD4hep_ROOTGDMLExtract -output OpNovice.gdml -path /world/BubbleDevice
+  REGEX_PASS "File OpNovice.gdml saved"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception"
+  )
+#
+#---Testing: Load GDML and dump volumes
+dd4hep_add_test_reg( Surfaces_OpNovice_read_gdml
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_OpticalSurfaces.sh"
+  EXEC_ARGS  geoPluginRun -volmgr -destroy 
+  -compact file:${OpticalSurfaces_INSTALL}/compact/OpNovice_gdml.xml
+  -print INFO -destroy -volmgr
+  -plugin DD4hep_ROOTGDMLParse -input OpNovice.gdml -path /world/BubbleDevice
+  -plugin DD4hep_VolumeDump
+  REGEX_PASS "\\+\\+\\+ Checked 5 physical volume placements."
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception"
+  )
+#
diff --git a/examples/Persistency/CMakeLists.txt b/examples/Persistency/CMakeLists.txt
index 3946e35badba25e4e500f6ce8df3f29fa4197326..872e21ebae0617df70d2016db52f2ca3df186040 100644
--- a/examples/Persistency/CMakeLists.txt
+++ b/examples/Persistency/CMakeLists.txt
@@ -29,7 +29,7 @@ dd4hep_add_test_reg( Persist_Conditions_Save
   EXEC_ARGS  geoPluginRun
   -plugin    DD4hep_PersistencyExample_write_cond -output Conditions.root
   REGEX_PASS "\\+\\+\\+ PASSED Wrote 14 conditions to file."
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;WriteObjectAny"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager
@@ -39,7 +39,7 @@ dd4hep_add_test_reg( Persist_Conditions_Restore
   -plugin    DD4hep_PersistencyExample_read_cond -input Conditions.root
   DEPENDS    Persist_Conditions_Save
   REGEX_PASS "\\+\\+\\+ Read successfully 14 conditions. Result=172"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test saving geometry to ROOT file
@@ -49,7 +49,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Save_LONGTEST
   -volmgr -destroy -input file:${CMAKE_CURRENT_SOURCE_DIR}/../ClientTests/compact/MiniTel.xml
   -plugin    DD4hep_Geometry2ROOT -output MiniTel_geometry.root
   REGEX_PASS "\\+\\+\\+ Successfully saved geometry data to file."
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;WriteObjectAny"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager
@@ -59,7 +59,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_LONGTEST
   -plugin    DD4hep_RootLoader MiniTel_geometry.root
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ Successfully loaded detector description from file"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager loading+nominals
@@ -70,11 +70,10 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_VolMgr1_LONGTEST
   -plugin    DD4hep_CheckVolumeManager
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 10 VolumeManager contexts. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: DetElement nominal alignments
-#  Note: BeamCal has a problem. Need to be taken into account
 dd4hep_add_test_reg( Persist_MiniTel_Restore_Nominal_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Persistency.sh"
   EXEC_ARGS  geoPluginRun -print WARNING
@@ -82,6 +81,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_Nominal_LONGTEST
   -plugin    DD4hep_CheckNominals
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 10 DetElements. Num.Errors: 0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Sensitive detectors
@@ -92,7 +92,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_Sensitives_LONGTEST
   -plugin    DD4hep_CheckSensitives
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 10 SensitiveDetector objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Readout segmentations
@@ -103,7 +103,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_Segmentations_LONGTEST
   -plugin    DD4hep_CheckSegmentations
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 10 readout segmentations. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Readout structures
@@ -114,7 +114,7 @@ dd4hep_add_test_reg( Persist_MiniTel_Restore_Readouts_LONGTEST
   -plugin    DD4hep_CheckReadouts
   DEPENDS    Persist_MiniTel_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 10 readout objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test saving geometry to ROOT file
@@ -124,7 +124,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Save_LONGTEST
   -volmgr    -destroy -input file:${CMAKE_CURRENT_SOURCE_DIR}/../CLICSiD/compact/compact.xml
   -plugin    DD4hep_Geometry2ROOT -output CLICSiD_geometry.root
   REGEX_PASS "\\+\\+\\+ Successfully saved geometry data to file."
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;WriteObjectAny"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager
@@ -134,10 +134,11 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_LONGTEST
   -plugin    DD4hep_RootLoader CLICSiD_geometry.root
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ Successfully loaded detector description from file"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Volume Manager loading+nominals
+#  Note: BeamCal has a problem. Need to be taken into account
 dd4hep_add_test_reg( Persist_CLICSiD_Restore_VolMgr1_LONGTEST
   COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_Persistency.sh"
   EXEC_ARGS  geoPluginRun -print WARNING
@@ -145,7 +146,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_VolMgr1_LONGTEST
   -plugin    DD4hep_CheckVolumeManager
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 29270 VolumeManager contexts. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Test Volume Manager results
@@ -156,7 +157,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_VolMgr2_LONGTEST
   -plugin    DD4hep_VolumeMgrTest SiTrackerBarrel
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED: Checked 81306 objects. Num.Errors:0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: DetElement nominal alignments
@@ -168,6 +169,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_Nominal_LONGTEST
   -plugin    DD4hep_CheckNominals
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ FAILED Checked 15946 DetElements. Num.Errors: 50"
+  REGEX_FAIL "EXCEPTION;Exception;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Sensitive detectors
@@ -178,7 +180,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_Sensitives_LONGTEST
   -plugin    DD4hep_CheckSensitives
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 14 SensitiveDetector objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Readout segmentations
@@ -189,7 +191,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_Segmentations_LONGTEST
   -plugin    DD4hep_CheckSegmentations
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 9 readout segmentations. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 #  Test restoring geometry from ROOT file: Readout structures
@@ -200,7 +202,7 @@ dd4hep_add_test_reg( Persist_CLICSiD_Restore_Readouts_LONGTEST
   -plugin    DD4hep_CheckReadouts
   DEPENDS    Persist_CLICSiD_Save_LONGTEST
   REGEX_PASS "\\+\\+\\+ PASSED Checked 14 readout objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED;TStreamerInfo"
   )
 #
 if (DD4HEP_USE_GEANT4)